<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">
<!--
   Engine.sdef
   Keyboard Maestro

   Created by Peter N Lewis on 19 March 2009.
   Copyright 2009 Stairways Software. All rights reserved.
-->
<dictionary title="Keyboard Maestro Engine Terminology">
	<suite name="Standard Suite" code="????" description="Common classes and commands for all applications.">

<!--
		<command name="open" code="aevtodoc" description="Open a document.">
			<direct-parameter description="The file(s) to be opened.">
				<type type="file" list="yes"/>
			</direct-parameter>
		</command>
-->

<!-- 
		<enumeration name="save options" code="savo">
			<enumerator name="yes" code="yes " description="Save the file."/>
			<enumerator name="no" code="no  " description="Do not save the file."/>
			<enumerator name="ask" code="ask " description="Ask the user whether or not to save the file."/>
		</enumeration>
-->

<!-- 
		<command name="close" code="coreclos" description="Close a document.">
			<cocoa class="NSCloseCommand"/>
			<direct-parameter type="specifier" description="the document(s) or window(s) to close."/>
			<parameter name="saving" code="savo" type="save options" optional="yes" description="Should changes be saved before closing?">
				<cocoa key="SaveOptions"/>
			</parameter>
			<parameter name="saving in" code="kfil" type="file" optional="yes" description="The file in which to save the document, if so.">
				<cocoa key="File"/>
			</parameter>
		</command>
-->

<!-- 
		<command name="save" code="coresave" description="Save a document.">
			<direct-parameter type="specifier" description="The document(s) or window(s) to save."/>
			<parameter name="in" code="kfil" type="file" optional="yes" description="The file in which to save the document.">
				<cocoa key="File"/>
			</parameter>
			<parameter name="as" code="fltp" type="saveable file format" optional="yes" description="The file format to use.">
				<cocoa key="FileType"/>
			</parameter>
		</command>
-->

<!-- 
		<enumeration name="printing error handling" code="enum">
			<enumerator name="standard" code="lwst" description="Standard PostScript error handling">
				<cocoa boolean-value="NO"/>
			</enumerator>
			<enumerator name="detailed" code="lwdt" description="print a detailed report of PostScript errors">
				<cocoa boolean-value="YES"/>
			</enumerator>
		</enumeration>

		<record-type name="print settings" code="pset">
			<property name="copies" code="lwcp" type="integer" description="the number of copies of a document to be printed">
				<cocoa key="NSCopies"/>
			</property>
			<property name="collating" code="lwcl" type="boolean" description="Should printed copies be collated?">
				<cocoa key="NSMustCollate"/>
			</property>
			<property name="starting page" code="lwfp" type="integer" description="the first page of the document to be printed">
				<cocoa key="NSFirstPage"/>
			</property>
			<property name="ending page" code="lwlp" type="integer" description="the last page of the document to be printed">
				<cocoa key="NSLastPage"/>
			</property>
			<property name="pages across" code="lwla" type="integer" description="number of logical pages laid across a physical page">
				<cocoa key="NSPagesAcross"/>
			</property>
			<property name="pages down" code="lwld" type="integer" description="number of logical pages laid out down a physical page">
				<cocoa key="NSPagesDown"/>
			</property>
			<property name="requested print time" code="lwqt" type="date" description="the time at which the desktop printer should print the document">
				<cocoa key="NSPrintTime"/>
			</property>
			<property name="error handling" code="lweh" type="printing error handling" description="how errors are handled">
				<cocoa key="NSDetailedErrorReporting"/>
			</property>
			<property name="fax number" code="faxn" type="text" description="for fax number">
				<cocoa key="NSFaxNumber"/>
			</property>
			<property name="target printer" code="trpr" type="text" description="for target printer">
				<cocoa key="NSPrinterName"/>
			</property>
		</record-type>

		<command name="print" code="aevtpdoc" description="Print a document.">
			<direct-parameter description="The file(s), document(s), or window(s) to be printed.">
				<type type="file" list="yes"/>
				<type type="specifier"/>
			</direct-parameter>
			<parameter name="with properties" code="prdt" type="print settings" optional="yes" description="The print settings to use.">
				<cocoa key="PrintSettings"/>
			</parameter>
			<parameter name="print dialog" code="pdlg" type="boolean" optional="yes" description="Should the application show the print dialog?">
				<cocoa key="ShowPrintDialog"/>
			</parameter>
		</command>
 -->

		<command name="quit" code="aevtquit" description="Quit the application.">
			<cocoa class="NSQuitCommand"/>
<!-- 
			<parameter name="saving" code="savo" type="save options" optional="yes" description="Should changes be saved before quitting?">
				<cocoa key="SaveOptions"/>
			</parameter>
 -->
		</command>

<!-- 
		<command name="duplicate" code="coreclon" description="Copy an object.">
			<cocoa class="NSCloneCommand"/>
			<direct-parameter type="specifier" description="The object(s) to copy."/>
			<parameter name="to" code="insh" type="location specifier" description="The location for the new copy or copies." optional="yes">
				<cocoa key="ToLocation"/>
			</parameter>
			<parameter name="with properties" code="prdt" type="record" description="Properties to set in the new copy or copies right away." optional="yes">
				<cocoa key="WithProperties"/>
			</parameter>
		</command>

		<command name="exists" code="coredoex" description="Verify that an object exists.">
			<cocoa class="NSExistsCommand"/>
			<direct-parameter type="any" description="The object(s) to check."/>
			<result type="boolean" description="Did the object(s) exist?"/>
		</command>

		<command name="move" code="coremove" description="Move an object to a new location.">
			<cocoa class="NSMoveCommand"/>
			<direct-parameter type="specifier" description="The object(s) to move."/>
			<parameter name="to" code="insh" type="location specifier" description="The new location for the object(s).">
				<cocoa key="ToLocation"/>
			</parameter>
		</command>
 -->
		<command name="delete" code="coredelo" description="Delete an object.">
			<cocoa class="NSDeleteCommand"/>
			<direct-parameter type="specifier" description="The object(s) to delete."/>
		</command>

		<command name="count" code="corecnte" description="Return the number of elements of a particular class within an object.">
			<cocoa class="NSCountCommand"/>
			<direct-parameter type="specifier" description="The objects to be counted."/>
			<parameter name="each" code="kocl" type="type" optional="yes" description="The class of objects to be counted." hidden="yes">
				<cocoa key="ObjectClass"/>
			</parameter>
			<result type="integer" description="The count."/>
		</command>

		<command name="make" code="corecrel" description="Create a new object.">
			<cocoa class="NSCreateCommand"/>
			<parameter name="new" code="kocl" type="type" description="The class of the new object.">
				<cocoa key="ObjectClass"/>
			</parameter>
			<parameter name="at" code="insh" type="location specifier" optional="yes" description="The location at which to insert the object.">
				<cocoa key="Location"/>
			</parameter>
			<parameter name="with data" code="data" type="any" optional="yes" description="The initial contents of the object.">
				<cocoa key="ObjectData"/>
			</parameter>
			<parameter name="with properties" code="prdt" type="record" optional="yes" description="The initial values for properties of the object.">
				<cocoa key="KeyDictionary"/>
			</parameter>
			<result type="specifier" description="The new object."/>
		</command>


		<command name="do script" code="coredosc" description="Execute a macro or action.">
			<cocoa class="KMEngineDoScript"/>
			<direct-parameter type="text" description="The name of macro, UID of macro, or plist of action to execute."/>
			<parameter name="with parameter" code="KMpa" type="text" optional="yes" description="A parameter to the macro (in the %TriggerValue% token)">
				<cocoa key="withParameter"/>
			</parameter>
		</command>

		<class name="application" code="capp" description="The application's top-level scripting object.">
			<cocoa class="NSApplication"/>
			<property name="name" code="pnam" type="text" access="r" description="The name of the application."/>
			<property name="frontmost" code="pisf" type="boolean" access="r" description="Is this the active application?">
				<cocoa key="isActive"/>
			</property>
			<property name="version" code="vers" type="text" access="r" description="The version number of the application."/>
<!-- 
			<element type="document">
				<cocoa key="orderedDocuments"/>
			</element>
			<element type="window" access="r">
				<cocoa key="orderedWindows"/>
			</element>
			<responds-to name="open">
				<cocoa method="handleOpenScriptCommand:"/>
			</responds-to>
			<responds-to name="print">
				<cocoa method="handlePrintScriptCommand:"/>
			</responds-to>
 -->
			<responds-to name="quit">
				<cocoa method="handleQuitScriptCommand:"/>
			</responds-to>
			<responds-to name="do script">
				<cocoa method=""/>
			</responds-to>
			<responds-to name="gethotkeys">
				<cocoa method="handleGetHotKeys:"/>
			</responds-to>
			<responds-to name="getmacros">
				<cocoa method="handleGetMacros:"/>
			</responds-to>
			<responds-to name="reload">
				<cocoa method="handleReload:"/>
			</responds-to>
			<responds-to name="executing">
				<cocoa method="handleExecuting:"/>
			</responds-to>
			<responds-to name="calculate">
				<cocoa method="handleCalculate:"/>
			</responds-to>
			<responds-to name="process tokens">
				<cocoa method="handleProcessTokens:"/>
			</responds-to>
			<responds-to name="play sound">
				<cocoa method="handlePlaySound:"/>
			</responds-to>
			<responds-to name="getappdetails">
				<cocoa method="handleGetAppDetails:"/>
			</responds-to>
			<responds-to name="geturl">
				<cocoa method="handleGetURL:"/>
			</responds-to>
		</class>

<!-- 
		<class name="window" code="cwin" description="A window.">
			<cocoa class="NSWindow"/>
			<property name="name" code="pnam" type="text" access="r" description="The title of the window.">
				<cocoa key="title"/>
			</property>
			<property name="id" code="ID  " type="integer" access="r" description="The unique identifier of the window.">
				<cocoa key="uniqueID"/>
			</property>
			<property name="index" code="pidx" type="integer" description="The index of the window, ordered front to back.">
				<cocoa key="orderedIndex"/>
			</property>
			<property name="bounds" code="pbnd" type="rectangle" description="The bounding rectangle of the window.">
				<cocoa key="boundsAsQDRect"/>
			</property>
			<property name="closeable" code="hclb" type="boolean" access="r" description="Does the window have a close button?">
				<cocoa key="hasCloseBox"/>
			</property>
			<property name="miniaturizable" code="ismn" type="boolean" access="r" description="Does the window have a minimize button?">
				<cocoa key="isMiniaturizable"/>
			</property>
			<property name="miniaturized" code="pmnd" type="boolean" description="Is the window minimized right now?">
				<cocoa key="isMiniaturized"/>
			</property>
			<property name="resizable" code="prsz" type="boolean" access="r" description="Can the window be resized?">
				<cocoa key="isResizable"/>
			</property>
			<property name="visible" code="pvis" type="boolean" description="Is the window visible right now?">
				<cocoa key="isVisible"/>
			</property>
			<property name="zoomable" code="iszm" type="boolean" access="r" description="Does the window have a zoom button?">
				<cocoa key="isZoomable"/>
			</property>
			<property name="zoomed" code="pzum" type="boolean" description="Is the window zoomed right now?">
				<cocoa key="isZoomed"/>
			</property>

			<property name="document" code="docu" type="document" access="r" description="The document whose contents are displayed in the window."/>

			<responds-to name="close">
				<cocoa method="handleCloseScriptCommand:"/>
			</responds-to>
			<responds-to name="print">
				<cocoa method="handlePrintScriptCommand:"/>
			</responds-to>
			<responds-to name="save">
				<cocoa method="handleSaveScriptCommand:"/>
			</responds-to>
		</class>

 -->
	</suite>

<!-- 
	<suite name="Text Suite" code="????" description="Common text classes for all applications.">
	
		<value-type name="RGB color" code="cRGB">
			<cocoa class="NSColor"/>
		</value-type>

		<class name="rich text" plural="rich text" code="ctxt" description="Rich (styled) text.">
			<cocoa class="NSTextStorage"/>
			<type type="text"/>
			<property name="color" code="colr" type="RGB color" description="The color of the text's first character.">
				<cocoa key="foregroundColor"/>
			</property>
			<property name="font" code="font" type="text" description="The name of the font of the text's first character.">
				<cocoa key="fontName"/>
			</property>
			<property name="size" code="ptsz" type="integer" description="The size in points of the text's first character.">
				<cocoa key="fontSize"/>
			</property>
			<element type="character"/>
			<element type="paragraph"/>
			<element type="word"/>
			<element type="attribute run"/>
			<element type="attachment"/>
		</class>

		<class name="character" code="cha " description="One of some text's characters.">
			<cocoa class="NSTextStorage"/>
			<type type="text"/>
			<property name="color" code="colr" type="RGB color" description="Its color.">
				<cocoa key="foregroundColor"/>
			</property>
			<property name="font" code="font" type="text" description="The name of its font.">
				<cocoa key="fontName"/>
			</property>
			<property name="size" code="ptsz" type="integer" description="Its size, in points.">
				<cocoa key="fontSize"/>
			</property>
			<element type="character"/>
			<element type="paragraph"/>
			<element type="word"/>
			<element type="attribute run"/>
			<element type="attachment"/>
		</class>

		<class name="paragraph" code="cpar" description="One of some text's paragraphs.">
			<cocoa class="NSTextStorage"/>
			<type type="text"/>
			<property name="color" code="colr" type="RGB color" description="The color of the paragraph's first character.">
				<cocoa key="foregroundColor"/>
			</property>
			<property name="font" code="font" type="text" description="The name of the font of the paragraph's first character.">
				<cocoa key="fontName"/>
			</property>
			<property name="size" code="ptsz" type="integer" description="The size in points of the paragraph's first character.">
				<cocoa key="fontSize"/>
			</property>
			<element type="character"/>
			<element type="paragraph"/>
			<element type="word"/>
			<element type="attribute run"/>
			<element type="attachment"/>
		</class>

		<class name="word" code="cwor" description="One of some text's words.">
			<cocoa class="NSTextStorage"/>
			<type type="text"/>
			<property name="color" code="colr" type="RGB color" description="The color of the word's first character.">
				<cocoa key="foregroundColor"/>
			</property>
			<property name="font" code="font" type="text" description="The name of the font of the word's first character.">
				<cocoa key="fontName"/>
			</property>
			<property name="size" code="ptsz" type="integer" description="The size in points of the word's first character.">
				<cocoa key="fontSize"/>
			</property>
			<element type="character"/>
			<element type="paragraph"/>
			<element type="word"/>
			<element type="attribute run"/>
			<element type="attachment"/>
		</class>

		<class name="attribute run" code="catr" description="A chunk of text that all has the same attributes.">
			<cocoa class="NSTextStorage"/>
			<type type="text"/>
			<property name="color" code="colr" type="RGB color" description="Its color.">
				<cocoa key="foregroundColor"/>
			</property>
			<property name="font" code="font" type="text" description="The name of its font.">
				<cocoa key="fontName"/>
			</property>
			<property name="size" code="ptsz" type="integer" description="Its size, in points.">
				<cocoa key="fontSize"/>
			</property>
			<element type="character"/>
			<element type="paragraph"/>
			<element type="word"/>
			<element type="attribute run"/>
			<element type="attachment"/>
		</class>

		<class name="attachment" code="atts" inherits="rich text" description="A file embedded in text. This is just for use when embedding a file using the make command.">
			<cocoa class="NSAttachmentTextStorage"/>
			<property name="file name" code="atfn" type="text" description="The path to the embedded file.">
				<cocoa key="filename"/>
			</property>
		</class>

	</suite>
 -->

	<suite name="Keyboard Maestro Engine Suite" code="MKKE" description="Terms specific to Keyboard Maestro Engine.">

		<class name="application" code="capp" description="Keyboard Maestro application class." inherits="application">

			<cocoa class="NSApplication"/>

			<element type="variable"/>
			
		</class>

		<class name="variable" code="MKvr" description="A variable.">
			
			<cocoa class="Variable"/>
			
			<!-- properties -->
			
			<property name="id" code="ID  " type="text" access="r" description="The unique identifier.">
				<cocoa key="uniqueID"/>
			</property>
			
			<property name="name" code="pnam" type="text" access="r" description="the variable's name"/>

			<property name="value" code="MKvl" type="text" access="rw" description="the variable's value"/>
			
		</class>

		<value-type name="property list data" code="tdta">
			<cocoa class="NSData" />
		</value-type>
		<command name="gethotkeys" code="MKKMKMGm" description="Gets an array of groups of arrays of macros that are currently available via hot keys or typed string triggers.">
			<parameter name="asstring" code="KMGs" type="boolean" optional="yes" description="return a string instead of raw data.">
				<cocoa key="asstring"/>
			</parameter>
			<parameter name="getall" code="KMGa" type="boolean" optional="yes" description="retrieves all active macros, not just hot key and typed string triggered ones">
				<cocoa key="getall"/>
			</parameter>
			<result type="any" description="the property list." />
		</command>

		<command name="getmacros" code="MKKMKMgm" description="Gets an array of groups of arrays of macros.">
			<parameter name="asstring" code="KMGs" type="boolean" optional="yes" description="return a string instead of raw data.">
				<cocoa key="asstring"/>
			</parameter>
			<result type="any" description="the property list." />
		</command>

		<command name="reload" code="MKKMKMrl" description="Reload macros.">
		</command>

		<command name="executing" code="MKKMKMex" description="A macro is currently executing.">
			<result type="boolean" description="is executing."/>
		</command>

		<command name="calculate" code="MKKMKMCa" description="Calculate an expression, returning the answer.">
			<direct-parameter type="text" description="the expression string."/>
			<result type="text" description="the answer." />
		</command>

		<command name="process tokens" code="MKKMKMPt" description="Process the tokens in a string, returning the processed string.">
			<direct-parameter type="text" description="the input string."/>
			<result type="text" description="the processed string." />
		</command>

		<command name="play sound" code="MKKMKMPs" description="Play a sound.">
			<direct-parameter type="file" description="the sound file."/>
			<parameter name="soundeffect" code="KMSe" type="boolean" optional="yes" description="play the sound through the sound effects output device (default true).">
				<cocoa key="soundeffect"/>
			</parameter>
			<parameter name="volume" code="KMVl" type="integer" optional="yes" description="the sound volume.">
				<cocoa key="volume"/>
			</parameter>
		</command>

		<command name="getappdetails" code="MKKMKMdt" description="Return technical details about the engine.">
			<result type="any" description="engine app details."/>
		</command>

	</suite>
	
	<suite name="Standard URL Suite" code="GURL" description="The standard URL suite.">

		<command name="geturl" code="GURLGURL" description="Handled the registration URL.">
			<direct-parameter type="text" description="the registration URL." />
		</command>

	</suite>
</dictionary>
