Detta avsnitt beskriver hur en kontroll och olika kontrolltyper skapas.
Om kontrollen ska ha någon av fälten PUSH_ACTION eller DROP_ACTION definierade skapar du motsvarande funktionsdefinitioner. Dessa funktioner 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 ikonadresser finns i "Ikonbildsfiler".
Skapa en ny konfigurationsfil för Frontpanelen i:
Systemtäckande: /etc/dt/appconfig/types/språk/*.fp
Egen: Hemmapp/.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 när du definierar kontrollens funktion:
TYPE: Anges som icon
PUSH_ACTION: Anger namnet på funktionen som ska köras
Följande kontroll, som placeras på panelundermenyn Egna program, kör ett spel som användaren har lagt in:
CONTROL Kula { TYPE icon CONTAINER_NAME PersAppsSubpanel CONTAINER_TYPE SUBPANEL ICON kula PUSH_ACTION RunBallGame HELP_STRING "Välj den här kontrollen om du vill spela Kulspelet." }
Följande kontroll placeras i det övre vänstra hörnet av arbetsyteväxlaren. Den startar en funktion 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 om du vill köra cutdisp." PUSH_ACTION CutDisp }
Använd dessa fält om du vill definiera kontrollens funktion.
TYPE: Anges som file
PUSH_ACTION: Anges som Open
Det måste finnas en Open-funktion 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. Funktionen Open för *.txt -filer är en del av standardfunktionsdatabasen.
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 funktion som ska köras när användaren släpper en fil på kontrollen. Funktionen måste kunna acceptera filargument.
En kontrolldefinition innehåller ofta fälten PUSH_ACTION och DROP_ACTION. Du kan använda samma funktion för en dra och släpp-funktion.
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 dessa fält om du vill definiera kontrollens funktion.
TYPE: Anges 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, när den väljs, ska fungera som en fil när du dubbelklickar på filens ikon i Filhanteraren.
ICON och ALTERNATE_ICON: Beskriver de bilder som används för att ange ändrad och icke ändras 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 blir icke-tom.
FILE_NAME: Anger namnet på den fil som ska övervakas.
Följande kontroller letar exempelvis efter en fil med namnet meetings som ska överföras till ditt system med hjälp av anonym ftp. Kontrollen placeras i underpanelmenyn 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 växlingskontroll kontrollerar om den process som ska startas 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 dessa fält om du vill definiera kontrollens funktion.
PUSH_RECALL: Anges till True.
CLIENT_NAME: Anger namnet på kontrollens klient.
Värdet på CLIENT_NAME måste matcha 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 funktionen som körs när användaren klickar på kontrollen.
Följande kontroll kör en förekomst av ett program vars funktion 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 på Frontpanelen. Du kan t ex placera en systembelastningsmätare i Frontpanelen genom att skapa en klientfönsterkontroll för xload.
Använd följande fält för att definiera kontrollens funktion:
TYPE: Anges till client.
CLIENT_NAME: Anger vilken klient som ska startas.
Värdet på CLIENT_NAME måste matcha 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 funktionen:
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 animeringsnamn { icon_image [fördröjning] icon_image [fördröjning] ... }
där fördröjning är tidsförskjutningen mellan animeringsikonerna i 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 avsnitts-ID