diff options
Diffstat (limited to 'examples/scriptableapplication/mainwindow.cpp')
-rw-r--r-- | examples/scriptableapplication/mainwindow.cpp | 112 |
1 files changed, 38 insertions, 74 deletions
diff --git a/examples/scriptableapplication/mainwindow.cpp b/examples/scriptableapplication/mainwindow.cpp index 15c8b59f0..ece7989e7 100644 --- a/examples/scriptableapplication/mainwindow.cpp +++ b/examples/scriptableapplication/mainwindow.cpp @@ -1,52 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt for Python examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include "mainwindow.h" #include "pythonutils.h" @@ -66,37 +19,44 @@ #include <QtCore/QDebug> #include <QtCore/QTextStream> -static const char defaultScript[] = R"( -import AppLib +using namespace Qt::StringLiterals; + +static const auto defaultScript = R"(import AppLib print("Hello, world") mainWindow.testFunction1() -)"; +)"_L1; MainWindow::MainWindow() - : m_scriptEdit(new QPlainTextEdit(QString::fromLatin1(defaultScript).trimmed(), this)) + : m_scriptEdit(new QPlainTextEdit(defaultScript, this)) { setWindowTitle(tr("Scriptable Application")); - QMenu *fileMenu = menuBar()->addMenu(tr("&File")); - const QIcon runIcon = QIcon::fromTheme(QStringLiteral("system-run")); - QAction *runAction = fileMenu->addAction(runIcon, tr("&Run..."), this, &MainWindow::slotRunScript); + auto *fileMenu = menuBar()->addMenu(tr("&File")); + const QIcon runIcon = QIcon::fromTheme("system-run"_L1); + auto *runAction = fileMenu->addAction(runIcon, tr("&Run..."), + this, &MainWindow::slotRunScript); runAction->setShortcut(Qt::CTRL | Qt::Key_R); - QAction *diagnosticAction = fileMenu->addAction(tr("&Print Diagnostics"), this, &MainWindow::slotPrintDiagnostics); + auto *diagnosticAction = fileMenu->addAction(tr("&Print Diagnostics"), + this, &MainWindow::slotPrintDiagnostics); diagnosticAction->setShortcut(Qt::CTRL | Qt::Key_D); - fileMenu->addAction(tr("&Invoke testFunction1()"), this, &MainWindow::testFunction1); - const QIcon quitIcon = QIcon::fromTheme(QStringLiteral("application-exit")); - QAction *quitAction = fileMenu->addAction(quitIcon, tr("&Quit"), qApp, &QCoreApplication::quit); + fileMenu->addAction(tr("&Invoke testFunction1()"), + this, &MainWindow::testFunction1); + const QIcon quitIcon = QIcon::fromTheme(QIcon::ThemeIcon::ApplicationExit); + auto *quitAction = fileMenu->addAction(quitIcon, tr("&Quit"), + qApp, &QCoreApplication::quit); quitAction->setShortcut(Qt::CTRL | Qt::Key_Q); - QMenu *editMenu = menuBar()->addMenu(tr("&Edit")); - const QIcon clearIcon = QIcon::fromTheme(QStringLiteral("edit-clear")); - QAction *clearAction = editMenu->addAction(clearIcon, tr("&Clear"), m_scriptEdit, &QPlainTextEdit::clear); + auto *editMenu = menuBar()->addMenu(tr("&Edit")); + const QIcon clearIcon = QIcon::fromTheme(QIcon::ThemeIcon::EditClear); + auto *clearAction = editMenu->addAction(clearIcon, tr("&Clear"), + m_scriptEdit, &QPlainTextEdit::clear); - QMenu *helpMenu = menuBar()->addMenu(tr("&Help")); - const QIcon aboutIcon = QIcon::fromTheme(QStringLiteral("help-about")); - QAction *aboutAction = helpMenu->addAction(aboutIcon, tr("&About Qt"), qApp, &QApplication::aboutQt); + auto *helpMenu = menuBar()->addMenu(tr("&Help")); + const QIcon aboutIcon = QIcon::fromTheme(QIcon::ThemeIcon::HelpAbout); + auto *aboutAction = helpMenu->addAction(aboutIcon, tr("&About Qt"), + qApp, &QApplication::aboutQt); - QToolBar *toolBar = new QToolBar; + auto *toolBar = new QToolBar; addToolBar(toolBar); toolBar->addAction(quitAction); toolBar->addSeparator(); @@ -109,25 +69,29 @@ MainWindow::MainWindow() m_scriptEdit->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); setCentralWidget(m_scriptEdit); - if (!PythonUtils::bindAppObject("__main__", "mainWindow", PythonUtils::MainWindowType, this)) + if (!PythonUtils::bindAppObject("__main__"_L1, "mainWindow"_L1, + PythonUtils::MainWindowType, this)) { statusBar()->showMessage(tr("Error loading the application module")); + } } void MainWindow::slotRunScript() { - const QStringList script = m_scriptEdit->toPlainText().trimmed().split(QLatin1Char('\n'), Qt::SkipEmptyParts); - if (!script.isEmpty()) - runScript(script); + const QString text = m_scriptEdit->toPlainText().trimmed(); + if (!text.isEmpty()) + runScript(text); } void MainWindow::slotPrintDiagnostics() { - const QStringList script = QStringList() - << "import sys" << "print('Path=', sys.path)" << "print('Executable=', sys.executable)"; + const QString script = R"P(import sys +print('Path=', sys.path) +print('Executable=', sys.executable) +)P"_L1; runScript(script); } -void MainWindow::runScript(const QStringList &script) +void MainWindow::runScript(const QString &script) { if (!::PythonUtils::runScript(script)) statusBar()->showMessage(tr("Error running script")); |