home *** CD-ROM | disk | FTP | other *** search
/ DOpus Plus / DOpus Plus.iso / SDK / include / dopus / hooks.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-26  |  11.3 KB  |  471 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    52
  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.     struct 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.     // Get pointer to Opus internal things
  264.     APTR __asm    (*dc_GetPointer)
  265.                 (register __a0 struct GetPointerPkt *);
  266.     void __asm    (*dc_FreePointer)
  267.                 (register __a0 struct GetPointerPkt *);
  268.  
  269.  
  270.     // Send an ARexx command direct to Opus
  271.     ULONG __asm    (*dc_SendCommand)
  272.                 (register __a0 APTR handle,
  273.                  register __a1 char *command,
  274.                  register __a2 char **result,
  275.                  register __d0 ULONG flags);
  276.  
  277.  
  278.     // Make DOpus check if the desktop needs updating
  279.     void __asm    (*dc_CheckDesktop)
  280.                 (register __a0 char *path);
  281.  
  282.  
  283.     // Get desktop path
  284.     short __asm    (*dc_GetDesktop)
  285.                 (register __a0 char *buffer);
  286.  
  287.     // Run script
  288.     short __asm    (*dc_Script)
  289.                 (register __a0 char *name,
  290.                  register __a1 char *data);
  291.  
  292.     // Popup desktop popup
  293.     short __asm    (*dc_DesktopPopup)
  294.                 (register __a0 ULONG flags);
  295.  
  296.     // Reset file entries
  297.     void __asm    (*dc_FirstEntry)
  298.                 (register __a0 APTR handle);
  299.  
  300.     // Send rexx command direct to DOpus
  301.     long __asm    (*dc_RexxCommand)
  302.                 (register __a0 char *command,
  303.                  register __a1 char *result,
  304.                  register __d0 long length,
  305.                  register __a2 struct MsgPort *replyport,
  306.                  register __d1 ULONG flags);
  307.  
  308.     // Show file requester
  309.     long __asm    (*dc_FileRequest)
  310.                 (register __a0 struct Window *parent,
  311.                  register __a1 char *title,
  312.                  register __a2 char *initial_path,
  313.                  register __a3 char *pathname,
  314.                  register __d0 ULONG flags);
  315.  
  316.     // Get themes path
  317.     void __asm    (*dc_GetThemes)
  318.                 (register __a0 char *buffer);
  319.  
  320. } DOpusCallbackInfo;
  321.  
  322.  
  323. // Values for dc_FileSet/dc_FileQuery
  324.  
  325. #define HFFS_NAME        ( TAG_USER + 0x1 )    // char *         - Entry name
  326. #define HFFS_SIZE        ( TAG_USER + 0x2 )    // ULONG         - Entry size
  327. #define HFFS_PROTECTION        ( TAG_USER + 0x3 )    // ULONG         - Protection flags
  328. #define HFFS_DATE        ( TAG_USER + 0x4 )    // struct Datestamp *    - Entry date
  329. #define HFFS_COMMENT        ( TAG_USER + 0x5 )    // char *        - Comment
  330. #define HFFS_SELECTED        ( TAG_USER + 0x6 )    // BOOL            - Selected state
  331. #define HFFS_LINK        ( TAG_USER + 0x7 )    // BOOL            - Set if a link
  332. #define HFFS_COLOUR        ( TAG_USER + 0x8 )    // ULONG        - 1 = device, 2 = assign
  333. #define HFFS_USERDATA        ( TAG_USER + 0x9 )    // ULONG        - Userdata
  334. #define HFFS_FILETYPE        ( TAG_USER + 0xa )    // char *        - Filetype description
  335. #define HFFS_DISPLAY        ( TAG_USER + 0xb )    // char *        - Custom display string
  336. #define HFFS_VERSION        ( TAG_USER + 0xc )    // VersionInfo *    - Version information
  337. #define HFFS_MENU        ( TAG_USER + 0xd )    // struct List *    - Custom menus for entry
  338. #define HFFS_ICON        ( TAG_USER + 0xe )    // struct DiskObject *    - not implemented
  339.  
  340.  
  341.  
  342. // Holds version information (used by HFFS_VERSION)
  343. typedef struct _VersionInfo {
  344.     UWORD        vi_Version;        // Major version #
  345.     UWORD        vi_Revision;        // Minor revision #
  346.     long        vi_Days;        // Days of date
  347.     ULONG        vi_Flags;        // Flags
  348.     char        vi_Char;        // Version character
  349.     char        vi_String[1];        // Version string
  350. } VersionInfo;
  351.  
  352.  
  353.  
  354. // Flags for dc_RefreshLister()
  355. #define HOOKREFRESH_DATE    (1<<0)
  356. #define HOOKREFRESH_FULL    (1<<1)
  357.  
  358.  
  359.  
  360. // Type value for dc_ExamineEntry()
  361. enum
  362. {
  363.     EE_NAME,        // Get pointer to name (READ ONLY!)
  364.     EE_TYPE,        // Get type (<0 = file, >0 = dir)
  365. };
  366.  
  367.  
  368. // Flags for dc_ReplaceReq()
  369. #define REPREQF_NOVERSION    (1<<16)        // No 'version' button
  370.  
  371.  
  372. // Define this if you want to use dc_ResortLister
  373. #ifdef    DOPUSHOOK_INCLUDE_FORMAT
  374.  
  375.  
  376.  
  377. // Sort format
  378. struct SortFormat {
  379.     BYTE    sf_Sort;            // Sort method
  380.     BYTE    sf_SortFlags;            // Sort flags
  381.     BYTE    sf_Separation;            // File separation
  382. };
  383.  
  384. #define SORT_REVERSE            (1<<0)    // Sort in reverse order
  385.  
  386. // List format
  387. struct ListFormat {
  388.  
  389.     // Colour fields, not used at present
  390.     UBYTE            lf_FilesUnsel[2];    // Unselected files
  391.     UBYTE            lf_FilesSel[2];        // Selected files
  392.     UBYTE            lf_DirsUnsel[2];    // Unselected directories
  393.     UBYTE            lf_DirsSel[2];        // Selected directories
  394.  
  395.     // Sort information
  396.     struct SortFormat    lf_Sort;        // Sort method
  397.     BYTE            lf_DisplayPos[16];    // Item display position
  398.     BYTE            lf_DisplayLen[15];    // Display length (not used)
  399.  
  400.     UBYTE            lf_Flags;        // See LFORMATF_xxx below
  401.  
  402.     // Not used
  403.     BYTE            lf_ShowFree;        // Show free space type
  404.  
  405.     // You must call ParsePattern() yourself
  406.     char            lf_ShowPattern[40];    // Show pattern
  407.     char            lf_HidePattern[40];    // Hide pattern
  408.     char            lf_ShowPatternP[40];    // Show pattern parsed
  409.     char            lf_HidePatternP[40];    // Hide pattern parsed
  410. };
  411.  
  412. #define LFORMATF_REJECT_ICONS        (1<<0)    // Reject icons
  413. #define LFORMATF_HIDDEN_BIT        (1<<1)    // Respect the H bit
  414. #define LFORMATF_ICON_VIEW        (1<<2)    // Default to icon view
  415. #define LFORMATF_SHOW_ALL        (1<<3)    // Show all
  416.  
  417. // Used for the sf_Sort and lf_DisplayPos fields
  418. enum
  419. {
  420.     DISPLAY_NAME,
  421.     DISPLAY_SIZE,
  422.     DISPLAY_PROTECT,
  423.     DISPLAY_DATE,
  424.     DISPLAY_COMMENT,
  425.     DISPLAY_FILETYPE,
  426.     DISPLAY_OWNER,
  427.     DISPLAY_GROUP,
  428.     DISPLAY_NETPROT,
  429.     DISPLAY_VERSION,
  430.  
  431.     DISPLAY_LAST
  432. };
  433.  
  434. // Used for the sf_Separation field
  435. enum
  436. {
  437.     SEPARATE_MIX,
  438.     SEPARATE_DIRSFIRST,
  439.     SEPARATE_FILESFIRST,
  440. };
  441.  
  442. #endif
  443.  
  444.  
  445. // Used for the dc_GetPointer/dc_FreePointer hooks
  446. struct GetPointerPkt
  447. {
  448.     ULONG        gpp_Type;
  449.     APTR        gpp_Ptr;
  450.     ULONG        gpp_Flags;
  451. };
  452.  
  453. #define GETPTR_COMMANDS        4    // Get internal command list
  454.  
  455. #ifndef DEF_DOPUSCOMMANDLIST
  456. #define DEF_DOPUSCOMMANDLIST
  457.  
  458. struct DOpusCommandList
  459. {
  460.     struct Node    dcl_Node;        // Command name in ln_Name
  461.     ULONG        dcl_Flags;        // Function flags
  462.     char        *dcl_Description;    // Description string
  463.     char        *dcl_Template;        // Command template
  464.     char        *dcl_Module;        // Module command resides in
  465.     char        *dcl_Help;        // Help file for command
  466. };
  467.  
  468. #endif
  469.  
  470. #endif
  471.