123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957 |
- {
- This file is part of the Free Pascal run time library.
- A file in Amiga system run time library.
- Copyright (c) 1998-2003 by Nils Sjoholm
- member of the Amiga RTL development team.
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- {
- History:
- Added overlay functions for PAnsiChar->Strings, functions
- and procedures.
- 14 Jul 2000.
- Changed tWBArg.wa_Lock from a pointer to a longint.
- 15 Aug 2000.
- Fixed tDiskObject.
- Member tDiskObject.do_CurrentX was defined as a pointer,
- should be longint.
- 17 Aug 2000.
- Added functions and procedures with array of const.
- For use with fpc 1.0.7. Thay are in systemvartags.
- 05 Nov 2002.
- Removed amigaoverlays, use smartlink instead.
- 05 Nov 2002.
- Added the defines use_amiga_smartlink and
- use_auto_openlib. Implemented autoopening of
- the library.
- 14 Jan 2003.
- Update for AmigaOS 3.9.
- A lot of new const and new records.
- New functions
- FUNCTION AddAppWindowDropZoneA
- FUNCTION ChangeWorkbenchSelectionA
- FUNCTION CloseWorkbenchObjectA
- FUNCTION MakeWorkbenchObjectVisibleA
- FUNCTION OpenWorkbenchObjectA
- FUNCTION RemoveAppWindowDropZone
- FUNCTION WorkbenchControlA
- Varargs functions are in systemvartags.
- 02 Feb 2003.
- Changed integer > smallint,
- cardinal > longword.
- 09 Feb 2003.
- [email protected]
- }
- {$PACKRECORDS 2}
- {$IFNDEF FPC_DOTTEDUNITS}
- unit workbench;
- {$ENDIF FPC_DOTTEDUNITS}
- INTERFACE
- {$IFDEF FPC_DOTTEDUNITS}
- uses Amiga.Core.Exec,Amiga.Core.Amigados,Amiga.Core.Utility,Amiga.Core.Intuition,Amiga.Core.Agraphics;
- {$ELSE FPC_DOTTEDUNITS}
- uses exec,amigados,utility,intuition,agraphics;
- {$ENDIF FPC_DOTTEDUNITS}
- Type
- pWBArg = ^tWBArg;
- tWBArg = record
- wa_Lock : BPTR; { a lock descriptor }
- wa_Name : STRPTR; { a string relative to that lock }
- end;
- WBArgList = Array [1..100] of tWBArg; { Only 1..smNumArgs are valid }
- pWBArgList = ^WBArgList;
- pWBStartup = ^tWBStartup;
- tWBStartup = record
- sm_Message : tMessage; { a standard message structure }
- sm_Process : pMsgPort; { the process descriptor for you }
- sm_Segment : BPTR; { a descriptor for your code }
- sm_NumArgs : Longint; { the number of elements in ArgList }
- sm_ToolWindow : STRPTR; { description of window }
- sm_ArgList : pWBArgList; { the arguments themselves }
- end;
- Const
- WBDISK = 1;
- WBDRAWER = 2;
- WBTOOL = 3;
- WBPROJECT = 4;
- WBGARBAGE = 5;
- WBDEVICE = 6;
- WBKICK = 7;
- WBAPPICON = 8;
- Type
- pOldDrawerData = ^tOldDrawerData;
- tOldDrawerData = record
- dd_NewWindow : tNewWindow; { args to open window }
- dd_CurrentX : Longint; { current x coordinate of origin }
- dd_CurrentY : Longint; { current y coordinate of origin }
- end;
- Const
- { the amount of DrawerData actually written to disk }
- OLDDRAWERDATAFILESIZE = 56; { sizeof(OldDrawerData) }
- Type
- pDrawerData = ^tDrawerData;
- tDrawerData = record
- dd_NewWindow : tNewWindow; { args to open window }
- dd_CurrentX : Longint; { current x coordinate of origin }
- dd_CurrentY : Longint; { current y coordinate of origin }
- dd_Flags : Longint; { flags for drawer }
- dd_ViewModes : Word; { view mode for drawer }
- end;
- Const
- { the amount of DrawerData actually written to disk }
- DRAWERDATAFILESIZE = 62; { sizeof(DrawerData) }
- DDVM_BYDEFAULT = 0;
- { view as icons }
- DDVM_BYICON = 1;
- { view as text, sorted by name }
- DDVM_BYNAME = 2;
- { view as text, sorted by date }
- DDVM_BYDATE = 3;
- { view as text, sorted by size }
- DDVM_BYSIZE = 4;
- { view as text, sorted by type }
- DDVM_BYTYPE = 5;
- { definitions for dd_Flags }
- { default (show only icons) }
- DDFLAGS_SHOWDEFAULT = 0;
- { show only icons }
- DDFLAGS_SHOWICONS = 1;
- { show all files }
- DDFLAGS_SHOWALL = 2;
- Type
- pDiskObject = ^tDiskObject;
- tDiskObject = record
- do_Magic : Word; { a magic number at the start of the file }
- do_Version : Word; { a version number, so we can change it }
- do_Gadget : tGadget; { a copy of in core gadget }
- do_Type : Byte;
- do_DefaultTool : STRPTR;
- do_ToolTypes : Pointer;
- do_CurrentX : Longint;
- do_CurrentY : Longint;
- do_DrawerData : pDrawerData;
- do_ToolWindow : STRPTR; { only applies to tools }
- do_StackSize : Longint; { only applies to tools }
- end;
- Const
- WB_DISKMAGIC = $e310; { a magic number, not easily impersonated }
- WB_DISKVERSION = 1; { our current version number }
- WB_DISKREVISION = 1; { our current revision number }
- {I only use the lower 8 bits of Gadget.UserData for the revision # }
- WB_DISKREVISIONMASK = 255;
- Type
- pFreeList = ^tFreeList;
- tFreeList = record
- fl_NumFree : smallint;
- fl_MemList : tList;
- end;
- Const
- { each message that comes into the WorkBenchPort must have a type field
- * in the preceeding short. These are the defines for this type
- }
- MTYPE_PSTD = 1; { a "standard Potion" message }
- MTYPE_TOOLEXIT = 2; { exit message from our tools }
- MTYPE_DISKCHANGE = 3; { dos telling us of a disk change }
- MTYPE_TIMER = 4; { we got a timer tick }
- MTYPE_CLOSEDOWN = 5; { <unimplemented> }
- MTYPE_IOPROC = 6; { <unimplemented> }
- MTYPE_APPWINDOW = 7; { msg from an app window }
- MTYPE_APPICON = 8; { msg from an app icon }
- MTYPE_APPMENUITEM = 9; { msg from an app menuitem }
- MTYPE_COPYEXIT = 10; { exit msg from copy process }
- MTYPE_ICONPUT = 11; { msg from PutDiskObject in icon.library }
- { workbench does different complement modes for its gadgets.
- * It supports separate images, complement mode, and backfill mode.
- * The first two are identical to intuitions GADGIMAGE and GADGHCOMP.
- * backfill is similar to GADGHCOMP, but the region outside of the
- * image (which normally would be color three when complemented)
- * is flood-filled to color zero.
- }
- GFLG_GADGBACKFILL = $0001;
- GADGBACKFILL = $0001; { an old synonym }
- { if an icon does not really live anywhere, set its current position
- * to here
- }
- NO_ICON_POSITION = $80000000;
- { If you find am_Version >= AM_VERSION, you know this structure has
- * at least the fields defined in this version of the include file
- }
- AM_VERSION = 1;
- Type
- pAppMessage = ^tAppMessage;
- tAppMessage = record
- am_Message : tMessage; { standard message structure }
- am_Type : Word; { message type }
- am_UserData : ULONG; { application specific }
- am_ID : ULONG; { application definable ID }
- am_NumArgs : ULONG; { # of elements in arglist }
- am_ArgList : pWBArgList; { the arguements themselves }
- am_Version : Word; { will be AM_VERSION }
- am_Class : Word; { message class }
- am_MouseX : smallint; { mouse x position of event }
- am_MouseY : smallint; { mouse y position of event }
- am_Seconds : ULONG; { current system clock time }
- am_Micros : ULONG; { current system clock time }
- am_Reserved : Array[0..7] of ULONG; { avoid recompilation }
- END;
- {* types of app messages *}
- const
- AMTYPE_APPWINDOW = 7; {* app window message *}
- AMTYPE_APPICON = 8; {* app icon message *}
- AMTYPE_APPMENUITEM = 9; {* app menu item message *}
- { Classes of AppIcon messages (V44) }
- { The "Open" menu item was invoked,
- the icon got double-clicked or an
- icon got dropped on it.
- }
- AMCLASSICON_Open = 0;
- { The "Copy" menu item was invoked }
- AMCLASSICON_Copy = 1;
- { The "Rename" menu item was invoked }
- AMCLASSICON_Rename = 2;
- { The "Information" menu item was invoked }
- AMCLASSICON_Information = 3;
- { The "Snapshot" menu item was invoked }
- AMCLASSICON_Snapshot = 4;
- { The "UnSnapshot" menu item was invoked }
- AMCLASSICON_UnSnapshot = 5;
- { The "Leave Out" menu item was invoked }
- AMCLASSICON_LeaveOut = 6;
- { The "Put Away" menu item was invoked }
- AMCLASSICON_PutAway = 7;
- { The "Delete" menu item was invoked }
- AMCLASSICON_Delete = 8;
- { The "Format Disk" menu item was invoked }
- AMCLASSICON_FormatDisk = 9;
- { The "Empty Trash" menu item was invoked }
- AMCLASSICON_EmptyTrash = 10;
- { The icon is now selected }
- AMCLASSICON_Selected = 11;
- { The icon is now unselected }
- AMCLASSICON_Unselected = 12;
- {
- * The following structures are private. These are just stub
- * structures for code compatibility...
- }
- type
- tAppWindow = record
- aw_PRIVATE : Pointer;
- END;
- pAppWindow = ^tAppWindow;
- tAppIcon = record
- ai_PRIVATE : Pointer;
- END;
- pAppIcon = ^tAppIcon;
- tAppMenuItem = record
- ami_PRIVATE : Pointer;
- END;
- pAppMenuItem = ^tAppMenuItem;
- PAppWindowDropZone = ^tAppWindowDropZone;
- tAppWindowDropZone = record
- awdz_PRIVATE : pointer;
- end;
- PAppMenu = ^tAppMenu;
- tAppMenu = record
- am_PRIVATE : pointer;
- end;
- const
- WBA_Dummy = TAG_USER + $A000;
- { }
- { Tags for use with AddAppIconA() }
- { AppIcon responds to the "Open" menu item (BOOL). }
- WBAPPICONA_SupportsOpen = WBA_Dummy + 1;
- { AppIcon responds to the "Copy" menu item (BOOL). }
- WBAPPICONA_SupportsCopy = WBA_Dummy + 2;
- { AppIcon responds to the "Rename" menu item (BOOL). }
- WBAPPICONA_SupportsRename = WBA_Dummy + 3;
- { AppIcon responds to the "Information" menu item (BOOL). }
- WBAPPICONA_SupportsInformation = WBA_Dummy + 4;
- { AppIcon responds to the "Snapshot" menu item (BOOL). }
- WBAPPICONA_SupportsSnapshot = WBA_Dummy + 5;
- { AppIcon responds to the "UnSnapshot" menu item (BOOL). }
- WBAPPICONA_SupportsUnSnapshot = WBA_Dummy + 6;
- { AppIcon responds to the "LeaveOut" menu item (BOOL). }
- WBAPPICONA_SupportsLeaveOut = WBA_Dummy + 7;
- { AppIcon responds to the "PutAway" menu item (BOOL). }
- WBAPPICONA_SupportsPutAway = WBA_Dummy + 8;
- { AppIcon responds to the "Delete" menu item (BOOL). }
- WBAPPICONA_SupportsDelete = WBA_Dummy + 9;
- { AppIcon responds to the "FormatDisk" menu item (BOOL). }
- WBAPPICONA_SupportsFormatDisk = WBA_Dummy + 10;
- { AppIcon responds to the "EmptyTrash" menu item (BOOL). }
- WBAPPICONA_SupportsEmptyTrash = WBA_Dummy + 11;
- { AppIcon position should be propagated back to original DiskObject (BOOL). }
- WBAPPICONA_PropagatePosition = WBA_Dummy + 12;
- { Callback hook to be invoked when rendering this icon (struct Hook ). }
- WBAPPICONA_RenderHook = WBA_Dummy + 13;
- { AppIcon wants to be notified when its select state changes (BOOL). }
- WBAPPICONA_NotifySelectState = WBA_Dummy + 14;
- {**************************************************************************}
- { Tags for use with AddAppMenuA() }
- { Command key string for this AppMenu (STRPTR). }
- WBAPPMENUA_CommandKeyString = WBA_Dummy + 15;
- { Item to be added should get sub menu items attached to; make room for it,
- then return the key to use later for attaching the items (ULONG ).
- }
- WBAPPMENUA_GetKey = WBA_Dummy + 65;
- { This item should be attached to a sub menu; the key provided refers to
- the sub menu it should be attached to (ULONG).
- }
- WBAPPMENUA_UseKey = WBA_Dummy + 66;
- { Item to be added is in fact a new menu title; make room for it, then
- return the key to use later for attaching the items (ULONG ).
- }
- WBAPPMENUA_GetTitleKey = WBA_Dummy + 77;
- {**************************************************************************}
- { Tags for use with OpenWorkbenchObjectA() }
- { Corresponds to the wa_Lock member of a struct WBArg }
- WBOPENA_ArgLock = WBA_Dummy + 16;
- { Corresponds to the wa_Name member of a struct WBArg }
- WBOPENA_ArgName = WBA_Dummy + 17;
- { When opening a drawer, show all files or only icons?
- This must be one out of DDFLAGS_SHOWICONS,
- or DDFLAGS_SHOWALL; (UBYTE); (V45)
- }
- WBOPENA_Show = WBA_Dummy + 75;
- { When opening a drawer, view the contents by icon, name,
- date, size or type? This must be one out of DDVM_BYICON,
- DDVM_BYNAME, DDVM_BYDATE, DDVM_BYSIZE or DDVM_BYTYPE;
- (UBYTE); (V45)
- }
- WBOPENA_ViewBy = WBA_Dummy + 76;
- {**************************************************************************}
- { Tags for use with WorkbenchControlA() }
- { Check if the named drawer is currently open (LONG ). }
- WBCTRLA_IsOpen = WBA_Dummy + 18;
- { Create a duplicate of the Workbench private search path list (BPTR ). }
- WBCTRLA_DuplicateSearchPath = WBA_Dummy + 19;
- { Free the duplicated search path list (BPTR). }
- WBCTRLA_FreeSearchPath = WBA_Dummy + 20;
- { Get the default stack size for launching programs with (ULONG ). }
- WBCTRLA_GetDefaultStackSize = WBA_Dummy + 21;
- { Set the default stack size for launching programs with (ULONG). }
- WBCTRLA_SetDefaultStackSize = WBA_Dummy + 22;
- { Cause an AppIcon to be redrawn (struct AppIcon ). }
- WBCTRLA_RedrawAppIcon = WBA_Dummy + 23;
- { Get a list of currently running Workbench programs (struct List ). }
- WBCTRLA_GetProgramList = WBA_Dummy + 24;
- { Release the list of currently running Workbench programs (struct List ). }
- WBCTRLA_FreeProgramList = WBA_Dummy + 25;
- { Get a list of currently selected icons (struct List ). }
- WBCTRLA_GetSelectedIconList = WBA_Dummy + 36;
- { Release the list of currently selected icons (struct List ). }
- WBCTRLA_FreeSelectedIconList = WBA_Dummy + 37;
- { Get a list of currently open drawers (struct List ). }
- WBCTRLA_GetOpenDrawerList = WBA_Dummy + 38;
- { Release the list of currently open icons (struct List ). }
- WBCTRLA_FreeOpenDrawerList = WBA_Dummy + 39;
- { Get the list of hidden devices (struct List ). }
- WBCTRLA_GetHiddenDeviceList = WBA_Dummy + 42;
- { Release the list of hidden devices (struct List ). }
- WBCTRLA_FreeHiddenDeviceList = WBA_Dummy + 43;
- { Add the name of a device which Workbench should never try to
- read a disk icon from (STRPTR).
- }
- WBCTRLA_AddHiddenDeviceName = WBA_Dummy + 44;
- { Remove a name from list of hidden devices (STRPTR). }
- WBCTRLA_RemoveHiddenDeviceName = WBA_Dummy + 45;
- { Get the number of seconds that have to pass before typing
- the next character in a drawer window will restart
- with a new file name (ULONG ).
- }
- WBCTRLA_GetTypeRestartTime = WBA_Dummy + 47;
- { Set the number of seconds that have to pass before typing
- the next character in a drawer window will restart
- with a new file name (ULONG).
- }
- WBCTRLA_SetTypeRestartTime = WBA_Dummy + 48;
- { Obtain the hook that will be invoked when Workbench starts
- to copy files and data (struct Hook ); (V45)
- }
- WBCTRLA_GetCopyHook = WBA_Dummy + 69;
- { Install the hook that will be invoked when Workbench starts
- to copy files and data (struct Hook ); (V45)
- }
- WBCTRLA_SetCopyHook = WBA_Dummy + 70;
- { Obtain the hook that will be invoked when Workbench discards
- files and drawers or empties the trashcan (struct Hook );
- (V45).
- }
- WBCTRLA_GetDeleteHook = WBA_Dummy + 71;
- { Install the hook that will be invoked when Workbench discards
- files and drawers or empties the trashcan (struct Hook );
- (V45).
- }
- WBCTRLA_SetDeleteHook = WBA_Dummy + 72;
- { Obtain the hook that will be invoked when Workbench requests
- that the user enters text, such as when a file is to be renamed
- or a new drawer is to be created (struct Hook ); (V45)
- }
- WBCTRLA_GetTextInputHook = WBA_Dummy + 73;
- { Install the hook that will be invoked when Workbench requests
- that the user enters text, such as when a file is to be renamed
- or a new drawer is to be created (struct Hook ); (V45)
- }
- WBCTRLA_SetTextInputHook = WBA_Dummy + 74;
- { Add a hook that will be invoked when Workbench is about
- to shut down (cleanup), and when Workbench has returned
- to operational state (setup) (struct Hook ); (V45)
- }
- WBCTRLA_AddSetupCleanupHook = WBA_Dummy + 78;
- { Remove a hook that has been installed with the
- WBCTRLA_AddSetupCleanupHook tag (struct Hook ); (V45)
- }
- WBCTRLA_RemSetupCleanupHook = WBA_Dummy + 79;
- {**************************************************************************}
- { The message your setup/cleanup hook gets invoked with. }
- type
- PSetupCleanupHookMsg = ^tSetupCleanupHookMsg;
- tSetupCleanupHookMsg = record
- schm_Length : ULONG;
- schm_State : LONG;
- end;
- const
- { Workbench will attempt to shut down now. }
- SCHMSTATE_TryCleanup = 0;
- { Workbench will really shut down now. }
- SCHMSTATE_Cleanup = 1;
- { Workbench is operational again or
- could not be shut down.
- }
- SCHMSTATE_Setup = 2;
- {**************************************************************************}
- { Tags for use with AddAppWindowDropZoneA() }
- { Zone left edge (WORD) }
- WBDZA_Left = WBA_Dummy + 26;
- { Zone left edge, if relative to the right edge of the window (WORD) }
- WBDZA_RelRight = WBA_Dummy + 27;
- { Zone top edge (WORD) }
- WBDZA_Top = WBA_Dummy + 28;
- { Zone top edge, if relative to the bottom edge of the window (WORD) }
- WBDZA_RelBottom = WBA_Dummy + 29;
- { Zone width (WORD) }
- WBDZA_Width = WBA_Dummy + 30;
- { Zone width, if relative to the window width (WORD) }
- WBDZA_RelWidth = WBA_Dummy + 31;
- { Zone height (WORD) }
- WBDZA_Height = WBA_Dummy + 32;
- { Zone height, if relative to the window height (WORD) }
- WBDZA_RelHeight = WBA_Dummy + 33;
- { Zone position and size (struct IBox ). }
- WBDZA_Box = WBA_Dummy + 34;
- { Hook to invoke when the mouse enters or leave a drop zone (struct Hook ). }
- WBDZA_Hook = WBA_Dummy + 35;
- {**************************************************************************}
- { Reserved tags; don't use! }
- WBA_Reserved1 = WBA_Dummy + 40;
- WBA_Reserved2 = WBA_Dummy + 41;
- WBA_Reserved3 = WBA_Dummy + 46;
- WBA_Reserved4 = WBA_Dummy + 49;
- WBA_Reserved5 = WBA_Dummy + 50;
- WBA_Reserved6 = WBA_Dummy + 51;
- WBA_Reserved7 = WBA_Dummy + 52;
- WBA_Reserved8 = WBA_Dummy + 53;
- WBA_Reserved9 = WBA_Dummy + 54;
- WBA_Reserved10 = WBA_Dummy + 55;
- WBA_Reserved11 = WBA_Dummy + 56;
- WBA_Reserved12 = WBA_Dummy + 57;
- WBA_Reserved13 = WBA_Dummy + 58;
- WBA_Reserved14 = WBA_Dummy + 59;
- WBA_Reserved15 = WBA_Dummy + 60;
- WBA_Reserved16 = WBA_Dummy + 61;
- WBA_Reserved17 = WBA_Dummy + 62;
- WBA_Reserved18 = WBA_Dummy + 63;
- WBA_Reserved19 = WBA_Dummy + 64;
- WBA_Reserved20 = WBA_Dummy + 67;
- WBA_Reserved21 = WBA_Dummy + 68;
- {**************************************************************************}
- WBA_LAST_TAG = WBA_Dummy + 79;
- {**************************************************************************}
- { The message your AppIcon rendering hook gets invoked with. }
- type
- PAppIconRenderMsg = ^tAppIconRenderMsg;
- tAppIconRenderMsg = record
- arm_RastPort : PRastPort; { RastPort to render into }
- arm_Icon : PDiskObject; { The icon to be rendered }
- arm_Label : STRPTR; { The icon label txt }
- arm_Tags : PTagItem; { Further tags to be passed on
- * to DrawIconStateA().
- }
- arm_Left : WORD; { \ Rendering origin, not taking the }
- arm_Top : WORD; { / button border into account. }
- arm_Width : WORD; { \ Limit your rendering to }
- arm_Height : WORD; { / this area. }
- arm_State : ULONG; { IDS_SELECTED, IDS_NORMAL, etc. }
- end;
- { The message your drop zone hook gets invoked with. }
- PAppWindowDropZoneMsg = ^tAppWindowDropZoneMsg;
- tAppWindowDropZoneMsg = record
- adzm_RastPort : PRastPort; { RastPort to render into. }
- adzm_DropZoneBox : tIBox; { Limit your rendering to this area. }
- adzm_ID : ULONG; { \ These come from straight }
- adzm_UserData : ULONG; { / from AddAppWindowDropZoneA(). }
- adzm_Action : LONG; { See below for a list of actions. }
- end;
- const
- ADZMACTION_Enter = 0;
- ADZMACTION_Leave = 1;
- {**************************************************************************}
- { The message your icon selection change hook is invoked with. }
- type
- PIconSelectMsg = ^tIconSelectMsg;
- tIconSelectMsg = record
- { Size of this data structure (in bytes). }
- ism_Length : ULONG;
- { Lock on the drawer this object resides in,
- * NULL for Workbench backdrop (devices).
- }
- ism_Drawer : BPTR;
- { Name of the object in question. }
- ism_Name : STRPTR;
- { One of WBDISK, WBDRAWER, WBTOOL, WBPROJECT,
- * WBGARBAGE, WBDEVICE, WBKICK or WBAPPICON.
- }
- ism_Type : UWORD;
- { TRUE if currently selected, FALSE otherwise. }
- ism_Selected : BOOL;
- { Pointer to the list of tag items passed to
- * ChangeWorkbenchSelectionA().
- }
- ism_Tags : PTagItem;
- { Pointer to the window attached to this icon,
- * if the icon is a drawer-like object.
- }
- ism_DrawerWindow : PWindow;
- { Pointer to the window the icon resides in. }
- ism_ParentWindow : PWindow;
- { Position and size of the icon; note that the
- * icon may not entirely reside within the visible
- * bounds of the parent window.
- }
- ism_Left : WORD;
- ism_Top : WORD;
- ism_Width : WORD;
- ism_Height : WORD;
- end;
- { These are the values your hook code can return. }
- const
- { Unselect the icon }
- ISMACTION_Unselect = 0;
- { Select the icon }
- ISMACTION_Select = 1;
- { Do not change the selection state. }
- ISMACTION_Ignore = 2;
- { Do not invoke the hook code again,
- leave the icon as it is.
- }
- ISMACTION_Stop = 3;
- {**************************************************************************}
- { The messages your copy hook is invoked with. }
- type
- PCopyBeginMsg = ^tCopyBeginMsg;
- tCopyBeginMsg = record
- cbm_Length : ULONG; { Size of this data structure in bytes. }
- cbm_Action : LONG; { Will be set to CPACTION_Begin (see below). }
- cbm_SourceDrawer : BPTR; { A lock on the source drawer. }
- cbm_DestinationDrawer : BPTR; { A lock on the destination drawer. }
- end;
- PCopyDataMsg = ^tCopyDataMsg;
- tCopyDataMsg = record
- cdm_Length : ULONG; { Size of this data structure in bytes. }
- cdm_Action : LONG; { Will be set to CPACTION_Copy (see below). }
- cdm_SourceLock : BPTR; { A lock on the parent directory of the
- * source file/drawer.
- }
- cdm_SourceName : STRPTR; { The name of the source file or drawer. }
- cdm_DestinationLock : BPTR; { A lock on the parent directory of the
- * destination file/drawer.
- }
- cdm_DestinationName : STRPTR; { The name of the destination file/drawer.
- * This may or may not match the name of
- * the source file/drawer in case the
- * data is to be copied under a different
- * name. For example, this is the case
- * with the Workbench "Copy" command which
- * creates duplicates of file/drawers by
- * prefixing the duplicate's name with
- * "Copy_XXX_of".
- }
- cdm_DestinationX : LONG; { When the icon corresponding to the
- * destination is written to disk, this
- * is the position (put into its
- * DiskObject->do_CurrentX/DiskObject->do_CurrentY
- * fields) it should be placed at.
- }
- cdm_DestinationY : LONG;
- end;
- PCopyEndMsg = ^tCopyEndMsg;
- tCopyEndMsg = record
- cem_Length : ULONG; { Size of this data structure in bytes. }
- cem_Action : LONG; { Will be set to CPACTION_End (see below). }
- end;
- const
- CPACTION_Begin = 0;
- { This message arrives for each file or
- drawer to be copied.
- }
- CPACTION_Copy = 1;
- { This message arrives when all files/drawers
- have been copied.
- }
- CPACTION_End = 2;
- {**************************************************************************}
- { The messages your delete hook is invoked with. }
- type
- PDeleteBeginMsg = ^tDeleteBeginMsg;
- tDeleteBeginMsg = record
- dbm_Length : ULONG; { Size of this data structure in bytes. }
- dbm_Action : LONG; { Will be set to either DLACTION_BeginDiscard
- * or DLACTION_BeginEmptyTrash (see below).
- }
- end;
- PDeleteDataMsg = ^tDeleteDataMsg;
- tDeleteDataMsg = record
- ddm_Length : ULONG; { Size of this data structure in bytes. }
- ddm_Action : LONG; { Will be set to either DLACTION_DeleteContents
- * or DLACTION_DeleteObject (see below).
- }
- ddm_Lock : BPTR; { A Lock on the parent directory of the object
- * whose contents or which itself should be
- * deleted.
- }
- ddm_Name : STRPTR; { The name of the object whose contents or
- * which itself should be deleted.
- }
- end;
- PDeleteEndMsg = ^tDeleteEndMsg;
- tDeleteEndMsg = record
- dem_Length : ULONG; { Size of this data structure in bytes. }
- dem_Action : LONG; { Will be set to DLACTION_End (see below). }
- end;
- const
- DLACTION_BeginDiscard = 0;
- { This indicates that the following
- delete operations are intended to
- empty the trashcan.
- }
- DLACTION_BeginEmptyTrash = 1;
- { This indicates that the object
- described by lock and name refers
- to a drawer; you should empty its
- contents but DO NOT delete the
- drawer itself!
- }
- DLACTION_DeleteContents = 3;
- { This indicates that the object
- described by lock and name should
- be deleted; this could be a file
- or an empty drawer.
- }
- DLACTION_DeleteObject = 4;
- { This indicates that the
- deletion process is finished.
- }
- DLACTION_End = 5;
- {**************************************************************************}
- { The messages your text input hook is invoked with. }
- type
- PTextInputMsg = ^tTextInputMsg;
- tTextInputMsg = record
- tim_Length : ULONG; { Size of this data structure
- * in bytes.
- }
- tim_Action : LONG; { One of the TIACTION_...
- * values listed below.
- }
- tim_Prompt : STRPTR; { The Workbench suggested
- * result, depending on what
- * kind of input is requested
- * (as indicated by the
- * tim_Action member).
- }
- end;
- const
- { A file or drawer is to be
- * renamed.
- }
- TIACTION_Rename = 0;
- { A volume is to be relabeled. }
- TIACTION_RelabelVolume = 1;
- { A new drawer is to be created. }
- TIACTION_NewDrawer = 2;
- { A program or script is to be
- executed.
- }
- TIACTION_Execute = 3;
- {**************************************************************************}
- { Parameters for the UpdateWorkbench() function. }
- { Object has been deleted. }
- UPDATEWB_ObjectRemoved = 0;
- { Object is new or has changed. }
- UPDATEWB_ObjectAdded = 1;
- WORKBENCHNAME : PAnsiChar = 'workbench.library';
- VAR
- WorkbenchBase : pLibrary = nil;
- FUNCTION AddAppIconA(id : ULONG location 'd0'; userdata : ULONG location 'd1'; text_ : PAnsiChar location 'a0'; msgport : pMsgPort location 'a1'; lock : BPTR location 'a2'; diskobj : pDiskObject location 'a3'; const taglist : pTagItem location 'a4') : pAppIcon; syscall WorkbenchBase 060;
- FUNCTION AddAppMenuItemA(id : ULONG location 'd0'; userdata : ULONG location 'd1'; text_ : PAnsiChar location 'a0'; msgport : pMsgPort location 'a1'; const taglist : pTagItem location 'a2') : pAppMenuItem; syscall WorkbenchBase 072;
- FUNCTION AddAppWindowA(id : ULONG location 'd0'; userdata : ULONG location 'd1'; window : pWindow location 'a0'; msgport : pMsgPort location 'a1'; const taglist : pTagItem location 'a2') : pAppWindow; syscall WorkbenchBase 048;
- FUNCTION RemoveAppIcon(appIcon : pAppIcon location 'a0') : longbool; syscall WorkbenchBase 066;
- FUNCTION RemoveAppMenuItem(appMenuItem : pAppMenuItem location 'a0') : longbool; syscall WorkbenchBase 078;
- FUNCTION RemoveAppWindow(appWindow : pAppWindow location 'a0') : longbool; syscall WorkbenchBase 054;
- PROCEDURE WBInfo(lock : BPTR location 'a0'; name : PAnsiChar location 'a1'; screen : pScreen location 'a2'); syscall WorkbenchBase 090;
- FUNCTION AddAppWindowDropZoneA(aw : pAppWindow location 'a0'; id : longword location 'd0'; userdata : longword location 'd1'; const tags : pTagItem location 'a1') : pAppWindowDropZone; syscall WorkbenchBase 114;
- FUNCTION ChangeWorkbenchSelectionA(name : PAnsiChar location 'a0'; hook : pHook location 'a1'; const tags : pTagItem location 'a2') : longbool; syscall WorkbenchBase 126;
- FUNCTION CloseWorkbenchObjectA(name : PAnsiChar location 'a0'; const tags : pTagItem location 'a1') : longbool; syscall WorkbenchBase 102;
- FUNCTION MakeWorkbenchObjectVisibleA(name : PAnsiChar location 'a0'; const tags : pTagItem location 'a1') : longbool; syscall WorkbenchBase 132;
- FUNCTION OpenWorkbenchObjectA(name : PAnsiChar location 'a0'; const tags : pTagItem location 'a1') : longbool; syscall WorkbenchBase 096;
- FUNCTION RemoveAppWindowDropZone(aw : pAppWindow location 'a0'; dropZone : pAppWindowDropZone location 'a1') : longbool; syscall WorkbenchBase 120;
- FUNCTION WorkbenchControlA(name : PAnsiChar location 'a0'; const tags : pTagItem location 'a1') : longbool; syscall WorkbenchBase 108;
- function AddAppIcon(id : ULONG; userdata : ULONG; text_ : PAnsiChar; msgport : pMsgPort; lock: BPTR; diskobj : pDiskObject; const taglist : array of PtrUInt) : pAppIcon;
- function AddAppMenuItem(id : ULONG; userdata : ULONG; text_ : PAnsiChar; msgport : pMsgPort; Const argv : array of PtrUInt) : pAppMenuItem;
- function AddAppWindow(id : ULONG; userdata : ULONG; window : pWindow; msgport : pMsgPort; Const argv : array of PtrUInt) : pAppWindow;
- { overlays }
- FUNCTION AddAppIconA(id : ULONG; userdata : ULONG; const text_ : RawByteString; msgport : pMsgPort; lock : BPTR; diskobj : pDiskObject;const taglist : pTagItem) : pAppIcon;
- FUNCTION AddAppMenuItemA(id : ULONG; userdata : ULONG; const text_ : RawByteString; msgport : pMsgPort;const taglist : pTagItem) : pAppMenuItem;
- PROCEDURE WBInfo(lock : BPTR; const name : RawByteString; screen : pScreen);
- FUNCTION ChangeWorkbenchSelectionA(const name : RawByteString; hook : pHook; const tags : pTagItem) : BOOLEAN;
- FUNCTION CloseWorkbenchObjectA(const name : RawByteString; const tags : pTagItem) : BOOLEAN;
- FUNCTION MakeWorkbenchObjectVisibleA(const name : RawByteString;const tags : pTagItem) : BOOLEAN;
- FUNCTION OpenWorkbenchObjectA(const name : RawByteString;const tags : pTagItem) : BOOLEAN;
- FUNCTION WorkbenchControlA(const name : RawByteString;const tags : pTagItem) : BOOLEAN;
- IMPLEMENTATION
- function AddAppIcon(id : ULONG; userdata : ULONG; text_ : PAnsiChar; msgport : pMsgPort; lock: BPTR; diskobj : pDiskObject; const taglist : array of PtrUInt) : pAppIcon;
- begin
- AddAppIcon := AddAppIconA(id, userdata, text_, msgport, lock, diskobj, @taglist);
- end;
- function AddAppMenuItem(id : ULONG; userdata : ULONG; text_ : PAnsiChar; msgport : pMsgPort; Const argv : array of PtrUInt) : pAppMenuItem;
- begin
- AddAppMenuItem := AddAppMenuItemA(id,userdata,text_,msgport,@argv);
- end;
- function AddAppWindow(id : ULONG; userdata : ULONG; window : pWindow; msgport : pMsgPort; Const argv : array of PtrUInt) : pAppWindow;
- begin
- AddAppWindow := AddAppWindowA(id,userdata,window,msgport,@argv);
- end;
- FUNCTION AddAppIconA(id : ULONG; userdata : ULONG; const text_ : RawByteString; msgport : pMsgPort; lock : BPTR; diskobj : pDiskObject;const taglist : pTagItem) : pAppIcon;
- begin
- AddAppIconA := AddAppIconA(id,userdata,PAnsiChar(text_),msgport,lock,diskobj,taglist);
- end;
- FUNCTION AddAppMenuItemA(id : ULONG; userdata : ULONG; const text_ : RawByteString; msgport : pMsgPort;const taglist : pTagItem) : pAppMenuItem;
- begin
- AddAppMenuItemA := AddAppMenuItemA(id,userdata,PAnsiChar(text_),msgport,taglist);
- end;
- PROCEDURE WBInfo(lock : BPTR; const name : RawByteString; screen : pScreen);
- begin
- WBInfo(lock,PAnsiChar(name),screen);
- end;
- FUNCTION ChangeWorkbenchSelectionA(const name : RawByteString; hook : pHook;const tags : pTagItem) : BOOLEAN;
- begin
- ChangeWorkbenchSelectionA := ChangeWorkbenchSelectionA(PAnsiChar(name),hook,tags);
- end;
- FUNCTION CloseWorkbenchObjectA(const name : RawByteString;const tags : pTagItem) : BOOLEAN;
- begin
- CloseWorkbenchObjectA := CloseWorkbenchObjectA(PAnsiChar(name),tags);
- end;
- FUNCTION MakeWorkbenchObjectVisibleA(const name : RawByteString;const tags : pTagItem) : BOOLEAN;
- begin
- MakeWorkbenchObjectVisibleA := MakeWorkbenchObjectVisibleA(PAnsiChar(name),tags);
- end;
- FUNCTION OpenWorkbenchObjectA(const name : RawByteString;const tags : pTagItem) : BOOLEAN;
- begin
- OpenWorkbenchObjectA := OpenWorkbenchObjectA(PAnsiChar(name),tags);
- end;
- FUNCTION WorkbenchControlA(const name : RawByteString;const tags : pTagItem) : BOOLEAN;
- begin
- WorkbenchControlA := WorkbenchControlA(PAnsiChar(name),tags);
- end;
- const
- { Change VERSION and LIBVERSION to proper values }
- VERSION : String[2] = '0';
- LIBVERSION : longword = 0;
- initialization
- WorkbenchBase := OpenLibrary(WORKBENCHNAME,LIBVERSION);
- finalization
- if Assigned(WorkbenchBase) then
- CloseLibrary(WorkbenchBase);
- END. (* UNIT WB *)
|