From 6c9c62139a9e1ef4606e68608c165694f49633cd Mon Sep 17 00:00:00 2001 From: Jeff Teunissen Date: Wed, 29 May 2002 07:13:42 +0000 Subject: [PATCH] Forge updates: Windows are now remembered and stuff is in general a bit cleaner. Committing this so that the stuff I'm about to write won't totally fubar everything. :) --- tools/Forge/BundleController.h | 4 +- tools/Forge/Controller.h | 16 ++++--- tools/Forge/Controller.m | 79 ++++++++++++++++++++------------- tools/Forge/Forge.classes | 8 +--- tools/Forge/Forge.gorm | Bin 19419 -> 19447 bytes tools/Forge/PrefsController.h | 17 +++---- tools/Forge/PrefsController.m | 60 +++++++++++++++---------- 7 files changed, 105 insertions(+), 79 deletions(-) diff --git a/tools/Forge/BundleController.h b/tools/Forge/BundleController.h index 78a3f1091..1b6280123 100644 --- a/tools/Forge/BundleController.h +++ b/tools/Forge/BundleController.h @@ -36,6 +36,8 @@ #import #import +#import + #import "PrefsController.h" #import "PrefsView.h" @@ -75,7 +77,7 @@ @interface BundleController: NSObject { - id delegate; + IBOutlet id delegate; NSMutableArray *loadedBundles; } diff --git a/tools/Forge/Controller.h b/tools/Forge/Controller.h index 5f721ce5d..ec1df8d7d 100644 --- a/tools/Forge/Controller.h +++ b/tools/Forge/Controller.h @@ -61,12 +61,16 @@ - (void) applicationWillTerminate: (NSNotification *) not; // Action methods -- (IBAction) createNew: (id) sender; -- (IBAction) createNewProject: (id) sender; -- (IBAction) infoPanel: (id) sender; -- (IBAction) open: (id) sender; -- (IBAction) openProject: (id) sender; -- (IBAction) saveProject: (id) sender; - (IBAction) showPreferencesPanel: (id) sender; +// Projects +- (IBAction) newProject: (id) sender; +- (IBAction) openProject: (id) sender; +- (IBAction) saveProject: (id) sender; +- (IBAction) closeProject: (id) sender; + +// Files +- (IBAction) addFileToProject: (id) sender; +- (IBAction) addNewFileToProject: (id) sender; +- (IBAction) open: (id) sender; @end diff --git a/tools/Forge/Controller.m b/tools/Forge/Controller.m index fbbacbccc..8c828d0f9 100644 --- a/tools/Forge/Controller.m +++ b/tools/Forge/Controller.m @@ -37,6 +37,7 @@ static const char rcsid[] = #import #import +#import #import "Controller.h" #import "PrefsController.h" @@ -73,38 +74,9 @@ static const char rcsid[] = return YES; } -/* +/****** Action methods -*/ -- (void) createNew: (id) sender; -{ - NSLog (@"This _would_ create a new file, but it doesn't."); -} - -- (void) createNewProject: (id) sender; -{ - NSLog (@"This _would_ create a new project, but it doesn't."); -} - -- (void) infoPanel: (id) sender; -{ - [NSApp orderFrontStandardAboutPanel: self]; -} - -- (void) open: (id) sender; -{ - NSLog (@"This _would_ open a file, but it doesn't."); -} - -- (void) openProject: (id) sender; -{ - NSLog (@"This _would_ open a project, but it doesn't."); -} - -- (void) saveProject: (id) sender; -{ - NSLog (@"This _would_ save, but it doesn't."); -} +******/ - (void) showPreferencesPanel: (id) sender; { @@ -113,8 +85,49 @@ static const char rcsid[] = } /* - Notifications + Project management */ +- (void) newProject: (id) sender; +{ + NSLog (@"This _will_ create a new project, but it doesn't yet."); +} + +- (void) openProject: (id) sender; +{ + NSLog (@"This _will_ open a project, but it doesn't yet."); +} + +- (void) saveProject: (id) sender; +{ + NSLog (@"This _will_ save the project, but it doesn't yet."); +} + +- (void) closeProject: (id) sender; +{ + NSLog (@"This _will_ close the project, but it doesn't yet."); +} + +/* + File-level stuff. +*/ +- (void) addFileToProject: (id) sender; +{ + NSLog (@"This _will_ copy/move a file into the project, but it doesn't yet."); +} + +- (void) addNewFileToProject: (id) sender; +{ + NSLog (@"This _will_ create a new file, but it doesn't yet."); +} + +- (void) open: (id) sender; +{ + NSLog (@"This _will_ open a file, but it doesn't yet."); +} + +/****** + Notifications +******/ /* applicationDidFinishLaunching: @@ -162,6 +175,8 @@ static const char rcsid[] = ******/ - (void) awakeFromNib { + [window setFrameAutosaveName: @"Project View"]; + [window setFrameUsingName: @"Project View"]; } /****** diff --git a/tools/Forge/Forge.classes b/tools/Forge/Forge.classes index 776c3a8ed..7aa9fb2e4 100644 --- a/tools/Forge/Forge.classes +++ b/tools/Forge/Forge.classes @@ -1,8 +1,5 @@ { BundleController = { - Actions = ( - setDelegate - ); Outlets = ( delegate ); @@ -13,10 +10,9 @@ addFileToProject:, addNewFileToProject:, closeProject:, - createNewProject:, - infoPanel:, + newProject:, + open:, openProject:, - openSelectedFile:, saveProject:, showPreferencesPanel: ); diff --git a/tools/Forge/Forge.gorm b/tools/Forge/Forge.gorm index 1c8ce1a5fb65ae499d31d3b5c0a186c7640ff955..2090683c8e8672bd8b58c51445af97eb3fe7f24c 100644 GIT binary patch delta 4931 zcmai233yc16`u2wnIw}CCd(w5WRjUlCL59XGK3gYB$EtgqsA+^Qj0_~7!VT(5wU8c zfcwIbQ^6g)Xi()(P5s)yJZRQ&TT)tTsl{TkI_Z+C;91GXB!L2vNC2?fo4@tG z(V6C>ik703i9DGJdlx#+jH#rLUu};0@_AxgZj9hqdtKf3v%H} zIUOy?ta(b$)1FYD*3-&}CyB|D)Mv==S>4JbiSZl~l~a1V`_$(!%Ux&PK_1Uzr#lxj z-C4N8?Z$tkG z!}A6${yTj^N_>y-r zWa0PT0^H)w#iM;z_#aO7O@?fo?<_)#;eZprEb)PYS^i0ohtvHzm3bWAv9Y*DIRzvbqzZ4VA|Mej@mJ&ldrut~ z7@%IBg;BrNVKr6(uL1!!-0LrEps zymwL(6wwBFY*9!P;K5y!+~CE7ld41CDL~B~q%M({G0jad-jh^qS@EIBkN}?%o}F9E zE}$5Ds@!Qx6y$A;Dq4b(s)Ay_?oljJ$d1G!Dvc!|pp0h(l;aCkt&R$F9V@Aht(lYJ zRjSgRTDgFu@Ury01Ob!r-lU?D&9A0{wU!=jE|$v0su?MkfB?7I6gqX+;*wgct(;3% z$t5eP9x2&KgthSqry3E~p{=^raf~^_dX6yb*qCY*s$#9!z|pvVVUA{+?ubGS9hm^_ z!)dlUR(qsMs}E}d3bH((|_p9z;6PGjGtn!3BItE-9f0;XIMr#vL!!cofK zNXm=MlovDQCF3b)h0p6-9wy4)GUZ^L@}PiAM=393N?1wnH9jASts2kMeEz^dU#~{V zt;U_x$`juZa5;feYn`@30Cr{jlWQzfwPyreiB;3fZME8d0axM9tdit_rB?e)z|}Eh ziuQ?sYhp$~+biJOm{Ftc5pW$XuS|ST!1b|FRogA#2G+72t9>nCjfC~ub^#HF2~)I( z@zUuPwt%)xzz`4NV51d~<46c-4zcfE)3$U@+J-o*o5yk`QR>uW_Q7L77M?FO_U8s53Wn-aW*4hp{LC6vA)@zK=T-E z&aR=qu}(GK`}ig255~?LpBUP(c33;4(RTh(cN*^+^w_x@Cnxjc=TEr1*-O_SnrmP) zs-Ys=pY^0D!P~)&k2X6~J7=E|?mb`IDBvE9gbIuAHMotpuqfOm;67ty4nI8S2)G|# z3b_(D3D9s~$nDZ~ZxsF#1&!j`!g#ZRx1w)`CutMe0{)7ky`Tdg;OUJ~*hH>>V|*vA zB>Z>A8^|R5Amcm8B>WG?w;OmHBU4UV25$0l6c4E*JqN_IlEEgo{3(nq&E(ciZyJb!?qdy|Q-Fp9T}@#O}7i}7j$zpWQjRfugj?^Vh> zOwR+jp~Z#Y%!+OiPl5l8BGA2kcfd8`-qsaJ%20M5dk1WUT1$+fyjOWgXlj@pLh%@(xZ|O?l_US}Ms)Rt7dHsS%WK!lAbrN#vHvjY z4POv%f2Ekhm@7R?3{QE02j%Iu%A-PjesZGw3*{X9pvZ`alA&~UcegBD96q^kl(dZe z4N~gS*c~IA{X4@K{B%hLEs;l9siY;xlY2^hO^ULtYk8PgP%M+kk?svtmMVig WJ?@vT^oN&+`v*?$n@#@R4gUv{fHnRA delta 5070 zcmai233yXg7JlcoY16dObV=H@X_M}NP?J!WqSB-RN)hTU9Ysf6SfW%)!?Xo-w&IMS zsA%jFQB)Qe932_o17{qaaYS(ko#4JJ?t%j9h_dONb6;BeY`>ZI`||zg-gD1?&VSF% zyD#6bg}2v2Y?y7{1fTr#*WM7g5W+e>lA4`Wp(u*QK_6M_lxWAr5ig!&9ha}D5Q_ys z8KNkQBOMn-I~Il8qMeZm+jML05L{kp!+ixde8aJqF{EwV<-8B@pxrh!U9l-?t?d^@ z#hms?8#d?WY}=M!1}T!lg73IAb*mLu7j%x!?qkkYTjnf{ctuC_lE}O+Z>Y1ny4v@I zZmFcKpwA1`5biE0$V}l8B^HbMcIZyulX#@S3s2!jR|&>*(=t@hHfbAtPt(*h*j$(g z&(hRz|8si2_Kfd&J%eMWa=EF#o#eC2U`g&{NmkEnpC9$TfIAAu;&gX9CcCpBj!ySj z%Wm?237g$cco`SCrxv|J_NxQehog%x^Sy>IxEt~JMd>+~zR(s`%<1fk_};{tqG_JD zX!YC1YFUvKC`FwVX^W80JCt=E4k=E<1BEuryX5;G?kXyR_i=C0Ov?vk@4--U0er~S zxjv%m_V_+Fs!QVPl6;?#&!@P)xC}lcA1{7bT!q(o(lOWLfxTGcnPu5W9$#XN?5|Ms zjI0ji&~~SpwtJ~R5cEx`36Ag8oaOcHr-cXbpr;THGJW>fM1R2djX_VHqiw=1-h8~k zYk}`D;vH3+t5}q@1+DWV69xqI9im|04^**vNo$wy2i)l$1r9vyErr9l+vafud`EPv zk&M%s9$u~}>A~$NN=D}#?LQvu9rru6Bfew(rh?mhr-pZf3fvCm+EL$eze`DLYN_vt zF6)eR&>$#%EOJSGuA&g(I$9lGK+u^^PKx~KH>@i1Uxv-rj>UXGn)c);e}Q6aYH69* z5p8RW;EK{hxEVKKzrX;F&{P!gibWCVb27oZwyDKwp=X9-Bg{pmAM zR1U$+5uRdOn*igrBU#4E~5z=E60MnD1XE^`hq;OuJ$p-C}lRBjzrKq}hHhvg@+ z_m}~-CZQD zEfs4kateEw_fuFvhVBqB1TU@-RyyLUB48*!R#5_(xTnII!C?g0S&S@HD{n2&PB6tt zhCIcpq|J|p+gj%>JkfuFe0;pJBqc|8#9>HJeVLV_0tLy%js8Nct{Ulbn6q{2_C&Tl zfmunGfD3n3xk#z3+OqQ8#J*End3s@AIC@*w=TYvDCRI)+3g>DrJzs!zFU-Jw+pI2kiW7Jv`8q!#z~fuAI7s0f(l8_n|7^vWk-40qhvpB=xn zlo2fGNEWor-z#Wup5yxR9B<@Vi)%(T*e96tJcaYjIW@r^hw4Okp2k_ZCYrOV5_HEAgsb*ZN}RI4fdI4))vY7ivg@> zO4hT?tg}q4&CJ>&SaD`dah)hJ%IH*$$Gw-^#T*?Im~*lWIb;X z)(Z{RIe2JHgMF@scpYh)1C1qN#?-Z`$peuVHcM&7V(qR0{WN4)+@w?x=v@o(T6l z8SeMyaNQhk`M_{9Ba5O-BNXm(4)+Hc?udXto(OjZhl3S-2P*SxM745Yl=>xIUD0-p z%DNJpbIPoKWt{ewfU6S5SnWjts}jZ-ZKr^%anGs4lfM>ljT{XqHQIgw*Cve7+CBlR z*{}qZfc80NPOP*B6ufEyFWXzft}YZ694dqluZ3B#{FBw#HQpuNsQ7bK$=pSD%NEf}h+Nd8v9Is#=W z?EwLs7@`)m zz#VeXuiY!)PJBP;g}Zt}#c(%zLf+)#0ybkfRFZU$o{j561%<1YD||`IlubyFxast? zn^Yg92hX4IwvaoY=6`la+(;hbRe1T>oT7V;wn*kDU$S;wJEk4gXut2%9r7|#0e{9( z*8C&^_hYEuYrCJ~(|syEJQbr>2QIJAfh~ALZcbLTy-VICI|TeiPmR;)?cnYf@W8<4 zXlj`eXX9?Km_bNl1 zTAEtthNJE6^u8A5>#{=6;>`jcq}bRJcDeqld*kpx93G^m{u|>h27U-vggvR7$rkW; z^f$O0ALiM+X*GF1!uT#)NcbO&?vvJfFbgDZ{&WaGVVW?~{zzlSy1pF}|Hl!cQ~4&A`tvzSY3b zGG1rk=NR8&#Ce|a%?94dcrBR}XBXp}$Rzv%<2CVsG+t!mMq}dNjM2bx#ytk!&6(dK z;3X8{TLp}pvjrT(vm43-$E8i#3;5BX>i-;D z)=EEiEEDh(d(o-9Tc`>yZXBKgJV2*%rBGEoxzSUV!~-PGinyu@HJPmyqzW4rHXh_0 z)D+60utiO!{K7In)k?5l3&(_-MkpkajZjdcbV79!We~DSG=z}VSUglOr6pFOX5!kZ z0h^u7IySTL<*DViY%*XkQNlGgA*=wl3AzO;;KWad4z3RNaB3LVJ#$7 z7Z=)HK&Dlz7iyuQPEuccB&l) aPrefsViewController; +- (IBAction) orderFrontPreferencesPanel: (id) sender; +- (IBAction) addPrefsViewController: (id ) aPrefsViewController; -- (void) savePreferences: (id) sender; -- (void) savePreferencesAndCloseWindow: (id) sender; +- (IBAction) savePreferences: (id) sender; +- (IBAction) savePreferencesAndCloseWindow: (id) sender; -- (void) loadPreferences: (id) sender; -- (void) resetToDefaults: (id) sender; +- (IBAction) loadPreferences: (id) sender; +- (IBAction) resetToDefaults: (id) sender; - (NSBox *) prefsViewBox; @end diff --git a/tools/Forge/PrefsController.m b/tools/Forge/PrefsController.m index cbbd09e9f..1e5fe24dd 100644 --- a/tools/Forge/PrefsController.m +++ b/tools/Forge/PrefsController.m @@ -47,11 +47,21 @@ static const char rcsid[] = static PrefsController *sharedInstance = nil; static NSMutableArray *prefsViews = nil; +/* + sharedPrefsController + + Returns the shared instance +*/ + (PrefsController *) sharedPrefsController { return (sharedInstance ? sharedInstance : [[self alloc] init]); } +/* + init + + Ensures that there is only one global instance of the class +*/ - (id) init { if (sharedInstance) { @@ -65,28 +75,28 @@ static NSMutableArray *prefsViews = nil; return sharedInstance; } +/* + awakeFromNib + + Initialize stuff that can't be set in the nib/gorm file. +*/ - (void) awakeFromNib { - NSButtonCell *prototype; + // Let the systen keep track of where it belongs + [window setFrameAutosaveName: @"Preferences"]; + [window setFrameUsingName: @"Preferences"]; // keep the window out of the menu until it's seen [window setExcludedFromWindowsMenu: YES]; - if (iconList) + if (iconList) // stop processing if we already have an icon list return; - /* Prototype button for the matrix */ - prototype = [[[NSButtonCell alloc] init] autorelease]; - [prototype setButtonType: NSPushOnPushOffButton]; - [prototype setImagePosition: NSImageOverlaps]; - - /* What is the matrix? */ + /* What is the matrix? :) */ iconList = [[NSMatrix alloc] initWithFrame: NSMakeRect (0, 0, 64, 64)]; + [iconList setCellClass: [NSButtonCell class]]; [iconList setCellSize: NSMakeSize (64, 64)]; [iconList setMode: NSRadioModeMatrix]; - [iconList setPrototype: prototype]; - [iconList setTarget: self]; - [iconList setAction: @selector(cellWasClicked:)]; [scrollView setHasHorizontalScroller: YES]; [scrollView setHasVerticalScroller: NO]; @@ -101,24 +111,24 @@ static NSMutableArray *prefsViews = nil; [super dealloc]; } -- (void) windowWillClose: (NSNotification *) aNotification -{ -} +/* + orderFrontPreferencesPanel: -- (void) orderFrontPreferencesPanel: (id) sender + Display our window +*/ +- (IBAction) orderFrontPreferencesPanel: (id) sender { [window setExcludedFromWindowsMenu: NO]; [window makeKeyAndOrderFront: self]; - return; } -- (void) savePreferencesAndCloseWindow: (id) sender +- (IBAction) savePreferencesAndCloseWindow: (id) sender { [self savePreferences: self]; [window close]; } -- (void) savePreferences: (id) sender +- (IBAction) savePreferences: (id) sender { NSEnumerator *enumerator = [prefsViews objectEnumerator]; id current; @@ -131,7 +141,7 @@ static NSMutableArray *prefsViews = nil; [[NSUserDefaults standardUserDefaults] synchronize]; } -- (void) loadPreferences: (id) sender +- (IBAction) loadPreferences: (id) sender { NSEnumerator *enumerator = [prefsViews objectEnumerator]; id current; @@ -144,7 +154,7 @@ static NSMutableArray *prefsViews = nil; [[NSUserDefaults standardUserDefaults] synchronize]; } -- (void) resetToDefaults: (id) sender +- (IBAction) resetToDefaults: (id) sender { NSEnumerator *enumerator = [prefsViews objectEnumerator]; id current; @@ -157,7 +167,13 @@ static NSMutableArray *prefsViews = nil; [[NSUserDefaults standardUserDefaults] synchronize]; } -- (void) addPrefsViewController: (id ) aController; +/* + addPrefsViewController: + + Add a prefs view controller to our list, if it hasn't been added already. + Also, create an icon for the matrix. +*/ +- (IBAction) addPrefsViewController: (id ) aController; { NSButtonCell *button = [[NSButtonCell alloc] init]; @@ -175,8 +191,6 @@ static NSMutableArray *prefsViews = nil; [iconList addColumnWithCells: [NSArray arrayWithObject: button]]; [iconList sizeToCells]; - [iconList setNeedsDisplay: YES]; -// [prefsPanel addPrefsViewButton: controller]; } - (NSBox *) prefsViewBox