mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 13:54:57 +00:00
feat(a11y): extend Accessible annotations to all widget + view QML files
Continues the a11y pass from the previous commit — adds objectName, Accessible.role, Accessible.name to all remaining qml/MetaBuilder/, qml/qt6/, and qml/widgets/ files. Widget files also get activeFocusOnTab on interactive elements and dynamic Accessible.name bindings. Cleans up redundant addImportPath(projectRoot) call in main.cpp. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -14,16 +14,20 @@ int main(int argc, char *argv[]) {
|
||||
QGuiApplication app(argc, argv);
|
||||
QQmlApplicationEngine engine;
|
||||
|
||||
// Add shared QML component library import paths
|
||||
// No symlinks — directly reference the qml/ directory tree
|
||||
const QString projectRoot = QDir::cleanPath(QStringLiteral(SRCDIR) + QStringLiteral("/../.."));
|
||||
const QString qmlDir = projectRoot + QStringLiteral("/qml");
|
||||
|
||||
// Add qml/ parent so Qt finds "import QmlComponents 1.0" at qml/components/
|
||||
// and "import MetaBuilder 1.0" at qml/MetaBuilder/
|
||||
// QML import paths — no symlinks needed
|
||||
// qml/qmldir has "module QmlComponents"
|
||||
// qml/MetaBuilder/qmldir has "module MetaBuilder"
|
||||
//
|
||||
// Qt resolves "import X 1.0" by scanning import paths
|
||||
// for a qmldir that declares "module X". Adding qml/
|
||||
// as an import path lets Qt find the QmlComponents
|
||||
// module (qml/qmldir) and MetaBuilder (qml/MetaBuilder/)
|
||||
const QString projectRoot = QDir::cleanPath(
|
||||
QStringLiteral(SRCDIR) + QStringLiteral("/../.."));
|
||||
const QString qmlDir =
|
||||
projectRoot + QStringLiteral("/qml");
|
||||
if (QDir(qmlDir).exists()) {
|
||||
engine.addImportPath(qmlDir);
|
||||
engine.addImportPath(projectRoot);
|
||||
}
|
||||
|
||||
PackageRegistry registry;
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
CCard {
|
||||
id: root
|
||||
objectName: "list_activity"
|
||||
Accessible.role: Accessible.List
|
||||
Accessible.name: "Recent Activity"
|
||||
|
||||
property var activities: []
|
||||
property bool isDark: false
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
ColumnLayout {
|
||||
id: root
|
||||
objectName: "selector_adapter_pattern"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Multi-Adapter Pattern"
|
||||
Layout.fillWidth: true
|
||||
spacing: 12
|
||||
|
||||
|
||||
@@ -5,6 +5,10 @@ import QmlComponents 1.0
|
||||
|
||||
CDialog {
|
||||
id: addDropdownDialog
|
||||
objectName: "dialog_add_dropdown"
|
||||
Accessible.role: Accessible.Dialog
|
||||
Accessible.name: title
|
||||
activeFocusOnTab: true
|
||||
title: "Add New Dropdown"
|
||||
|
||||
property string dropdownName: ""
|
||||
|
||||
@@ -5,6 +5,10 @@ import QmlComponents 1.0
|
||||
|
||||
CDialog {
|
||||
id: dlg
|
||||
objectName: "dialog_add_field"
|
||||
Accessible.role: Accessible.Dialog
|
||||
Accessible.name: title
|
||||
activeFocusOnTab: true
|
||||
title: "Add New Field"
|
||||
property var fieldTypes: []
|
||||
property string fieldName: ""
|
||||
|
||||
@@ -5,6 +5,10 @@ import QmlComponents 1.0
|
||||
|
||||
CDialog {
|
||||
id: root
|
||||
objectName: "dialog_add_route"
|
||||
Accessible.role: Accessible.Dialog
|
||||
Accessible.name: title
|
||||
activeFocusOnTab: true
|
||||
|
||||
property string newPath: ""
|
||||
property string newTitle: ""
|
||||
|
||||
@@ -3,6 +3,9 @@ import QtQuick.Layouts; import QmlComponents 1.0
|
||||
import "../AdminCrud.js" as Crud
|
||||
Rectangle {
|
||||
id: panel; color: Theme.background
|
||||
objectName: "panel_admin_content"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Admin Content Panel"
|
||||
property var adminRoot
|
||||
property var adminDlg
|
||||
ColumnLayout {
|
||||
|
||||
@@ -4,6 +4,9 @@ import QmlComponents 1.0
|
||||
|
||||
Item {
|
||||
id: root
|
||||
objectName: "container_admin_dialogs"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Admin Dialogs"
|
||||
|
||||
property bool createDialogOpen: false
|
||||
property bool editDialogOpen: false
|
||||
|
||||
@@ -15,6 +15,9 @@ import QmlComponents 1.0
|
||||
*/
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "bar_admin_stats"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Admin Statistics"
|
||||
|
||||
property var stats: [] // Array of { label, value, accent }
|
||||
property bool isDark: Theme.mode === "dark"
|
||||
|
||||
@@ -4,6 +4,9 @@ import QmlComponents 1.0
|
||||
|
||||
ColumnLayout {
|
||||
id: root
|
||||
objectName: "toolbar_admin"
|
||||
Accessible.role: Accessible.ToolBar
|
||||
Accessible.name: "Admin Toolbar"
|
||||
spacing: 12
|
||||
|
||||
property string selectedEntity: ""
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
ColumnLayout {
|
||||
id: root
|
||||
objectName: "section_backend_connection"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Backend Connection"
|
||||
Layout.fillWidth: true
|
||||
spacing: 16
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
CCard {
|
||||
id: root
|
||||
objectName: "panel_backend_detail"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: backend.name || "Backend"
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
CCard {
|
||||
id: root
|
||||
objectName: "sidebar_backend_list"
|
||||
Accessible.role: Accessible.List
|
||||
Accessible.name: "Backend List"
|
||||
Layout.preferredWidth: 300
|
||||
Layout.fillHeight: true
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@ import QtQuick
|
||||
|
||||
Canvas {
|
||||
id: root
|
||||
objectName: "canvas_grid"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Canvas Grid"
|
||||
|
||||
onPaint: {
|
||||
var ctx = getContext("2d")
|
||||
|
||||
@@ -4,6 +4,9 @@ import QtQuick.Layouts
|
||||
|
||||
MouseArea {
|
||||
id: root
|
||||
objectName: "area_canvas_interaction"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Canvas Interaction Area"
|
||||
|
||||
property bool drawingConnection: false
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Flickable {
|
||||
id: canvas
|
||||
objectName: "viewport_canvas"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Canvas Viewport"
|
||||
|
||||
property alias canvasContent: contentItem
|
||||
property alias connectionLayer: connLayer
|
||||
|
||||
@@ -4,6 +4,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "overlay_canvas_zoom"
|
||||
Accessible.role: Accessible.ToolBar
|
||||
Accessible.name: "Zoom Controls"
|
||||
|
||||
property real zoom: 1.0
|
||||
|
||||
|
||||
@@ -5,6 +5,11 @@ import QmlComponents 1.0
|
||||
|
||||
CCard {
|
||||
id: root
|
||||
objectName: "card_comment"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: comment.username
|
||||
? comment.username + " comment"
|
||||
: "Comment"
|
||||
|
||||
required property var comment
|
||||
property string currentUser: ""
|
||||
|
||||
@@ -5,6 +5,10 @@ import QmlComponents 1.0
|
||||
|
||||
CCard {
|
||||
id: root
|
||||
objectName: "card_comment_input"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Post a Comment"
|
||||
activeFocusOnTab: true
|
||||
|
||||
property bool isDark: false
|
||||
property bool loading: false
|
||||
|
||||
@@ -5,6 +5,11 @@ import QmlComponents 1.0
|
||||
|
||||
ColumnLayout {
|
||||
id: root
|
||||
objectName: "panel_component_properties"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: node
|
||||
? node.name + " Properties"
|
||||
: "Component Properties"
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
spacing: 14
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
ColumnLayout {
|
||||
id: root
|
||||
objectName: "list_component_props"
|
||||
Accessible.role: Accessible.List
|
||||
Accessible.name: "Custom Properties"
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
spacing: 8
|
||||
|
||||
@@ -5,6 +5,10 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "row_component_tree"
|
||||
Accessible.role: Accessible.ListItem
|
||||
Accessible.name: node ? node.name : ""
|
||||
activeFocusOnTab: true
|
||||
|
||||
property var node
|
||||
property bool isSelected: false
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
FlexRow {
|
||||
id: root
|
||||
objectName: "legend_component_type"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Component Type Legend"
|
||||
Layout.fillWidth: true
|
||||
spacing: 6
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "card_config_stat"
|
||||
Accessible.role: Accessible.StaticText
|
||||
Accessible.name: label + ": " + value
|
||||
|
||||
property string label: ""
|
||||
property string value: ""
|
||||
|
||||
@@ -3,6 +3,9 @@ import QmlComponents 1.0
|
||||
|
||||
Canvas {
|
||||
id: root
|
||||
objectName: "layer_connection"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Connection Layer"
|
||||
|
||||
property var nodes: []
|
||||
property var connections: ({})
|
||||
|
||||
@@ -10,6 +10,9 @@ import "../dbal"
|
||||
*/
|
||||
ColumnLayout {
|
||||
id: root
|
||||
objectName: "panel_connection_test"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Connection Test"
|
||||
spacing: 12
|
||||
|
||||
property bool isDark: Theme.mode === "dark"
|
||||
|
||||
@@ -5,6 +5,10 @@ import QmlComponents 1.0
|
||||
|
||||
CDialog {
|
||||
id: dlg
|
||||
objectName: "dialog_create_schema"
|
||||
Accessible.role: Accessible.Dialog
|
||||
Accessible.name: title
|
||||
activeFocusOnTab: true
|
||||
title: "Create New Schema"
|
||||
property string schemaName: ""
|
||||
property string schemaDescription: ""
|
||||
|
||||
@@ -9,6 +9,9 @@ import QmlComponents 1.0
|
||||
*/
|
||||
CCard {
|
||||
id: root
|
||||
objectName: "table_data"
|
||||
Accessible.role: Accessible.Table
|
||||
Accessible.name: "Data Table"
|
||||
|
||||
property var headers: []
|
||||
property var fields: []
|
||||
|
||||
@@ -4,6 +4,9 @@ import QmlComponents 1.0
|
||||
|
||||
CCard {
|
||||
id: envConfig
|
||||
objectName: "card_database_env_config"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Environment Configuration"
|
||||
Layout.fillWidth: true
|
||||
|
||||
property string databaseUrl: ""
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
FlexRow {
|
||||
id: root
|
||||
objectName: "row_database_stats"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Database Statistics"
|
||||
Layout.fillWidth: true
|
||||
spacing: 12
|
||||
|
||||
|
||||
@@ -5,6 +5,10 @@ import QmlComponents 1.0
|
||||
|
||||
CDialog {
|
||||
id: root
|
||||
objectName: "dialog_delete_confirm"
|
||||
Accessible.role: Accessible.Dialog
|
||||
Accessible.name: title
|
||||
activeFocusOnTab: true
|
||||
|
||||
property string itemName: ""
|
||||
property string description: "This action cannot be undone."
|
||||
|
||||
@@ -4,6 +4,10 @@ import QmlComponents 1.0
|
||||
|
||||
CDialog {
|
||||
id: root
|
||||
objectName: "dialog_delete_dropdown"
|
||||
Accessible.role: Accessible.Dialog
|
||||
Accessible.name: title
|
||||
activeFocusOnTab: true
|
||||
title: "Delete Dropdown"
|
||||
|
||||
property var dropdown: null
|
||||
|
||||
@@ -5,6 +5,10 @@ import QmlComponents 1.0
|
||||
|
||||
CDialog {
|
||||
id: deleteRecordDialog
|
||||
objectName: "dialog_delete_record"
|
||||
Accessible.role: Accessible.Dialog
|
||||
Accessible.name: title
|
||||
activeFocusOnTab: true
|
||||
title: "Delete " + entity
|
||||
|
||||
property string entity: ""
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
CCard {
|
||||
id: root
|
||||
objectName: "panel_dropdown_editor"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Dropdown Editor"
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "menu_dropdown"
|
||||
Accessible.role: Accessible.PopupMenu
|
||||
Accessible.name: "Dropdown Menu"
|
||||
|
||||
property bool isDark: Theme.mode === "dark"
|
||||
property var menuItems: []
|
||||
|
||||
@@ -4,6 +4,10 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "menuitem_" + action
|
||||
Accessible.role: Accessible.MenuItem
|
||||
Accessible.name: label
|
||||
activeFocusOnTab: true
|
||||
|
||||
property bool isDark: Theme.mode === "dark"
|
||||
property string icon: ""
|
||||
|
||||
@@ -4,6 +4,9 @@ import QmlComponents 1.0
|
||||
|
||||
ColumnLayout {
|
||||
id: root
|
||||
objectName: "selector_encryption"
|
||||
Accessible.role: Accessible.RadioGroup
|
||||
Accessible.name: "Encryption"
|
||||
|
||||
property var options: ["None", "TLS", "SSL"]
|
||||
property int selectedIndex: 1
|
||||
|
||||
@@ -18,6 +18,10 @@ import QmlComponents 1.0
|
||||
*/
|
||||
CDialog {
|
||||
id: root
|
||||
objectName: "dialog_entity_form"
|
||||
Accessible.role: Accessible.Dialog
|
||||
Accessible.name: title
|
||||
activeFocusOnTab: true
|
||||
|
||||
property string entity: "" // Entity type name (e.g. "User")
|
||||
property var fields: [] // Array of { field, label, value? }
|
||||
|
||||
@@ -16,6 +16,9 @@ import QmlComponents 1.0
|
||||
*/
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "sidebar_entity"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Entity Sidebar"
|
||||
|
||||
property var entities: [] // Array of entity name strings
|
||||
property string selectedEntity: "" // Currently selected entity
|
||||
|
||||
@@ -4,6 +4,9 @@ import QmlComponents 1.0
|
||||
|
||||
FlexRow {
|
||||
id: root
|
||||
objectName: "status_execution"
|
||||
Accessible.role: Accessible.Indicator
|
||||
Accessible.name: "Execution Status"
|
||||
|
||||
property string status: ""
|
||||
|
||||
|
||||
@@ -4,6 +4,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: footer
|
||||
objectName: "footer_frontpage"
|
||||
Accessible.role: Accessible.Footer
|
||||
Accessible.name: "Page Footer"
|
||||
|
||||
property color surfaceColor: "transparent"
|
||||
property color textColor: Theme.textSecondary
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: guideTab
|
||||
objectName: "tab_god_panel_guide"
|
||||
Accessible.role: Accessible.PageTab
|
||||
Accessible.name: "Guide"
|
||||
color: "transparent"
|
||||
|
||||
required property var levelData
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "header_god_panel"
|
||||
Accessible.role: Accessible.Heading
|
||||
Accessible.name: "God Panel"
|
||||
property var configCounts: ({})
|
||||
property bool isDark: false
|
||||
signal navigateLevel(int level)
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "tab_god_panel_settings"
|
||||
Accessible.role: Accessible.PageTab
|
||||
Accessible.name: "Settings"
|
||||
color: "transparent"
|
||||
|
||||
required property bool isDark
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
CCard {
|
||||
id: root
|
||||
objectName: "card_god_user"
|
||||
Accessible.role: Accessible.ListItem
|
||||
Accessible.name: user ? user.username : ""
|
||||
|
||||
required property var user
|
||||
property bool isDark: false
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "tab_god_users"
|
||||
Accessible.role: Accessible.PageTab
|
||||
Accessible.name: "God Users"
|
||||
color: "transparent"
|
||||
|
||||
// ── Data ──
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "section_hero"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "MetaBuilder Hero"
|
||||
|
||||
property string platformVersion: "0.9.1"
|
||||
property bool isDark: false
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "progressbar_job"
|
||||
Accessible.role: Accessible.ProgressBar
|
||||
Accessible.name: "Job Progress"
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: 20
|
||||
color: "transparent"
|
||||
|
||||
@@ -2,6 +2,9 @@ import QtQuick
|
||||
|
||||
Item {
|
||||
id: shortcuts
|
||||
objectName: "keyboard_shortcuts"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Keyboard Shortcuts"
|
||||
|
||||
required property var appWindow
|
||||
|
||||
|
||||
@@ -6,6 +6,9 @@ import QmlComponents 1.0
|
||||
// Language selector pill (e.g. "EN")
|
||||
Item {
|
||||
id: root
|
||||
Accessible.role: Accessible.Button
|
||||
Accessible.name: "Language: "
|
||||
+ currentLanguage
|
||||
|
||||
property string currentLanguage: "EN"
|
||||
property bool isDark: Theme.mode === "dark"
|
||||
|
||||
@@ -4,6 +4,10 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "card_level_" + level
|
||||
Accessible.role: Accessible.Button
|
||||
Accessible.name: name + " Level " + level
|
||||
activeFocusOnTab: true
|
||||
|
||||
property int level: 1
|
||||
property string name: ""
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "card_level_ref_" + levelNumber
|
||||
Accessible.role: Accessible.ListItem
|
||||
Accessible.name: levelName
|
||||
|
||||
property string levelName: ""
|
||||
property string role: ""
|
||||
|
||||
@@ -4,6 +4,9 @@ import QmlComponents 1.0
|
||||
|
||||
Flow {
|
||||
id: root
|
||||
objectName: "flow_level_tags"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Level Tags"
|
||||
|
||||
property var tags: []
|
||||
property color accent: "#94A3B8"
|
||||
|
||||
@@ -5,6 +5,10 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "form_login"
|
||||
Accessible.role: Accessible.Form
|
||||
Accessible.name: "Login Form"
|
||||
activeFocusOnTab: true
|
||||
|
||||
property bool isDark: false
|
||||
property bool loading: false
|
||||
|
||||
@@ -4,6 +4,9 @@ import QmlComponents 1.0
|
||||
|
||||
CCard {
|
||||
id: root
|
||||
objectName: "mediaHeader"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Media service header"
|
||||
Layout.fillWidth: true
|
||||
|
||||
property string serviceStatus: "unknown"
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "mediaJobsTab"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Media jobs"
|
||||
color: "transparent"
|
||||
|
||||
property var jobs: []
|
||||
|
||||
@@ -6,6 +6,8 @@ import QmlComponents 1.0
|
||||
// Centered level navigation buttons for the app bar
|
||||
Item {
|
||||
id: root
|
||||
Accessible.role: Accessible.MenuBar
|
||||
Accessible.name: "Level navigation"
|
||||
|
||||
property string currentView: "frontpage"
|
||||
property int currentLevel: 1
|
||||
@@ -31,6 +33,8 @@ Item {
|
||||
Repeater {
|
||||
model: root.levels
|
||||
delegate: CButton {
|
||||
Accessible.role: Accessible.MenuItem
|
||||
Accessible.name: modelData.label
|
||||
visible: modelData.level <= root.currentLevel
|
||||
text: modelData.label
|
||||
variant: root.currentView === modelData.view
|
||||
|
||||
@@ -6,6 +6,8 @@ import QmlComponents 1.0
|
||||
// Bell icon with red notification dot
|
||||
Item {
|
||||
id: root
|
||||
Accessible.role: Accessible.Button
|
||||
Accessible.name: "Notifications"
|
||||
|
||||
property bool hasNotifications: true
|
||||
property bool isDark: Theme.mode === "dark"
|
||||
|
||||
@@ -7,6 +7,8 @@ import QmlComponents 1.0
|
||||
// Settings
|
||||
Rectangle {
|
||||
id: root
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Navigation"
|
||||
|
||||
property string currentView: "frontpage"
|
||||
property int currentLevel: 1
|
||||
@@ -74,6 +76,7 @@ Rectangle {
|
||||
|
||||
delegate: CListItem {
|
||||
Layout.fillWidth: true
|
||||
activeFocusOnTab: true
|
||||
title: modelData.label
|
||||
leadingIcon: modelData.icon
|
||||
selected: root.currentView
|
||||
@@ -96,6 +99,7 @@ Rectangle {
|
||||
|
||||
delegate: CListItem {
|
||||
Layout.fillWidth: true
|
||||
activeFocusOnTab: true
|
||||
title: modelData.navLabel
|
||||
? modelData.navLabel
|
||||
: modelData.name
|
||||
@@ -115,6 +119,7 @@ Rectangle {
|
||||
|
||||
CListItem {
|
||||
Layout.fillWidth: true
|
||||
activeFocusOnTab: true
|
||||
title: "Settings"
|
||||
leadingIcon: "S"
|
||||
selected: root.currentView === "settings"
|
||||
|
||||
@@ -23,6 +23,8 @@ Item {
|
||||
id: avatarCircle
|
||||
anchors.fill: parent
|
||||
radius: 16
|
||||
Accessible.role: Accessible.Button
|
||||
Accessible.name: "User menu: " + root.username
|
||||
color: avatarMA.containsMouse
|
||||
? Qt.rgba(0.39, 0.4, 0.95, isDark ? 0.25 : 0.2)
|
||||
: Qt.rgba(0.39, 0.4, 0.95, isDark ? 0.15 : 0.12)
|
||||
@@ -48,6 +50,8 @@ Item {
|
||||
// ── Dropdown menu ──
|
||||
CDropdownMenu {
|
||||
id: dropdownMenu
|
||||
Accessible.role: Accessible.Menu
|
||||
Accessible.name: "User actions"
|
||||
visible: false
|
||||
anchors.top: parent.bottom
|
||||
anchors.right: parent.right
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "dropdownExpandedList"
|
||||
Accessible.role: Accessible.List
|
||||
Accessible.name: "Dropdown options list"
|
||||
|
||||
property var options: []
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
ColumnLayout {
|
||||
id: root
|
||||
objectName: "dropdownGeneralForm"
|
||||
Accessible.role: Accessible.Form
|
||||
Accessible.name: "Dropdown general settings"
|
||||
spacing: 16
|
||||
|
||||
property var dropdown: null
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
ColumnLayout {
|
||||
id: root
|
||||
objectName: "dropdownOptionsEditor"
|
||||
Accessible.role: Accessible.Form
|
||||
Accessible.name: "Dropdown options editor"
|
||||
spacing: 16
|
||||
property var dropdown: null
|
||||
signal addOptionClicked()
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
CPaper {
|
||||
id: root
|
||||
objectName: "dropdownPreview"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Dropdown preview"
|
||||
property var dropdown: null
|
||||
implicitHeight: previewColumn.implicitHeight + 32
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
CCard {
|
||||
id: root
|
||||
objectName: "dropdownSidebar"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Dropdown sidebar"
|
||||
|
||||
property var dropdowns: []
|
||||
property int selectedIndex: -1
|
||||
|
||||
@@ -3,6 +3,9 @@ import QtQuick.Layouts
|
||||
|
||||
Rectangle {
|
||||
id: card
|
||||
objectName: "featureCard"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: title
|
||||
property string title: ""
|
||||
property string description: ""
|
||||
|
||||
|
||||
@@ -4,6 +4,9 @@ import QtQuick.Layouts
|
||||
|
||||
Rectangle {
|
||||
id: hero
|
||||
objectName: "heroSection"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Hero section"
|
||||
property string headline: "Build entire stacks visually,
|
||||
from public sites to secure admin panels."
|
||||
property string subhead: "MetaBuilder layers marketing, observability,
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: codeEditorRoot
|
||||
objectName: "luaCodeEditor"
|
||||
Accessible.role: Accessible.EditableText
|
||||
Accessible.name: "Lua code editor"
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
color: "#1e1e2e"
|
||||
|
||||
@@ -3,6 +3,9 @@ import QtQuick.Layouts
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
objectName: "luaEditorStatusBar"
|
||||
Accessible.role: Accessible.StatusBar
|
||||
Accessible.name: "Editor status bar"
|
||||
|
||||
property int lineCount: 0
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
ColumnLayout {
|
||||
id: outputConsole
|
||||
objectName: "luaOutputConsole"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Lua output console"
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
spacing: 8
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: outputPanel
|
||||
objectName: "luaOutputPanel"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Lua output panel"
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: 220
|
||||
color: Theme.paper
|
||||
|
||||
@@ -5,6 +5,9 @@ import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: propsPanel
|
||||
objectName: "luaPropertiesPanel"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Lua script properties"
|
||||
Layout.preferredWidth: 260
|
||||
Layout.fillHeight: true
|
||||
color: Theme.paper
|
||||
|
||||
@@ -4,6 +4,9 @@ import "qmllib/dbal"; import "qmllib/MetaBuilder"
|
||||
import "AdminCrud.js" as Crud
|
||||
Rectangle {
|
||||
id: root; color: Theme.background
|
||||
objectName: "view_admin"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Admin View"
|
||||
DBALProvider { id: dbal }
|
||||
property bool useLiveData: dbal.connected; property bool configLoaded: false
|
||||
property string selEnt: "User"
|
||||
|
||||
@@ -9,9 +9,12 @@ import "qmllib/MetaBuilder/AppLogic.js" as Logic
|
||||
|
||||
ApplicationWindow {
|
||||
id: appWindow
|
||||
objectName: "appWindow"
|
||||
visible: true; width: 1400; height: 900
|
||||
title: "MetaBuilder Observatory"
|
||||
color: Theme.background
|
||||
Accessible.role: Accessible.Window
|
||||
Accessible.name: "MetaBuilder"
|
||||
|
||||
DBALProvider { id: dbalProvider }
|
||||
|
||||
@@ -46,6 +49,7 @@ ApplicationWindow {
|
||||
}
|
||||
|
||||
header: CAppBar {
|
||||
objectName: "appBar"
|
||||
height: 48
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
@@ -122,6 +126,7 @@ ApplicationWindow {
|
||||
anchors.topMargin:
|
||||
dbalBanner.visible ? 28 : 0
|
||||
CSidebar {
|
||||
objectName: "sidebar"
|
||||
currentView: appWindow.currentView
|
||||
currentLevel: appWindow.currentLevel
|
||||
loggedIn: appWindow.loggedIn
|
||||
@@ -138,6 +143,7 @@ ApplicationWindow {
|
||||
Layout.fillHeight: true
|
||||
color: "transparent"
|
||||
StackLayout {
|
||||
objectName: "mainContent"
|
||||
anchors.fill: parent
|
||||
currentIndex:
|
||||
viewIndex(currentView)
|
||||
|
||||
@@ -7,7 +7,11 @@ import "qmllib/MetaBuilder" as Meta
|
||||
import "CommentsDBAL.js" as DBAL
|
||||
|
||||
Rectangle {
|
||||
id: commentsRoot
|
||||
color: "transparent"
|
||||
objectName: "view_comments"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Discussion Board"
|
||||
|
||||
DBALProvider { id: dbal }
|
||||
property int sortMode: 0
|
||||
|
||||
@@ -9,6 +9,9 @@ import "qmllib/MetaBuilder/ComponentTreeDBAL.js" as CTDBAL
|
||||
Rectangle {
|
||||
id: root
|
||||
color: Theme.background
|
||||
objectName: "view_component_hierarchy"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Component Hierarchy Editor"
|
||||
|
||||
DBALProvider { id: dbal }
|
||||
property bool useLiveData: dbal.connected
|
||||
|
||||
@@ -9,6 +9,9 @@ import "qmllib/MetaBuilder/CssClassLogic.js" as Logic
|
||||
Rectangle {
|
||||
id: root
|
||||
color: Theme.background
|
||||
objectName: "view_css_class_manager"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "CSS Class Manager"
|
||||
|
||||
DBALProvider { id: dbal }
|
||||
property bool useLiveData: dbal.connected
|
||||
|
||||
@@ -10,6 +10,9 @@ import "qmllib/MetaBuilder/DashboardDBAL.js"
|
||||
Rectangle {
|
||||
id: dashRoot
|
||||
color: Theme.background
|
||||
objectName: "view_dashboard"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Dashboard"
|
||||
|
||||
DBALProvider { id: dbal }
|
||||
|
||||
|
||||
@@ -4,6 +4,9 @@ import "qmllib/dbal"; import "qmllib/MetaBuilder"
|
||||
import "qmllib/MetaBuilder/DatabaseLogic.js" as Logic
|
||||
Rectangle {
|
||||
id: root; color: Theme.background
|
||||
objectName: "view_database_manager"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Database Manager"
|
||||
DBALProvider { id: dbal }
|
||||
property bool useLiveData: dbal.connected
|
||||
property int selBk: 2; property int actBk: 2; property int adPat: 0
|
||||
|
||||
@@ -9,6 +9,9 @@ import "DropdownCrud.js" as Crud
|
||||
Rectangle {
|
||||
id: root
|
||||
color: Theme.background
|
||||
objectName: "view_dropdown_config"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Dropdown Configuration"
|
||||
|
||||
DBALProvider { id: dbal }
|
||||
property bool useLiveData: dbal.connected
|
||||
|
||||
@@ -4,6 +4,9 @@ import "qmllib/dbal"; import "qmllib/MetaBuilder"
|
||||
import "qmllib/MetaBuilder/FrontPageLogic.js" as Logic
|
||||
Rectangle {
|
||||
id: root; color: Theme.background
|
||||
objectName: "view_frontpage"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Front Page"
|
||||
DBALProvider { id: dbal }
|
||||
property bool dbalOnline: dbal.connected
|
||||
property string platformVersion: "0.9.1"
|
||||
|
||||
@@ -9,6 +9,9 @@ import "config/GodPanelConfig.js"
|
||||
Rectangle {
|
||||
id: godPanel
|
||||
color: Theme.background
|
||||
objectName: "view_god_panel"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "God Panel"
|
||||
|
||||
property int currentTab: 0
|
||||
property var configCounts: ({
|
||||
|
||||
@@ -8,6 +8,9 @@ import "LoginDBAL.js" as DBAL
|
||||
|
||||
Rectangle {
|
||||
id: loginView; color: "transparent"
|
||||
objectName: "view_login"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Login"
|
||||
property string errorMessage: ""
|
||||
property bool loggingIn: false
|
||||
property bool isDark:
|
||||
|
||||
@@ -4,6 +4,9 @@ import "qmllib/MetaBuilder"
|
||||
import "qmllib/MetaBuilder/LuaEditorLogic.js" as Logic
|
||||
Rectangle {
|
||||
id: root; color: "transparent"
|
||||
objectName: "view_lua_editor"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Lua Editor"
|
||||
property int selIdx: 0
|
||||
property string testOutput: ""
|
||||
property string scanResult: ""
|
||||
|
||||
@@ -4,7 +4,11 @@ import QtQuick.Layouts
|
||||
import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: materialRoot
|
||||
color: Theme.background
|
||||
objectName: "view_material_landing"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Material Landing"
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
@@ -9,6 +9,9 @@ import "MediaServiceCrud.js" as Crud
|
||||
Rectangle {
|
||||
id: root
|
||||
color: "transparent"
|
||||
objectName: "view_media_service"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Media Service Panel"
|
||||
|
||||
property int currentTab: 0
|
||||
property string serviceStatus: "unknown"
|
||||
|
||||
@@ -4,6 +4,9 @@ import QmlComponents 1.0
|
||||
|
||||
CPaper {
|
||||
id: panel
|
||||
objectName: "view_mod_player"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "MOD Player"
|
||||
width: 420
|
||||
implicitHeight: contentCol.implicitHeight + 32
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ import "ModeratorData.js" as Data
|
||||
Rectangle {
|
||||
id: modView
|
||||
color: Theme.background
|
||||
objectName: "view_moderator"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Moderator View"
|
||||
|
||||
readonly property bool isDark:
|
||||
Theme.mode === "dark"
|
||||
|
||||
@@ -8,6 +8,9 @@ import "NotificationsDBAL.js" as DBAL
|
||||
|
||||
Rectangle {
|
||||
id: root; color: "transparent"
|
||||
objectName: "view_notifications"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Notifications Panel"
|
||||
DBALProvider { id: dbal }
|
||||
property bool useLiveData: dbal.connected
|
||||
property string activeFilter: "All"
|
||||
|
||||
@@ -4,7 +4,11 @@ import QtQuick.Layouts
|
||||
import QmlComponents 1.0
|
||||
|
||||
Rectangle {
|
||||
id: pkgRoot
|
||||
color: Theme.background
|
||||
objectName: "view_package_manager"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Package Manager"
|
||||
|
||||
property string searchText: ""
|
||||
property string selectedPackageId: ""
|
||||
|
||||
@@ -6,6 +6,9 @@ import QmlComponents 1.0
|
||||
Rectangle {
|
||||
id: loader
|
||||
color: "transparent"
|
||||
objectName: "view_package_" + packageId
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: formatTitle(packageId)
|
||||
|
||||
property string packageId: ""
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ import "PageRoutesDBAL.js" as DBAL
|
||||
|
||||
Rectangle {
|
||||
id: root; color: Theme.background
|
||||
objectName: "view_page_routes"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Page Routes Manager"
|
||||
DBALProvider { id: dbal }
|
||||
property bool useLiveData: dbal.connected
|
||||
property int selectedIndex: -1
|
||||
|
||||
@@ -9,6 +9,9 @@ import "qmllib/MetaBuilder/ProfileDBAL.js"
|
||||
|
||||
Rectangle {
|
||||
id: profileRoot; color: Theme.background
|
||||
objectName: "view_profile"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Profile"
|
||||
DBALProvider { id: dbal }
|
||||
readonly property bool isDark:
|
||||
Theme.mode === "dark"
|
||||
|
||||
@@ -4,6 +4,9 @@ import "qmllib/MetaBuilder"
|
||||
import "qmllib/MetaBuilder/SmtpLogic.js" as Logic
|
||||
Rectangle {
|
||||
id: se; color: "transparent"
|
||||
objectName: "view_smtp_config"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "SMTP Configuration"
|
||||
property string smtpHost: "smtp.example.com"
|
||||
property string smtpPort: "587"
|
||||
property string smtpUsername: ""; property string smtpPassword: ""
|
||||
|
||||
@@ -4,6 +4,9 @@ import "qmllib/dbal"; import "qmllib/MetaBuilder"
|
||||
import "qmllib/MetaBuilder/SchemaEditorDBAL.js" as SDBAL
|
||||
Rectangle {
|
||||
id: root; color: Theme.background
|
||||
objectName: "view_schema_editor"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Schema Editor"
|
||||
DBALProvider { id: dbal }
|
||||
property int selSch: 0; property int selFld: -1
|
||||
property bool createDlg: false; property bool addFldDlg: false
|
||||
|
||||
@@ -9,6 +9,9 @@ import "qmllib/MetaBuilder/SettingsLogic.js" as Logic
|
||||
Rectangle {
|
||||
id: root
|
||||
color: "transparent"
|
||||
objectName: "view_settings"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Settings"
|
||||
|
||||
DBALProvider { id: dbal }
|
||||
property bool useLiveData: dbal.connected
|
||||
|
||||
@@ -5,7 +5,11 @@ import QmlComponents 1.0
|
||||
import "qmllib/MetaBuilder"
|
||||
|
||||
Rectangle {
|
||||
id: storybookRoot
|
||||
color: Theme.background
|
||||
objectName: "view_storybook"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Storybook"
|
||||
|
||||
property string selectedComponent: "Button"
|
||||
property bool outlinedMode: false
|
||||
|
||||
@@ -9,6 +9,9 @@ import "SuperGodCrud.js" as Crud
|
||||
Rectangle {
|
||||
id: root
|
||||
color: Theme.background
|
||||
objectName: "view_supergod_panel"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Super God Panel"
|
||||
|
||||
DBALProvider { id: dbal }
|
||||
property bool dbalOnline: dbal.connected
|
||||
|
||||
@@ -8,6 +8,9 @@ import "qmllib/MetaBuilder/ThemeEditorLogic.js" as TELogic
|
||||
Rectangle {
|
||||
id: root
|
||||
color: Theme.background
|
||||
objectName: "view_theme_editor"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "Theme Editor"
|
||||
|
||||
property string selectedTheme: "dark"
|
||||
property bool hasUnsavedChanges: false
|
||||
|
||||
@@ -9,6 +9,9 @@ import "qmllib/MetaBuilder/UserManagementDBAL.js" as UDBAL
|
||||
Rectangle {
|
||||
id: root
|
||||
color: Theme.background
|
||||
objectName: "view_user_management"
|
||||
Accessible.role: Accessible.Pane
|
||||
Accessible.name: "User Management"
|
||||
|
||||
DBALProvider { id: dbal }
|
||||
property bool useLiveData: dbal.connected
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user