Newer
Older
Import / research / ui / TweakableProperties / Concept.txt

PropertySheets
PropertyPanels
PropertyLists

Tweakables Concept

	A simple UI that is easily created to wrap a variable and make it possible to
	prototype by tweaking at runtime various variables

Properties Concept

	A variable that is wrapped in interfaces that makes it possible to integrate in
	to more complex software in more interesting way. For example being able to
	associcate a UI field with a property so that in two directions, they will reflect
	each other. In some systems the UI doesn't have a copy of the value of the property
	only a reference to the property

Name-Value Pairs

	Also known as a KVP, Key-Value Pair, it is very similar to a property, however it
	is either named or has an ID associated with the value so that it can be part of
	a set of values and referenced by the associative key or name.
	
Variants Concept

	In some programming languages, variables have a type which might be fixed, in others
	languages variables might not have a type at all. In strongly typed languages,
	the variable's type is fixed with a single type and unable to be changed. Variants
	add flexibility in these cases to wrap variables in a more complex type that allows
	this complex type to be cast to specific types which gives the ability to write
	generic code that can work with different types but using a common interface.

Serialization Concept

	Being able to reliably stream something from memory to I/O (eg disk or network) and
	being able to reverse this (de-serialize). Often just dumping memory to disk and
	then on a later execution restoring it from disk to memory won't work as there could
	be pointers. Serialization needs to do this but not involving pointers. It also needs
	to be aware of padding of data in memory and of endianess so that the serialized data
	can be de-serialized in other contexts.

Config/INI files

	Human readable text files containing list of name-value pairs, sometimes each one
	called a config-entry, and sometimes grouped or in nested groups. Name-value pairs
	for an applications settings might be serialized and de-serialized using a config file.

XML and XSLT Concept

	Can be used to serialize and de-serialize data. Used to exchange data between computers,
	but also XML is human readable for easier debugging. XSLT adds the ability to transform
	the XML from one form to another easily, making it easier to use XML in interoperation
	between systems. This is usually used when have long lists of data, such as the data
	a program operates on or processes.

Properties are basically variants which also implement the Observer pattern.

Tweakables are pretty similar to properties but include making UI for the properties.

Config files are lists of named properties.

Config files could be in XML.

Data files in XML could be transformed in to UI lists.



Plan
----

	What langauge bindings??
	Perhaps at first just C++, in source form, and with dual licensing
	A slick web-site
	
	Implement the Observer pattern
	Implement a variant type (internal)
	Implement a property type which derives observer and contains a named variant
	Implement property sets which can be nested
	Implement UI generation from property sets
	Implement serialization and de-serialization of property set templates and their values