To have a custom icon for a form type (for exemple ".item"), place an icon file named "item.ico" in the Georges "DFN & TYPES" directory. then your file will shown with your custom icon in file explorer and in the georges file browser.
You can customise georges icons too. If can do the same thing to customise a special DFN or TYPE value in the left view of your document.
You can customise internal icons too. To do this, create one of the following icons:
There is two privilege levels, user and superuser. To be a superuser, set to 1 the value superuser in georges.cfg. The user can't edit / open DFN and Type files, can't open the properties window. The user can create / modify only a subset of the forms. This subset is defined in the georges.cfg file by the parameter "user_type".
For exemple, if the user must only edit the files "*.animation" and "*.skeleton", set the config file like this:
user_type = { "animation", "skeleton" };
Georges expression syntax depends the type of value you edit. Non-numerical or numerical.
Numerical types are value of type UnsignedInt, SignedInt, Double.
Non-numerical are value of type Color, String, Filename.
Some exemples of Georges non-numerical expressions:
foo // Simple string
".Entities[0].Position.X" // Reference on a form string
{sqrt (24 * 2)} // Numerical expression converted in text
myname{".Level"*2}.creature // Strings and expressions concatenation
non_num_expression: non_num_expression non_num_expression
| string
| value_reference
| numerical_expression
| constants
value_reference: "value_form_name"
numerical_expression: {numerical_expression_options num_expression (see above)}
numerical_expression_options: | $zN // Pad left the number with zeros until the size of the number reach N
constants: "$filename" : form filename
Some exemples of Georges numerical expressions:
1 // Simple number
1+1 // Basic operator
(1+2)*3 // Parentesis
sin (pi) // Math functions
2+$filename*4 // Operation with the number in the form filename
2+".Entities[0].Position.X"*4 // Operation with a form value
num_expression: '-' num_expression
| '!' num_expression // Returns true if a equal false, else false (logical not)
| '~' num_expression // Returns ~ round(a) (bitwise not)
| '(' num_expression ')'
| num_expression operator num_expression
| function1 '(' num_expression ')'
| function2 '(' num_expression ',' num_expression ')'
| number
| constant
| value_reference
| value_existance
operator: '*' // Calculates (a * b)
| '/' // Calculates (a / b)
| '%' // Calculates the remainder of (a / b)
| '+' // Calculates (a + b)
| '-' // Calculates (a - b)
| '<<' // Returns round(a) left 32 bits unsigned shift by round(b)
| '>>' // Returns round(a) right 32 bits unsigned shift by round(b)
| '<-' // Returns round(a) left 32 bits signed shift by round(b)
| '->' // Returns round(a) right 32 bits signed shift by round(b)
| '<' // Returns true if a is strictly smaller than b
| '<=' // Returns true if a is smaller or equal than b
| '>' // Returns true if a is strictly bigger than b
| '>=' // Returns true if a is bigger or equal than b
| '==' // Returns true if a equal b, else returns false (warning, performs a floating point comparison)
| '!=' // Returns false if a equal b, else returns true (warning, performs a floating point comparison)
| '&' // Returns round(a) & round(b) over 32 bits
| '|' // Returns round(a) | round(b) over 32 bits
| '^' // Returns round(a) ^ round(b) over 32 bits
| '&&' // Returns true if a equal true and b equal true else returns false
| '||' // Returns true if a equal true or b equal true else returns false
| '^^' // Returns true if a equal true and b equal false, or, a equal false and b equal 1.0, else returns false
function1: abs // Calculates the absolute value
| acos // Calculates the arccosine
| asin // Calculates the arcsine
| atan // Calculates the arctangent
| ceil // Calculates the ceiling of a value ( ceil(-1.1) = -1, ceil(1.1) = 2 )
| cos // Calculates the cosine
| cosh // Calculates the hyperbolic cosine
| exp // Calculates the exponential
| exponent // Calculates the exponent of a floating point value
| floor // Calculates the floor of a value ( floor(-1.1) = -2, floor(1.1) = 1 )
| int // Calculates the C style integer value ( int(-1.6) = -1, int(1.6) = 1 )
| log // Calculates logarithms
| log10 // Calculates base-10 logarithms
| mantissa // Calculates the mantissa of a floating point value
| round // Calculates the nearest integer value ( round(-1.6) = -2, round(1.1) = 1 )
| sin // Calculate sines
| sinh // Calculate hyperbolic sines
| sq // Calculates the square
| sqrt // Calculates the square root
| tan // Calculates the tangent
| tanh // Calculates the hyperbolic tangent
function2: max // Returns the larger of two values
| min // Returns the smaller of two values
| atan2 // Calculates the arctangent of arg0/arg1
| pow // Calculates a raised at the power of b
| rand // Calculates a pseudo random value (arg0 <= randomValue < arg1)
number: [0-9]+ // Unsigned decimal integer
| "0x"[0-9a-fA-F]+ // Unsigned hexadecimal integer
| "0"[0-7]+ // Unsigned octal integer
| [0-9]*.[0-9]+ // Unsigned floating point value
| [0-9]*.[0-9]+[eE]-?[0-9]*.[0-9]+ // Unsigned floating point value with signed exponent
constant: e // 2.7182818284590452353602874713527
| pi // 3.1415926535897932384626433832795
| $filename // Returns the number found at the end of the form filename
value_reference: \"value_form_name\" // Return the value string. Must be a litteral expression. Return error if the value doesn't exist.
value_existance: \"#value_form_name\" // Return 1 if the form value is filled else 0. Return error if the value doesn't exist.
0 - unary operator (-, ~, !)
1 - *, /, %
2 - +, -,
3 - <<, >>, <-, ->
4 - <, <=, >, >=
5 - ==, !=
6 - &
7 - |
8 - ^
9 - &&
10 - ||
11 - ^^