Diff for /np2/macosx/toolwin.cpp between versions 1.15 and 1.21

version 1.15, 2004/01/05 01:53:34 version 1.21, 2005/05/20 17:25:03
Line 16 Line 16
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
   
   extern void HandleMenuChoice(long wParam);
   
 enum {  enum {
         IDC_TOOLHDDACC                  = 0,          IDC_TOOLHDDACC                  = 0,
Line 117  static const ControlID imageid = {'back' Line 118  static const ControlID imageid = {'back'
   
 static DragReceiveHandlerUPP    dr;  static DragReceiveHandlerUPP    dr;
 static DragTrackingHandlerUPP   tr;  static DragTrackingHandlerUPP   tr;
 static bool     isPUMA;  static bool     isPUMA, isJaguar;
   
 static void openpopup(HIPoint location);  static void openpopup(Point location);
 static void skinchange(bool remake);  static void skinchange(bool remake);
   
 // ----  // ----
Line 130  static void checkOSVersion(void) { Line 131  static void checkOSVersion(void) {
         Gestalt(gestaltSystemVersion, &res);          Gestalt(gestaltSystemVersion, &res);
         if (res<0x1020) {          if (res<0x1020) {
             isPUMA = true;              isPUMA = true;
                           isJaguar = false;
         }          }
                   else if (res<0x1030) {
               isPUMA = false;
                           isJaguar = true;
                   }
         else {          else {
             isPUMA = false;              isPUMA = false;
                           isJaguar = false;
         }          }
     }      }
 }  }
Line 196  const char  *p; Line 203  const char  *p;
     bool                success = false;      bool                success = false;
           
     GetBevelButtonMenuHandle(hwnd, &menu);      GetBevelButtonMenuHandle(hwnd, &menu);
     while (MenuHasEnabledItems(menu)) {          DeleteMenuItems(menu, 1, fdd->cnt);
         DeleteMenuItem(menu, 1);  
     };  
 #if 0  #if 0
         GetControlBounds(hwnd, &rc);          GetControlBounds(hwnd, &rc);
         width = rc.right - rc.left - 6;                 // border size?          width = rc.right - rc.left - 6;                 // border size?
Line 213  const char  *p; Line 218  const char  *p;
                 p = fdd->name[fdd->pos[i]];                  p = fdd->name[fdd->pos[i]];
         success = getLongFileName(cfname, p);          success = getLongFileName(cfname, p);
         str = CFStringCreateWithCString(NULL, cfname, CFStringGetSystemEncoding());          str = CFStringCreateWithCString(NULL, cfname, CFStringGetSystemEncoding());
         if ((str) && success) {          if (str) {
             if (file_attr(p) != FILEATTR_ARCHIVE) {                          if (success) {
                 attr |= kMenuItemAttrDisabled;                                  if (file_attr(p) != FILEATTR_ARCHIVE) {
             }                                          attr |= kMenuItemAttrDisabled;
             AppendMenuItemTextWithCFString(menu, str, attr, NULL, NULL);                                  }
                                   AppendMenuItemTextWithCFString(menu, str, attr, 0, 0);
                           }
             CFRelease(str);              CFRelease(str);
         }          }
         else {          else {
Line 249  const char  *p; Line 256  const char  *p;
         CFStringRef title;          CFStringRef title;
         SetBevelButtonMenuValue(hwnd, sel+1);          SetBevelButtonMenuValue(hwnd, sel+1);
         CopyMenuItemTextAsCFString(menu, sel+1, &title);          CopyMenuItemTextAsCFString(menu, sel+1, &title);
         SetControlTitleWithCFString(hwnd, title);                  if (title) {
                           SetControlTitleWithCFString(hwnd, title);
                           CFRelease(title);
                   }
     }      }
     else {      else {
         SetControlTitleWithCFString(hwnd, CFSTR(" "));          SetControlTitleWithCFString(hwnd, CFSTR(" "));
                   for (i=0; i<fdd->cnt; i++) {
                           CheckMenuItem(menu, i+1, 0);
                   }
         }          }
 }  }
   
Line 351  static pascal OSStatus cfControlproc(Eve Line 364  static pascal OSStatus cfControlproc(Eve
     }      }
     else if (GetEventClass(event)==kEventClassControl && GetEventKind(event)==kEventControlContextualMenuClick) {      else if (GetEventClass(event)==kEventClassControl && GetEventKind(event)==kEventControlContextualMenuClick) {
         HIPoint location;          HIPoint location;
                   Point   point;
       
         soundmng_stop();          soundmng_stop();
         GetEventParameter (event, kEventParamMouseLocation, typeHIPoint, NULL, sizeof(HIPoint), NULL, &location);          GetEventParameter (event, kEventParamMouseLocation, typeHIPoint, NULL, sizeof(HIPoint), NULL, &location);
         openpopup(location);          point.h = (short)location.x;
                   point.v = (short)location.y;
                   if (!isJaguar && !isPUMA) {
                           GrafPtr port, dst;
                           bool    portchanged;
                           dst = GetWindowPort(toolwin.hwnd);
                           portchanged = QDSwapPort(dst, &port);
                           LocalToGlobal(&point);
                           if (portchanged) QDSwapPort(port, NULL);
                   }
                   openpopup(point);
         soundmng_play();          soundmng_play();
     }      }
   
Line 433  const char  *cls; Line 458  const char  *cls;
                     style = 1;                      style = 1;
                     CreateBevelButtonControl(hWnd, &bounds,     CFSTRj(p->text),                       CreateBevelButtonControl(hWnd, &bounds,     CFSTRj(p->text), 
                                                         kControlBevelButtonSmallBevel,                                                          kControlBevelButtonSmallBevel,
                                                         0 ,NULL, NULL, NULL, NULL, &sub);                                                          0 ,NULL, 0, 0, 0, &sub);
                     SetControlCommandID(sub, subcommand[i]);                      SetControlCommandID(sub, subcommand[i]);
                     SetControlFontStyle(sub, &fontstyle);                      SetControlFontStyle(sub, &fontstyle);
                     break;                      break;
Line 505  static pascal OSStatus cfWinproc(EventHa Line 530  static pascal OSStatus cfWinproc(EventHa
         switch (cmd.commandID)          switch (cmd.commandID)
         {          {
             case 'rset':              case 'rset':
                 recieveCommand(IDM_RESET);                  HandleMenuChoice(IDM_RESET);
                 err=noErr;                  err=noErr;
                 break;                  break;
                                   
Line 515  static pascal OSStatus cfWinproc(EventHa Line 540  static pascal OSStatus cfWinproc(EventHa
                 break;                  break;
                                                                   
             case 'opn1':              case 'opn1':
                 recieveCommand(IDM_FDD1OPEN);                  HandleMenuChoice(IDM_FDD1OPEN);
                 err=noErr;                  err=noErr;
                 break;                  break;
                                   
             case 'ejt1':              case 'ejt1':
                 recieveCommand(IDM_FDD1EJECT);                  HandleMenuChoice(IDM_FDD1EJECT);
                 err=noErr;                  err=noErr;
                 break;                  break;
                                   
Line 530  static pascal OSStatus cfWinproc(EventHa Line 555  static pascal OSStatus cfWinproc(EventHa
                 break;                  break;
                                                                   
             case 'opn2':              case 'opn2':
                 recieveCommand(IDM_FDD2OPEN);                  HandleMenuChoice(IDM_FDD2OPEN);
                 err=noErr;                  err=noErr;
                 break;                  break;
                                   
             case 'ejt2':              case 'ejt2':
                 recieveCommand(IDM_FDD2EJECT);                  HandleMenuChoice(IDM_FDD2EJECT);
                 err=noErr;                  err=noErr;
                 break;                  break;
                                   
             case 'exit':              case 'exit':
                 recieveCommand(IDM_EXIT);                  HandleMenuChoice(IDM_EXIT);
                 err=noErr;                  err=noErr;
                 break;                  break;
                                   
Line 551  static pascal OSStatus cfWinproc(EventHa Line 576  static pascal OSStatus cfWinproc(EventHa
     else if (GetEventClass(event)==kEventClassWindow) {      else if (GetEventClass(event)==kEventClassWindow) {
         switch (GetEventKind(event)) {          switch (GetEventKind(event)) {
             case kEventWindowClose:              case kEventWindowClose:
   #ifdef AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
                           case kEventWindowDrawerClosed:
   #endif
                 toolwin_close();                  toolwin_close();
                 err=noErr;                  err=noErr;
                 break;                  break;
Line 566  static pascal OSStatus cfWinproc(EventHa Line 594  static pascal OSStatus cfWinproc(EventHa
                 err=noErr;                  err=noErr;
                 break;                  break;
                                   
             case kEventWindowFocusAcquired:  
                 BringToFront(hWndMain);  
                 err = noErr;  
                 break;  
                   
                   
             default:              default:
                 break;                  break;
         }          }
     }      }
     else if (GetEventClass(event)==kEventClassKeyboard) {      else if (GetEventClass(event)==kEventClassKeyboard) {
         static  UInt32  backup = 0;  
         UInt32  whatHappened = GetEventKind(event);          UInt32  whatHappened = GetEventKind(event);
         UInt32 key;          UInt32  key;
         GetEventParameter (event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &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);
         switch (whatHappened)          switch (whatHappened)
         {          {
Line 598  static pascal OSStatus cfWinproc(EventHa Line 619  static pascal OSStatus cfWinproc(EventHa
                     EventRecord eve;                      EventRecord eve;
                     ConvertEventRefToEventRecord( event,&eve );                      ConvertEventRefToEventRecord( event,&eve );
                     mousemng_disable(MOUSEPROC_MACUI);                      mousemng_disable(MOUSEPROC_MACUI);
                     recieveCommand(MenuEvent(&eve));                      HandleMenuChoice(MenuEvent(&eve));
                     mousemng_enable(MOUSEPROC_MACUI);                      mousemng_enable(MOUSEPROC_MACUI);
                 }                  }
                 else {                  else {
Line 606  static pascal OSStatus cfWinproc(EventHa Line 627  static pascal OSStatus cfWinproc(EventHa
                 }                  }
                 err = noErr;                  err = noErr;
                 break;                  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:               default: 
                 break;                               break;             
         }          }
Line 810  static WindowRef makeNibWindow (IBNibRef Line 818  static WindowRef makeNibWindow (IBNibRef
             { kEventClassWindow,        kEventWindowClose },               { kEventClassWindow,        kEventWindowClose }, 
             { kEventClassWindow,        kEventWindowShown },               { kEventClassWindow,        kEventWindowShown }, 
             { kEventClassWindow,        kEventWindowDrawContent },               { kEventClassWindow,        kEventWindowDrawContent }, 
             { kEventClassWindow,        kEventWindowFocusAcquired },               { kEventClassKeyboard,      kEventRawKeyUp},
             { kEventClassKeyboard,      kEventRawKeyDown},              { kEventClassKeyboard,      kEventRawKeyDown},
               { kEventClassKeyboard,      kEventRawKeyRepeat},
   #ifdef AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
                           { kEventClassWindow,    kEventWindowDrawerClosed },
   #endif
         };          };
         EventHandlerRef ref;          EventHandlerRef ref;
         InstallWindowEventHandler (win, NewEventHandlerUPP(cfWinproc), GetEventTypeCount(list), list, (void *)win, &ref);          InstallWindowEventHandler (win, NewEventHandlerUPP(cfWinproc), GetEventTypeCount(list), list, (void *)win, &ref);
Line 845  const char *base; Line 857  const char *base;
         UINT    i;          UINT    i;
     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, 0, 0);
         AppendMenu(ret, "\p-");          AppendMenu(ret, "\p-");
   
         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, 0, 0);
         if (base[0] == '\0') {          if (base[0] == '\0') {
         CheckMenuItem(ret, BASENUMBER-1, true);          CheckMenuItem(ret, BASENUMBER-1, true);
     }      }
Line 866  const char *base; Line 878  const char *base;
                 if (!getLongFileName(longname, p)) {                  if (!getLongFileName(longname, p)) {
             strcpy(longname, file_getname(p));              strcpy(longname, file_getname(p));
         }          }
         AppendMenuItemTextWithCFString(ret, CFStringCreateWithCString(NULL, longname, kCFStringEncodingUTF8), attr, NULL, NULL);          AppendMenuItemTextWithCFString(ret, CFStringCreateWithCString(NULL, longname, kCFStringEncodingUTF8), attr, 0, 0);
         }          }
         for (i=0; i<cnt; i++) {          for (i=0; i<cnt; i++) {
         if (!file_cmpname(base, np2tool.skinmru[i])) {          if (!file_cmpname(base, np2tool.skinmru[i])) {
Line 903  const char  *p; Line 915  const char  *p;
   
   
 // ----  // ----
 static void openpopup(HIPoint location) {  static void openpopup(Point location) {
   
         MenuRef hMenu;          MenuRef hMenu;
         short   sel;          short   sel;
Line 914  static void openpopup(HIPoint location)  Line 926  static void openpopup(HIPoint location) 
     InsertMenu(hMenu, -1);      InsertMenu(hMenu, -1);
         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, 0, 0);
     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, location.v, location.h, 0));
         DisposeMenu(hMenu);          DisposeMenu(hMenu);
     if (sel == selectclose) {      if (sel == selectclose) {
         toolwin_close();          toolwin_close();
Line 926  static void openpopup(HIPoint location)  Line 938  static void openpopup(HIPoint location) 
         switch (sel) {          switch (sel) {
             case 1:              case 1:
                 if(dialog_fileselect(fname, sizeof(fname), hWndMain, OPEN_INI)) {                  if(dialog_fileselect(fname, sizeof(fname), hWndMain, OPEN_INI)) {
                     if (file_getftype(fname)==FTYPE_TEXT) {                      if (file_getftype(fname)==FTYPE_INI) {
                         strcpy(np2tool.skin, fname);                          strcpy(np2tool.skin, fname);
                         skinchange(true);                          skinchange(true);
                     }                      }
Line 954  static void openpopup(HIPoint location)  Line 966  static void openpopup(HIPoint location) 
   
 }  }
   
   static void makeskinimage(WindowRef win,PicHandle bmp, Rect* rect) {
       ControlButtonContentInfo    info;
       ControlRef                                  image;
       EventHandlerRef                             ref;
       EventTypeSpec                               list[]={ 
           { kEventClassControl, kEventControlContextualMenuClick },
       };
           
       info.contentType = kControlContentPictHandle;
       info.u.picture = bmp;
       CreatePictureControl(win, rect, &info, true, &image);
       SetControlID(image, &imageid);
       InstallControlEventHandler (image, NewEventHandlerUPP(cfControlproc), GetEventTypeCount(list), list, (void *)win, &ref);
   }
   
   static void opentoolwin_puma(WindowRef win) {
           if (np2tool.posy < 35) np2tool.posy = 35;
           if (np2tool.posx < 5 ) np2tool.posx = 5;
           MoveWindow(win, np2tool.posx, np2tool.posy, true);
           ShowWindow(win);
   }
   
 void toolwin_open(void) {  void toolwin_open(void) {
   
         PicHandle       hbmp;          PicHandle       hbmp;
         WindowRef       hWnd = NULL;          WindowRef       hWnd = NULL;
     Rect                bounds;      Rect                bounds;
     ControlRef  image;  
     EventTypeSpec       list[]={   
         { kEventClassControl, kEventControlContextualMenuClick },  
     };  
     EventHandlerRef     ref;  
   
         if (toolwin.hwnd) {          if (toolwin.hwnd) {
         toolwin_close();          toolwin_close();
Line 984  void toolwin_open(void) { Line 1013  void toolwin_open(void) {
                 goto twope_err2;                  goto twope_err2;
         }          }
           
     if (isPUMA) {  
           SetWindowBounds(hWnd, kWindowContentRgn, &bounds);
           if (isPUMA) {
         toolwincreate(hWnd);          toolwincreate(hWnd);
                   makeskinimage(hWnd, hbmp, &bounds);
     }      }
     SizeWindow(hWnd, bounds.right-bounds.left, bounds.bottom-bounds.top, true);          else {
     ControlButtonContentInfo    info;                  makeskinimage(hWnd, hbmp, &bounds);
     info.contentType = kControlContentPictHandle;  
     info.u.picture = hbmp;  
     CreatePictureControl(hWnd, &bounds, &info, true, &image);  
     SetControlID(image, &imageid);  
     InstallControlEventHandler (image, NewEventHandlerUPP(cfControlproc), GetEventTypeCount(list), list, (void *)hWnd, &ref);  
     if (!isPUMA) {  
         toolwincreate(hWnd);          toolwincreate(hWnd);
     }      }
 #ifndef AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER  #ifndef AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
     if (np2tool.posy < 35) np2tool.posy = 35;          opentoolwin_puma(hWnd);
     if (np2tool.posx < 5 ) np2tool.posx = 5;  
     MoveWindow(hWnd, np2tool.posx, np2tool.posy, true);  
     ShowWindow(hWnd);  
 #else  #else
     if (isPUMA) {      if (isPUMA) {
         if (np2tool.posy < 35) np2tool.posy = 35;                  opentoolwin_puma(hWnd);
         if (np2tool.posx < 5 ) np2tool.posx = 5;  
         MoveWindow(hWnd, np2tool.posx, np2tool.posy, true);  
         ShowWindow(hWnd);  
     }      }
     else {      else {
         Rect    mainbounds;          Rect    mainbounds;
Line 1021  void toolwin_open(void) { Line 1041  void toolwin_open(void) {
         }          }
         SetDrawerOffsets(hWnd, width/2-11, width/2-11);          SetDrawerOffsets(hWnd, width/2-11, width/2-11);
         SetDrawerPreferredEdge(hWnd, kWindowEdgeTop);          SetDrawerPreferredEdge(hWnd, kWindowEdgeTop);
                   const HISize  size = {bounds.right-bounds.left, bounds.bottom-bounds.top};
                   SetWindowResizeLimits(hWnd, &size, &size);
         OpenDrawer(hWnd, kWindowEdgeDefault, 1);          OpenDrawer(hWnd, kWindowEdgeDefault, 1);
     }      }
 #endif  #endif
Line 1171  const DISKACC *accterm; Line 1193  const DISKACC *accterm;
 // ----  // ----
   
 static const char ini_title[] = "NP2 tool";  static const char ini_title[] = "NP2 tool";
   #if !defined(SUPPORT_PC9821)
 static const char inifile[] = "np2.cfg";                        // same file name..  static const char inifile[] = "np2.cfg";                        // same file name..
   #else
   static const char inifile[] = "np21.cfg";
   #endif
   
 static const INITBL iniitem[] = {  static const INITBL iniitem[] = {
         {"WindposX", INITYPE_SINT32,    &np2tool.posx,                  0},          {"WindposX", INITYPE_SINT32,    &np2tool.posx,                  0},

Removed from v.1.15  
changed lines
  Added in v.1.21


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