Clean up context menus.

This commit is contained in:
2026-02-07 12:59:44 -05:00
parent c0f38b531d
commit 6f2a655497
7 changed files with 128 additions and 125 deletions

View File

@@ -12,6 +12,8 @@ fn main() {
"qml/ClideLogger.qml", "qml/ClideLogger.qml",
"qml/Components/ClideScrollBar.qml", "qml/Components/ClideScrollBar.qml",
"qml/Components/ClideHandle.qml", "qml/Components/ClideHandle.qml",
"qml/Components/ClideMenu.qml",
"qml/Components/ClideMenuItem.qml",
"qml/Logger/Logger.qml", "qml/Logger/Logger.qml",
])) ]))
// Link Qt's Network library // Link Qt's Network library

View File

@@ -15,122 +15,111 @@ MenuBar {
// //
// File Menu // File Menu
Action { ClideMenu {
title: qsTr("&File")
ClideMenuItem {
action: Action {
id: actionNewProject id: actionNewProject
text: qsTr("&New Project...") text: qsTr("&New Project...")
} }
Action { }
ClideMenuItem {
action: Action {
id: actionOpen id: actionOpen
text: qsTr("&Open...") text: qsTr("&Open...")
} }
Action {
onTriggered: FileSystem.setDirectory(FileSystem.filePath)
}
ClideMenuItem {
action: Action {
id: actionSave id: actionSave
text: qsTr("&Save") text: qsTr("&Save")
} }
Action { }
MenuSeparator {
background: Rectangle {
border.color: color
color: Qt.darker(RustColors.menubar, 1)
implicitHeight: 3
implicitWidth: 200
}
}
ClideMenuItem {
action: Action {
id: actionExit id: actionExit
text: qsTr("&Exit") text: qsTr("&Exit")
onTriggered: Qt.quit() onTriggered: Qt.quit()
} }
ClideMenu {
title: qsTr("&File")
ClideMenuItem {
action: actionNewProject
}
ClideMenuItem {
action: actionOpen
onTriggered: FileSystem.setDirectory(FileSystem.filePath)
}
ClideMenuItem {
action: actionSave
}
MenuSeparator {
background: Rectangle {
border.color: color
color: RustColors.explorer_background
implicitHeight: 3
implicitWidth: 200
}
}
ClideMenuItem {
action: actionExit
} }
} }
// //
// Edit Menu // Edit Menu
Action {
id: actionUndo
text: qsTr("&Undo")
}
Action {
id: actionRedo
text: qsTr("&Redo")
}
Action {
id: actionCut
text: qsTr("&Cut")
}
Action {
id: actionCopy
text: qsTr("&Copy")
}
Action {
id: actionPaste
text: qsTr("&Paste")
}
ClideMenu { ClideMenu {
title: qsTr("&Edit") title: qsTr("&Edit")
ClideMenuItem { ClideMenuItem {
action: actionUndo action: Action {
id: actionUndo
text: qsTr("&Undo")
}
} }
ClideMenuItem { ClideMenuItem {
action: actionRedo action: Action {
id: actionRedo
text: qsTr("&Redo")
}
} }
ClideMenuItem { ClideMenuItem {
action: actionCut action: Action {
id: actionCut
text: qsTr("&Cut")
}
} }
ClideMenuItem { ClideMenuItem {
action: actionCopy action: Action {
id: actionCopy
text: qsTr("&Copy")
}
} }
ClideMenuItem { ClideMenuItem {
action: actionPaste action: Action {
id: actionPaste
text: qsTr("&Paste")
}
} }
} }
// //
// View Menu // View Menu
Action {
id: actionToolWindows
text: qsTr("&Tool Windows")
}
Action {
id: actionAppearance
text: qsTr("&Appearance")
}
ClideMenu { ClideMenu {
title: qsTr("&View") title: qsTr("&View")
ClideMenuItem { ClideMenuItem {
action: actionToolWindows action: Action {
id: actionAppearance
text: qsTr("&Appearance")
}
} }
ClideMenuItem { ClideMenuItem {
action: actionAppearance action: Action {
id: actionToolWindows
text: qsTr("&Tool Windows")
}
} }
} }
@@ -140,12 +129,18 @@ MenuBar {
id: clideAbout id: clideAbout
} }
Action { ClideMenu {
title: qsTr("&Help")
ClideMenuItem {
action: Action {
id: actionDocumentation id: actionDocumentation
text: qsTr("&Documentation") text: qsTr("&Documentation")
} }
Action { }
ClideMenuItem {
action: Action {
id: actionAbout id: actionAbout
text: qsTr("&About") text: qsTr("&About")
@@ -153,39 +148,6 @@ MenuBar {
// Toggle the about window with the menu item is clicked. // Toggle the about window with the menu item is clicked.
onTriggered: clideAbout.visible = !clideAbout.visible onTriggered: clideAbout.visible = !clideAbout.visible
} }
ClideMenu {
title: qsTr("&Help")
ClideMenuItem {
action: actionDocumentation
}
ClideMenuItem {
action: actionAbout
}
}
// Base settings for each Menu.
component ClideMenu: Menu {
background: Rectangle {
color: RustColors.explorer_background
border.color: Qt.darker(RustColors.menubar, 2)
implicitWidth: 100
radius: 2
}
}
// Base settings for each MenuItem.
component ClideMenuItem: MenuItem {
id: root
background: Rectangle {
color: root.hovered ? RustColors.hovered : RustColors.unhovered
radius: 1.0
}
contentItem: IconLabel {
color: "black"
font.family: "Helvetica"
text: root.text
} }
} }
} }

View File

@@ -69,11 +69,12 @@ SplitView {
onSingleTapped: (eventPoint, button) => contextMenu.popup() onSingleTapped: (eventPoint, button) => contextMenu.popup()
} }
Menu { ClideMenu {
id: contextMenu id: contextMenu
Action { ClideMenuItem {
text: qsTr("Reset root index") action: Action {
text: qsTr("Reset root")
onTriggered: { onTriggered: {
Logger.log("Resetting root directory: " + clideTreeView.originalRootDirectory); Logger.log("Resetting root directory: " + clideTreeView.originalRootDirectory);
@@ -82,6 +83,7 @@ SplitView {
} }
} }
} }
}
ClideTreeView { ClideTreeView {
id: clideTreeView id: clideTreeView

View File

@@ -142,20 +142,23 @@ TreeView {
} }
} }
} }
Menu { ClideMenu {
id: contextMenu id: contextMenu
Action { ClideMenuItem {
action: Action {
enabled: treeDelegate.hasChildren enabled: treeDelegate.hasChildren
text: qsTr("Set as root index") text: qsTr("Set root")
onTriggered: { onTriggered: {
Logger.debug("Setting new root directory: " + treeDelegate.filePath); Logger.debug("Setting new root directory: " + treeDelegate.filePath);
fileSystemTreeView.rootDirectory = treeDelegate.filePath; fileSystemTreeView.rootDirectory = treeDelegate.filePath;
} }
} }
Action { }
text: qsTr("Reset root index") ClideMenuItem {
action: Action {
text: qsTr("Reset root")
onTriggered: { onTriggered: {
Logger.log("Resetting root directory: " + fileSystemTreeView.originalRootDirectory); Logger.log("Resetting root directory: " + fileSystemTreeView.originalRootDirectory);
@@ -164,6 +167,7 @@ TreeView {
} }
} }
} }
}
selectionModel: ItemSelectionModel { selectionModel: ItemSelectionModel {
} }
} }

View File

@@ -0,0 +1,13 @@
import QtQuick
import QtQuick.Controls.Basic
import clide.module 1.0
Menu {
background: Rectangle {
border.color: Qt.darker(RustColors.menubar, 2)
color: RustColors.menubar
implicitWidth: 100
radius: 2
}
}

View File

@@ -0,0 +1,18 @@
import QtQuick
import QtQuick.Controls.Basic
import clide.module 1.0
MenuItem {
id: root
background: Rectangle {
color: root.hovered ? RustColors.hovered : RustColors.unhovered
radius: 1.0
}
contentItem: IconLabel {
color: "black"
font.family: "Helvetica"
text: root.text
}
}

View File

@@ -1,2 +1,4 @@
ClideScrollBar ClideScrollBar.qml ClideScrollBar ClideScrollBar.qml
ClideHandle ClideHandle.qml ClideHandle ClideHandle.qml
ClideMenu ClideMenu.qml
ClideMenuItem ClideMenuItem.qml