Användarna kan skapa egna knappar genom att släppa ikoner på Installationsikon-kontrollerna.
Det här sättet att anpassa är enkelt, men funktionaliteten omfattar bara en del av vad som kan göras med kontroller i huvudgruppen. En kontroll som har skapats med Installationsikon kan t ex inte:
Innehålla animeringar
Visa ett klientfönster
Ändra utseende när något inträffar (t ex för att ange att ny post har tagits emot)
I det här avsnittet beskrivs hur du manuellt skapar kontroller i huvudgruppen.
Referensinformation om syntaxen för huvudgruppskontroller finns i direkthjälpen (man) för dtfpfile(4X).
Strukturen på en definition till en huvudgruppskontroll är:
CONTROL kontrollnamn { TYPE kontrolltyp CONTAINER_NAME värde CONTAINER_TYPE värde övriga fält som definierar utseende och uppförande }
Fältet TYPE i kontrolldefinitionen anger grundläggande beteende för den kontrollen.
Kontrollfunktion
Kontrollen kör en angiven åtgärd när användaren klickar på kontrollen eller släpper en fil på den.
Upptaget-lampa. Kontrollen blinkar (växlar bilder) när en åtgärd startas
Ett klientfönster i huvudgruppen.
Klocka.
Visar aktuellt datum.
Representerar en fil. När du väljer kontrollen körs standardåtgärden för den filen.
Detta avsnitt beskriver hur en kontroll och olika kontrolltyper skapas.
Om kontrollen ska ha något av fälten PUSH_ACTION eller DROP_ACTION skapar du motsvarande åtgärdsdefinitioner. Dessa åtgärder körs när användaren klickar på kontrollen eller släpper en fil på den.
Skapa ikonbildens fil för kontrollen.
Mer information om ikonstorlek, ikonnamn och ikonplaceringar finns i "Ikonbildsfiler".
Skapa en ny konfigurationsfil för huvudgruppen i:
För hela systemet: /etc/dt/appconfig/types/språk/*.fp
Egen: Hemkatalog/.dt/types/*.fp
Lägg till kontrolldefinitionen i filen.
Spara filen.
Välj Starta om arbetsytehanteraren på Arbetsyta-menyn.
Använd följande fält för att definiera kontrollens funktion:
TYPE: Ange som ikon
PUSH_ACTION: Anger namnet på åtgärden som ska köras
Följande kontroll, som placeras på panelundermenyn Egna program, kör ett spel som användaren har lagt in:
CONTROL Ball { TYPE icon CONTAINER_NAME PersAppsSubpanel CONTAINER_TYPE SUBPANEL ICON ball PUSH_ACTION RunBallGame HELP_STRING "Välj den här kontrollen för att spela." }
Följande kontroll placeras i det övre vänstra hörnet av arbetsyteväxlaren. Den startar en åtgärd som heter CutDisp.
CONTROL StartCutDisp { TYPE icon CONTAINER_NAME Switch CONTAINER_TYPE SWITCH POSITION_HINTS first ICON cutdisp HELP_STRING "Välj den här kontrollen för att köra cutdisp." PUSH_ACTION CutDisp }
Använd följande fält för att definiera kontrollens funktion:
TYPE: Ange som fil
PUSH_ACTION: Ange som Open
Det måste finnas en Open-åtgärd definierad för filens datatyp.
Följande kontroll placeras längst till höger på huvudpanelen. Den startar textredigeraren med datafilen /users/ellen/PhoneList.txt. Åtgärden Open för *.txt-filer är en del av standardåtgärdsdatabasen.
CONTROL EditPhoneList { TYPE file FILE_NAME /users/ellen/PhoneList.txt CONTAINER_NAME Top CONTAINER_TYPE BOX POSITION_HINTS last ICON PhoneBook HELP_STRING "Den här kontrollen visar Ellens telefonlista." PUSH_ACTION Open }
Använd fältet DROP_ACTION för att ange vilken åtgärd som ska köras när användaren släpper en fil på kontrollen. Åtgärden måste kunna acceptera filargument.
En kontrolldefinition innehåller ofta fälten PUSH_ACTION och DROP_ACTION. Du kan använda samma åtgärd för en dra och släpp-åtgärd.
Följande kontroll på panelundermenyn Egna program kör X-klienten xwud, som använder filargument.
CONTROL Run_xwud { CONTAINER_NAME PerAppsSubpanel CONTAINER_TYPE SUBPANEL POSITION_HINTS 2 ICON XwudImage PUSH_ACTION RunXwud DROP_ACTION RunXwud }
Använd följande fält för att definiera kontrollens funktion:
TYPE: Ange något av följande värden:
icon - använd den här typen om du vill ange en PUSH_ACTION och/eller DROP_ACTION för kontrollen.
file - använd den här typen om du vill att kontrollen ska fungera som en fil när du dubbelklickar på filikonen i filhanteraren.
ICON och ALTERNATE_ICON: Beskriver de bilder som används för att ange ändrad och oförändrad status för den övervakade filen.
MONITOR_TYPE: Beskriver vilka villkor som gör att bilden ändras. Använd något av följande värden:
mail - kontrollen ändrar utseende när information läggs till i filen.
file - kontrollen ändras när den angivna filen inte längre är tom.
FILE_NAME: Anger namnet på den fil som ska övervakas.
Följande kontroller letar t ex efter en fil med namnet meetings som ska överföras till ditt system med hjälp av anonym ftp. Kontrollen placeras i panelundermenyn Egna program.
CONTROL MonitorCalendar { TYPE file CONTAINER_NAME PersonalApps CONTAINER_TYPE SUBPANEL POSITION_HINTS first FILE_NAME /users/ftp/meetings MONITOR_TYPE file ICON meetingsno ALTERNATE_ICON meetingsyes }
En kontroll för enstaka förekomster kontrollerar om den process som har startats av PUSH_ACTION redan körs. Om processen inte körs, körs PUSH_ACTION. Om processen redan körs flyttas fönstret högst upp i fönsterstacken på den aktuella arbetsytan.
Använd följande fält för att definiera kontrollens funktion:
PUSH_RECALL: Ange som True.
CLIENT_NAME: Anger namnet på kontrollens klient.
Värdet på CLIENT_NAME måste stämma överens med den första strängen (res_name) i egenskapen WM_CLASS i programmets primära fönster. Mer information finns i direkthjälpen (man) för xprop(1).
PUSH_ACTION: Beskriver åtgärden som körs när användaren klickar på kontrollen.
Följande kontroll kör en förekomst av ett program vars åtgärd heter MyEditor.
CONTROL MyEditor { TYPE icon CONTAINER_NAME Top CONTAINER_TYPE BOX POSITION_HINTS 15 PUSH_RECALL True CLIENT_NAME BestEditor PUSH_ACTION StartMyEditor ICON MyEd }
En klientfönsterkontroll är ett programfönster som är inbäddat i huvudgruppen. Du kan t ex placera en systembelastningsmätare i huvudgruppen genom att skapa en klientfönsterkontroll för xload.
Definiera kontrollen.
Använd följande fält för att definiera kontrollens funktion:
TYPE: Ange som client.
CLIENT_NAME: Anger vilken klient som ska startas.
Värdet på CLIENT_NAME måste stämma överens med den första strängen (res_name) i egenskapen WM_CLASS i programmets primära fönster. Mer information finns i direkthjälpen (man) för xprop(1).
Välj Starta om arbetsytehanteraren på Arbetsyta-menyn.
Starta klienten från kommandoraden i ett terminalfönster.
Följande kontroll visar t ex en belastningsmätare på 30 x 20 bildpunkter.
CONTROL LoadMeter { TYPE client CONTAINER_NAME Top CONTAINER_TYPE BOX CLIENT_NAME xload CLIENT_GEOMETRY 30x20 }
Om klienten inte sparas och återställs mellan sessionerna, vill du kanske konfigurera kontrollen så att klienten startar när användaren klickar på den. Du kan t ex konfigurera kontrollen för LoadMeter så att den startar xload genom att lägga till följande rad i definitionen:
PUSH_ACTION StartXload
och skapa åtgärden:
ACTION StartXload { WINDOW_TYPE NO_STDIO EXEC_STRING /usr/contrib/bin/X11/xload }
Du kan skapa en animeringssekvens som används när användaren väljer kontrollen eller släpper ett objekt på den.
För att kunna innehålla en animering måste kontrollen:
Vara av typen icon
Ha en PUSH_ACTION eller DROP_ACTION
Ange animeringssekvensen med hjälp av komponenten ANIMATION:
ANIMATION animationsnamn { ANIMATION ikon1 [fördröjning_ms] ANIMATION ikon2 [fördröjning_ms] ... }
där ikon1, ikon2 osv är namn på ikoner och fördröjning_ms är tidsfördröjningen mellan animeringsikonerna i millisekunder. Standardtidsförskjutningen är 200 millisekunder.
Lägg till fältet PUSH_ANIMATION och/eller DROP_ANIMATION till kontrolldefinitionen. Värdet är namnet på sekvensen ANIMATION.
Följande rad animerar en kontroll som startar programmet BestEditor. Tidsförskjutningen mellan ikonerna är 300 millisekunder. I exemplet antas det att du har skapat ikonfilerna frame1, frame2 osv.
CONTROL BestEditor { ... PUSH_ANIMATION BestEdAnimation ... }
ANIMATION BestEdAnimation { frame1 300 frame2 ... }
Det finns två sätt att göra hjälp till en kontroll tillgänglig:
Lägga till en hjälpsträng i kontrolldefinitionen.
Hjälpsträngen visas i hjälpfönstret när användaren anropar objekthjälp till kontrollen. Hjälpsträngen kan inte innehålla formatering (t ex rubriker) eller länkar.
Om du vill lägga till en hjälpsträng anger du den i kontrolldefinitionen:
HELP_STRING hjälpsträng
Ange ett hjälpavsnitt i en registrerad hjälpvolym.
Ett hjälpavsnitt är skriven information som utnyttjar alla möjligheter som finns i hjälpsystemet. För att kunna skriva hjälpavsnitt måste du använda skrivbordets Help Developer's Kit.
När du vill lägga in ett hjälpavsnitt anger du hjälpvolym och avsnitts-ID i kontrolldefinitionen:
HELP_VOLUME hjälpvolymnamn HELP_TOPIC avsnittsid