[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sc-dev] SF.net SVN: supercollider:[8225] trunk



Revision: 8225
          http://supercollider.svn.sourceforge.net/supercollider/?rev=8225&view=rev
Author:   mullmusik
Date:     2008-12-20 22:54:49 +0000 (Sat, 20 Dec 2008)

Log Message:
-----------
Add help tree to Help Menu on OSX, small fixes and improvements

Modified Paths:
--------------
    trunk/Source/app/GUIPrimitives.M
    trunk/build/SCClassLibrary/Common/Files/osx/Help_osx.sc
    trunk/build/SCClassLibrary/Platform/osx/CocoaMenu.sc
    trunk/build/SCClassLibrary/Platform/osx/OSXPlatform.sc

Modified: trunk/Source/app/GUIPrimitives.M
===================================================================
--- trunk/Source/app/GUIPrimitives.M	2008-12-20 18:14:40 UTC (rev 8224)
+++ trunk/Source/app/GUIPrimitives.M	2008-12-20 22:54:49 UTC (rev 8225)
@@ -3718,7 +3718,14 @@
 		// make a submenu if needed
 		//NSLog(@"Top Level");
 		parentMenu = [NSApp mainMenu];
-	} else {
+	} else if (IsSym(parentObj)) {
+		PyrSymbol *parentSymbol;
+		int err = slotSymbolVal(parentObj, &parentSymbol);
+		if (err) return err;
+		if (strcmp(parentSymbol->name, "Help")==0) {
+			parentMenu = [[[NSApp mainMenu] itemWithTitle:@"Help"] submenu];
+		}
+	} else if (isKindOfSlot(parentObj, getsym("CocoaMenuItem")->u.classobj)){
 		SCNSMenuItem *parentItem = (SCNSMenuItem*)(parentObj->uo->slots->uptr);
 		if([parentItem hasSubmenu]) {
 			//NSLog(@"Parent has submenu");
@@ -3726,7 +3733,7 @@
 		} else {
 			return errFailed;
 		}
-	}
+	} else return errWrongType;
 	
 	// protect against bad indices
 	int parentSize = [parentMenu numberOfItems];
@@ -3750,6 +3757,7 @@
 int prRemoveMenuItem(struct VMGlobals *g, int numArgsPushed);
 int prRemoveMenuItem(struct VMGlobals *g, int numArgsPushed)
 {
+	
 	PyrSlot *caller = g->sp;
 	
 	SCNSMenuItem *menuItem = (SCNSMenuItem*)(caller->uo->slots->uptr);
@@ -3764,6 +3772,8 @@
 int prEnableMenuItem(struct VMGlobals *g, int numArgsPushed);
 int prEnableMenuItem(struct VMGlobals *g, int numArgsPushed)
 {
+	if (!g->canCallOS) return errCantCallOS;
+	
 	PyrSlot *caller = g->sp - 1;
 	PyrSlot *boolean = g->sp;
 	
@@ -3780,6 +3790,8 @@
 int prSetMenuItemState(struct VMGlobals *g, int numArgsPushed);
 int prSetMenuItemState(struct VMGlobals *g, int numArgsPushed)
 {
+	if (!g->canCallOS) return errCantCallOS;
+	
 	PyrSlot *caller = g->sp - 1;
 	PyrSlot *boolean = g->sp;
 	
@@ -3796,6 +3808,7 @@
 int prSetMenuItemKeyboardEquivalent(struct VMGlobals *g, int numArgsPushed);
 int prSetMenuItemKeyboardEquivalent(struct VMGlobals *g, int numArgsPushed)
 {
+	if (!g->canCallOS) return errCantCallOS;
 	PyrSlot *caller = g->sp - 3;
 	PyrSlot *stringSlot = g->sp - 2;
 	PyrSlot *alt = g->sp - 1;

Modified: trunk/build/SCClassLibrary/Common/Files/osx/Help_osx.sc
===================================================================
--- trunk/build/SCClassLibrary/Common/Files/osx/Help_osx.sc	2008-12-20 18:14:40 UTC (rev 8224)
+++ trunk/build/SCClassLibrary/Common/Files/osx/Help_osx.sc	2008-12-20 22:54:49 UTC (rev 8225)
@@ -18,6 +18,6 @@
 			};
 			menu
 		};
-		addSubMenu.value(CocoaMenuItem.default, Help.tree, "HelpTree");
+		addSubMenu.value('Help', Help.tree, "Help Tree");
 	}
 }

Modified: trunk/build/SCClassLibrary/Platform/osx/CocoaMenu.sc
===================================================================
--- trunk/build/SCClassLibrary/Platform/osx/CocoaMenu.sc	2008-12-20 18:14:40 UTC (rev 8224)
+++ trunk/build/SCClassLibrary/Platform/osx/CocoaMenu.sc	2008-12-20 22:54:49 UTC (rev 8225)
@@ -1,5 +1,5 @@
 CocoaMenuItem {
-	classvar topLevelItems;
+	classvar <topLevelItems;
 	classvar <default;
 
 	var dataptr;
@@ -15,7 +15,7 @@
 	}
 	
 	*clearCustomItems {
-		topLevelItems.do({|item| item.remove });
+		topLevelItems.copy.do({|item| item.remove });
 	}
 	
 	*initDefaultMenu {
@@ -69,15 +69,17 @@
 		name = argname;
 		action = argaction;
 		isBranch = hasSubmenu;
-		if(parent.notNil) { parent.addChild(this) } { topLevelItems = topLevelItems.add(this) };
 		this.prAddMenuItem(argparent, argindex, argname, hasSubmenu);
+		if(parent.notNil && (parent != 'Help')) { parent.addChild(this) } 
+			{ topLevelItems = topLevelItems.add(this) };
 	}
 	
 	remove {
 		children.copy.do({|child| child.remove}); // cleanup my kids
 		children = nil;
-		parent.notNil.if({parent.removeChild(this)});
+		(parent.notNil && (parent != 'Help')).if({parent.removeChild(this)});
 		this.prRemoveMenuItem;
+		topLevelItems.remove(this);
 	}
 	
 	addChild {|child|

Modified: trunk/build/SCClassLibrary/Platform/osx/OSXPlatform.sc
===================================================================
--- trunk/build/SCClassLibrary/Platform/osx/OSXPlatform.sc	2008-12-20 18:14:40 UTC (rev 8224)
+++ trunk/build/SCClassLibrary/Platform/osx/OSXPlatform.sc	2008-12-20 22:54:49 UTC (rev 8225)
@@ -18,6 +18,7 @@
 		Server.internal.makeWindow;
 		Server.local.makeWindow;
 		this.loadStartupFiles;
+		Help.addToMenu;
 	}
 	shutdown {
 		HIDDeviceService.releaseDeviceList;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

_______________________________________________
sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-dev/
search: https://listarc.bham.ac.uk/lists/sc-dev/search/