diff --git a/app/main.cpp b/app/main.cpp index 1bccbd0..026e3e4 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -105,7 +105,7 @@ int main(int argc, char *argv[]) importPathList.prepend(QCoreApplication::applicationDirPath() + "/../../../qmltermwidget"); engine.setImportPathList(importPathList); - engine.load(QUrl(QStringLiteral ("qrc:/main.qml"))); + engine.load(QUrl(QStringLiteral ("qrc:/root.qml"))); if (engine.rootObjects().isEmpty()) { qDebug() << "Cannot load QML interface"; diff --git a/app/qml/CRTMainMenuBar.qml b/app/qml/CRTMainMenuBar.qml index be5423e..86572d6 100644 --- a/app/qml/CRTMainMenuBar.qml +++ b/app/qml/CRTMainMenuBar.qml @@ -9,6 +9,12 @@ MenuBar { visible: defaultMenuBar.visible MenuItem {action: quitAction} } + Menu { + title: qsTr("Terminal") + visible: defaultMenuBar.visible + MenuItem {action: newAction} + MenuItem {action: closeAction} + } Menu { title: qsTr("Edit") visible: defaultMenuBar.visible && appSettings.showMenubar diff --git a/app/qml/main.qml b/app/qml/main.qml index 99d8522..267f405 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -67,6 +67,22 @@ ApplicationWindow{ color: "#00000000" title: terminalContainer.title || qsTr(appSettings.wintitle) + Action { + id: newAction + text: qsTr("New Window") + shortcut: Qt.platform.os === "osx" ? StandardKey.New : "Ctrl+Shift+N" + onTriggered: { + root.newWindow() + } + } + Action { + id: closeAction + text: qsTr("Close Window") + shortcut: Qt.platform.os === "osx" ? StandardKey.Close : "Ctrl+Shift+W" + onTriggered: { + terminalWindow.close() + } + } Action { id: showMenubarAction text: qsTr("Show Menubar") @@ -157,9 +173,6 @@ ApplicationWindow{ } } onClosing: { - // OSX Since we are currently supporting only one window - // quit the application when it is closed. - if (Qt.platform.os === "osx") - Qt.quit() + root.closeWindow() } } diff --git a/app/qml/resources.qrc b/app/qml/resources.qrc index 8df465f..d78cdd0 100644 --- a/app/qml/resources.qrc +++ b/app/qml/resources.qrc @@ -17,6 +17,7 @@ InsertNameDialog.qml SettingsEffectsTab.qml main.qml + root.qml SettingsTerminalTab.qml FontScanlines.qml fonts/1977-apple2/PrintChar21.ttf diff --git a/app/qml/root.qml b/app/qml/root.qml new file mode 100644 index 0000000..cb431c9 --- /dev/null +++ b/app/qml/root.qml @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2013 "Filippo Scognamiglio" + * https://github.com/Swordfish90/cool-retro-term + * + * This file is part of cool-retro-term. + * + * cool-retro-term is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + *******************************************************************************/ +import QtQuick 2.2 +import QtQuick.Window 2.1 + +QtObject { + id: root + property int terminalCount + + function newWindow() { + var component = Qt.createComponent("main.qml") + var window = component.createObject() + window.show() + terminalCount = terminalCount + 1 + } + function closeWindow() { + terminalCount = terminalCount - 1 + if (terminalCount == 0) { + Qt.quit() + } + } + Component.onCompleted: { + terminalCount = 0 + root.newWindow() + } +}