1
0
Fork 0
Commit graph

55 commits

Author SHA1 Message Date
Stuart Buchanan
2b072dd992 Use new C++ setValues/setChildren
Improve Nasal poperty access performance by
re-implementing props.nas functions in C++.
2017-08-06 21:16:26 +01:00
Thomas Geymayer
43f8ce0870 Add props.compileCondition to actually use exposed SGCondition. 2014-06-23 21:12:57 +02:00
Philosopher
807062d0b6 Misc. Nasal cleanup 2014-06-06 21:19:11 -05:00
Thomas Geymayer
4766ed21a6 Nasal: use new built-in props.Node.removeAllChildren()
This require less interaction between Nasal and C++ and
also does not need to create a list of removed children
which was not used anyway. Now it require about 70% less
time to execute.
2013-12-07 13:48:55 +01:00
Thomas Geymayer
d80722065f Fix path validation (ensure listeners are attached to existing nodes) 2013-04-29 22:27:26 +02:00
Thomas Geymayer
7f1117a537 Use new props.addChildren method to speed up 'Select Aiport' dialog 2012-10-14 17:33:31 +02:00
Thomas Geymayer
a15d582937 Use newly exposed props.Node.addChild method 2012-10-13 15:20:27 +02:00
ThorstenB
ed5692f411 props.nas: allow "getBoolValue" to work with properties of UNSPECIFIED type. 2012-04-08 23:02:36 +02:00
Anders Gidenstam
6e5b38aebf Nasal/props.nas: Added missing var keywords. 2012-03-23 22:29:35 +01:00
mfranz
e8a666c8e4 globals: cosmetics
props: initNode(): allow nil as first arg
2008-12-14 23:45:33 +00:00
mfranz
71f80dff34 initNode: add fourth optional parameter: "force", which enforces a type,
so n.initNode("whatever", 1 "BOOL", 1);  will make node n a BOOL even
if it was "DOUBLE" before. Default: 0. An existing value will be retained,
though.
2008-12-04 11:30:44 +00:00
mfranz
8bf823c4fb initNode: make path optional and let it default to "". This is allowed:
props.globals.getNode("sim/foo", 1).initNode();  and equivalent to
    props.globals.getNode("sim").initNode("foo");
2008-12-03 20:53:00 +00:00
mfranz
acff4f55ab add getAliasTarget() wrapper 2008-11-26 11:35:48 +00:00
mfranz
75470bf31d Rename Node.clear() to Node.clearValue(), because that's the name that we
use on the C++ side.
2008-11-22 12:05:01 +00:00
mfranz
b3032f63c7 Add Node.clear() method, which resets a node to type "NONE" and value 'nil'.
This can be used to invalidate nodes and may be interesting for debugging
purposes. Use carefully!
2008-11-22 11:20:44 +00:00
mfranz
f263e693f2 remove deprecated (wrapper) function props.initNode() 2008-11-20 20:41:19 +00:00
mfranz
c74d6ee75e - make props.initNode a props.Node method
- props.nas: some minor improvements
2008-11-20 19:45:40 +00:00
mfranz
81e967a609 nasal now returns constant and readable ghosttypes, so we do no longer
need the symbol table and comparison with the ghosttype of props._globals()
2008-11-13 12:00:23 +00:00
mfranz
c6cd898f64 - update comment to reflect alias()/unalias() addition
- minor improvements & cosmetics
2008-11-13 11:57:07 +00:00
mfranz
2aba6e7d80 Node: only wrap() functions that actually return property ghosts 2008-11-12 17:06:53 +00:00
mfranz
547770e30b add alias()/unalias() wrapper methods 2008-11-12 14:43:41 +00:00
mfranz
5d576f0e3d - gui.OverlaySelector: add optional sort criterion, add selection by index,
add next(), and previous() methods.
- aircraft.nas: deprecate formation class
2008-10-15 15:27:56 +00:00
mfranz
024842d9b9 indendation fix, drop a few braces (because we can :-) 2008-09-29 10:06:50 +00:00
mfranz
bb6b98b306 runBinding: support optional default namespace/module 2008-09-25 11:10:35 +00:00
mfranz
ba68b4f8eb typo & consistency 2008-09-24 23:06:43 +00:00
mfranz
366792cf3d add props.runBinding(<binding-node>) command 2008-09-24 20:03:06 +00:00
mfranz
917cace77c string.nas: remove forgotten debug message
props.nas: replace some "arg[*]" by named args
aircraft.nas: load aircraft data only if the file exists (to avoid warning)
debug.nas: no space before colon & fixed comment & cosmetics
2008-08-14 22:13:25 +00:00
mfranz
238fce1d15 let initNode() initialize a property to double(0) by default 2008-06-04 20:41:44 +00:00
mfranz
8fe1cf807d add initNode() function that initializes (if necessary) and returns a property.
If the property has a valid value already, then the given value is ignored.

  var x = props.initNode("/foo", 10);
  var y = props.initNode("/bar", 1, "BOOL");
2008-05-19 15:44:23 +00:00
mfranz
a329a7ba14 - add props.nodeList() function which turns property ghosts, props.Nodes,
and path strings into a list of props.Nodes. It also digests lists of
  properties, or lists of lists of properties etc., thus allowing things
  like props.nodeList(arg), props.nodeList(n.getChildren("foo")). This is
  meant for functions like aircraft.data.add() or screen.display.add().
- remove some redundant braces
- fix comment
2008-05-15 15:17:56 +00:00
mfranz
fd20d330ba props.Node: add remove() method that removes the node it was calleed on
from its property tree. The node remains accessible as long as references
to it are kept. Example:

  var cow_chain = func {
      var cow = geo.put_model("Models/Fauna/cow.ac", geo.aircraft_position());
      settimer(func { cow.remove() }, 10);
      settimer(cow_chain, 2);
  }
  cow_chain();
2007-08-07 11:30:30 +00:00
mfranz
a9b9c86750 - add Node.getValues() in analogy to Node.setValues(). Returns a hash with
all children, vectors for multiply used names, further hashes for subtrees
  etc. Meant for quickly pulling in config branches where (almost) all values
  are needed.
- usage of "var" keyword and named parameters in other (but not all) funcs
2007-05-14 15:15:00 +00:00
mfranz
38c170baa5 props.copy: add third argument that, if set, also copies the node attributes 2007-04-04 14:44:13 +00:00
andy
3bcfb0624a Add soft-coded utilites to the "io" and "math" modules. The math
stuff is, for the most part, already available in the geo module; but
it's small and this naming matches the evolvoing "standard nasal
library".
2007-03-29 22:09:25 +00:00
mfranz
0606fa3703 make condition() slightly faster and prettier (or not) 2007-03-21 18:37:06 +00:00
mfranz
7319f5e772 better condition() comment & cosmetics 2007-03-20 16:23:23 +00:00
mfranz
5b812986fb undefined <condition>s are "true" 2007-03-19 18:17:05 +00:00
mfranz
b2f57eab81 boolify <property> result 2007-03-18 15:49:11 +00:00
mfranz
0b4e6f934e add a props.condition(property) command that evaluates a property branch
as <condition> according to the rules set out in $FG_ROOT/Docs/README.condition
2007-03-18 13:57:32 +00:00
mfranz
b07ebf0dfa work around Nasal bug (and/or operators) 2007-02-07 17:31:41 +00:00
mfranz
0f07c14bd3 getBoolValue() on an undefined node shall return "false", not "true".
This isn't only more logical, it's also how SGPropertyNode::getBoolValue()
acts. The fix has potential to break code, but so far I haven't seen any
problems. I added a debug message to my copy and will for a while check
all cases that I run into. To check yourself, just add one line:

    getBoolValue : func {
        val = me.getValue();
+       if(val == nil) { debug.dump(me) }
        if(me.getType() == "STRING" and val == "false") { 0 }
        else { val != nil and val != 0 }
    }

This will output a debug message to the terminal for each case where
formerly "true" was returned, and now "false" is.
2007-02-05 11:40:49 +00:00
mfranz
7b6205d37b add props.Node.getAttribute() and props.Node.setAttribute() methods.
Examples:
  var tied = foo.getAttribute("TIED");
  foo.setAttribute("USERARCHIVE", 1);

Both methods accept attribute strings "READ", "WRITE", "ARCHIVE",
"TRACE_READ", "TRACE_WRITE", and "USERARCHIVE". getAttribute() does
additionally accept "TIED" (although this isn't an SGPropertyNode::Attribute).
Attribute "REMOVED" is not supported.
2007-01-12 18:06:50 +00:00
mfranz
bd327892d6 let getBoolValue() actually return a bool 2006-02-20 10:59:52 +00:00
mfranz
06fa115d86 add function that recursively copies property tree branches (ignoring aliases);
reviewed and OK'ed by Andy
2005-12-16 20:25:52 +00:00
mfranz
7f25352610 add support for removeChildren(): takes one name as optional argument
and removes all children with this name; if no name is given, removes
all children
2005-10-23 16:09:51 +00:00
andy
4718f2f8f0 Fix broken getPath() method 2005-03-27 17:30:51 +00:00
andy
ca0fa1c427 Changes from Melchior to make use of the spiffy new format feature in
the text widget; and a props.getPath() method.
2005-03-26 22:15:26 +00:00
andy
54954eb8de GUI layout management and a few visual/eye-candy modifications. See
DOCS/README.layout in the base package for details, along with the
modified dialog files.
2004-05-12 15:37:17 +00:00
andy
e2cf6d90d2 New fuel management code. Only works with YASim currently. It's a benign
no-op under other FDMs.
2004-03-27 04:07:56 +00:00
andy
a67c4113e8 Temporary implementation of props.getBoolValue() which correctly
interprets the string "false".  Eventually this needs to be an
extension function wrapping SGPropertyNode::getBoolValue().
2004-01-28 03:49:59 +00:00