1 #import <defaults/defaults.h>
3 #import "gnuviewController.h"
7 @implementation Controller
20 static NXDefaultsVector GnuTermDefaults = {
23 {"Backing", "Buffered"},
28 activeTerm = keyTerm = nil;
30 myConnection = [NXConnection registerRoot:self withName:"gnuplotServer"];
31 [myConnection runFromAppKit];
33 prInfo = [NXApp printInfo];
34 paperRect = (NXRect *) [prInfo paperRect];
35 [prInfo setOrientation:NX_LANDSCAPE andAdjust:YES];
36 [prInfo setHorizCentered:YES];
37 [prInfo setVertCentered:YES];
39 /* Get user Preferences */
40 NXRegisterDefaults("GnuTerm", GnuTermDefaults);
42 [DefaultSize setStringValue:NXGetDefaultValue("GnuTerm","Width") at:0];
43 [DefaultSize setStringValue:NXGetDefaultValue("GnuTerm","Height") at:1];
45 if (!strcmp(NXGetDefaultValue("GnuTerm","Backing"), "Buffered")) {
46 backing = NX_BUFFERED;
47 [useBufferedSwitch setState:YES];
50 backing = NX_RETAINED;
51 [useBufferedSwitch setState:NO];
54 gvList = [[List new] initCount:10];
63 if ([gvList indexOf:keyTerm] != NX_NOT_IN_LIST) {
64 [[keyTerm window] getFrame: &frame];
69 NX_WIDTH(&frame) = atof(NXGetDefaultValue("GnuTerm","Width"));
70 NX_HEIGHT(&frame) = atof(NXGetDefaultValue("GnuTerm","Height"));
75 if ([NXApp loadNibSection: "gnuview.nib" owner: self] == nil) {
78 // fprintf(stderr,"newGnuTerm: %g x %g\n",NX_WIDTH(&frame),NX_HEIGHT(&frame));
80 [[activeTerm window] setBackingType:backing];
81 [[activeTerm window] placeWindowAndDisplay: &frame];
82 [self setKeyTerm:activeTerm];
84 [gvList addObject:activeTerm];
91 - setActiveTerm:(id) newTerm
93 if (activeTerm != nil) [activeTerm deactivate:self];
96 [activeTerm GVactivate:self];
101 - printPScodeInKey:sender
103 [[keyTerm gnuView] printPSCode:sender];
114 [NameField setStringValue:[[keyTerm window] title]];
115 [NameField selectText:self];
122 [[keyTerm window] setTitle:[NameField stringValue]];
123 [[NameField window] performClose:self];
127 - executePScode:(char *)PSstring termTitle:(char *)title
133 //fprintf(stderr, "Request for window: %s\n", title);
136 /* If the window exists, use it */
137 cnt = [gvList count];
138 for (i=0; i < cnt; ++i) {
139 test = [gvList objectAt:i];
140 if ( !strcmp([[test window] title], title)) {
141 if (test != activeTerm) [self setActiveTerm:test];
145 /* O.K., it doesn't exist, what now? */
147 [self newGnuTerm:self];
148 [[activeTerm window] setTitle: title];
152 if (activeTerm == nil) {
153 [self newGnuTerm:self];
154 sprintf(buf, "gnuplot %d", wcnt);
155 [[activeTerm window] setTitle: buf];
160 [[activeTerm window] makeKeyAndOrderFront: nil];
161 [[activeTerm gnuView] executePS:PSstring];
166 - termWillClose:sender
168 [gvList removeObject:sender];
169 if (activeTerm == sender) activeTerm =nil;
174 - setDefaultGTSize:sender
178 if (sender == useKeyButton) {
179 fprintf(stderr, "useKey\n");
180 if ([gvList indexOf:keyTerm] != NX_NOT_IN_LIST) {
181 [[keyTerm window] getFrame: &frame];
182 [DefaultSize setFloatValue:NX_WIDTH(&frame) at:0];
183 [DefaultSize setFloatValue:NX_HEIGHT(&frame) at:1];
187 NXWriteDefault("GnuTerm", "Width", [DefaultSize stringValueAt:0]);
188 NXWriteDefault("GnuTerm", "Height", [DefaultSize stringValueAt:1]);
191 fprintf(stderr, "setDefaultGTSize: %s x %s\n",
192 [DefaultSize stringValueAt:0],[DefaultSize stringValueAt:1]);
197 - setUseBuffered:sender
199 if ([sender state] == YES) {
200 backing = NX_BUFFERED;
201 NXWriteDefault("GnuTerm", "Backing", "Buffered");
204 backing = NX_RETAINED;
205 NXWriteDefault("GnuTerm", "Backing", "Retained");
207 [[activeTerm window] setBackingType:backing];
216 while([gvList count]) [[[gvList objectAt:0] window] performClose:self];
219 - miniaturizeAll:sender
223 cnt = [gvList count];
225 for (i=0; i < cnt; ++i)
226 [[[gvList objectAt:i] window] performMiniaturize:self];