home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / util / wb / forceicon / source / forceicon.h < prev    next >
Text File  |  1994-08-19  |  15KB  |  376 lines

  1. /*
  2. Auto:        smake ForceIcon
  3. */
  4.  
  5.  
  6. /* $Revision Header built automatically *************** (do not edit) ************
  7. **
  8. ** © Copyright by GuntherSoft
  9. **
  10. ** File             : SnakeSYS:CPrgs/Utils/ForceIcon/ForceIcon.h
  11. ** Created on       : Wednesday, 20.10.93 17:19:27
  12. ** Created by       : Kai Iske
  13. ** Current revision : V1.6
  14. **
  15. **
  16. ** Purpose
  17. ** -------
  18. **   - ForceIcon Header file
  19. **
  20. ** Revision V1.6
  21. ** --------------
  22. ** created on Tuesday, 31.05.94 00:36:05  by  Kai Iske.   LogMessage :
  23. **  -*-  changed on Freitag, 19.08.94 00:59:59  by  Kai Iske.   LogMessage :
  24. **   - Using ForceIcon you may even "SnapShot" Disk icons now.
  25. **     Use SnapShot and then select SAVE from the Prefs program
  26. **  -*-  changed on Donnerstag, 18.08.94 19:31:04  by  Kai Iske.   LogMessage :
  27. **   - No more quit requesters will be shown
  28. **     (Requested by : Bernhard Moellemann)
  29. **  -*-  changed on Donnerstag, 18.08.94 19:12:10  by  Kai Iske.   LogMessage :
  30. **   - You may now even enter relative coordinates (relative to
  31. **     Workbench Screen`s width/height) for the icon`s position.
  32. **     This is accomplished through negative values for
  33. **     IconX/IconY
  34. **     (Requested by : Bernhard Moellemann)
  35. **  -*-  changed on Donnerstag, 18.08.94 18:46:52  by  Kai Iske.   LogMessage :
  36. **   - IconPosition window is smaller now
  37. **     (Requested by : Bernhard Moellemann)
  38. **  -*-  created on Tuesday, 31.05.94 00:36:05  by  Kai Iske.   LogMessage :
  39. **   - Sort routine could create enforcer hits!
  40. **
  41. ** Revision V1.5
  42. ** --------------
  43. ** created on Wednesday, 13.04.94 15:15:29  by  Kai Iske.   LogMessage :
  44. **  -*-  changed on Tuesday, 24.05.94 15:02:04  by  Kai Iske.   LogMessage :
  45. **   - Width/Height for Drawer window were handled the
  46. **     wrong way. (Swapped)
  47. **     (Reported by : Juergen Zeschky)
  48. **  -*-  changed on Tuesday, 24.05.94 14:59:44  by  Kai Iske.   LogMessage :
  49. **   - The Drawer window wasn`t updated, when one changed the
  50. **     Integer gadgets
  51. **  -*-  changed on Tuesday, 24.05.94 14:58:44  by  Kai Iske.   LogMessage :
  52. **   - When opening the Position window, it`s position was always
  53. **     set to the position which was specified when the EditEntry
  54. **     window was opened, thus no intermediate changes were
  55. **     reflected. Same applied to the Drawer window
  56. **     (Reported by : Michael 'Mick' Hohmann)
  57. **  -*-  changed on Wednesday, 13.04.94 15:25:11  by  Kai Iske.   LogMessage :
  58. **   - Added note about AmiCDROM 1.9 to the docs
  59. **     (Suggested by : Manuel Fischer)
  60. **  -*-  changed on Wednesday, 13.04.94 15:21:25  by  Kai Iske.   LogMessage :
  61. **   - Added note to docs about disks not containing a Disk.info
  62. **     file. READ THIS!
  63. **  -*-  created on Wednesday, 13.04.94 15:15:29  by  Kai Iske.   LogMessage :
  64. **   - Position window wasn`t moved, when user changed the
  65. **     contents of the integer gadgets (IconX/IconY)
  66. **
  67. ** Revision V1.4
  68. ** --------------
  69. ** created on Saturday, 19.02.94 01:27:31  by  Kai Iske.   LogMessage :
  70. **  -*-  changed on Thursday, 24.03.94 16:43:23  by  Kai Iske.   LogMessage :
  71. **   - EditEntry window`s cycle gadgets (IconPos, UseIcon etc..)
  72. **     are volume type senstive now, ie Ignore,Use,Inherit will be
  73. **     available when Type is set to "Volume",  while Ignore and
  74. **     Use are available when editing a device.
  75. **     (Suggested by : Christopher A. Wichura)
  76. **  -*-  changed on Wednesday, 23.03.94 12:49:17  by  Kai Iske.   LogMessage :
  77. **   - Inheritance of device settings is individually controlled
  78. **     for every entry through a cycle gadget, so that you may
  79. **     tell which items to inherit and which to ignore, or use.
  80. **     (Requested by : Christopher A. Wichura)
  81. **  -*-  changed on Tuesday, 22.03.94 23:19:46  by  Kai Iske.   LogMessage :
  82. **   - You may now force Window size/position and flags
  83. **     (display flags)
  84. **     (Requested by : Christopher A. Wichura)
  85. **  -*-  changed on Tuesday, 22.03.94 18:32:58  by  Kai Iske.   LogMessage :
  86. **   - The ListViews will show volumes in white color now, so
  87. **     that you may distinguish whether an entry is a Volume or a
  88. **     Device
  89. **  -*-  changed on Saturday, 19.03.94 17:58:56  by  Kai Iske.   LogMessage :
  90. **   - Diskobject for Iconify Gadget will obtained from the
  91. **     program`s icon
  92. **  -*-  changed on Saturday, 19.03.94 17:52:54  by  Kai Iske.   LogMessage :
  93. **   - Added online-help support
  94. **  -*-  changed on Saturday, 19.03.94 17:17:15  by  Kai Iske.   LogMessage :
  95. **   - Made behaviour of obtaining settings from a device entry
  96. **     for a volume entry switchable from ToolTypes/commandline
  97. **     options.
  98. **  -*-  changed on Saturday, 19.03.94 16:24:58  by  Kai Iske.   LogMessage :
  99. **   - ForceIcon will use memory pools for allocations now.
  100. **  -*-  changed on Saturday, 19.03.94 16:23:41  by  Kai Iske.   LogMessage :
  101. **   - For volumes, for which some flags aren`t set (like IconPos or
  102. **     UseIcon) ForceIcon will take the settings of the device
  103. **     the volume resides in as long as it is a) defined and b)
  104. **     the missing flag is set there.
  105. **     (Suggested by : Christopher A. Wichura)
  106. **  -*-  changed on Saturday, 19.03.94 15:43:18  by  Kai Iske.   LogMessage :
  107. **   - DiskChanges on startup protected by Semaphore
  108. **     (Suggested by: Christopher A. Wichura)
  109. **  -*-  changed on Saturday, 19.03.94 15:42:06  by  Kai Iske.   LogMessage :
  110. **   - LoadPrefs() protected by Semaphore
  111. **     (Suggested by: Christopher A. Wichura)
  112. **  -*-  changed on Thursday, 17.03.94 18:24:44  by  Kai Iske.   LogMessage :
  113. **   - If you quit the EditEntry window using "OK", ForceIcon_Prefs
  114. **     will send a disk change to the device in question...
  115. **   - Improved semaphore locking mechanism. Chris didn`t like it,
  116. **     so I changed it, even though I can`t see his point (for now)
  117. **     (Requested by : Christopher A. Wichura)
  118. **  -*-  changed on Wednesday, 16.03.94 22:23:30  by  Kai Iske.   LogMessage :
  119. **   - Added FlushMemory switch/tooltype
  120. **   - Only devices in the list (or their volumes) will get a 
  121. **     disk change on startup now
  122. **     (Requested by : Christopher A. Wichura)
  123. **  -*-  changed on Wednesday, 16.03.94 22:22:13  by  Kai Iske.   LogMessage :
  124. **   - Added server prefs concept. ForceIcon is a simple program
  125. **     now, w/o any GUI. A seperate Prefs Editor has been added
  126. **     (using MUI) to configure ForceIcon.
  127. **   - Rearrangement of List after editing an entry didn`t work
  128. **  -*-  changed on Saturday, 12.03.94 19:32:33  by  Kai Iske.   LogMessage :
  129. **   - Again changed the routine for getting the list of available
  130. **     volumes/devices
  131. **     (Suggestions by : Ralph Babel)
  132. **  -*-  changed on Saturday, 12.03.94 19:31:48  by  Kai Iske.   LogMessage :
  133. **   - Didn`t convert a string to upper-case before calling
  134. **     ParsePatternNoCase(). This has to be done for OS 37
  135. **     Systems.
  136. **     (Reported by : Christopher A. Wichura)
  137. **  -*-  changed on Saturday, 12.03.94 14:23:12  by  Kai Iske.   LogMessage :
  138. **   - Added special code to check for block mounted devices.
  139. **     (Supplied by : Christopher A. Wichura. Thanks Chris)
  140. **  -*-  changed on Thursday, 10.03.94 14:23:11  by  Kai Iske.   LogMessage :
  141. **   - When adding a new item to the list, another entry could
  142. **     loose the settings for the IconPos gadget. This was due to a
  143. **     bug in the sorting routine. Fixed
  144. **     (Reported by : Mark 'TheMug' Rose)
  145. **  -*-  changed on Thursday, 10.03.94 14:02:35  by  Kai Iske.   LogMessage :
  146. **   - Patterns for Volumes and Devices supported now
  147. **  -*-  changed on Sunday, 06.03.94 17:38:53  by  Kai Iske.   LogMessage :
  148. **   - When launched ForceIcon will now make all connected disks
  149. **     disk change, in order to reposition the icons. This way you
  150. **     may launch ForceIcon from within your WBStartUp now
  151. **     (Requested by : Henning Schmiedehausen)
  152. **  -*-  changed on Sunday, 06.03.94 17:20:31  by  Kai Iske.   LogMessage :
  153. **   - Enforcer Hit for illegal Locks fixed
  154. **     (Changed by : Henning Schmiedehausen)
  155. **   - Windows will pop up on default PubScreen now
  156. **     (Changed by : Henning Schmiedehausen)
  157. **  -*-  changed on Sunday, 27.02.94 17:52:56  by  Kai Iske.   LogMessage :
  158. **   - More security checks when removing patches
  159. **     (Requested/Changed by : Henning Schmiedehausen)
  160. **  -*-  created on Saturday, 19.02.94 01:27:31  by  Kai Iske.   LogMessage :
  161. **   - ForceIcon didn`t clone all of the window`s flags
  162. **   - For some icon-substitutes, ForceIcon didn`t clone anything
  163. **     (Reported by : Michael 'Mick' Hohmann)
  164. **
  165. ** Revision V1.3
  166. ** --------------
  167. ** created on Sunday, 02.01.94 15:31:32  by  Kai Iske.   LogMessage :
  168. **   - Code cleanup
  169. **   - Partial rewrite of docs
  170. **
  171. ** Revision V1.2
  172. ** --------------
  173. ** created on Tuesday, 07.12.93 18:10:09  by  Kai Iske.   LogMessage :
  174. **   - Entries may be copied now
  175. **
  176. ** Revision V1.1
  177. ** --------------
  178. ** created on Tuesday, 02.11.93 23:11:14  by  Kai Iske.   LogMessage :
  179. **  -*-  changed on Saturday, 27.11.93 02:12:59  by  Kai Iske.   LogMessage :
  180. **   - Recompiled using SAS 6.50
  181. **  -*-  changed on Saturday, 20.11.93 18:14:21  by  Kai Iske.   LogMessage :
  182. **   - ForceIcon will adopt the orig. window position and size now.
  183. **     (Suggested by : Michael 'Mick' Hohmann and me)
  184. **  -*-  changed on Saturday, 20.11.93 18:03:08  by  Kai Iske.   LogMessage :
  185. **   - Icons weren`t positions as set with the Position window.
  186. **     (Reported by : Michael 'Mick' Hohmann)
  187. **   - Misleading explanation removed from docs
  188. **     (Reported by : Michael 'Mick' Hohmann)
  189. **  -*-  changed on Saturday, 20.11.93 17:33:51  by  Kai Iske.   LogMessage :
  190. **   - The X/Y coordinates may be set manually, now.
  191. **     (Requested by : Michael 'Mick' Hohmann)
  192. **  -*-  changed on Saturday, 20.11.93 17:24:20  by  Kai Iske.   LogMessage :
  193. **   - Edit Entry window`s gadget used 'I' twice
  194. **     (Reported by : Michael 'Mick' Hohmann)
  195. **  -*-  changed on Thursday, 11.11.93 18:43:27  by  Kai Iske.   LogMessage :
  196. **   - You may now tell ForceIcon not to patch the position, but
  197. **     rather let WB chose a good place. (Good when importing
  198. **     volumes via network)
  199. **  -*-  changed on Tuesday, 02.11.93 23:23:00  by  Kai Iske.   LogMessage :
  200. **   - ListView gadgets weren`t adjusted for OS 2.x. - Should check
  201. **     for OS 2.x sometime ;)
  202. **     (Reported by : Bernhard Moellemann)
  203. **   - Changed needed Versions of some libraries from 37 to 36
  204. **  -*-  created on Tuesday, 02.11.93 23:11:14  by  Kai Iske.   LogMessage :
  205. **   - If there wasn`t a filename for the Icon-File the
  206. **     FileRequester sometimes showed a weird Drawer-Name
  207. **     (Reported by : Dirk Federlein)
  208. **
  209. ** Revision V1.0
  210. ** --------------
  211. ** created on Wednesday, 20.10.93 17:19:27  by  Kai Iske.   LogMessage :
  212. **  -*-  changed on Thursday, 28.10.93 17:35:28  by  Kai Iske.   LogMessage :
  213. **   - Suggestions for device dependancy by Ralph Babel
  214. **   - Bug "found" by Ralph Babel
  215. **   - Pos window used to open on default pubscreen, not on WB.
  216. **     (Reported by : Bernhard Moellemann)
  217. **  -*-  created on Wednesday, 20.10.93 17:19:27  by  Kai Iske.   LogMessage :
  218. **     --- Initial release ---
  219. **
  220. *********************************************************************************/
  221. #define REVISION "1.6"
  222. #define REVDATE  "19.08.94"
  223. #define REVTIME  "00:59:59"
  224. #define AUTHOR   "Kai Iske"
  225. #define VERNUM   1
  226. #define REVNUM   6
  227.  
  228.  
  229. /**********************************************************************/
  230. /*                   Prototype for serial debugging                   */
  231. /**********************************************************************/
  232. void KPrintF(char *, ...);
  233.  
  234.  
  235.  
  236. /**********************************************************************/
  237. /*                   Prototypes for Pool functions                    */
  238. /**********************************************************************/
  239. APTR    __asm AsmCreatePool(register __d0 ULONG, register __d1 ULONG, register __d2 ULONG, register __a6 struct ExecBase *);
  240. void    __asm AsmDeletePool(register __a0 APTR, register __a6 struct ExecBase *);
  241. APTR    __asm AsmAllocPooled(register __a0 APTR, register __d0 ULONG, register __a6 struct ExecBase *);
  242. void    __asm AsmFreePooled(register __a0 APTR, register __a1 APTR, register __d0 ULONG, register __a6 struct ExecBase *);
  243.  
  244.  
  245.  
  246. /**********************************************************************/
  247. /*                              Defines                               */
  248. /**********************************************************************/
  249. enum{
  250.     ERR_OPEN,
  251.     ERR_NOMEM,
  252.     ERR_NOTALL,
  253.     ERR_ABOUT,
  254.     ERR_EXISTS,
  255.     ERR_PATCH,
  256.     ERR_SNAPEDICON,
  257.     ERR_NO_APP
  258. };
  259.  
  260.  
  261.  
  262. /**********************************************************************/
  263. /*                        Nodes for Guide file                        */
  264. /**********************************************************************/
  265. #define    NODE_MAIN        "Usage"
  266. #define    NODE_LEFT        "Left part"
  267. #define    NODE_RIGHT        "Right part"
  268. #define    NODE_EDIT        "EditEntry"
  269. #define    NODE_MANUAL        "ManualInput"
  270.  
  271.  
  272.  
  273. /**********************************************************************/
  274. /*                    This is our rendezvous Port                     */
  275. /**********************************************************************/
  276. struct FIconSema
  277. {
  278.     struct    SignalSemaphore    FIconSema;        // Our semaphore
  279.  
  280.     ULONG            UseCount;        // Use count of semaphore
  281.     char    Name[44];                // Name of semaphore
  282.  
  283.     struct    List        VolumeList;        // List of volumes
  284.     struct    Task        *ServerTask;        // Address of ServerTask
  285.     struct    Task        *PrefsTask;        // Address of PrefsTask
  286.  
  287.     APTR            FIconPool;        // Pool for allocations
  288.  
  289.     UWORD            FlushMemory;        // Flushmemory ???
  290.     UWORD            ObtainFromDev;        // Get settings from device when not set for volume ???
  291. };
  292.  
  293.  
  294.  
  295.  
  296.  
  297. /**********************************************************************/
  298. /*                         Structure defines                          */
  299. /**********************************************************************/
  300. struct VolEntry
  301. {
  302.     struct    Node    Link;
  303.     char        VolName[130];
  304.     char        IconName[256];
  305.     WORD        Left;
  306.     WORD        Top;
  307.     UWORD        UseAlt;
  308.     UWORD        IconPos;
  309.     UWORD        UseWin;
  310.     WORD        WinX;
  311.     WORD        WinY;
  312.     WORD        WinWidth;
  313.     WORD        WinHeight;
  314.     UWORD        UseFlags;
  315.     UWORD        WinFlags;
  316.     UWORD        Pad[25];        // For future expansions
  317.     WORD        LeftEdge;        // These are only used during runtime
  318.     WORD        TopEdge;
  319.     WORD        Width;
  320.     WORD        Height;
  321.     LONG        CurrentX;
  322.     LONG        CurrentY;
  323.     ULONG        Flags;
  324.     UWORD        ViewMode;
  325.     struct    MsgPort    *DriverTask;
  326. };
  327.  
  328.  
  329.  
  330. /**********************************************************************/
  331. /*                        Defines for windows                         */
  332. /**********************************************************************/
  333. enum {
  334.     ID_DUMMY,
  335.  
  336.     ID_USEDLIST,            // Main window
  337.     ID_EDITENTRY,
  338.     ID_COPYENTRY,
  339.     ID_REMOVEENTRY,
  340.     ID_AVAILLIST,
  341.     ID_ADDENTRY,
  342.     ID_ADDENTRYMAN,
  343.     ID_RESCANLIST,
  344.     ID_SAVE,
  345.     ID_USE,
  346.     ID_ABOUT,
  347.     ID_HIDE,
  348.     ID_QUIT,
  349.  
  350.     ID_EDITOK,            // Edit window
  351.     ID_EDITCANCEL,
  352.     ID_ICONX,
  353.     ID_ICONY,
  354.     ID_POSITION,
  355.     ID_DRAWER,
  356.     ID_WINX,
  357.     ID_WINY,
  358.     ID_WINWIDTH,
  359.     ID_WINHEIGHT,
  360.  
  361.     ID_MANOK,            // Man window
  362.     ID_MANCANCEL
  363. };
  364.  
  365.  
  366.  
  367.  
  368. /**********************************************************************/
  369. /*                         Modes for settings                         */
  370. /**********************************************************************/
  371. enum {
  372.     MODE_IGNORE,
  373.     MODE_USE,
  374.     MODE_INHERIT
  375. };
  376.