Åtgärder och datatyper är kraftfulla komponenter som används för att integrera program i skrivbordssystemet. Med hjälp av dessa kan du skapa ett användargränssnitt för att starta program och ändra deras datafiler.
Det här kapitlet introducerar begreppen åtgärder och datatyper. Det handlar om:
Varför du kan behöva skapa åtgärder och datatyper för program.
Hur åtgärder och datatyper förhåller sig till varandra.
Hur åtgärder och datatyper förhåller sig till utskrifter från skrivbordet.
Procedurerna och reglerna för att skapa åtgärder och datatyper beskrivs i tre kapitel i handboken.
Kapitel 11 beskriver hur du kan skapa åtgärder och datatyper genom att använda skrivbordsverktyget Skapa åtgärd.
Du använder Skapa åtgärd för att skapa åtgärder och datatyper till de flesta program, utan att du behöver lära dig syntaxreglerna för definitionerna.
Kapitel 12 och Kapitel 13 beskriver hur du skapar åtgärder och datatyper manuellt genom att skapa och redigera konfigurationsfiler.
När du vill använda andra åtgärder som inte stöds av Skapa åtgärd måste du skapa dessa åtgärder och datatyper manuellt.
Åtgärder är instruktioner som automatiserar skrivbordsuppgifter, t ex att köra program och öppna datafiler. Åtgärder fungerar på ungefär samma sätt som makron och programmeringsfunktioner. Varje åtgärd har ett namn som används för att köra åtgärden.
När du definierar en åtgärd kan den användas för att anpassa användargränssnittet så att olika aktiviteter blir lättare att utföra. Skrivbordet kan ansluta nya komponenter för användargränssnittet, t ex ikoner, kontroller för huvudgruppen och menyalternativ för åtgärder.
Programgruppen Skrivbordsverktyg i programhanteraren innehåller t ex ikoner som startar olika hjälpmedel.
När du dubbelklickar på en ikon kommer en åtgärd att köras. Här är t ex en del av definitionen till åtgärden som körs när användaren dubbelklickar på ikonen för Xwd Display. Åtgärden definieras i konfigurationsfilen /usr/dt/appconfig/types/språk/xclients.dt.
ACTION Xwud { LABEL Xwd Display TYPE COMMAND EXEC_STRING /usr/bin/X11/xwud -noclick -in \ %(File)Arg_1"Xwd-fil som ska visas:"% ... }
Kommandot i åtgärdens EXEC_STRING körs när användaren dubbelklickar på ikonen.
Huvudgruppen använder också åtgärder. Här är t ex en del av definitionen till ikonen Terminal på panelundermenyn Egna program. Kontrollen definieras i konfigurationsfilen /usr/dt/appconfig/types/språk/dtwm.fp.
CONTROL Term { ICON Fpterm LABEL Terminal PUSH_ACTION Dtterm ... }
I fältet PUSH_ACTION anges vilken åtgärd som ska köras när användaren klickar på kontrollen. I det här fallet är det en åtgärd som heter Dtterm.
Ett annat vanligt användningsområde för åtgärder är menyer. Datafiler har normalt åtgärder på Markera-menyn i filhanteraren. XWD-filer (filer med namn som slutar på .xwd eller .wd ) har t ex åtgärden Öppna som visar skärmbilden genom att köra åtgärden Xwud.
Åtgärderna på Markera-menyn anges i datatypsdefinitionen för XWD-filen. Definitionen finns i konfigurationsfilen /usr/dt/appconfig/types/språk/xclients.dt.
DATA_ATTRIBUTES XWD { ACTIONS Open,Print ICON Dtxwd ...
}
Datatypen XWD och motsvarande Open- och Print-åtgärder förklaras i "Hur datatyper ansluter datafiler till åtgärder".
Titta på ikonen Visa xwd i programgruppen Skrivbordsverktyg. Om du dubbelklickar på den här ikonen körs X-klienten xwud. Ikonen representerar dock inte direkt det körbara programmet xwud i /usr/bin/X11/xwud.
Ikonen med namnet Visa xwd-fil visas i programgruppen eftersom det finns en fil i den katalogen som heter Xwud (se Figur 10-3). Den filen motsvarar en underliggande åtgärd med samma namn: Xwud. I åtgärdsdefinitionen är åtgärdsnamnet det namn som följer efter nyckelordet ACTION:
ACTION Xwud { LABEL Xwd Display TYPE COMMAND WINDOW_TYPE NO_STDIO EXEC_STRING /usr/bin/X11/xwud -noclick -in \ %(File)Arg_1"Xwd-fil som ska visas:"% DESCRIPTION Xwd Display (Xwud) XwdDisplay-åtgärden \ visar en xwd-fil som skapats med åtgärden \ Xwd Capture (Xwd). Den använder \ kommandot xwud. }
Filen kallas för en åtgärdsfil eftersom den är knuten till en åtgärd. En fil är en åtgärdsfil när den är körbar och har samma namn som åtgärden. Ikonen i programhanteraren (eller filhanteraren) kallas för en åtgärdsikon eller programikon, eftersom programmet startar då du dubbelklickar på den.
När programhanteraren hittar en körbar fil letar den igenom åtgärdens databas för att se om det finns några åtgärder vars namn matchar filnamnet. Om så är fallet vet programhanteraren att filen är en åtgärdsfil.
Innehållet i en åtgärdsfil är ointressant eftersom den innehåller kommentarer till skrivbordsfunktionen.
En åtgärdsfil är inte detsamma som åtgärdsdefinitionsfil. Åtgärdsfilen är en fil med samma namn som åtgärden. Den används för att skapa programikonen i filhanteraren eller programhanteraren. En åtgärdsdefinitionsfil är den fil som heter namn.dt och innehåller definitionen av åtgärden.
När skrivbordet upptäcker att en fil är en åtgärdsfil, används den underliggande åtgärden för att definiera åtgärdsfilens utseende och metod.
I fältet EXEC_STRING anges hur programikonen ska fungera. För ikonen Visa xwd-fil anger EXEC_STRING att åtgärdsikonen ska köra X-klienten xwud med vissa kommandoradsargument.
I fältet LABEL anges programikonens etikett.
I fältet DESCRIPTION beskrivs texten som visas när användaren begär objekthjälp.
Programikonen Xwud använder standardikonbilden för åtgärder, eftersom dess åtgärdsdefinition inte innehåller fältet ICON, som anger en annan bild.
Ikonen Komprimera fil använder däremot en annan ikonbild eftersom dess underliggande åtgärdsdefinition innehåller ett ICON-fält.
Till exempel:
ACTION Compress { LABEL Compress File ICON Dtcmprs ... }
Åtgärden Xwud kallas en kommandoåtgärd eftersom dess definition innehåller kommandot som ska köras (EXEC_STRING). Fältet TYPE i åtgärdsdefinitionen definierar åtgärdstypen.
Inledningsvis visas ikonen Visa xwd i programgruppen Skrivbordsverktyg. Du kan dock skapa ytterligare kopior av åtgärdsikonen i valfri katalog där du har skrivbehörighet. Om åtgärdsdefinitionen för Xwud ingår i databasen, blir alla körbara filer du skapar med namnet Xwud åtgärdsfiler som representerar den åtgärden. Ikonen i programhanteraren eller filhanteraren används för att köra åtgärden.
Ett argument till ett kommando är normalt en fil som kommandot arbetar med. Åtgärder kan skrivas för att acceptera filargument.
EXEC_STRING för åtgärden Xwud anger t ex att ett filargument krävs:
EXEC_STRING /usr/bin/X11/xwud -noclick -in \ %(File)Arg_1"Xwd-fil som ska visas:"%
Termen Arg motsvarar ordet argument. Syntaxen Arg_1 betecknar det första argumentet, och (File) innebär att åtgärden behandlar argumentet som en fil.
Det enklaste sättet för användaren att tillhandahålla ett filargument är att släppa en datafil på programikonen. Skrivbordssystemet avgör sökvägen till den släppta filen och placerar den i kommandoraden i stället för texten mellan symbolerna % (%(File)Arg_1"Xwd-fil som ska visas: "%). Kommandot som körs blir då:
/usr/bin/X11/xwud -noclick -in sökväg
När användaren dubbelklickar på programikonen avgör skrivbordssystemet med hjälp av EXEC_STRING att ett filargument krävs, och en dialogruta som uppmanar användaren att skriva ett filnamn eller en sökväg visas. I fallet med åtgärden Xwud blir ledtexten:
Xwd-fil som ska visas:
Filnamnet eller sökvägen som användaren anger används som filargument.
Förutom för att starta program används åtgärder på skrivbordet för att skapa funktionalitet i:
Huvudgruppen.
Definitionen av en ikon i huvudgruppen omfattar fält som anger vilken åtgärd som körs när användaren klickar på ikonen eller släpper en fil på den. Mer information finns i "Definiera kontroller i huvudgruppen".
Menyer
Med syntaxen till definitionerna för Fönster- och Arbetsyta-menyn kan du ange vilken åtgärd som ska köras av ett menyalternativ. Mer information finns i "Arbetsytehanterarens menyer" och under dtwmrc(4) i direkthjälpen (man page).
Kommunikation mellan program.
Ett program kan vara utformat för att skicka och ta emot information med en speciell typ av åtgärd som kallas ToolTalk-meddelande (TT_MSG). TT_MSG-åtgärder beskrivs i utvecklingsmiljödokumentationen för skrivbordssystemet.
När användaren skapar en ny datafil varierar filikonens utseende och metod i filhanteraren, beroende på den typ av datafil som användaren har skapat. Med skrivbordets datatypsmekanism går det att skapa anpassat utseende och en anpassad metod för filer och kataloger.
En datatyp är en konstruktion som definieras i skrivbordets databas. Nedan finns t ex definitionen till datatypen XWD. Definitionen finns i konfigurationsfilen /usr/dt/appconfig/types/språk/xclients.dt.
DATA_ATTRIBUTES XWD { ACTIONS Open,Print ICON Dtxwd NAME_TEMPLATE %s.xwd MIME_TYPE application/octet-stream SUNV3_TYPE xwd-file DESCRIPTION Den här filen innehåller en bild i XWD-\ format. Dessa filer skapas vanligtvis genom\ att en bild tas av fönster med hjälp av åtgärden XwdCapture. \ Dess datatyp heter XWD. XWD-filer \ har namn som slutar på `.xwd' eller `.wd'. }
DATA_CRITERIA XWD1 { DATA_ATTRIBUTES_NAME XWD MODE f NAME_PATTERN *.xwd } DATA_CRITERIA XWD2 { DATA_ATTRIBUTES_NAME XWD MODE f NAME_PATTERN *.wd }
Alla datatypsdefinitioner består av två delar:
DATA_ATTRIBUTES - beskriver datatypens utseende och egenskaper.
DATA_CRITERIA - avgör regler (namn och innehåll) för hur en fil ska kategoriseras så att den tillhör en datatyp.
Fältet DATA_ATTRIBUTES_NAME kopplar villkoren till attributen.
Det kan finnas flera DATA_CRITERIA till ett DATA_ATTRIBUTE. Datatypen XWD har t ex två villkor för att ange två olika namnvillkor (NAME_PATTERN): namn som slutar med .xwd respektive .wd.
Ta datatypen XWD som exempel. Användaren skapar en fil av XWD-typ genom att ge filen något av filnamnstilläggen .xwd eller .wd. Skrivbordssystemet använder filnamnet som villkor vid bestämningen av filens datatyp.
Varje fil med datatypen XWD får:
En unik ikonbild som hjälper användaren att känna igen datafilerna.
Objekthjälp som informerar om datatypen.
En egen Markera-meny i filhanteraren som innehåller åtgärderna Öppna och Skriv ut. Åtgärden Open (Öppna) för XWD-filer kör åtgärden Xwud.
Markera-menyn i filhanteraren är bara aktiv när en fil eller en katalog är markerad. Vilket kommando som finns längst ned på Markera-menyn beror på datatypen. Om en XWD-fil är markerad finns alternativen Öppna och Skriv ut på Markera-menyn.
Fältet ACTIONS i datatypsdefinitionen anger vilka kommandon som läggs till längst ned på datatypens Markera-meny.
DATA_ATTRIBUTES XWD { ACTIONS Öppna,Skriv ut ... }
Innehållet på Markera-menyn beror på datatypen. Det finns många datatyper som innehåller åtgärden Open (Öppna). Det innebär att när du markerar en fil av en sådan datatyp i filhanteraren och visar Markera-menyn, finns kommandot Öppna på menyn.
Åtgärden Open (Öppna) kör normalt programmet som datafilen hör till. Om du t ex öppnar en XWD-fil körs åtgärden Xwud, vilken i sin tur kör X-klienten xwud för att visa skärmbilden. Med andra ord är åtgärden Open (Öppna) synonym med åtgärden Xwud, för datatypen XWD. Om du öppnar en fil av typen TEXTFILE öppnas Textredigeraren. När du öppnar en BM- (bitmapp) eller PM-fil (bildpunktsmönster) körs ikonredigeraren.
Du kan skapa olika Öppna-åtgärder som utför olika saker med två möjligheter till åtgärdsdefinitioner:
Med åtgärdstilldelning skapar du en åtgärd som kör en annan åtgärd i stället för att köra ett kommando direkt. Du kan t ex skapa en Öppna-åtgärd som tilldelas (kör) åtgärden Xwud.
Datatypsrestriktioner för en åtgärd.
Åtgärdsdefinitioner kan innehålla fältet ARG_TYPE som begränsar åtgärden till vissa datatyper. Du kan t ex ange att Öppna-åtgärden som kör åtgärden Xwud bara gäller för fält med datatypen XWD.
Nedan finns definitionen av den åtgärd som tilldelar Öppna-åtgärden åtgärden Xwud för datatypen XWD. Den finns i databaskonfigurationsfilen /usr/dt/appconfig/types/C/xclients.dt.
ACTION Open { LABEL Open ARG_TYPE XWD TYPE MAP MAP_ACTION Xwud }
Fältet TYPE anger att detta är en avbildningsåtgärd. MAP_ACTION anger att åtgärden kör åtgärden Xwud. Fältet ARG_TYPE anger att åtgärden bara gäller för filer med datatypen XWD.
Jämför föregående definition av åtgärden Öppna med nästa definition, som finns i databasfilen /usr/dt/appconfig/types/C/dt.dt.
ACTION Open { LABEL Open ARG_TYPE BM TYPE MAP MAP_ACTION Dticon }
Den här definitionen gäller för filer med datatypen (ARG_TYPE) BM (bitmappsfiler). Definitionen tilldelar åtgärden Öppna åtgärden Dticon, som kör Ikonredigeraren.
Vad som händer när du dubbelklickar för en viss datatyp definieras av den första posten i fältet ACTIONS. För datatypen XWD innebär ett dubbelklick att åtgärden Öppna körs, vilken i sin tur kör åtgärden Xwud.
När användaren släpper en datafil på en åtgärdsikon körs åtgärden med datafilen som argument (se "Hur åtgärder använder datafiler som argument").
När t ex datafilen XWD släpps på ikonen Visa xwd körs åtgärden Xwud med den datafilen som argument. Detta kör X-klienten xwud med datafilen.
En datafil kan skrivas ut på följande sätt från skrivbordet:
Använd om möjligt kommandot Skriv ut på filhanterarens Markera-meny.
Släpp en datafil på skrivbordets målområde för utskrift (skrivarikonen på huvudgruppen eller en skrivarikon i utskriftshanteraren).
Dessutom går det att skriva ut från många program.
När du skriver ut från skrivbordet används åtgärden Skriv ut. Skriv ut är, på samma sätt som Öppna, ett åtgärdsnamn som används till flera olika typer av data. Därför används åtgärdsavbildning och fältet ARG_TYPE för Skriv ut-åtgärder för att anpassa utskriften efter varje datatyp.
Nedan finns t ex åtgärden Skriv ut för datatypen XWD. Definitionen finns i /usr/dt/appconfig/types/språk/xclients.dt.
ACTION Print { LABEL Print ARG_TYPE XWD TYPE MAP MAP_ACTION NoPrint }
Den här Print (Skriv ut)-åtgärden, som är specifik för XWD-filer, tilldelas en NoPrint-åtgärd. NoPrint är en särskild åtgärd som definieras i /usr/dt/appconfig/types/språk/dt.dt. Åtgärden NoPrint visar en dialogruta som anger att den här datatypen inte kan skrivas ut.
Jämför Print-åtgärden för XWD med följande Print-åtgärd för PCL-filer:
ACTION Print { LABEL Print ARG_TYPE PCL TYPE MAP MAP_ACTION PrintRaw }
I filen /usr/dt/appconfig/types/språk/print.dt definieras åtgärden PrintRaw, som innehåller följande kommandorad för utskrift av PCL-filerna:
ACTION PrintRaw { TYPE COMMAND WINDOW_TYPE NO_STDIO EXEC_STRING /usr/dt/bin/dtlp -w %(File)Arg_1% }