[BACK]Return to Controller.m CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gnuplot / NeXT

Annotation of OpenXM_contrib/gnuplot/NeXT/Controller.m, Revision 1.1.1.1

1.1       maekawa     1: #import <defaults/defaults.h>
                      2: #import "Controller.h"
                      3: #import "gnuviewController.h"
                      4: #import "GnuView.h"
                      5:
                      6:
                      7: @implementation Controller
                      8:
                      9: - (id) activeTerm
                     10: {
                     11:        return activeTerm;
                     12: }
                     13:
                     14:
                     15: - appDidInit:sender
                     16: {
                     17:        id prInfo;
                     18:        NXRect *paperRect;
                     19:
                     20:        static NXDefaultsVector GnuTermDefaults = {
                     21:                {"Width", "400"},
                     22:                {"Height", "300"},
                     23:                {"Backing", "Buffered"},
                     24:                {NULL}
                     25:        };
                     26:
                     27:
                     28:        activeTerm = keyTerm = nil;
                     29:
                     30:        myConnection = [NXConnection registerRoot:self withName:"gnuplotServer"];
                     31:        [myConnection runFromAppKit];
                     32:
                     33:        prInfo = [NXApp printInfo];
                     34:        paperRect = (NXRect *) [prInfo paperRect];
                     35:        [prInfo setOrientation:NX_LANDSCAPE andAdjust:YES];
                     36:        [prInfo setHorizCentered:YES];
                     37:        [prInfo setVertCentered:YES];
                     38:
                     39:                                                                /* Get user Preferences */
                     40:        NXRegisterDefaults("GnuTerm", GnuTermDefaults);
                     41:
                     42:        [DefaultSize setStringValue:NXGetDefaultValue("GnuTerm","Width") at:0];
                     43:        [DefaultSize setStringValue:NXGetDefaultValue("GnuTerm","Height") at:1];
                     44:
                     45:        if (!strcmp(NXGetDefaultValue("GnuTerm","Backing"), "Buffered")) {
                     46:                backing = NX_BUFFERED;
                     47:                [useBufferedSwitch setState:YES];
                     48:        }
                     49:        else {
                     50:                backing = NX_RETAINED;
                     51:                [useBufferedSwitch setState:NO];
                     52:        }
                     53:
                     54:        gvList = [[List new] initCount:10];
                     55:
                     56:        return self;
                     57: }
                     58:
                     59: - newGnuTerm:sender
                     60: {
                     61:        NXRect frame;
                     62:
                     63:        if ([gvList indexOf:keyTerm] != NX_NOT_IN_LIST) {
                     64:                [[keyTerm window] getFrame: &frame];
                     65:                NX_X(&frame) += 24;
                     66:                NX_Y(&frame) -= 24;
                     67:        }
                     68:        else {
                     69:                NX_WIDTH(&frame) =      atof(NXGetDefaultValue("GnuTerm","Width"));
                     70:                NX_HEIGHT(&frame) = atof(NXGetDefaultValue("GnuTerm","Height"));
                     71:                NX_X(&frame) = 200;
                     72:                NX_Y(&frame) = 350;
                     73:        }
                     74:
                     75:        if ([NXApp loadNibSection: "gnuview.nib" owner: self] == nil) {
                     76:                return nil;
                     77:        }
                     78: //     fprintf(stderr,"newGnuTerm: %g x %g\n",NX_WIDTH(&frame),NX_HEIGHT(&frame));
                     79:
                     80:        [[activeTerm window] setBackingType:backing];
                     81:        [[activeTerm window] placeWindowAndDisplay: &frame];
                     82:        [self setKeyTerm:activeTerm];
                     83:
                     84:        [gvList addObject:activeTerm];
                     85:        ++wcnt;
                     86:
                     87:        return activeTerm;
                     88: }
                     89:
                     90:
                     91: - setActiveTerm:(id) newTerm
                     92: {
                     93:        if (activeTerm != nil) [activeTerm deactivate:self];
                     94:
                     95:        activeTerm = newTerm;
                     96:        [activeTerm GVactivate:self];
                     97:
                     98:        return self;
                     99: }
                    100:
                    101: - printPScodeInKey:sender
                    102: {
                    103:     [[keyTerm gnuView] printPSCode:sender];
                    104:
                    105:     return self;
                    106:
                    107:
                    108: }
                    109:
                    110: - setKeyTerm:newTerm
                    111: {
                    112:        keyTerm = newTerm;
                    113:
                    114:        [NameField setStringValue:[[keyTerm window] title]];
                    115:        [NameField selectText:self];
                    116:
                    117:        return self;
                    118: }
                    119:
                    120: - setKeyTitle:sender
                    121: {
                    122:        [[keyTerm window] setTitle:[NameField stringValue]];
                    123:        [[NameField window] performClose:self];
                    124:        return self;
                    125: }
                    126:
                    127: -  executePScode:(char *)PSstring termTitle:(char *)title
                    128: {
                    129:        int i, cnt;
                    130:        id test;
                    131:        char buf[50];
                    132:
                    133:        //fprintf(stderr, "Request for window: %s\n", title);
                    134:
                    135:        if (*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];
                    142:                                break;
                    143:                        }
                    144:                }
                    145:                                                                                /* O.K., it doesn't exist, what now? */
                    146:                if (i == cnt) {
                    147:                        [self newGnuTerm:self];
                    148:                        [[activeTerm window] setTitle: title];
                    149:                }
                    150:        }
                    151:        else {
                    152:                if (activeTerm == nil) {
                    153:                        [self newGnuTerm:self];
                    154:                        sprintf(buf, "gnuplot %d", wcnt);
                    155:                        [[activeTerm window] setTitle: buf];
                    156:                }
                    157:        }
                    158:
                    159:
                    160:        [[activeTerm window] makeKeyAndOrderFront: nil];
                    161:        [[activeTerm gnuView] executePS:PSstring];
                    162:
                    163:        return activeTerm;
                    164: }
                    165:
                    166: - termWillClose:sender
                    167: {
                    168:        [gvList removeObject:sender];
                    169:        if (activeTerm == sender) activeTerm =nil;
                    170:
                    171:        return self;
                    172: }
                    173:
                    174: - setDefaultGTSize:sender
                    175: {
                    176:        NXRect frame;
                    177:
                    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];
                    184:                }
                    185:        }
                    186:
                    187:        NXWriteDefault("GnuTerm", "Width",  [DefaultSize stringValueAt:0]);
                    188:        NXWriteDefault("GnuTerm", "Height", [DefaultSize stringValueAt:1]);
                    189:
                    190:
                    191:        fprintf(stderr, "setDefaultGTSize: %s x %s\n",
                    192:                [DefaultSize stringValueAt:0],[DefaultSize stringValueAt:1]);
                    193:
                    194:        return self;
                    195: }
                    196:
                    197: - setUseBuffered:sender
                    198: {
                    199:        if ([sender state] == YES) {
                    200:                backing = NX_BUFFERED;
                    201:                NXWriteDefault("GnuTerm", "Backing", "Buffered");
                    202:        }
                    203:        else {
                    204:                backing = NX_RETAINED;
                    205:                NXWriteDefault("GnuTerm", "Backing", "Retained");
                    206:        }
                    207:        [[activeTerm window] setBackingType:backing];
                    208:
                    209:
                    210:        return self;
                    211: }
                    212:
                    213:
                    214: - closeAll:sender
                    215: {
                    216:        while([gvList count]) [[[gvList objectAt:0] window] performClose:self];
                    217:        return self;
                    218: }
                    219: - miniaturizeAll:sender
                    220: {
                    221:        int i, cnt;
                    222:
                    223:        cnt = [gvList count];
                    224:
                    225:        for (i=0; i < cnt; ++i)
                    226:                [[[gvList objectAt:i] window] performMiniaturize:self];
                    227:
                    228:        return self;
                    229: }
                    230:
                    231: @end

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>