Added support for deleting LSTBs using the "Clear" menu item. Also added general support for cut/copy/paste/clear menu items to template fields.

This commit is contained in:
Uli Kusterer 2003-08-10 02:53:38 +02:00
parent c3dfaeef25
commit c01540cbe8
8 changed files with 91 additions and 3 deletions

View File

@ -7,7 +7,7 @@
<key>IBEditorPositions</key>
<dict>
<key>23</key>
<string>412 326 270 342 0 0 1024 746 </string>
<string>379 326 270 342 0 0 1024 746 </string>
</dict>
<key>IBFramework Version</key>
<string>326.0</string>

View File

@ -0,0 +1,2 @@
/* Name we give the "Create New Resource..." menu item: */
"Create List Entry" = "Create List Entry";

View File

@ -83,5 +83,11 @@
}
-(IBAction) clear: (id)sender
{
[containing removeObject: self];
[self autorelease];
}
@end

View File

@ -40,6 +40,7 @@
NSMutableArray* templateStructure; // Pre-parsed form of our template.
NSMutableArray* resourceStructure; // Parsed form of our resource.
id <ResKnifeResourceProtocol> resource; // The resource we operate on.
NSMenuItem* createFieldItem; // "Create Resource" menu item we usurp to create list items.
}
-(void) readTemplate: (id <ResKnifeResourceProtocol>)tmplRes;
@ -48,6 +49,10 @@
-(void) writeResData;
-(IBAction) showCreateResourceSheet: (id)sender;
-(IBAction) cut: (id)sender;
-(IBAction) copy: (id)sender;
-(IBAction) paste: (id)sender;
-(IBAction) clear: (id)sender;
@end

View File

@ -65,6 +65,7 @@
return self;
}
createFieldItem = nil;
resource = [newResource retain];
templateStructure = [[NSMutableArray alloc] init];
resourceStructure = [[NSMutableArray alloc] init];
@ -248,6 +249,42 @@
}
-(IBAction) cut: (id)sender;
{
NuTemplateElement *selItem = (NuTemplateElement*) [dataList selectedItem];
[selItem cut: sender]; // Let selected item do its magic.
[dataList reloadData]; // Update our display.
}
-(IBAction) copy: (id)sender;
{
NuTemplateElement *selItem = (NuTemplateElement*) [dataList selectedItem];
[selItem copy: sender]; // Let selected item do its magic.
[dataList reloadData]; // Update our display.
}
-(IBAction) paste: (id)sender;
{
NuTemplateElement *selItem = (NuTemplateElement*) [dataList selectedItem];
[selItem paste: sender]; // Let selected item do its magic.
[dataList reloadData]; // Update our display.
}
-(IBAction) clear: (id)sender;
{
NuTemplateElement *selItem = (NuTemplateElement*) [dataList selectedItem];
[selItem clear: sender]; // Let selected item do its magic.
[dataList reloadData]; // Update our display.
}
/* showCreateResourceSheet: we mis-use this menu item for creating new template fields.
This works by selecting an item that serves as a template (another LSTB), or knows
how to create an item (LSTE) and passing the message on to it. */
@ -264,14 +301,38 @@
-(BOOL) validateMenuItem: (NSMenuItem*)item
{
NuTemplateElement *selItem = (NuTemplateElement*) [dataList selectedItem];
NuTemplateElement *selElement = (NuTemplateElement*) [dataList selectedItem];
if( [item action] == @selector(showCreateResourceSheet:) )
return( selItem != nil && [selItem respondsToSelector: @selector(showCreateResourceSheet:)] );
{
createFieldItem = item;
[item setTitle: NSLocalizedString(@"Create List Entry",@"")];
return( selElement != nil && [selElement respondsToSelector: @selector(showCreateResourceSheet:)] );
}
else if( [item action] == @selector(cut:) )
return( selElement != nil && [selElement respondsToSelector: @selector(cut:)] );
else if( [item action] == @selector(copy:) )
return( selElement != nil && [selElement respondsToSelector: @selector(copy:)] );
else if( [item action] == @selector(paste:) && selElement != nil
&& [selElement respondsToSelector: @selector(validateMenuItem:)] )
return( [selElement validateMenuItem: item] );
else if( [item action] == @selector(clear:) )
return( selElement != nil && [selElement respondsToSelector: @selector(clear:)] );
else return [super validateMenuItem:item];
}
-(void) windowDidResignKey: (NSNotification*)notification
{
if( createFieldItem )
{
[createFieldItem setTitle: NSLocalizedString(@"Create New Resource...",@"")];
createFieldItem = nil;
}
}
-(BOOL) windowShouldClose: (id)sender // Window delegate.
{
[self writeResData]; // Save resource.

View File

@ -258,6 +258,7 @@
3D0933BF04DF151C00DD74B1,
3D0933EB04DF319F00DD74B1,
3D0B38B504DEF465005AED5E,
3D2EE5E204E5C56F00515930,
);
isa = PBXGroup;
path = NuTemplateEditor;
@ -313,6 +314,7 @@
files = (
3D0B38C204DEF5E5005AED5E,
3D0933F504DFD7CF00DD74B1,
3D2EE5E304E5C56F00515930,
);
isa = PBXResourcesBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
@ -461,6 +463,18 @@
settings = {
};
};
3D2EE5E204E5C56F00515930 = {
fileEncoding = 4;
isa = PBXFileReference;
path = Localizable.strings;
refType = 4;
};
3D2EE5E304E5C56F00515930 = {
fileRef = 3D2EE5E204E5C56F00515930;
isa = PBXBuildFile;
settings = {
};
};
3D3292F604DC1980008C719F = {
fileRef = 3D3B99B104DC15600056861E;
isa = PBXBuildFile;