home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / new / util / cdity / yak / src / icon.c < prev    next >
C/C++ Source or Header  |  1994-03-03  |  3KB  |  119 lines

  1. /*
  2.  *  Routines dealing with processing of Yak's icon
  3.  *  (be they for tooltypes or AppIcon purposes).
  4.  *  
  5.  *  MWS, Tuesday 13-Oct-92
  6.  */
  7. #include <exec/types.h>
  8. #include <exec/ports.h>
  9. #include <dos/dos.h>
  10. #include <workbench/startup.h>
  11. #include <workbench/workbench.h>
  12. #include <proto/exec.h>
  13. #include <proto/dos.h>
  14. #include <proto/wb.h>
  15. #include <proto/icon.h>
  16. #include <string.h>
  17. #include "icon.h"
  18.  
  19. static struct DiskObject *diskobj;
  20.  
  21. __regargs BOOL
  22. GetOurIcon(struct WBStartup *WBenchMsg)
  23. {
  24.         if (WBenchMsg)
  25.                 diskobj = GetDiskObject(WBenchMsg->sm_ArgList->wa_Name);
  26.         return (BOOL)(diskobj ? TRUE : FALSE);
  27. }
  28.  
  29. /* can cope with multiple calls */
  30. void
  31. FreeOurIcon()
  32. {
  33.         if (diskobj)
  34.         {
  35.                 FreeDiskObject(diskobj);
  36.                 diskobj = NULL;
  37.         }
  38. }
  39.  
  40. /* like ArgString() */
  41. __regargs char *
  42. TTString(char *name, char *def)
  43. {
  44.         char *what;
  45.         if (diskobj)
  46.                 if (what = FindToolType(diskobj->do_ToolTypes, name))
  47.                         return what;
  48.         return def;
  49. }
  50.  
  51. /* like ArgInt() */
  52. __regargs LONG
  53. TTInt(char *name, LONG def)
  54. {
  55.         char *what;
  56.         if (diskobj)
  57.                 if (what = FindToolType(diskobj->do_ToolTypes, name))
  58.                         StrToLong(what, &def);
  59.         return def;
  60. }
  61.  
  62. /* simple extension to ArgXXX routines */
  63. __regargs BOOL
  64. TTBool(char *name, BOOL def)
  65. {
  66.         char    *s;
  67.  
  68.         s = TTString(name, def ? "YES" : "NO");
  69.  
  70.         return  (BOOL)(((strcmp(s, "YES") == 0) ||
  71.                         (strcmp(s, "TRUE") == 0) ||
  72.                         (strcmp(s, "ON") == 0)) ? TRUE : FALSE);
  73. }
  74.  
  75. #ifndef NO_APPICON
  76.  
  77. LONG appsigflag;
  78.  
  79. static struct AppIcon *appicon;
  80. static struct MsgPort *appport;
  81.  
  82. /* create our AppIcon */
  83. __regargs BOOL
  84. MakeOurAppIcon(char *name)
  85. {
  86.         if (diskobj)
  87.                 if (appport = CreateMsgPort())
  88.                 {
  89.                         diskobj->do_CurrentX = TTInt("ICONXPOS", NO_ICON_POSITION);
  90.                         diskobj->do_CurrentY = TTInt("ICONYPOS", NO_ICON_POSITION);
  91.                         if (appicon = AddAppIconA(0,0L,name,appport,0L,diskobj,0L))
  92.                         {
  93.                                 appsigflag = 1 << appport->mp_SigBit;
  94.                                 return TRUE;
  95.                         }
  96.                         else DeleteMsgPort(appport);
  97.                 }
  98.         return FALSE;
  99. }
  100.  
  101. /* bye bye icon... */
  102. void
  103. RemoveOurAppIcon()
  104. {
  105.         if (appicon) RemoveAppIcon(appicon);
  106.         if (appport) DeleteMsgPort(appport);
  107. }
  108.  
  109. /* just clear the port */
  110. void
  111. RespondToAppIcon()
  112. {
  113.         struct Message *msg;
  114.         while (msg = GetMsg(appport))
  115.                 ReplyMsg(msg);
  116. }
  117.  
  118. #endif /* !NO_APPICON */
  119.