--- np2/macosx/toolwin.cpp	2003/11/05 17:43:57	1.6
+++ np2/macosx/toolwin.cpp	2003/11/13 18:17:42	1.11
@@ -107,24 +107,27 @@ static const OSType subcommand[11] ={	'-
                                         'exit',
                                     };
 
+#define	BASENUMBER	4
 static const ControlID popup[2] = { {'pop1', 1}, {'pop2', 2} };
 
-static void openpopup(HIPoint location);
-static void skinchange(void);
 static DragReceiveHandlerUPP	dr;
-
 static bool	isPUMA;
 
+static void openpopup(HIPoint location);
+static void skinchange(bool remake);
+
 // ----
 
 static void checkOSVersion(void) {
-    long	res;
-    Gestalt(gestaltSystemVersion, &res);
-    if (res<0x1020) {
-        isPUMA = true;
-    }
-    else {
-        isPUMA = false;
+    static	long	res = 0;
+    if (!res) {
+        Gestalt(gestaltSystemVersion, &res);
+        if (res<0x1020) {
+            isPUMA = true;
+        }
+        else {
+            isPUMA = false;
+        }
     }
 }
 
@@ -165,7 +168,7 @@ static PicHandle skinload(const char *pa
 			return(ret);
 		}
 	}
-	return(getBMPfromResource("np2tool", bounds));
+	return(getBMPfromResource("np2tool.bmp", bounds));
 }
 
 // ----
@@ -523,12 +526,25 @@ static pascal OSStatus cfWinproc(EventHa
                     }
                 }
                 break;
-
+                
+            case kEventWindowFocusAcquired:
+                SelectWindow(hWndMain);
+                break;
+                
                 
             default:
                 break;
         }
     }
+    else if (GetEventClass(event)==kEventClassKeyboard && GetEventKind(event)==kEventRawKeyDown) {
+        UInt32 modif;
+        GetEventParameter (event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modif);
+        if (modif & cmdKey) {
+            EventRecord	eve;
+            ConvertEventRefToEventRecord( event,&eve );
+            recieveCommand(MenuEvent(&eve));
+        }
+    }
 
 	(void)myHandler;
     return err;
@@ -552,7 +568,7 @@ OSErr setDropFile(FSSpec spec, int drv) 
             
         case FTYPE_TEXT:
             strcpy(np2tool.skin, fname);
-            skinchange();
+            skinchange(true);
             break;
         
         case FTYPE_THD:
@@ -624,10 +640,12 @@ static WindowRef makeNibWindow (IBNibRef
     if (err == noErr) {
         InstallStandardEventHandler(GetWindowEventTarget(win));
         EventTypeSpec	list[]={ 
-            { kEventClassCommand, kEventCommandProcess },
-            { kEventClassWindow, kEventWindowClose }, 
-            { kEventClassWindow, kEventWindowShown }, 
-            { kEventClassWindow, kEventWindowDrawContent }, 
+            { kEventClassCommand, 	kEventCommandProcess },
+            { kEventClassWindow,	kEventWindowClose }, 
+            { kEventClassWindow,	kEventWindowShown }, 
+            { kEventClassWindow,	kEventWindowDrawContent }, 
+            { kEventClassWindow, 	kEventWindowFocusAcquired }, 
+            { kEventClassKeyboard,	kEventRawKeyDown},
         };
         EventHandlerRef	ref;
         InstallWindowEventHandler (win, NewEventHandlerUPP(cfWinproc), GetEventTypeCount(list), list, (void *)win, &ref);
@@ -657,63 +675,48 @@ static void createskinmenu(MenuRef ret) 
 const char	*base;
 	char	*p;
 	UINT	i;
-	UINT	j;
-	UINT	id[SKINMRU_MAX];
-const char	*file[SKINMRU_MAX];
-    Str255	seltext, deftext;
+    char	longname[256];
 
-    mkstr255(seltext, str_skinsel);
-	AppendMenu(ret, seltext);
+	AppendMenuItemTextWithCFString(ret, CFCopyLocalizedString(CFSTR("Select Skin..."),"Slect Skin"), kMenuItemAttrIconDisabled, NULL,NULL);
 	AppendMenu(ret, "\p-");
 
 	base = np2tool.skin;
-    mkstr255(deftext, str_skindef);
-	AppendMenu(ret, deftext);
-	if (base[0] != '\0') {
-        EnableMenuItem(ret, 3);
+	AppendMenuItemTextWithCFString(ret, CFCopyLocalizedString(CFSTR(""),"Base Skin"), kMenuItemAttrIconDisabled, NULL,NULL);
+	if (base[0] == '\0') {
+        CheckMenuItem(ret, BASENUMBER-1, true);
     }
 	for (cnt=0; cnti; j--) {
-			id[j] = id[j-1];
-		}
-		id[i] = cnt;
-		file[cnt] = p;
+        UInt32	attr = kMenuItemAttrIconDisabled;
+        if (file_attr(p) != FILEATTR_ARCHIVE) {
+            attr |= kMenuItemAttrDisabled;
+        }
+        ZeroMemory(longname, sizeof(longname));
+		if (!getLongFileName(longname, p)) {
+            strcpy(longname, file_getname(p));
+        }
+        AppendMenuItemTextWithCFString(ret, CFStringCreateWithCString(NULL, longname, kCFStringEncodingUTF8), attr, NULL, NULL);
 	}
 	for (i=0; i