1
0
mirror of https://github.com/Swordfish90/cool-retro-term.git synced 2026-02-08 00:32:27 +00:00

Make actions between the different menus global.

This commit is contained in:
Filippo Scognamiglio
2026-01-17 17:20:37 +01:00
parent e72faa1d2c
commit e70268bb73
8 changed files with 113 additions and 102 deletions

View File

@@ -20,6 +20,7 @@
import QtQuick 2.2 import QtQuick 2.2
import QtQuick.Controls 2.0 import QtQuick.Controls 2.0
import QtQml
import QMLTermWidget 1.0 import QMLTermWidget 1.0
@@ -27,7 +28,7 @@ import "menus"
import "utils.js" as Utils import "utils.js" as Utils
Item{ Item{
id: terminalContainer id: preprocessedTerminal
signal sessionFinished() signal sessionFinished()
property size virtualResolution: Qt.size(kterminal.totalWidth, kterminal.totalHeight) property size virtualResolution: Qt.size(kterminal.totalWidth, kterminal.totalHeight)
@@ -47,14 +48,14 @@ Item{
// Manage copy and paste // Manage copy and paste
Connections { Connections {
target: copyAction target: copyAction
enabled: terminalContainer.hasFocus
onTriggered: { onTriggered: {
kterminal.copyClipboard() kterminal.copyClipboard()
} }
} }
Connections { Connections {
target: pasteAction target: pasteAction
enabled: terminalContainer.hasFocus
onTriggered: { onTriggered: {
kterminal.pasteClipboard() kterminal.pasteClipboard()
} }
@@ -65,22 +66,22 @@ Item{
target: appSettings target: appSettings
onFontScalingChanged: { onFontScalingChanged: {
terminalContainer.updateSources() preprocessedTerminal.updateSources()
} }
onFontWidthChanged: { onFontWidthChanged: {
terminalContainer.updateSources() preprocessedTerminal.updateSources()
} }
} }
Connections { Connections {
target: terminalContainer target: preprocessedTerminal
onWidthChanged: { onWidthChanged: {
terminalContainer.updateSources() preprocessedTerminal.updateSources()
} }
onHeightChanged: { onHeightChanged: {
terminalContainer.updateSources() preprocessedTerminal.updateSources()
} }
} }
@@ -118,7 +119,7 @@ Item{
id: ksession id: ksession
onFinished: { onFinished: {
terminalContainer.sessionFinished() preprocessedTerminal.sessionFinished()
} }
} }
@@ -148,8 +149,8 @@ Item{
pixelSize: pixelSize pixelSize: pixelSize
}); });
terminalContainer.fontWidth = fontWidth; preprocessedTerminal.fontWidth = fontWidth;
terminalContainer.screenScaling = screenScaling; preprocessedTerminal.screenScaling = screenScaling;
scaleTexture = Math.max(1.0, Math.floor(screenScaling * appSettings.windowScaling)); scaleTexture = Math.max(1.0, Math.floor(screenScaling * appSettings.windowScaling));
} }
@@ -157,7 +158,7 @@ Item{
target: appSettings target: appSettings
onWindowScalingChanged: { onWindowScalingChanged: {
scaleTexture = Math.max(1.0, Math.floor(terminalContainer.screenScaling * appSettings.windowScaling)); scaleTexture = Math.max(1.0, Math.floor(preprocessedTerminal.screenScaling * appSettings.windowScaling));
} }
} }
@@ -213,7 +214,7 @@ Item{
cursorShape: kterminal.terminalUsesMouse ? Qt.ArrowCursor : Qt.IBeamCursor cursorShape: kterminal.terminalUsesMouse ? Qt.ArrowCursor : Qt.IBeamCursor
onWheel: function(wheel) { onWheel: function(wheel) {
if (wheel.modifiers & Qt.ControlModifier) { if (wheel.modifiers & Qt.ControlModifier) {
wheel.angleDelta.y > 0 ? zoomIn.trigger() : zoomOut.trigger(); wheel.angleDelta.y > 0 ? zoomInAction.trigger() : zoomOutAction.trigger();
} else { } else {
var coord = correctDistortion(wheel.x, wheel.y); var coord = correctDistortion(wheel.x, wheel.y);
kterminal.simulateWheel(coord.x, coord.y, wheel.buttons, wheel.modifiers, wheel.angleDelta); kterminal.simulateWheel(coord.x, coord.y, wheel.buttons, wheel.modifiers, wheel.angleDelta);

View File

@@ -28,6 +28,13 @@ ShaderTerminal {
signal sessionFinished() signal sessionFinished()
property bool loadBloomEffect: appSettings.bloom > 0 || appSettings._frameShininess > 0 property bool loadBloomEffect: appSettings.bloom > 0 || appSettings._frameShininess > 0
property bool hasFocus
onHasFocusChanged: {
if (hasFocus) {
activate()
}
}
id: mainShader id: mainShader
opacity: appSettings.windowOpacity * 0.3 + 0.7 opacity: appSettings.windowOpacity * 0.3 + 0.7

View File

@@ -130,12 +130,8 @@ Item {
Repeater { Repeater {
model: tabsModel model: tabsModel
TerminalContainer { TerminalContainer {
property bool shouldHaveFocus: terminalWindow.active && StackLayout.isCurrentItem id: terminalContainer
onShouldHaveFocusChanged: { hasFocus: terminalWindow.active && StackLayout.isCurrentItem
if (shouldHaveFocus) {
activate()
}
}
onTitleChanged: tabsModel.setProperty(index, "title", normalizeTitle(title)) onTitleChanged: tabsModel.setProperty(index, "title", normalizeTitle(title))
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true

View File

@@ -20,6 +20,7 @@
import QtQuick 2.2 import QtQuick 2.2
import QtQuick.Window 2.1 import QtQuick.Window 2.1
import QtQuick.Controls 2.3 import QtQuick.Controls 2.3
import QtQml
import "menus" import "menus"
@@ -50,87 +51,18 @@ ApplicationWindow {
sourceComponent: WindowMenu { } sourceComponent: WindowMenu { }
} }
Connections {
target: newTabAction
enabled: terminalWindow.active
onTriggered: terminalTabs.addTab()
}
property real normalizedWindowScale: 1024 / ((0.5 * width + 0.5 * height)) property real normalizedWindowScale: 1024 / ((0.5 * width + 0.5 * height))
color: "#00000000" color: "#00000000"
title: terminalTabs.currentTitle title: terminalTabs.currentTitle
Action {
id: showMenubarAction
text: qsTr("Show Menubar")
enabled: !appSettings.isMacOS
shortcut: "Ctrl+Shift+M"
checkable: true
checked: appSettings.showMenubar
onTriggered: appSettings.showMenubar = !appSettings.showMenubar
}
Action {
id: fullscreenAction
text: qsTr("Fullscreen")
enabled: !appSettings.isMacOS
shortcut: "Alt+F11"
onTriggered: appSettings.fullscreen = !appSettings.fullscreen
checkable: true
checked: appSettings.fullscreen
}
Action {
id: newWindowAction
text: qsTr("New Window")
shortcut: "Ctrl+Shift+N"
onTriggered: appRoot.createWindow()
}
Action {
id: quitAction
text: qsTr("Quit")
shortcut: "Ctrl+Shift+Q"
onTriggered: appSettings.close()
}
Action {
id: showsettingsAction
text: qsTr("Settings")
onTriggered: {
settingsWindow.show()
settingsWindow.requestActivate()
settingsWindow.raise()
}
}
Action {
id: copyAction
text: qsTr("Copy")
shortcut: "Ctrl+Shift+C"
}
Action {
id: pasteAction
text: qsTr("Paste")
shortcut: "Ctrl+Shift+V"
}
Action {
id: zoomIn
text: qsTr("Zoom In")
shortcut: "Ctrl++"
onTriggered: appSettings.incrementScaling()
}
Action {
id: zoomOut
text: qsTr("Zoom Out")
shortcut: "Ctrl+-"
onTriggered: appSettings.decrementScaling()
}
Action {
id: showAboutAction
text: qsTr("About")
onTriggered: {
aboutDialog.show()
aboutDialog.requestActivate()
aboutDialog.raise()
}
}
Action {
id: newTabAction
text: qsTr("New Tab")
onTriggered: terminalTabs.addTab()
}
TerminalTabs { TerminalTabs {
id: terminalTabs id: terminalTabs
width: parent.width width: parent.width

View File

@@ -18,6 +18,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*******************************************************************************/ *******************************************************************************/
import QtQuick 2.2 import QtQuick 2.2
import QtQuick.Controls 2.3
import "menus" import "menus"
@@ -51,6 +52,80 @@ QtObject {
sourceComponent: OSXMenu { } sourceComponent: OSXMenu { }
} }
property Action showMenubarAction: Action {
text: qsTr("Show Menubar")
enabled: !appSettings.isMacOS
shortcut: "Ctrl+Shift+M"
checkable: true
checked: appSettings.showMenubar
onTriggered: appSettings.showMenubar = !appSettings.showMenubar
}
property Action fullscreenAction: Action {
text: qsTr("Fullscreen")
enabled: !appSettings.isMacOS
shortcut: "Alt+F11"
onTriggered: appSettings.fullscreen = !appSettings.fullscreen
checkable: true
checked: appSettings.fullscreen
}
property Action newWindowAction: Action {
text: qsTr("New Window")
shortcut: "Ctrl+Shift+N"
onTriggered: appRoot.createWindow()
}
property Action quitAction: Action {
text: qsTr("Quit")
shortcut: "Ctrl+Shift+Q"
onTriggered: appSettings.close()
}
property Action showsettingsAction: Action {
text: qsTr("Settings")
onTriggered: {
settingsWindow.show()
settingsWindow.requestActivate()
settingsWindow.raise()
}
}
property Action copyAction: Action {
text: qsTr("Copy")
shortcut: "Ctrl+Shift+C"
}
property Action pasteAction: Action {
text: qsTr("Paste")
shortcut: "Ctrl+Shift+V"
}
property Action zoomInAction: Action {
text: qsTr("Zoom In")
shortcut: "Ctrl++"
onTriggered: appSettings.incrementScaling()
}
property Action zoomOutAction: Action {
text: qsTr("Zoom Out")
shortcut: "Ctrl+-"
onTriggered: appSettings.decrementScaling()
}
property Action showAboutAction: Action {
text: qsTr("About")
onTriggered: {
aboutDialog.show()
aboutDialog.requestActivate()
aboutDialog.raise()
}
}
property Action newTabAction: Action {
text: qsTr("New Tab")
}
function createWindow() { function createWindow() {
var window = windowComponent.createObject(null) var window = windowComponent.createObject(null)
if (!window) if (!window)

View File

@@ -69,10 +69,10 @@ Menu {
visible: showMenubarAction.enabled visible: showMenubarAction.enabled
} }
MenuItem { MenuItem {
action: zoomIn action: zoomInAction
} }
MenuItem { MenuItem {
action: zoomOut action: zoomOutAction
} }
} }
Menu { Menu {

View File

@@ -64,14 +64,14 @@ MenuBar {
Menu { Menu {
title: qsTr("View") title: qsTr("View")
MenuItem { MenuItem {
text: zoomIn.text text: zoomInAction.text
shortcut: "Meta++" shortcut: "Meta++"
onTriggered: zoomIn.trigger() onTriggered: zoomInAction.trigger()
} }
MenuItem { MenuItem {
text: zoomOut.text text: zoomOutAction.text
shortcut: "Meta+-" shortcut: "Meta+-"
onTriggered: zoomOut.trigger() onTriggered: zoomOutAction.trigger()
} }
} }
Menu { Menu {

View File

@@ -61,10 +61,10 @@ MenuBar {
visible: showMenubarAction.enabled visible: showMenubarAction.enabled
} }
MenuItem { MenuItem {
action: zoomIn action: zoomInAction
} }
MenuItem { MenuItem {
action: zoomOut action: zoomOutAction
} }
} }
Menu { Menu {