Improvements in menu handling.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/gorm/trunk@18875 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Gregory John Casamento 2004-03-24 03:08:02 +00:00
parent fcad438bad
commit 8861f4f3c7
8 changed files with 113 additions and 16 deletions

View file

@ -1,3 +1,12 @@
2004-03-23 22:01 Gregory John Casamento <greg_casamento@yahoo.com>
* Palettes/0Menus/GormMenuEditor.m: Added code to recursivly
add all of the items and submenus to the document.
* Palettes/0Menus/main.m: Added code to allow user to drag a new
menu to the document.
* Palettes/0Menus/GormMenuDrag.tiff: Image for menu to drag
* Images/GormMenu.tiff: New image.
2004-03-21 23:15 Gregory John Casamento <greg_casamento@yahoo.com>
* GormDocument.[hm]: added [GormDocument _instantiateFontManager]

View file

@ -309,9 +309,20 @@ static NSImage *classesImage = nil;
}
}
/*
* Add the current menu and any submenus.
*/
if ([anObject isKindOfClass: [NSMenu class]] == YES)
{
// NSArray *menus = findAllMenus(anObject);
// NSEnumerator *en = [menus objectEnumerator];
// id obj = nil;
[[self openEditorForObject: anObject] activate];
// while((obj = [en nextObject]) != nil)
// {
// [[self openEditorForObject: obj] activate];
// }
}
/*
@ -709,7 +720,6 @@ static NSImage *classesImage = nil;
while ((obj = [enumerator nextObject]) != nil)
{
id editor = [self editorForObject: obj create: NO];
if (editor != nil)
{
[editors addObject: editor];

View file

@ -197,7 +197,8 @@ static NSImage *dragImage = nil;
event: theEvent
pasteboard: pb
source: self
slideBack: [type isEqual: IBWindowPboardType] ? NO : YES];
slideBack: ([type isEqual: IBWindowPboardType] ||
[type isEqual: IBMenuPboardType]) ? NO : YES];
}
@end

Binary file not shown.

View file

@ -33,6 +33,7 @@ PALETTE_NAME = 0Menus
0Menus_PRINCIPAL_CLASS = MenusPalette
0Menus_RESOURCE_FILES = MenusPalette.tiff \
GormMenuDrag.tiff \
GormMenuAttributesInspector.gorm \
GormMenuItemAttributesInspector.gorm

Binary file not shown.

View file

@ -631,6 +631,32 @@
return edited;
}
// find all subitems for the given items...
void _attachAllSubmenus(id menu, NSArray *items, id document)
{
NSEnumerator *e = [items objectEnumerator];
id i = nil;
while((i = [e nextObject]) != nil)
{
[document attachObject: i toParent: menu];
if([i hasSubmenu])
{
id submenu = [i submenu];
NSArray *submenuItems = [submenu itemArray];
[document attachObject: submenu toParent: i];
_attachAllSubmenus(submenu, submenuItems, document);
}
}
}
void _attachAll(NSMenu *menu, id document)
{
NSArray *items = [menu itemArray];
_attachAllSubmenus(menu, items, document);
}
- (id) initWithObject: (id)anObject inDocument: (id<IBDocuments>)aDocument
{
self = [super init];
@ -647,7 +673,8 @@
/*
* Make sure that all our menu items are attached in the document.
*/
[document attachObjects: [edited itemArray] toParent: edited];
_attachAll(edited, document);
// [document attachObjects: [edited itemArray] toParent: edited];
return self;
}
@ -926,6 +953,7 @@
ASSIGN(subeditor, editor);
}
}
/*
* Now we must let the document (and hence the rest of the app) know
* about our new selection. If there is nothing in it, make sure

View file

@ -26,6 +26,34 @@
#include <InterfaceBuilder/InterfaceBuilder.h>
#include "GormNSMenu.h"
@interface GormMenuMaker : NSObject <NSCoding>
{
}
@end
@implementation GormMenuMaker
- (void) encodeWithCoder: (NSCoder *)coder
{
}
- (id) initWithCoder: (NSCoder *)coder
{
NSMenu *m = [[GormNSMenu alloc] init];
// build the menu..
[m setTitle: _(@"Main Menu")];
[m addItemWithTitle: _(@"Hide")
action: @selector(hide:)
keyEquivalent: @"h"];
[m addItemWithTitle: _(@"Quit")
action: @selector(terminate:)
keyEquivalent: @"q"];
RELEASE(self);
return m;
}
@end
@interface MenusPalette: IBPalette
{
}
@ -40,6 +68,11 @@
NSMenu *m;
NSMenu *s;
NSButton *b;
id menu;
id v;
NSBundle *bundle = [NSBundle bundleForClass: [self class]];
NSString *path = [bundle pathForImageResource: @"GormMenuDrag"];
NSImage *dragImage = [[NSImage alloc] initWithContentsOfFile: path];
window = [[NSWindow alloc] initWithContentRect: NSMakeRect(0, 0, 272, 192)
styleMask: NSBorderlessWindowMask
@ -67,7 +100,7 @@
keyEquivalent: @""];
[i setSubmenu: m];
b = [[NSButton alloc] initWithFrame: NSMakeRect(30, 140, 100, 20)];
b = [[NSButton alloc] initWithFrame: NSMakeRect(30, 160, 100, 20)];
[b setImage: [NSImage imageNamed: @"common_3DArrowRight"]];
[b setAlignment: NSLeftTextAlignment];
[b setImagePosition: NSImageRight];
@ -118,7 +151,7 @@
keyEquivalent: @""];
[i setSubmenu: m];
b = [[NSButton alloc] initWithFrame: NSMakeRect(145, 140, 100, 20)];
b = [[NSButton alloc] initWithFrame: NSMakeRect(145, 160, 100, 20)];
[b setImage: [NSImage imageNamed: @"common_3DArrowRight"]];
[b setAlignment: NSLeftTextAlignment];
[b setImagePosition: NSImageRight];
@ -166,7 +199,7 @@
keyEquivalent: @""];
[i setSubmenu: m];
b = [[NSButton alloc] initWithFrame: NSMakeRect(30, 120, 100, 20)];
b = [[NSButton alloc] initWithFrame: NSMakeRect(30, 140, 100, 20)];
[b setImage: [NSImage imageNamed: @"common_3DArrowRight"]];
[b setAlignment: NSLeftTextAlignment];
[b setImagePosition: NSImageRight];
@ -208,7 +241,7 @@
keyEquivalent: @""];
[i setSubmenu: m];
b = [[NSButton alloc] initWithFrame: NSMakeRect(145, 120, 100, 20)];
b = [[NSButton alloc] initWithFrame: NSMakeRect(145, 140, 100, 20)];
[b setImage: [NSImage imageNamed: @"common_3DArrowRight"]];
[b setAlignment: NSLeftTextAlignment];
[b setImagePosition: NSImageRight];
@ -244,7 +277,7 @@
keyEquivalent: @""];
[i setSubmenu: m];
b = [[NSButton alloc] initWithFrame: NSMakeRect(30, 100, 100, 20)];
b = [[NSButton alloc] initWithFrame: NSMakeRect(30, 120, 100, 20)];
[b setImage: [NSImage imageNamed: @"common_3DArrowRight"]];
[b setAlignment: NSLeftTextAlignment];
[b setImagePosition: NSImageRight];
@ -283,7 +316,7 @@
keyEquivalent: @""];
[i setSubmenu: m];
b = [[NSButton alloc] initWithFrame: NSMakeRect(145, 100, 100, 20)];
b = [[NSButton alloc] initWithFrame: NSMakeRect(145, 120, 100, 20)];
[b setImage: [NSImage imageNamed: @"common_3DArrowRight"]];
[b setAlignment: NSLeftTextAlignment];
[b setImagePosition: NSImageRight];
@ -375,7 +408,7 @@
keyEquivalent: @""];
[i setSubmenu: m];
b = [[NSButton alloc] initWithFrame: NSMakeRect(30, 80, 100, 20)];
b = [[NSButton alloc] initWithFrame: NSMakeRect(30, 100, 100, 20)];
[b setImage: [NSImage imageNamed: @"common_3DArrowRight"]];
[b setAlignment: NSLeftTextAlignment];
[b setImagePosition: NSImageRight];
@ -396,7 +429,7 @@
action: @selector(orderFrontColorPanel:)
keyEquivalent: @""];
b = [[NSButton alloc] initWithFrame: NSMakeRect(145, 80, 100, 20)];
b = [[NSButton alloc] initWithFrame: NSMakeRect(145, 100, 100, 20)];
[b setAlignment: NSLeftTextAlignment];
[b setTitle: @" Colors..."];
[contents addSubview: b];
@ -426,7 +459,7 @@
keyEquivalent: @""];
[i setSubmenu: m];
b = [[NSButton alloc] initWithFrame: NSMakeRect(30, 60, 100, 20)];
b = [[NSButton alloc] initWithFrame: NSMakeRect(30, 80, 100, 20)];
[b setImage: [NSImage imageNamed: @"common_3DArrowRight"]];
[b setAlignment: NSLeftTextAlignment];
[b setImagePosition: NSImageRight];
@ -447,7 +480,7 @@
action: NULL
keyEquivalent: @""];
b = [[NSButton alloc] initWithFrame: NSMakeRect(145, 60, 100, 20)];
b = [[NSButton alloc] initWithFrame: NSMakeRect(145, 80, 100, 20)];
[b setAlignment: NSLeftTextAlignment];
[b setTitle: @" Item"];
[contents addSubview: b];
@ -468,7 +501,7 @@
keyEquivalent: @""];
[i setSubmenu: m];
b = [[NSButton alloc] initWithFrame: NSMakeRect(30, 40, 100, 20)];
b = [[NSButton alloc] initWithFrame: NSMakeRect(30, 60, 100, 20)];
[b setImage: [NSImage imageNamed: @"common_3DArrowRight"]];
[b setAlignment: NSLeftTextAlignment];
[b setImagePosition: NSImageRight];
@ -495,7 +528,7 @@
keyEquivalent: @""];
[i setSubmenu: m];
b = [[NSButton alloc] initWithFrame: NSMakeRect(145, 40, 100, 20)];
b = [[NSButton alloc] initWithFrame: NSMakeRect(145, 60, 100, 20)];
[b setImage: [NSImage imageNamed: @"common_3DArrowRight"]];
[b setAlignment: NSLeftTextAlignment];
[b setImagePosition: NSImageRight];
@ -508,6 +541,21 @@
RELEASE(i);
RELEASE(m);
/*
* A whole new menu...
*/
menu = [GormMenuMaker new];
v = [[NSButton alloc] initWithFrame: NSMakeRect(148,6,48,48)];
[v setBordered: NO];
[v setImage: dragImage];
[v setImagePosition: NSImageOverlaps];
[v setTitle: nil];
[contents addSubview: v];
[self associateObject: menu
type: IBMenuPboardType
with: v];
RELEASE(v);
RELEASE(menu);
}
@end