Director, een onmisbare applicatie

het vervolg van deze cursus door Dick Tanis

De vorige keer hebben we behandeld hoe we met behulp van het DirectorIcon -commando een symbool op de symbolenbalk kunnen zetten. Nu gaan we dit commando uitgebreid behandelen.

De syntax van het DirectorIcon-commando is als volgt:

Syntax: *DirectorIcon <sprite>
[-alias <name>][-text <text>]
[-left|-right][-priority <priority>]
[-time <format>] [-menu <menu>] 
[-select <menu>] [-adjust <menu>]
[-dragto <menu>]
[-dragfrom <path>|*<menu>] [-remove]

Na dit commando moet altijd een naam van een sprite komen die in het geheugen is geladen. Bijvoorbeeld als we het Map-symbool als sprite willen gebruiken dan gebruiken we de naam "directory". Willen we eigengemaakt sprites nemen dan moeten we deze wel eerst via *IconSprites in het geheugen laden.

We gaan nu bekijken welke opties dit commando heeft en hoe we ze kunnen gebruiken:

-alias <naam>

Hiermee kunnen we de interne naam van het Director-symbool veranderen. Standaard gebruikt Director namelijk de spritenaam als naam voor het Symbool. Willen we bijvoorbeeld twee Director-symbolen aanmaken met dezelfde sprite dan moeten we de -alias optie wel gebruiken anders schrijft de ene Director-symbool over de andere heen en verschijnt er maar één symbool op de symbolenbalk.

-text <tekst>

Hiermee kunnen we een tekst aanbrengen onder het symbool dat op de symbolenbalk komt.

-left|right

We kunnen hiermee aangeven of het symbool links of rechts op de symbolen balk geplaatst moet worden. Als we deze optie niet gebruiken dan plaatst Director het symbool standaard links op de symbolenbalk.

-priority <prioriteit>

Met deze optie kunnen we de positie van het Director-symbool tussen de andere symbolen op de symbolenbalk aangeven. De prioriteit gaat van 0 - &7FFFFFFF. Bij hoge getallen worden de symbolen meer naar de buitenkant van de symbolenbalk geplaatst en bij lage getallen meer naar de binnenkant (zie afbeelding). Meer informatie staat in de RISC OS 3 PRM's op pagina 3-98.

- time <formaat>

Met deze optie wordt de tijd onder het symbool gezet. Het formaat dat meegegeven moet worden, is gelijk aan het formaat dat Alarm gebruikt. In de Userguide staat er meer informatie over. We moeten ook niet vergeten de maximale lengte van de tijd mee te geven aan de -text optie. Een voorbeeld:

DirectorIcon !Alarm -text 
"00:00:00" -time <37>24:%MI:%SE

We krijgen nu het alarmsymbool op de symbolenbalk met daaronder de tijd in 24-uurs formaat. Let op we moeten <37> gebruiken omdat de obey-module %24 zou zien als een plek waar het 2e argument (dat meegeven kan worden bij het starten van het obey-bestand) ingevuld moet worden. Het formaat zou in dit geval (omdat er geen parameters worden meegeven) dan "4:%MI:%SE worden en dat klopt niet. Door <37> te gebruiken wordt dit omgezet tot een % nadat de obey-module de regel uit het obey-bestand heeft gelezen.

-menu <menunaam>
-select <menunaam>
-adjust menunaam

Met deze drie opties kunnen we een menu aan het symbool hangen. De optie -menu opent het menu wanneer we met MENU op het symbool klikken, -select opent het menu wanneer we met KIES op het symbool klikken en zo verder.

-dragto <menu>

Met deze optie kunnen we aangeven dat een bepaald menu aangeroepen moet worden wanneer er een object op het symbool wordt gesleept.

We krijgen het pad van object in de variabele Director$CurrentPath, de naam van het object in de variabele Director$CurrentLeaf en de map waarin het object staat in de variabele Director$CurrentDir. We kunnen eigenlijk niet zomaar een menunaam opgeven bij deze optie omdat dit alleen maar een menu zou openen. Daar hebben we eigenlijk niet zoveel aan. We moeten daarom gebruik maken van speciale menu's. De volgende keer gaan we hier uitgebreid op in. We geven hier alvast een voorbeeld:

DirectorIcon trashcan -
left -dragto "Command:Wipe 
|<Director$CurrentPath> ~CFR~V"

Dit zet een prullenbak op de symbolenbalk (we moeten wel een sprite 'trashcan' laden) en wanneer we een object erop slepen, wordt deze gewist.

-dragfrom <pad>|*<menu>

Met deze optie kunnen we het symbool dat op de symbolenbalk komt, ergens naar toe slepen. We kunnen gebruik maken van een pad of een menu. Wanneer we een pad gebruiken dan wordt het object waarnaar het pad wijst, bewaard op de plek waarheen het symbool gesleept wordt. Bij het gebruik van *<menu> wordt het menu aangeroepen als het symbool ergens heen gesleept is. De variabelen Director$CurrentPath, ...Leaf, ...Dir geven de paden aan waarheen het symbool gesleept is. Ook hier kunnen we weer gebruik maken van speciale menu's. Een voorbeeld:

DirectorIcon directory -left -
dragfrom "*Command:Dir |
<Director$CurrentPath>"

Dit zet het map-symbool op de symbolenbalk en wanneer we dit symbool naar een map-venster slepen dan wordt de huidig geselecteerde map (CSD) naar die map gezet.

-remove

Met deze optie wordt het Director-symbool weer van de symbolenbalk gehaald inplaats dat het aangemaakt wordt.

We kijken nu nog naar een voorbeeld met het DirectorIcon-commando.

DirectorIcon romapps Apps
-left -priority &50000000
-menu "Path:Resources:$"
-select "Command:Filer_OpenDir 
Resources:$.Apps" -adjust Pinboard

Dit commando zet een 2e Apps-symbool op de symbolenbalk. Wanneer we met PASAAN op dit symbool klikken dan wordt het Pinboard menu geopend. Klikken we met KIES dan krijgen we hetzelfde effect als bij de echte Apps-symbool (applicatie map wordt geopend), Wanneer we met MENU klikken dan krijgen we de inhoud van de Resources-map in een menu.

Zo dit was het weer voor deze keer. De volgende keer gaan we het gebruik van speciale menu's en dynamische menu's behandelen.

Dick Tanis (77:8500/100.4 op Aconet)

E-mail: dtanis@dune.demon.nl (weekend)

dtanis@mail.hzeeland.nl (di-vr)