New way to open debug consoles
Replace broken old utils.debug(...) (since the utils.js → Utils.qml transition) with a declarative approach: a console can now be opened with by placing a `DebugConsoleLoader {}` anywhere. mainUI has a default console opened by F1/alt-shit-c when no other console is loaded.
This commit is contained in:
parent
f4beb52e0c
commit
2229b41af1
|
@ -17,9 +17,9 @@ HDrawer {
|
||||||
z: 9999
|
z: 9999
|
||||||
position: 0
|
position: 0
|
||||||
|
|
||||||
property var previouslyFocused: null
|
property Item previouslyFocused: null
|
||||||
|
|
||||||
property var target: null
|
property QtObject target: null
|
||||||
property alias t: debugConsole.target
|
property alias t: debugConsole.target
|
||||||
|
|
||||||
property var history: window.history.console
|
property var history: window.history.console
|
||||||
|
@ -51,10 +51,6 @@ HDrawer {
|
||||||
|
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
if (mainUI.shortcuts.debugConsole)
|
|
||||||
mainUI.shortcuts.debugConsole.destroy()
|
|
||||||
|
|
||||||
mainUI.shortcuts.debugConsole = debugConsole
|
|
||||||
position = 1
|
position = 1
|
||||||
commandsView.model.insert(0, {
|
commandsView.model.insert(0, {
|
||||||
input: "t = " + String(target),
|
input: "t = " + String(target),
|
||||||
|
|
43
src/gui/DebugConsoleLoader.qml
Normal file
43
src/gui/DebugConsoleLoader.qml
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
import QtQuick 2.12
|
||||||
|
import "Base"
|
||||||
|
|
||||||
|
HLoader {
|
||||||
|
id: loader
|
||||||
|
|
||||||
|
onLoaded: {
|
||||||
|
if (! isDefault)
|
||||||
|
shortcuts.defaultDebugConsoleLoader.active = false
|
||||||
|
|
||||||
|
if (shortcuts.debugConsoleLoader)
|
||||||
|
shortcuts.debugConsoleLoader.active = false
|
||||||
|
|
||||||
|
shortcuts.debugConsoleLoader = this
|
||||||
|
}
|
||||||
|
|
||||||
|
onActiveChanged: if (! active) shortcuts.debugConsoleLoader = null
|
||||||
|
|
||||||
|
Component.onDestruction: shortcuts.debugConsoleLoader = null
|
||||||
|
|
||||||
|
sourceComponent: DebugConsole {
|
||||||
|
target: loader.target
|
||||||
|
|
||||||
|
property HLoader parentLoader: loader
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
property QtObject target: parent
|
||||||
|
|
||||||
|
readonly property bool isDefault:
|
||||||
|
shortcuts.defaultDebugConsoleLoader &&
|
||||||
|
shortcuts.defaultDebugConsoleLoader === this
|
||||||
|
|
||||||
|
|
||||||
|
function toggle() {
|
||||||
|
if (! loader.active) {
|
||||||
|
loader.active = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
loader.item.visible = ! loader.item.visible
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,12 +13,23 @@ Item {
|
||||||
// A QQC Container that should be affected by tab navigation shortcuts
|
// A QQC Container that should be affected by tab navigation shortcuts
|
||||||
property Container tabsTarget
|
property Container tabsTarget
|
||||||
|
|
||||||
// DebugConsole that should be affected by console shortcuts
|
// DebugConsoleLoader that should be affected by console shortcuts
|
||||||
property DebugConsole debugConsole
|
property DebugConsoleLoader debugConsoleLoader
|
||||||
|
|
||||||
|
// DebugConsoleLoader to activate if no other loader is active and the
|
||||||
|
// shortcut to bring up a console is pressed
|
||||||
|
property DebugConsoleLoader defaultDebugConsoleLoader
|
||||||
|
|
||||||
|
readonly property DebugConsole debugConsole:
|
||||||
|
debugConsoleLoader ? debugConsoleLoader.item : null
|
||||||
|
|
||||||
|
readonly property DebugConsole defaultDebugConsole:
|
||||||
|
defaultDebugConsoleLoader ? defaultDebugConsoleLoader.item : null
|
||||||
|
|
||||||
readonly property Item toFlick:
|
readonly property Item toFlick:
|
||||||
debugConsole && debugConsole.activeFocus ?
|
debugConsole && debugConsole.activeFocus ?
|
||||||
debugConsole.commandsView : flickTarget
|
debugConsole.commandsView :
|
||||||
|
flickTarget
|
||||||
|
|
||||||
|
|
||||||
// App
|
// App
|
||||||
|
@ -35,8 +46,12 @@ Item {
|
||||||
onActivated: {
|
onActivated: {
|
||||||
if (debugConsole) {
|
if (debugConsole) {
|
||||||
debugConsole.visible = ! debugConsole.visible
|
debugConsole.visible = ! debugConsole.visible
|
||||||
|
|
||||||
|
} else if (! defaultDebugConsoleLoader.active) {
|
||||||
|
defaultDebugConsoleLoader.active = true
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
utils.debug(mainUI || window)
|
defaultDebugConsole.visible = ! defaultDebugConsole.visible
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
import QtQuick 2.12
|
import QtQuick 2.12
|
||||||
import QtQuick.Layouts 1.12
|
import QtQuick.Layouts 1.12
|
||||||
import "../../../Base"
|
import "../../../Base"
|
||||||
|
import "../../.."
|
||||||
|
|
||||||
HRowLayout {
|
HRowLayout {
|
||||||
id: eventContent
|
id: eventContent
|
||||||
|
@ -40,8 +41,13 @@ HRowLayout {
|
||||||
|
|
||||||
TapHandler {
|
TapHandler {
|
||||||
enabled: debugMode
|
enabled: debugMode
|
||||||
onDoubleTapped:
|
onDoubleTapped: debugConsoleLoader.toggle()
|
||||||
utils.debug(eventContent, null, con => { con.runJS("json()") })
|
}
|
||||||
|
|
||||||
|
DebugConsoleLoader {
|
||||||
|
id: debugConsoleLoader
|
||||||
|
active: false
|
||||||
|
onLoaded: item.runJS("json()")
|
||||||
}
|
}
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
|
|
|
@ -35,7 +35,15 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalShortcuts { id: shortcuts }
|
GlobalShortcuts {
|
||||||
|
id: shortcuts
|
||||||
|
defaultDebugConsoleLoader: debugConsoleLoader
|
||||||
|
}
|
||||||
|
|
||||||
|
DebugConsoleLoader {
|
||||||
|
id: debugConsoleLoader
|
||||||
|
active: false
|
||||||
|
}
|
||||||
|
|
||||||
HImage {
|
HImage {
|
||||||
id: mainUIBackground
|
id: mainUIBackground
|
||||||
|
|
|
@ -57,14 +57,6 @@ QtObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function debug(target, parent=null, callback=null) {
|
|
||||||
parent = parent || target
|
|
||||||
return utils.makeObject(
|
|
||||||
"DebugConsole.qml", parent, { target }, callback,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function isEmptyObject(obj) {
|
function isEmptyObject(obj) {
|
||||||
return Object.entries(obj).length === 0 && obj.constructor === Object
|
return Object.entries(obj).length === 0 && obj.constructor === Object
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user