home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / FileMover / HF-OM1.DMS / in.adf / OpusSDK.lha / SDK / include / dopus / hooks.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-11  |  9.8 KB  |  405 lines

  1. #ifndef _DOPUS_HOOK
  2. #define _DOPUS_HOOK
  3.  
  4. /*****************************************************************************
  5.  
  6.  Directory Opus Direct Hooks
  7.  
  8.  *****************************************************************************/
  9.  
  10. // Use this command to get the address of the hooks from the Opus process.
  11. // Send it to the main Opus IPC, and supply the address of a DOpusCallbackInfo
  12. // structure in the data field of the message.
  13.  
  14. #define HOOKCMD_GET_CALLBACKS    0x40100
  15.  
  16. #define DOPUS_HOOK_COUNT    46
  17.  
  18. // This structure will grow in the future, correct use of the dc_Count field
  19. // ensures innocent memory won't get overwritten.
  20.  
  21. typedef struct
  22. {
  23.     // Set to the number of hooks you want
  24.     USHORT        dc_Count;
  25.  
  26.     // Create a file entry
  27.     APTR __asm    (*dc_CreateFileEntry)
  28.                 (register __a0 ULONG lister,
  29.                  register __a1 struct FileInfoBlock *fib,
  30.                  register __d0 BPTR lock);
  31.  
  32.     // Change parameters of a file entry
  33.     VOID __asm    (*dc_FileSet)
  34.                 (register __a0 ULONG lister,
  35.                  register __a1 APTR entry,
  36.                  register __a2 struct TagItem *tags);
  37.  
  38.     // Sort list of entries into a lister
  39.     VOID __asm    (*dc_SortFileList)
  40.                 (register __a0 ULONG lister,
  41.                  register __a1 struct List *list,
  42.                  register __d0 long file_count,
  43.                  register __d1 long dir_count);
  44.  
  45.     // Add single entry to a lister
  46.     APTR __asm    (*dc_AddFileEntry)
  47.                 (register __a0 ULONG lister,
  48.                  register __a1 APTR entry,
  49.                  register __d0 BOOL sort);
  50.  
  51.     // Resort a lister
  52.     VOID __asm    (*dc_ResortLister)
  53.                 (register __a0 ULONG lister,
  54.                  register __a1 struct ListFormat *format);
  55.  
  56.     // Refresh a lister
  57.     VOID __asm    (*dc_RefreshLister)
  58.                 (register __a0 ULONG lister,
  59.                  register __d0 ULONG flags);
  60.  
  61.     // Lock lister file list
  62.     VOID __asm    (*dc_LockFileList)
  63.                 (register __a0 ULONG lister,
  64.                  register __d0 BOOL exclusive);
  65.  
  66.     // Unlock file list
  67.     VOID __asm    (*dc_UnlockFileList)
  68.                 (register __a0 ULONG lister);
  69.  
  70.     // Find entry in a lister by name
  71.     APTR __asm    (*dc_FindFileEntry)
  72.                 (register __a0 ULONG lister,
  73.                  register __a1 char *name);
  74.  
  75.     // Change comment of an entry
  76.     BOOL __asm    (*dc_SetFileComment)
  77.                 (register __a0 ULONG lister,
  78.                  register __a1 char *name,
  79.                  register __a2 char *comment);
  80.  
  81.     // Remove file entry from a lister
  82.     VOID __asm    (*dc_RemoveFileEntry)
  83.                 (register __a0 ULONG lister,
  84.                  register __a1 APTR entry);
  85.  
  86.     // Query file entry
  87.     BOOL __asm    (*dc_FileQuery)
  88.                 (register __a0 ULONG lister,
  89.                  register __a1 APTR entry,
  90.                  register __a2 struct TagItem *tags);
  91.  
  92.     // Show help
  93.     void __asm    (*dc_ShowHelp)
  94.                 (register __a0 char *file_name,
  95.                  register __a1 char *node_name);
  96.  
  97.  
  98.     // Convert entry pointer from one type to another
  99.     APTR __asm    (*dc_ConvertEntry)
  100.                 (register __a0 APTR entry);
  101.  
  102.  
  103.     // Get lister pointer from a path handle
  104.     ULONG __asm    (*dc_GetLister)
  105.                 (register __a0 APTR path);
  106.  
  107.  
  108.     // Get first source lister
  109.     APTR __asm     (*dc_GetSource)
  110.                 (register __a0 APTR handle,
  111.                  register __a1 char *path);
  112.  
  113.  
  114.     // Get next source lister
  115.     APTR __asm    (*dc_NextSource)
  116.                 (register __a0 APTR handle,
  117.                  register __a1 char *path);
  118.  
  119.  
  120.     // Unlock source listers
  121.     void __asm    (*dc_UnlockSource)
  122.                 (register __a0 APTR handle);
  123.  
  124.  
  125.     // Get next destination lister
  126.     APTR __asm    (*dc_GetDest)
  127.                 (register __a0 APTR handle,
  128.                  register __a1 char *path);
  129.  
  130.  
  131.     // End use of source lister
  132.     void __asm    (*dc_EndSource)
  133.                 (register __a0 APTR handle,
  134.                  register __d0 long complete);
  135.  
  136.  
  137.     // End use of destination lister
  138.     void __asm    (*dc_EndDest)
  139.                 (register __a0 APTR handle,
  140.                  register __d0 long complete);
  141.  
  142.  
  143.     // Get next selected entry
  144.     APTR __asm    (*dc_GetEntry)
  145.                 (register __a0 APTR handle);
  146.  
  147.  
  148.     // Examine an entry
  149.     ULONG __asm    (*dc_ExamineEntry)
  150.                 (register __a0 APTR entry,
  151.                  register __d0 long type);
  152.  
  153.  
  154.     // End use of an entry
  155.     void __asm    (*dc_EndEntry)
  156.                 (register __a0 APTR handle,
  157.                  register __a1 APTR entry,
  158.                  register __d0 BOOL deselect);
  159.  
  160.  
  161.     // Mark an entry for removal
  162.     void __asm    (*dc_RemoveEntry)
  163.                 (register __a0 APTR entry);
  164.  
  165.  
  166.     // Return count of selected entries
  167.     long __asm    (*dc_EntryCount)
  168.                 (register __a0 APTR handle);
  169.  
  170.  
  171.     // Mark an entry to be reloaded
  172.     void __asm    (*dc_ReloadEntry)
  173.                 (register __a0 APTR handle,
  174.                  register __a1 APTR entry);
  175.  
  176.  
  177.     // Add a file to a lister
  178.     void __asm    (*dc_AddFile)
  179.                 (register __a0 APTR handle,
  180.                  register __a1 char *path,
  181.                  register __a2 struct FileInfoBlock *fib,
  182.                  register __a3 ULONG lister);
  183.  
  184.  
  185.     // Delete a file from a lister
  186.     void __asm    (*dc_DelFile)
  187.                 (register __a0 APTR handle,
  188.                  register __a1 char *path,
  189.                  register __a2 char *name,
  190.                  register __a3 ULONG lister);
  191.  
  192.     // Load/reload a file in a lister
  193.     void __asm    (*dc_LoadFile)
  194.                 (register __a0 APTR handle,
  195.                  register __a1 char *path,
  196.                  register __a2 char *name,
  197.                  register __d0 long flags,
  198.                  register __d1 BOOL reload);
  199.  
  200.  
  201.     // Perform changes on a lister
  202.     void __asm    (*dc_DoChanges)
  203.                 (register __a0 APTR handle);
  204.  
  205.  
  206.     // Check for user abort
  207.     BOOL __asm    (*dc_CheckAbort)
  208.                 (register __a0 APTR handle);
  209.  
  210.  
  211.     // Get window pointer from a path handle
  212.     struct Window *__asm    (*dc_GetWindow)
  213.                 (register __a0 APTR path);
  214.  
  215.  
  216.     // Get Opus ARexx port name
  217.     struct MsgPort *__asm    (*dc_GetPort)
  218.                 (register __a0 char *ame);
  219.  
  220.  
  221.     // Get Opus public screen name
  222.     struct Screen *__asm    (*dc_GetScreen)
  223.                 (register __a0 char *name);
  224.  
  225.  
  226.     // Get information about the Opus screen
  227.     DOpusScreenData *__asm    (*dc_GetScreenData)(void);
  228.  
  229.  
  230.     // Free screen data structure            
  231.     void __asm    (*dc_FreeScreenData)(void);
  232.             
  233.  
  234.     // Open progress indicator in a lister
  235.     void __asm    (*dc_OpenProgress)
  236.                 (register __a0 APTR path,
  237.                  register __a1 char *operation,
  238.                  register __d0 long total);
  239.  
  240.  
  241.     // Update progress indicator
  242.     void __asm    (*dc_UpdateProgress)
  243.                 (register __a0 APTR path,
  244.                  register __a1 char *name,
  245.                  register __d0 long count);
  246.  
  247.  
  248.     // Close progress indicator
  249.     void __asm    (*dc_CloseProgress)
  250.                 (register __a0 APTR path);
  251.  
  252.  
  253.     // Show 'File exists - Replace?' requester
  254.     long __asm    (*dc_ReplaceReq)
  255.                 (register __a0 struct Window *window,
  256.                  register __a1 struct Screen *screen,
  257.                  register __a2 IPCData *ipc,
  258.                  register __a3 struct FileInfoBlock *file1,
  259.                  register __a4 struct FileInfoBlock *file2,
  260.                  register __d0 long flags);
  261.  
  262.  
  263.     // Some private functions
  264.     void __asm    (*dc_Private1)(void);
  265.     void __asm    (*dc_Private2)(void);
  266.  
  267.  
  268.     // Send an ARexx command direct to Opus
  269.     ULONG __asm    (*dc_SendCommand)
  270.                 (register __a0 APTR handle,
  271.                  register __a1 char *command,
  272.                  register __a2 char **result,
  273.                  register __d0 ULONG flags);
  274.  
  275.  
  276.     // Make DOpus check if the desktop needs updating
  277.     void __asm    (*dc_CheckDesktop)
  278.                 (register __a0 char *path);
  279.  
  280.  
  281.     // Get desktop path
  282.     short __asm    (*dc_GetDesktop)
  283.                 (register __a0 char *buffer);
  284. } DOpusCallbackInfo;
  285.  
  286.  
  287. // Values for dc_FileSet/dc_FileQuery
  288.  
  289. #define HFFS_NAME        ( TAG_USER + 0x1 )    // char *         - Entry name
  290. #define HFFS_SIZE        ( TAG_USER + 0x2 )    // ULONG         - Entry size
  291. #define HFFS_PROTECTION        ( TAG_USER + 0x3 )    // ULONG         - Protection flags
  292. #define HFFS_DATE        ( TAG_USER + 0x4 )    // struct Datestamp *    - Entry date
  293. #define HFFS_COMMENT        ( TAG_USER + 0x5 )    // char *        - Comment
  294. #define HFFS_SELECTED        ( TAG_USER + 0x6 )    // BOOL            - Selected state
  295. #define HFFS_LINK        ( TAG_USER + 0x7 )    // BOOL            - Set if a link
  296. #define HFFS_COLOUR        ( TAG_USER + 0x8 )    // ULONG        - 1 = device, 2 = assign
  297. #define HFFS_USERDATA        ( TAG_USER + 0x9 )    // ULONG        - Userdata
  298. #define HFFS_FILETYPE        ( TAG_USER + 0xa )    // char *        - Filetype description
  299. #define HFFS_DISPLAY        ( TAG_USER + 0xb )    // char *        - Custom display string
  300. #define HFFS_VERSION        ( TAG_USER + 0xc )    // VersionInfo *    - Version information
  301. #define HFFS_MENU        ( TAG_USER + 0xd )    // struct List *    - Custom menus for entry
  302. #define HFFS_ICON        ( TAG_USER + 0xe )    // struct DiskObject *    - not implemented
  303.  
  304.  
  305.  
  306. // Holds version information (used by HFFS_VERSION)
  307. typedef struct _VersionInfo {
  308.     UWORD        vi_Version;        // Major version #
  309.     UWORD        vi_Revision;        // Minor revision #
  310.     long        vi_Days;        // Days of date
  311.     ULONG        vi_Flags;        // Flags
  312.     char        vi_Char;        // Version character
  313.     char        vi_String[1];        // Version string
  314. } VersionInfo;
  315.  
  316.  
  317.  
  318. // Flags for dc_RefreshLister()
  319. #define HOOKREFRESH_DATE    (1<<0)
  320. #define HOOKREFRESH_FULL    (1<<1)
  321.  
  322.  
  323.  
  324. // Type value for dc_ExamineEntry()
  325. enum
  326. {
  327.     EE_NAME,        // Get pointer to name (READ ONLY!)
  328.     EE_TYPE,        // Get type (<0 = file, >0 = dir)
  329. };
  330.  
  331.  
  332. // Define this if you want to use dc_ResortLister
  333. #ifdef    DOPUSHOOK_INCLUDE_FORMAT
  334.  
  335.  
  336.  
  337. // Sort format
  338. struct SortFormat {
  339.     BYTE    sf_Sort;            // Sort method
  340.     BYTE    sf_SortFlags;            // Sort flags
  341.     BYTE    sf_Separation;            // File separation
  342. };
  343.  
  344. #define SORT_REVERSE            (1<<0)    // Sort in reverse order
  345.  
  346. // List format
  347. struct ListFormat {
  348.  
  349.     // Colour fields, not used at present
  350.     UBYTE            lf_FilesUnsel[2];    // Unselected files
  351.     UBYTE            lf_FilesSel[2];        // Selected files
  352.     UBYTE            lf_DirsUnsel[2];    // Unselected directories
  353.     UBYTE            lf_DirsSel[2];        // Selected directories
  354.  
  355.     // Sort information
  356.     struct SortFormat    lf_Sort;        // Sort method
  357.     BYTE            lf_DisplayPos[16];    // Item display position
  358.     BYTE            lf_DisplayLen[15];    // Display length (not used)
  359.  
  360.     UBYTE            lf_Flags;        // See LFORMATF_xxx below
  361.  
  362.     // Not used
  363.     BYTE            lf_ShowFree;        // Show free space type
  364.  
  365.     // You must call ParsePattern() yourself
  366.     char            lf_ShowPattern[40];    // Show pattern
  367.     char            lf_HidePattern[40];    // Hide pattern
  368.     char            lf_ShowPatternP[40];    // Show pattern parsed
  369.     char            lf_HidePatternP[40];    // Hide pattern parsed
  370. };
  371.  
  372. #define LFORMATF_REJECT_ICONS        (1<<0)    // Reject icons
  373. #define LFORMATF_HIDDEN_BIT        (1<<1)    // Respect the H bit
  374. #define LFORMATF_ICON_VIEW        (1<<2)    // Default to icon view
  375. #define LFORMATF_SHOW_ALL        (1<<3)    // Show all
  376.  
  377. // Used for the sf_Sort and lf_DisplayPos fields
  378. enum
  379. {
  380.     DISPLAY_NAME,
  381.     DISPLAY_SIZE,
  382.     DISPLAY_PROTECT,
  383.     DISPLAY_DATE,
  384.     DISPLAY_COMMENT,
  385.     DISPLAY_FILETYPE,
  386.     DISPLAY_OWNER,
  387.     DISPLAY_GROUP,
  388.     DISPLAY_NETPROT,
  389.     DISPLAY_VERSION,
  390.  
  391.     DISPLAY_LAST
  392. };
  393.  
  394. // Used for the sf_Separation field
  395. enum
  396. {
  397.     SEPARATE_MIX,
  398.     SEPARATE_DIRSFIRST,
  399.     SEPARATE_FILESFIRST,
  400. };
  401.  
  402. #endif
  403.  
  404. #endif
  405.