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