Du kan skapa datatypsdefinitioner på två sätt:
Med verktyget Skapa funktion. Skapa funktion beskrivs i Kapitel 11.
Manuellt.
När du skapar en datatyp manuellt måste du redigera en databasfil.
I det här kapitlet beskrivs hur du manuellt skapar datatypsdefinitioner i följande avsnitt:
En introduktion till datatyper finns i Kapitel 10".
Mer information om datatypsdefinitioner finns i direkthjälpen (man) för dtddsfile(4).
Med manuellt skapade datatyper kan du använda alla möjligheter som finns inbyggda i datatypsdefinitionernas syntax.
Du måste skapa en datatyp manuellt om du vill kunna använda följande funktionalitet:
Sökvägsbaserade datatyper
Möjlighet att ange andra funktioner än Open (Öppna) och Print (Skriv ut) som associeras med datatypen.
Flera namn-, mönster- eller innehållsvillkor för samma datatyp - exempelvis en datatyp som är baserad på filer som heter *.abc eller *.def
Länkbaserade datatyper
En datatypsdefinition består av två separata databasdefinitioner:
DATA_ATTRIBUTES
-definitionen.
Definitionen av DATA_ATTRIBUTES beskriver datatypens namn samt utseende och egenskaper hos filer av den här typen.
Fältet DATA_CRITERIA
-definitionen.
Fältet DATA_CRITERIA beskriver typens villkor. Varje villkorsdefinition anger DATA_ATTRIBUTES-definitionen som villkoret gäller för.
Det måste finnas minst en DATA_CRITERIA-definition för varje DATA_ATTRIBUTES-definition. En DATA_ATTRIBUTES-definition kan ha flera DATA_CRITERIA associerade.
Du kan t ex skapa en attributdefinition för PostScript-filer som beskriver hur PostScript-filerna ser ut och fungerar i Filhanteraren. Sedan kan du skapa två separata villkor för PostScript-datatypen - ett som är baserat på filnamn och ett som är baserat på filinnehåll.
Mer information finns i "Definiera dataattribut för en datatyp".
I det här avsnittet beskrivs hur du skapar en datatypskonfigurationsfil.
Kraven för konfigurationsfiler som innehåller datatypsdefinitioner är:
Filerna måste använda namngivningskonventionen namn.dt
Filerna måste finnas i databassökvägen. Standardsökvägen är:
Egna datatyper - Hemmapp/.dt/types
Systemtäckande datatyper - /etc/dt/appconfig/types/språk
Inbyggda datatyper - /usr/dt/appconfig/types/språk. Den här mappen ska du inte använda.
Mer information om hur du ändrar databassökvägen finns i "Ange värde för en sökväg".
Öppna en befintlig databasfil eller skapa en ny.
Mer information finns i föregående avsnitt "Konfigurationsfiler för datatyper".
Definiera dataattribut för datatypen med följande syntax:
DATA_ATTRIBUTES datatypsnamn
{
ICON bildnamn
DESCRIPTION sträng
attributfält
attributfält
...
}
där
datatypsnamn är ett unikt namn som ges till den här datatypen.
bildnamn är ett filnamn eller en sökväg för en ikonfil. Använd filens basnamn. För ikonfilerna minbild.m.pm och minbild.t.pm används namnet myimage.
attributfält definierar utseende eller beteende för datatypen.
sträng är en teckensträng. Innehållet blir objekthjälp för datatypen.
Definiera datatypens datavillkor med hjälp av följande syntax:
DATA_CRITERIA villkorsnamn
{
DATA_ATTRIBUTES_NAME datatypsnamn
villkorsfält
villkorsfält
...
}
, där
villkorsnamn är ett unikt namn för den här villkorsdefinitionen
datatypsnamn är ett namn som används i definitionen DATA_ATTRIBUTES
villkorsfält är ett fält som används för att definiera villkoren för tilldelning av en fil till den här datatypen
Spara databasfilen.
Skapa datatypens ikoner
Mer information finns i "Ange ikonbild för datatypen".
Skapa de funktioner som finns i fältet ACTIONS i attributdefinitionen.
Dubbelklicka på Ladda om funktioner i programgruppen Skrivbordsverktyg för att läsa om databasen.
Anta att det i ditt system finns ett program som heter xgif, som visar GIF-bilder. Normalt startas programmet med kommandot
xgif filnamn.
Du vill kunna visa GIF-bilder på flera olika sätt:
Genom att dubbelklicka på en GIF-datafil
Genom att markera datafilen och välja programmet från Markera-menyn
Öppna den nya filen Hemmapp/.dt/types/Gifvisning.dt för redigering.
Skriv datatypsdefinitionerna:
DATA_ATTRIBUTES Gif
{
DESCRIPTION GIF-bildfil.
ICON GifIcon
ACTIONS View
}
DATA_CRITERIA Gifvillkor
{
DATA_ATTRIBUTES_NAME Gif
NAME_PATTERN *.gif
}
Skriv funktionsdefinitionen för funktionen Gifvisning:
ACTION Gifvisning
{
EXEC_STRING xgif %(File)Arg_1"Gif-fil som ska visas:"
WINDOW_TYPE NO_STDIO
DESCRIPTION Starta Gif-läsaren genom att \
dubbelklicka eller släppa filen.
}
Eftersom definitionen inte omfattar något ICON-fält använder funktionen systemets standardikon.
Skapa följande tilldelningsfunktion för att koppla funktionen Gifvisning till funktionen View i datatypsdefinitionen. Använd fältet ARG_TYPE för att begränsa denna visningsfunktion till GIF-filer.
ACTION View
{
ARG_TYPE Gif
TYPE MAP
MAP_ACTION Gifvisning
}
Spara filen.
Dubbelklicka på Ladda om funktioner i programgruppen Skrivbordsverktyg.
Definitionen DATA_ATTRIBUTES definierar utseende och beteende för datatypen. Den anger namn på datatypen och ger dig möjlighet att ange:
Ikonen Filhanteraren (fältet ICON)
Metoden dubbelklick och innehåll på Markera-menyn (fältet ACTIONS)
Använd fältet ICON för att ange vilken ikon som ska användas i Filhanteraren. Om du inte anger någon ikonbild visas bara namnet i Filhanteraren.
Värdet på fältet ICON kan vara:
Basfilnamnet är namnet på filen som innehåller ikonbilden, minus suffix för storlek (m och t) och bildtyp (bm och pm). Om t ex filer får namnet Spelikon.m.pm och Spelikon.t.pm, använder du Spelikon.
Om du använder basfilnamnet måste ikonfilerna placeras i en mapp i ikonsökvägen:
Egna ikoner: Hemmapp/.dt/icons
Systemtäckande ikoner: /etc/dt/appconfig/icons/språk
En absolut sökväg till ikonfilen, inklusive fullständigt filnamn.
Du ska bara använda absolut sökväg om ikonfilen inte finns i ikonsökvägen. Om ikonfilen Spelikon.m.pm finns i mappen /doc/projects, som inte finns i ikonsökvägen, ska värdet i fältet ICON vara /doc/projects/Spelikon.m.pm.
Tabell 13-1 listar de ikonstorlekar du ska skapa och motsvarande filnamn.
|
Storleken i bildpunkter |
Bitmappsnamn |
Bildpunktsmönsternamn |
|---|---|---|
|
32 gånger 32 |
namn.m.bm |
namn.m.pm |
|
16 gånger 16 |
namn.t.bm |
namn.t.pm |
Du kan associera datatyper med funktioner på två sätt:
Fältet ACTIONS i definitionen DATA_ATTRIBUTES listar de funktioner som visas på Filhanterarens Markera-meny. Den första funktionen i listan är standardfunktionen (dubbelklick).
Funktioner begränsas till angivna datatyper med funktionsdefinitionens ARG_TYPE-fält.
Följande datatypsdefinition skapar t ex en datatyp för särskilda "viktigt"-filer (readme-filer) som skapas av systemadministratören och använder namnkonventionen *.rm.
DATA_ATTRIBUTES SysReadmeFile
{
ICON SysReadMe
ACTIONS Open,Respond
}
DATA_CRITERIA SysReadmeFileCriteria
{
NAME_PATTERN *.rm
DATA_ATTRIBUTES_NAME SysReadmeFile
}
Nedan definieras en speciell Respond-funktion för filen. Den öppnar en skrivbar kopia av filen i textredigeraren. När filen sparas och textredigeraren avslutas, skickas filen till systemadministratören (adressen sysadmin@utd).
ACTION Respond
{
ARG_TYPE SysReadmeFile
EXEC_STRING /bin/sh -c 'cp %Arg_1% $HOME/readme.temp;\
chmod +w $HOME/readme.temp; \
dtpad $HOME/readme.temp; \
cat $HOME/readme.temp | \
/usr/bin/mailx sysadmin@utd; \
rm $HOME/readme.temp'
WINDOW_TYPE NO_STDIO
}
Om en fil är en osynlig datatyp visas den inte i Filhanteraren.
Använd fältet PROPERTIES i definitionen DATA_ATTRIBUTES för att ange att objekt av den här typen ska döljas:
PROPERTIES invisible
Tabell 13-2 visar DATA_ATTRIBUTES-fälten, vilka mest används av programmerare. De anger hur filer ska fungera när användaren utför olika skrivbordsaktiviteter.
Mer information finns i Common Desktop Environment Programmer's Guide, som ingår i dokumentationen till utvecklingsmiljön.
Tabell 13-2 DATA_ATTRIBUTES Fält och beskrivningar|
Fält |
Beskrivning |
|---|---|
|
För behållare som t ex mappar. Anger en funktion som ska köras när en fil flyttas till en behållare av den här datatypen. |
|
|
För behållare som t ex mappar. Anger en funktion som ska köras när en fil kopieras till en behållare av den här datatypen. |
|
|
Anger en funktion som ska köras när en fil länkas till en fil av den här datatypen. |
|
|
Anger att filer av den här datatypen innehåller text som kan visas i en textruta. |
|
|
Anger motsvarande typ av ToolTalk-medium. |
|
|
Anger motsvarande MIME-typ. |
|
|
Anger motsvarande X400-typ. |
Definitionen för DATA_CRITERIA anger de villkor som används för att tilldela en fil eller mapp en datatyp
Du kan använda villkoren som definieras i Tabell 13-3 för objekttypsbestämning.
Tabell 13-3 DATA_CRITERIA Villkor och beskrivningar
Du kan använda fler än ett villkor för en datatyp. Du bör däremot inte använda villkoren NAME_PATTERN eller PATH_PATTERN i samma datatyp.
Använd fältet NAME_PATTERN för att ange namngivningskrav. Fältvärdet kan innehålla följande jokertecken:
? - matchar ett valfritt tecken
* - matchar noll eller flera tecken i följd
[tt...] - matchar något av de tecken (t) som omsluts av hakparentes
[t-t] - matchar något av tecknen i intervallet t t o m t
Följande datatypsdefinition skapar en datatyp baserat på filnamnet. Filnamnet måste börja med QS och sluta med .doc.
DATA_ATTRIBUTES QS_Doc
{
DESCRIPTION Den här filen innehåller ett dokument för \
projektet QS.
ICON Word_Doc
ACTIONS Open
}
DATA_CRITERIA QS_Doc_Criteria
{
NAME_PATTERN QS*.doc
DATA_ATTRIBUTES_NAME QS_Doc
}
Följande definition skapar en datatyp för mappar med namnet Demo_n där n är i intervallet mellan 0 och 9.
DATA_ATTRIBUTES Demomapp
{
DESCRIPTION Det här är en mapp. Dubbelklicka för att öppna den.
ICON Demo
ACTIONS OpenInPlace,OpenNewView
}
DATA_CRITERIA Demo_directory_criteria
{
NAME_PATTERN Demo_[0-9]
MODE d
DATA_ATTRIBUTES_NAME Demomapp
}
Använd fältet PATH_PATTERN för att ange sökväg. Du kan använda samma jokertecken som med NAME_PATTERN.
Följande datatyp använder ett villkor baserat på sökvägen.
DATA_ATTRIBUTES Projektgrafik
{
DESCRIPTION Grafikfil för projektet QS. Dubbelklicka på ikonen \
om du vill visa grafiken.
ICON QSgraphics
}
DATA_CRITERIA Projektgrafikvillkor
{
DATA_ATTRIBUTES_NAME Projektgrafik
PATH_PATTERN */projects/QS/graphics/*
}
Om du vill skapa en datatyp baserat på både filnamn och sökväg, tar du med namnet i värdet PATH_PATTERN. Du kan inte använda både NAME_PATTERN och PATH_PATTERN i samma villkorsdefinition.
Datatypen QS_källfiler som definieras nedan gäller för alla filer med namnet appn.c (där n ligger inom intervallet 1 till 9) som finns i undermappar till */projects/QS.
DATA_ATTRIBUTES QS_källfiler
{
...
}
DATA_CRITERIA QS_källfilsvillkor
{
PATH_PATTERN */projects/QS/*/app[1-9].c
DATA_ATTRIBUTES_NAME QS_källfiler
}
Följande datatyp gäller för alla filer i mappen /doc/project1 som heter chnn.xxx där n är i intervallet mellan 0 och 9 och xxx är ett valfritt filnamnssuffix på tre tecken.
DATA_ATTRIBUTES Kapitelfiler
{
DESCRIPTION Kapitelfil för projektdokumentet.
ICON chapter
ACTIONS Edit,Print
}
DATA_CRITERIA Kapitelvillkor
{
PATH_PATTERN /doc/project1/ch[0-9][0-9].???
DATA_ATTRIBUTES_NAME Kapitelfiler
}
Använd fältet MODE för att ange vilka behörigheter som krävs.
Lägesvillkor används normalt i kombination med namnbaserade, sökvägsbaserade eller innehållsbaserade datatyper. Med dessa kan du begränsa en datatyp till en fil eller mapp, eller ange om det krävs behörighet för att läsa, skriva eller använda.
Fältet MODE kan innehålla logiska operatorer (Tabell 13-4) och tecken (Tabell 13-5).
Tabell 13-4 MODE Logiska operatorer|
Operator |
Beskrivning |
|---|---|
|
! | |
|
& | |
|
| |
Tabell 13-5 MODE Fälttecken och beskrivningar
|
Tecken |
Beskrivning |
|---|---|
|
Datatypen gäller bara filer |
|
|
Datatypen gäller bara mappar |
|
|
r |
Filen kan läsas av alla användare |
|
Filen kan ändras av alla användare. |
|
|
Filen kan köras av alla användare. |
|
|
Filen är en länk |
Standardinställningen för ett behörighetsläge är att läget inte spelar någon roll.
Följande fält begränsar datatypen enligt följande:
f&!w - skrivskyddade filer
!w - skrivskyddade filer och mappar
f&x - körbara filer
f&r&x - filer som både kan ändras och köras
x|!w - filer som är körbara eller skrivskyddade
Följande datatypsdefinition skapar en datatyp för skrivskyddade, icke körbara filer vars filnamn följer namnkonventionen *.doc. Den förutsätter att det redan har skapats en visningsfunktion för datatypen.
DATA_ATTRIBUTES Skrivskyddat_dokument
{
ICON read_only
DESCRIPTION Det här dokumentet kan inte ändras. Om du \
dubbelklickar körs redigeraren med en \
skrivskyddad kopia av filen.
ACTIONS View
}
DATA_CRITERIA Skrivskyddat_dokument_villkor
{
NAME_PATTERN *.doc
MODE !d&!x&!w
DATA_ATTRIBUTES_NAME Skrivskyddat_dokument
}
Använd fältet CONTENT för att ange datatyp baserat på filens innehåll. Innehållsbaserad datatypsbestämning kan användas i kombination med namn- eller platsbaserad datatypsbestämning.
Typbestämningen kan baseras på texten i filen eller på dess numeriska innehåll. Numret på filens första byte är 0.
För numeriskt innehåll använder du syntaxen:
CONTENT startbyte byte antal CONTENT startbyte short antal CONTENT startbyte long antal
För mappinnehåll använder du syntaxen:
CONTENT 0 filename "filnamn"
Använd den vanliga C-beteckningen för oktala (inledande o) och hexadecimala (inledande oX) tal.
Om du använder en innehållsbaserad datatyp kan systemets prestanda sjunka. Använd därför namn- eller sökvägsbaserade datatyper när det är möjligt.
Datatypen Skrivbar_Wingz gäller för alla filer med skrivbehörighet som innehåller strängen WNGZ i början av filen.
DATA_ATTRIBUTES Skrivbar_Wingz
{
...
}
DATA_CRITERIA Skrivbar_Wingz_villkor
{
CONTENT 0 string WNGZ
MODE w&!d
DATA_ATTRIBUTES_NAME Skrivbar_Wingz
}
Du kan skapa en datatyp med flera oberoende villkor - dvs filen tilldelas datatypen om den minst motsvarar ett av villkoren.
Skapa en DATA_ATTRIBUTES-definition för datatypen.
Skapa en DATA_CRITERIA-definition för varje villkor.
Använd fältet DATA_ATTRIBUTES_NAME för att ansluta alla villkor till samma DATA_ATTRIBUTES-definition.
Följande definitioner skapar datatypen Mif. Typen baseras på namn eller innehåll.
DATA_ATTRIBUTES Mif
{
ICON Frame
ACTION_LIST Open,Print
}
DATA_CRITERIA Mif_namnvillkor
{
DATA_ATTRIBUTES_NAME Mif
NAME_PATTERN *.mif
}
DATA_CRITERIA Mif_innehållsvillkor
{
DATA_ATTRIBUTES_NAME Mif
CONTENT 1 string MIFFile
}
Sökvägen för datatyper omfattar språkberoende adresser. Skrivbordet använder värdet på LANG för att bestämma på vilka adresser datatypsdefinitioner söks.
Språkanpassade datatypsdefinitioner måste placeras i rätt språkberoende mapp i funktionssökvägen.
Standardsökvägen är:
Egna funktioner: Hemmapp/.dt/types
Systemtäckande funktioner: /etc/dt/appconfig/types/språk
Inbyggda funktioner: /usr/dt/appconfig/types/språk