home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1999 / MacHack 1999.toast / The Hacks / MACtive Desktop / Source / Sources / AppleMenu.cc < prev    next >
Encoding:
C/C++ Source or Header  |  1998-05-14  |  1.3 KB  |  86 lines  |  [TEXT/CWIE]

  1. #include <ctype.h>
  2. #include <string.h>
  3. #include <Devices.h>
  4. #include <Dialogs.h>
  5. #include "AppleMenu.h"
  6. #include "Notice.h"
  7. #include "QDContext.h"
  8. #include "StringUtils.h"
  9. #include "Version.h"
  10.  
  11.  
  12.  
  13.  
  14.  
  15. AppleMenu::AppleMenu(void) : BaseMenu(256)
  16. {
  17.     AppendResMenu(fMenu,'DRVR');
  18. }
  19.  
  20.  
  21.  
  22.  
  23.  
  24. void AppleMenu::HandleSelect(UInt32 item)
  25. {
  26.     QDContext    context;
  27.     Str255        name;
  28.     
  29.     
  30.     switch(item)
  31.     {
  32.         case 1:
  33.             ShowAboutBox();
  34.             break;
  35.         
  36.         default:
  37.             GetMenuItemText(fMenu,item,name);
  38.             OpenDeskAcc(name);
  39.             break;
  40.     }
  41. }
  42.  
  43.  
  44.  
  45.  
  46.  
  47. void AppleMenu::HandleSetDisableState(Boolean isBeingDisabled)
  48. {
  49.     if (isBeingDisabled)
  50.         DisableItem(fMenu,1);
  51.     else
  52.         EnableItem(fMenu,1);
  53. }
  54.  
  55.  
  56. #pragma mark -
  57.  
  58.  
  59. void AppleMenu::ShowAboutBox(void)
  60. {
  61.     Str31        vnum,vers;
  62.     Str255        name;
  63.     OSStatus    err;
  64.     
  65.     // Get app name from Apple Menu.
  66.     GetMenuItemText(fMenu,1,name);
  67.     while((name[0] > 0) && !isspace(name[1]))
  68.         memmove(&name[1],&name[2],--name[0]);
  69.     while((name[0] > 0) && isspace(name[1]))
  70.         memmove(&name[1],&name[2],--name[0]);
  71.     while((name[0] > 0) && ((char)name[name[0]] == (char)'…'))
  72.         name[0] -= 1;
  73.     
  74.     // Get version from vers resource.
  75.     err = GetNumVersionPString(vnum);
  76.     if (err == noErr)
  77.     {
  78.         pstrcpy(vers,"\pversion: ");
  79.         pstrcat(vers,vnum);
  80.     }
  81.     else
  82.         vers[0] = 0;
  83.     
  84.     PostNotice(kAlertNoteAlert,name,vers);
  85. }
  86.