A SymbolicUserInterface is a user-level system of symbols (HieraticLanguage) for software interaction. The system is composed of discrete units the user can manipulate directly or through script. The idea is to reduce archtypal patterns to discrete units which can be expressed and manipulated by the language. Comments page: SymbolicUserInterfaceDiscussion *The fundamental unit of a SymbolicUserInterface is the glyph. *Every glyph has an icon and a unique name - a textual and graphical symbolic representation of the class. *Each glyph can be a meta glyph, event glyph, visual glyph, or resource glyph(class) *A meta glyph is a symbol or a literal *An event glyph is a command or a simulation *A visual glyph is a visualization or a tool *A resource glyph is a reality or a utility ---- Resources can be directly manipulated by the interface or the language. * A primitive resource is a resource that cannot be simplified into other resources. * A set of glyphs is called a Phrase * A set of Phrase is called a Macro * A set of Macro is called a Script * Every resource exports a Phrase listing the sub-resource and interface glyphs. * The combination of resources and sub-resources naturally forms a hierarchy tree. * A Phrase that forms a path through the tree is called a Context. * A Context should enumerate the path all the way from the root node. * A Phrase of the form: Context.event is called a Command * A Command is dispatched to all selected resources in a set. * A Metaphor is a glyph that represents another resource (i.e Red is a metaphor for Byte) * A Core is the root of the tree. ---- Example: consider a basic scenegraph with a scene with a background color(rgb bytes) and containing a set of elements which contain a transform(floats), material(colors), and model(filename). So the symbol set is: scene, set, color, byte, element, transform, float, material, and model So: * set = {any resource} * byte = primitive * float = primitive * string = {byte} * color = red(byte), blue(byte), green(byte) * material = diffuse(color), ambient(color), specular(color), and shininess(float) * transform = transform(3 floats), rotation(3 floats), and scale(3 floats) * model = string * element = transform, material, model * scene = color, {element} ---- Now assume Transform exports a phrase containing the Reset glyph. Also assume Color can be assigned a literal glyph. The Command Phrase to reset the transform would be: * core.scene.{element}.transform.reset The Command Phrase to copy the element's ambient color to the scene background color would be: * core.scene.color.=.core.scene.{element}.material.ambient ---- See SymbolWiki and http://www.mediaglyphs.org/