1
0
Fork 0

- screen.nas: add live property display

- prop_key_handler.nas add support for live property display
This commit is contained in:
mfranz 2008-05-14 10:23:47 +00:00
parent 6a577072da
commit 02c4b7a613
2 changed files with 54 additions and 5 deletions

View file

@ -12,6 +12,7 @@
# <property>=<value><CR> -> set property to value
# <property><CR> -> print property and value to screen and terminal
# <property>* -> print property and all children to terminal
# <property>! -> add property to display list (reset list with /!)
# <property>: -> open property browser in this property's directory
# <string>? -> print all properties whose path contains this string
#
@ -134,6 +135,16 @@ var handle_key = func(key, shift) {
stop(0);
return 1;
} elsif (key == `!` and state.node != nil and state.value == nil) {
if (!state.node.getPath()) {
screen.property_display.reset();
stop(0);
} else {
screen.property_display.add(state.node);
stop(1);
}
return 1;
} elsif (key == `*` and state.node != nil and state.value == nil) {
debug.tree(state.node);
stop(1);

View file

@ -84,7 +84,6 @@ var window = {
setlistener("/sim/startup/ysize", func { m._redraw_() });
return m;
},
write : func(msg, r = nil, g = nil, b = nil, a = nil) {
if (me.namenode == nil)
return;
@ -109,7 +108,6 @@ var window = {
}
me.show();
},
show : func {
if (me.dialog != nil)
me.close();
@ -139,7 +137,6 @@ var window = {
fgcommand("dialog-new", me.dialog.prop());
fgcommand("dialog-show", me.namenode);
},
close : func {
fgcommand("dialog-close", me.namenode);
if (me.dialog != nil and me.sticky) {
@ -147,7 +144,6 @@ var window = {
me.y = me.dialog.prop().getNode("lasty").getValue();
}
},
_timeout_ : func {
if (me.skiptimer > 0) {
me.skiptimer -= 1;
@ -162,7 +158,6 @@ var window = {
me.lines = [];
}
},
_redraw_ : func {
if (me.dialog != nil) {
me.close();
@ -173,9 +168,52 @@ var window = {
var property_display = {
init : func(x, y, lines) {
me.listener = setlistener("/sim/gui/dialogs/property-browser/selected", func(n) {
var n = n.getValue();
if (n != "" and getprop("/devices/status/keyboard/shift")) {
if (getprop("/devices/status/keyboard/ctrl"))
return me.reset();
n = props.globals.getNode(n);
if (!n.getAttribute("children"))
me.add(n);
}
});
me.window = window.new(x, y, lines, 0);
me.window.align = "left";
me.loopid = 0;
me.reset();
},
reset : func {
me.loopid += 1;
me.window.close();
me.nodes = [];
},
add : func(n) {
append(me.nodes, isa(n, props.Node) ? n : props.globals.getNode(n, 1));
me._loop_(me.loopid += 1);
},
update : func {
me.window.lines = [];
foreach (var n; me.nodes)
append(me.window.lines, [n.getName() ~ " = " ~ n.getValue(), 1, 1, 0.7, 1]);
me.window.show();
},
_loop_ : func(id) {
id != me.loopid and return;
me.update();
settimer(func { me._loop_(id) }, 0.5);
},
};
var log = nil;
_setlistener("/sim/signals/nasal-dir-initialized", func {
property_display.init(5, -25, 999);
setlistener("/sim/gui/current-style", func {
var theme = getprop("/sim/gui/current-style");
theme_font = getprop("/sim/gui/style[" ~ theme ~ "]/fonts/message-display/name");