From 738b5eea60c4b271b6aa27399647b0ef985353f5 Mon Sep 17 00:00:00 2001 From: mfranz Date: Fri, 26 May 2006 08:30:41 +0000 Subject: [PATCH] who said cloning was bad? --- gui/dialogs/property-browser.xml | 40 +++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/gui/dialogs/property-browser.xml b/gui/dialogs/property-browser.xml index 0ee065396..1dbe44d2f 100644 --- a/gui/dialogs/property-browser.xml +++ b/gui/dialogs/property-browser.xml @@ -2,6 +2,7 @@ property-browser + property-browser vbox 3 @@ -9,6 +10,17 @@ hbox 1 + + @@ -84,7 +96,9 @@ - var dlg = props.globals.getNode("/sim/gui/dialogs/property-browser", 1); + var self = cmdarg(); + var dlgname = self.getNode("name").getValue(); + var dlg = props.globals.getNode("/sim/gui/dialogs/" ~ dlgname, 1); var title = dlg.getNode("title", 1); var label = dlg.getNode("label", 1); var input = dlg.getNode("input", 1); @@ -97,7 +111,7 @@ update = func(w) { fgcommand("dialog-update", props.Node.new({"object-name": w, - "dialog-name": "property-browser"})); + "dialog-name": dlgname})); } squeeze = func(s, n) { @@ -152,6 +166,22 @@ } } + clone = func { + var name = "property-browser--" ~ int(rand() * 10000000); + var base = "/sim/gui/dialogs/" ~ name ~ "/"; + setprop(base ~ "/last", dir); + self.setValues({ + "name": name, + "dialog-name": name, + "group[0]/text/property": base ~ "title", + "property-list/property": base ~ "list", + "group[1]/text/property": base ~ "label", + "group[1]/input/property": base ~ "input", + }); + fgcommand("dialog-new", self); + fgcommand("dialog-show", self); + } + auto_update = func { list.setValue(dir); update("property-list"); @@ -168,7 +198,11 @@ update_interval = 0; - dlg.getNode("last", 1).setValue(dir); + if (find("--", dlgname) >= 0) { + props.globals.getNode("/sim/gui/dialogs", 1).removeChildren(dlgname); + } else { + dlg.getNode("last", 1).setValue(dir); + }