Advanced Features
This chapter outlines the advanced features of .

Using Kommander with
Kommander by Marc Britton.

Tag Files
uses tag files to define the various actions that are available for toolbar association. These tag files can define a simple tag with no attributes or they can define a tag dialog box that will remember all of the available attributes for you so that you can simply fill in the blanks.
Spaces don't adversely affect anything, but watch out for & and < characters. These should likely be replaced by &amp; and &lt; respectively in all of the xml based resource files. This won't cause a crash, but you'll have chunks of your work disappear if you forget.

Tag File Structure

Possible entries for the type attribute of the attr tag: To get a list of possible types, I did the following against the tag dirs: grep -h type= *.tag |sed -e 's/^.*type=\"\([a-z]*\).*/\1/'| sort |uniq
These are the types for tag dialog items:
check
color
input
list
text
url
These are the argument types inside the php function tags, ask Andras if these are pretty much free form and the former are keywords:
array
bool
boolean
char
constant
flags
float
function
int
long
mixed
number
object
resource
resoure
string
The tag definition has the following optional attributes:
hasScript 	"1" if common events/scripts can be associated to this tag (onclick etc.)
hasCore 	"1" if common core attributes are present (id, class, etc)
hasI18n 	"1" if common i18n attributes are present (lang, dir)
single 	"1" if it is a single tag (eg. <hr>)
optional 	"1" if it is an optional tag (eg. <colgroup>)
returnType 	for scripting languages, the function return type if any. (eg int)
The <attr> definition can have the following attributes:
defaultValue	the default value of the tag ???
status 	can be optional, required, implied

For scripting language functions, define tag files as such:

<!DOCTYPE tags>
<tags>

<tag name=[function-name] type=function returnType=[return-type]>
  <attr name=[argument1]> type=[argument1-type]></attr>
  <attr name=[argument2] type=[argument2-type] status=optional></attr>
    ...
</tag>
<tag ...
...
</tag>
 ...
</tags>

Items in [] are to be substituted. argument1 above is required and argument2 is optional.
A tag file that you want to have tag dialog editing of should look like this:


<!DOCTYPE tags>
<tags>
  <tag name="[name] [hasCore="[01]" hasI18n="[01]" hasScript="[01]"]>
    <attr name="[attribute1]" type="[check|color|input|list|text|url]">
      <text></text>
      <textlocation col="0" row="0" />
      <tooltip></tooltip>
      <location col="1" row="0" colspan="3"/>
    </attr>
  ...
  </tag>
  ...
</tags>

<text></text> defines brief descriptive text for the object.
<textlocation ... /> defines row and column layout for <text> tag.
<tooltip></tooltip> is text description for a hovering user.
<location ../> defines the location of the object for that attribute.
All the attributes must be enumarated in the tag file. If you don't want to appear in the tagdialog, just forget the <location> tag. eg <attr ...> </attr>