Diff for /np2/macosx/toolwin.cpp between versions 1.9 and 1.12

version 1.9, 2003/11/11 16:33:50 version 1.12, 2003/11/21 16:01:41
Line 11 Line 11
 #include        "dialog.h"  #include        "dialog.h"
 #include        "soundmng.h"  #include        "soundmng.h"
 #include        "fdefine.h"  #include        "fdefine.h"
   #include        "mackbd.h"
   #include        "mousemng.h"
   #include        "pccore.h"
   #include        "iocore.h"
   
   
 enum {  enum {
Line 107  static const OSType subcommand[11] ={ '- Line 111  static const OSType subcommand[11] ={ '-
                                         'exit',                                          'exit',
                                     };                                      };
   
   #define BASENUMBER      4
 static const ControlID popup[2] = { {'pop1', 1}, {'pop2', 2} };  static const ControlID popup[2] = { {'pop1', 1}, {'pop2', 2} };
   
 static DragReceiveHandlerUPP    dr;  static DragReceiveHandlerUPP    dr;
 static bool     isPUMA;  static bool     isPUMA;
   
 static void openpopup(HIPoint location);  static void openpopup(HIPoint location);
 static void skinchange(void);  static void skinchange(bool remake);
   
 // ----  // ----
   
 static void checkOSVersion(void) {  static void checkOSVersion(void) {
     long        res;      static      long    res = 0;
     Gestalt(gestaltSystemVersion, &res);      if (!res) {
     if (res<0x1020) {          Gestalt(gestaltSystemVersion, &res);
         isPUMA = true;          if (res<0x1020) {
     }              isPUMA = true;
     else {          }
         isPUMA = false;          else {
               isPUMA = false;
           }
     }      }
 }  }
   
Line 165  static PicHandle skinload(const char *pa Line 172  static PicHandle skinload(const char *pa
                         return(ret);                          return(ret);
                 }                  }
         }          }
         return(getBMPfromResource("np2tool", bounds, CFSTR("bmp")));          return(getBMPfromResource("np2tool.bmp", bounds));
 }  }
   
 // ----  // ----
Line 522  static pascal OSStatus cfWinproc(EventHa Line 529  static pascal OSStatus cfWinproc(EventHa
                         Draw1Control(sub);                          Draw1Control(sub);
                     }                      }
                 }                  }
                   err=noErr;
                 break;                  break;
                                   
             case kEventWindowFocusAcquired:              case kEventWindowFocusAcquired:
                 SelectWindow(hWndMain);                  BringToFront(hWndMain);
                   err = noErr;
                 break;                  break;
                                   
                                   
Line 533  static pascal OSStatus cfWinproc(EventHa Line 542  static pascal OSStatus cfWinproc(EventHa
                 break;                  break;
         }          }
     }      }
     else if (GetEventClass(event)==kEventClassKeyboard && GetEventKind(event)==kEventRawKeyDown) {      else if (GetEventClass(event)==kEventClassKeyboard) {
           static  UInt32  backup = 0;
           UInt32  whatHappened = GetEventKind(event);
           UInt32 key;
           GetEventParameter (event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &key);
         UInt32 modif;          UInt32 modif;
         GetEventParameter (event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modif);          GetEventParameter (event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modif);
         if (modif & cmdKey) {          switch (whatHappened)
             EventRecord eve;          {
             ConvertEventRefToEventRecord( event,&eve );              case kEventRawKeyUp:
             recieveCommand(MenuEvent(&eve));                  mackbd_keyup(key);
                   err = noErr;
                   break;
               case kEventRawKeyRepeat:
                   mackbd_keydown(key);
                   err = noErr;
                   break;
               case kEventRawKeyDown:
                   if (modif & cmdKey) {
                       EventRecord eve;
                       ConvertEventRefToEventRecord( event,&eve );
                       mousemng_disable(MOUSEPROC_MACUI);
                       recieveCommand(MenuEvent(&eve));
                       mousemng_enable(MOUSEPROC_MACUI);
                   }
                   else {
                       mackbd_keydown(key);
                   }
                   err = noErr;
                   break;
               case kEventRawKeyModifiersChanged:
                   if (modif & shiftKey) keystat_senddata(0x70);
                   else keystat_senddata(0x70 | 0x80);
                   if (modif & optionKey) keystat_senddata(0x73);
                   else keystat_senddata(0x73 | 0x80);
                   if (modif & controlKey) keystat_senddata(0x74);
                   else keystat_senddata(0x74 | 0x80);
                   if ((modif & alphaLock) != (backup & alphaLock)) {
                       keystat_senddata(0x71);
                       backup = modif;
                   }
                   err = noErr;
                   break;
               default: 
                   break;             
         }          }
     }      }
   
Line 565  OSErr setDropFile(FSSpec spec, int drv)  Line 612  OSErr setDropFile(FSSpec spec, int drv) 
                           
         case FTYPE_TEXT:          case FTYPE_TEXT:
             strcpy(np2tool.skin, fname);              strcpy(np2tool.skin, fname);
             skinchange();              skinchange(true);
             break;              break;
                   
         case FTYPE_THD:          case FTYPE_THD:
Line 672  static void createskinmenu(MenuRef ret)  Line 719  static void createskinmenu(MenuRef ret) 
 const char      *base;  const char      *base;
         char    *p;          char    *p;
         UINT    i;          UINT    i;
         UINT    j;  
         UINT    id[SKINMRU_MAX];  
 const char      *file[SKINMRU_MAX];  
     char        longname[256];      char        longname[256];
   
         AppendMenuItemTextWithCFString(ret, CFCopyLocalizedString(CFSTR("Select Skin..."),"Slect Skin"), kMenuItemAttrIconDisabled, NULL,NULL);          AppendMenuItemTextWithCFString(ret, CFCopyLocalizedString(CFSTR("Select Skin..."),"Slect Skin"), kMenuItemAttrIconDisabled, NULL,NULL);
Line 683  const char *file[SKINMRU_MAX]; Line 727  const char *file[SKINMRU_MAX];
         base = np2tool.skin;          base = np2tool.skin;
         AppendMenuItemTextWithCFString(ret, CFCopyLocalizedString(CFSTR("<Base Skin>"),"Base Skin"), kMenuItemAttrIconDisabled, NULL,NULL);          AppendMenuItemTextWithCFString(ret, CFCopyLocalizedString(CFSTR("<Base Skin>"),"Base Skin"), kMenuItemAttrIconDisabled, NULL,NULL);
         if (base[0] == '\0') {          if (base[0] == '\0') {
         DisableMenuItem(ret, 3);          CheckMenuItem(ret, BASENUMBER-1, true);
     }      }
         for (cnt=0; cnt<SKINMRU_MAX; cnt++) {          for (cnt=0; cnt<SKINMRU_MAX; cnt++) {
                 p = np2tool.skinmru[cnt];                  p = np2tool.skinmru[cnt];
                 if (p[0] == '\0') {                  if (p[0] == '\0') {
                         break;                          break;
                 }                  }
                 getLongFileName(longname, p);          UInt32  attr = kMenuItemAttrIconDisabled;
         p = longname;          if (file_attr(p) != FILEATTR_ARCHIVE) {
                 for (i=0; i<cnt; i++) {              attr |= kMenuItemAttrDisabled;
                         if (file_cmpname(p, file[id[i]]) < 0) {          }
                                 break;          ZeroMemory(longname, sizeof(longname));
                         }                  if (!getLongFileName(longname, p)) {
                 }              strcpy(longname, file_getname(p));
                 for (j=cnt; j>i; j--) {          }
                         id[j] = id[j-1];          AppendMenuItemTextWithCFString(ret, CFStringCreateWithCString(NULL, longname, kCFStringEncodingUTF8), attr, NULL, NULL);
                 }  
                 id[i] = cnt;  
                 file[cnt] = p;  
         }          }
         for (i=0; i<cnt; i++) {          for (i=0; i<cnt; i++) {
                 j = id[i];          if (!file_cmpname(base, np2tool.skinmru[i])) {
         if (file[j][0] != '\0') {              CheckMenuItem(ret, i+BASENUMBER, true);
             UInt32      attr = kMenuItemAttrIconDisabled;              break;
             if (!file_cmpname(base, np2tool.skinmru[j])) {  
                 attr |= kMenuItemAttrDisabled;  
             }  
             else if (file_attr(np2tool.skinmru[j]) == -1) {  
                 attr |= kMenuItemAttrDisabled;  
             }  
             AppendMenuItemTextWithCFString(ret, CFStringCreateWithCString(NULL, file[j], kCFStringEncodingUTF8), attr, NULL, NULL);  
         }          }
         }          }
         return;          return;
 }  }
   
 static void skinchange(void) {  static void skinchange(bool remake) {
   
 const char              *p;  const char              *p;
         UINT            i;          UINT            i;
   
     toolwin_close();      toolwin_close();
         p = np2tool.skin;          p = np2tool.skin;
         if (p[0]) {          if (p[0] && remake) {
                 for (i=0; i<(SKINMRU_MAX - 1); i++) {                  for (i=0; i<(SKINMRU_MAX - 1); i++) {
                         if (!file_cmpname(p, np2tool.skinmru[i])) {                          if (!file_cmpname(p, np2tool.skinmru[i])) {
                                 break;                                  break;
Line 757  static void openpopup(HIPoint location)  Line 791  static void openpopup(HIPoint location) 
         createskinmenu(hMenu);          createskinmenu(hMenu);
         AppendMenu(hMenu, "\p-");          AppendMenu(hMenu, "\p-");
     AppendMenuItemTextWithCFString(hMenu, CFCopyLocalizedString(CFSTR("Close"),"ToolWin Close"), kMenuItemAttrIconDisabled, NULL, NULL);      AppendMenuItemTextWithCFString(hMenu, CFCopyLocalizedString(CFSTR("Close"),"ToolWin Close"), kMenuItemAttrIconDisabled, NULL, NULL);
   
     DeleteMenu(222);      DeleteMenu(222);
     selectclose = CountMenuItems(hMenu);      selectclose = CountMenuItems(hMenu);
     sel = LoWord(PopUpMenuSelect(hMenu, (short)location.y, (short)location.x, 0));      sel = LoWord(PopUpMenuSelect(hMenu, (short)location.y, (short)location.x, 0));
Line 768  static void openpopup(HIPoint location)  Line 801  static void openpopup(HIPoint location) 
     else {      else {
         switch (sel) {          switch (sel) {
             case 1:              case 1:
                 if(dialog_fileselect(fname, sizeof(fname), hWndMain)) {                  if(dialog_fileselect(fname, sizeof(fname), hWndMain, OPEN_INI)) {
                     if (file_getftype(fname)==FTYPE_TEXT) {                      if (file_getftype(fname)==FTYPE_TEXT) {
                         strcpy(np2tool.skin, fname);                          strcpy(np2tool.skin, fname);
                         skinchange();                          skinchange(true);
                     }                      }
                 }                  }
                 break;                  break;
             case 3:              case 3:
                 np2tool.skin[0] = '\0';                  if (np2tool.skin[0]) {
                 skinchange();                      np2tool.skin[0] = '\0';
                       skinchange(false);
                   }
                 break;                  break;
             case 4:              case 4:
             case 5:              case 5:
             case 6:              case 6:
             case 7:              case 7:
                 file_cpyname(np2tool.skin, np2tool.skinmru[sel - 4], sizeof(np2tool.skin));                  if (file_cmpname(np2tool.skin, np2tool.skinmru[sel - BASENUMBER])) {
                 skinchange();                      file_cpyname(np2tool.skin, np2tool.skinmru[sel - BASENUMBER], sizeof(np2tool.skin));
                       skinchange(false);
                   }
                 break;                  break;
             default:              default:
                 break;                  break;
Line 848  void toolwin_open(void) { Line 885  void toolwin_open(void) {
         ShowWindow(hWnd);          ShowWindow(hWnd);
     }      }
     else {      else {
           Rect    mainbounds;
           int             width;
         SetDrawerParent(hWnd, hWndMain);          SetDrawerParent(hWnd, hWndMain);
         SetDrawerOffsets(hWnd, (640-(bounds.right-bounds.left))/2-11, (640-(bounds.right-bounds.left))/2-11);          GetWindowBounds(hWndMain, kWindowContentRgn, &mainbounds);
           width = (mainbounds.right-mainbounds.left)-(bounds.right-bounds.left);
           if (width/2-11<0) {
               toolwin_close();
               return;
           }
           SetDrawerOffsets(hWnd, width/2-11, width/2-11);
         SetDrawerPreferredEdge(hWnd, kWindowEdgeTop);          SetDrawerPreferredEdge(hWnd, kWindowEdgeTop);
         OpenDrawer(hWnd, kWindowEdgeDefault, 1);          OpenDrawer(hWnd, kWindowEdgeDefault, 1);
     }      }

Removed from v.1.9  
changed lines
  Added in v.1.12


RetroPC.NET-CVS <cvs@retropc.net>