From c01540cbe884918344853d6eff747a393eadcbcf Mon Sep 17 00:00:00 2001 From: Uli Kusterer Date: Sun, 10 Aug 2003 02:53:38 +0200 Subject: [PATCH] Added support for deleting LSTBs using the "Clear" menu item. Also added general support for cut/copy/paste/clear menu items to template fields. --- Cocoa/English.lproj/Localizable.strings | Bin 3052 -> 3338 bytes .../NuTemplateWindow.nib/info.nib | 2 +- .../NuTemplateWindow.nib/objects.nib | Bin 3288 -> 3288 bytes NuTemplateEditor/Localizable.strings | 2 + NuTemplateEditor/NuTemplateLSTBElement.m | 6 ++ NuTemplateEditor/NuTemplateWindowController.h | 5 ++ NuTemplateEditor/NuTemplateWindowController.m | 65 +++++++++++++++++- ResKnife.pbproj/project.pbxproj | 14 ++++ 8 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 NuTemplateEditor/Localizable.strings diff --git a/Cocoa/English.lproj/Localizable.strings b/Cocoa/English.lproj/Localizable.strings index dd8f764bed991d567ad9b9d00211c4e922803f74..b844bf166db7603d8315d9b3a5b2b0147ee8852b 100644 GIT binary patch delta 197 zcmaDO-X*o+4Yv>j7ZB<*XfY@-1T*9_hQE0rOI zArr{TXD9;8IBEditorPositions 23 - 412 326 270 342 0 0 1024 746 + 379 326 270 342 0 0 1024 746 IBFramework Version 326.0 diff --git a/NuTemplateEditor/English.lproj/NuTemplateWindow.nib/objects.nib b/NuTemplateEditor/English.lproj/NuTemplateWindow.nib/objects.nib index f5a817d1ab2b853a8bf2a535fa0522596223bcbb..38eb30459973dee4d5fbd8306a6a653cbe6c2045 100644 GIT binary patch delta 1561 zcmZuxO>7%Q6rSn^H)t3SogTv_U;Uk#Lnt96+wUjx4!x>NrH4 z%$nWp5tva{F{o85l%`Niw8XNKC?Y=!h$3YUL5N78tu1pvf~XbYU~ve%*8^H0 zdT-zNee>S8yXIT-ef$Oer?&CVomotS4lfBvJW=>9*Tll%076J1d0B`?{piD&-yS_LH@q831jEThJT4~v6KDddL|!2IYzBRR z(3AofmeAi4THK8gUx|e`Z9>feOg#GA>;yI{r;N%4sFY{2n8>pHmiuh*Tg%7y^gjRWQYBRBV*f)G}-W*e&c z>Td8rW2X^DitGvm0@0`w7Qa8Xd>1D0T>bNO*4|f3vZ`QPr9$m-=jx9tMsT#8MkV_T z^q}MDOSg#v_|PmHDe`vJoejP^l1e28(O0CD&2)og~w+?P8^3Dj|B`m^oD z_Oe_*JRFMwe;^>C?|nFMDV1G77TDGq{t^Z z+JAL+%LCPSO%LE!2~TnlzzR}L0o#@D-AZnIfLAVTdEi^JzH{1ml8+RpC*5S-1R{EM z+*S@!oZ~)!tT7Pzhb{SBl7w$oXK%?dFq#ibcv`|eoPqB~v+e=TALLKy!8&>Hjb(=P zBW}qaNcD~0c_)NGP=I=i+CMtjW8O*^R4_y%Bs)SaWB;j}Y z%C$_5w29Dl>UOle_UjE*zIrXw+`Ab-*Ogm}asy@oY?H_|i>{J2?w_CBijr9kAY{_0 zW*$T1bS+^zZ`Ss?R&rXoq;2S0VT?}IpFCMCX?ju1<+V~JyGzT0 zu3grLc`6Yfxj3k5I>cO7%mC6h=!$c{O)Jn#PH#GImYDwvo*{K_4lv=rVny zq3g}fX6E&=wS8=*oo(!A6)$r?$;L1%cCk_mJ93Qe*~<<+!wwu}txvP^0hWD=`8rr( d58HQy>D{dJFzfDN?FU(|jpbXj$LV~7?>_-do9+Mr delta 1545 zcmZuxTWlLe6rJ%Sacn1!n@4MsHl__NZOSvMP%R`ZN)R7y`r#^-`T;WbI<>gkE9EC}XV)esWLGmI zpP75^J@;}%jPvMf8sLod#VVk(KQ5Unsfj1XGL z!P8}z(7S$w_)IjCL^vbelJalSC48NWbLSj0eoWyzhQ`?Aj zL0+V8>rmF9lJLh~kA$5F@fp$@WEy13k&)R49^8B@#k9FpuVu zLgbsIRG39?H>$!C9+2>557Y(oHmYkt^TucC>+{%%{F0Qy5PAbb<;4Q#V!h*`GrZPU zgm6?yPsD}H;OAtih2P-ynlo843nfKGfren7vbn`I+~R|F+a|nCm8cu`yS=1D|7ah~ z@}@1o_>O!J>k?U(?J;=bPG?Wg>`hRwv{qL%a(E$!(J6B^1Qvm#`1OxDgs@UD%`pmW zJ;(FFt09bXvMU%2#$q0r0)hCgWe{&61wwzdAEzPvm`$--?$As2XWe&xRxko}MRlb} z|8~6EQOVnQPZW*DI>xN>#Sh;9a1Xuc7@|FGN9mNMuib29jecd>hbwf=;?Hu#PS&_j zwU$0g=v%NH-Q$*{d!*JZk6T{jKAp>)z5cJmt&vzle@Upq9fo;_$VBY7Er+u_bj#r% z$a+f=1_gHvRlH=~EP?1vGXZRD@#-G%(P%P}*>*8aXB$Ecj^17gWp7K^#%cIU>Oisv z<4U~K>9xJ`;30f!gZAg}?{uiG|CoLm zaa%FyB&*!%U%a{8?Cl^zW|U&?BiPqfy{6XZRIN(2j$^xOb+x3aWli1C)ncj8sTQc; z*^5``l(XmXoSe_QUydh)L(~4#nWT_b)G9z-XN2 resource; // The resource we operate on. + NSMenuItem* createFieldItem; // "Create Resource" menu item we usurp to create list items. } -(void) readTemplate: (id )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 diff --git a/NuTemplateEditor/NuTemplateWindowController.m b/NuTemplateEditor/NuTemplateWindowController.m index 83495b8..4420707 100644 --- a/NuTemplateEditor/NuTemplateWindowController.m +++ b/NuTemplateEditor/NuTemplateWindowController.m @@ -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. diff --git a/ResKnife.pbproj/project.pbxproj b/ResKnife.pbproj/project.pbxproj index cdbd684..00965de 100644 --- a/ResKnife.pbproj/project.pbxproj +++ b/ResKnife.pbproj/project.pbxproj @@ -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;