|
|
1.1 root 1: /*--------------------------------------------------------------------------
2: *
3: * You may freely copy, distribute, and reuse the code in this example.
4: * SHL Systemhouse disclaims any warranty of any kind, expressed or
5: * implied, as to its fitness for any particular use.
6: *
7: * AppController
8: *
9: * Inherits From: NSObject
10: *
11: * Conforms To: None
12: *
13: * Declared In: AppController.h
14: *
15: *------------------------------------------------------------------------*/
16: #import <foundation/NSString.h>
17:
18: #import "AppController.h"
19: #import "ScrollViewExtensions.h"
20: #import "Catalog.h"
21: #import <ansi/ctype.h>
22: #include <ansi/time.h>
23:
24:
25: #define SLEEP(sleeptime) \
26: do { \
27: struct timeval tv; \
28: tv.tv_sec = sleeptime; tv.tv_usec = 0; \
29: select(0, NULL, NULL, NULL, &tv); \
30: } while(0)
31:
32:
33:
34:
35: @implementation AppController
36:
37: /*--------------------------------------------------------------------------
38: * Application delegate methods
39: *------------------------------------------------------------------------*/
40: - appDidInit: sender
41: {
42: id entity = [(EODatabaseDataSource *)[controller dataSource] entity];
43: id qualifier = [[EOQualifier allocWithZone: [self zone]]
44: initWithEntity:entity qualifierFormat:@"au_fname = \"Akiko\""];
45:
46: [window disableDisplay];
47: startup = YES;
48:
49: [textDisplay setVertScrollerRequired:NO];
50: [[textDisplay docView] setRetainedWhileDrawing:YES];
51:
52: /*----------------------------------------------------------------------
53: * turn buffering on so changes never affect database
54: *--------------------------------------------------------------------*/
55: [controller setSavesToDataSourceAutomatically:NO];
56: [controller setSavesToObjectsAutomatically:YES];
57:
58: [[[(EODatabaseDataSource *)[controller dataSource] databaseChannel]
59: adaptorChannel] setDebugEnabled:YES];
60:
61: [(EODatabaseDataSource *)[controller dataSource] setQualifier:qualifier];
62: [controller fetch];
63:
64: /*--------------------------------------------------------------------------
65: * This was included in alpha to select a single record -- apparently, the
66: * associations are smart enough now to display the first selected record.
67: *
68: * [controller setSelectionIndexes: selectionArray];
69: * [[controller associations] makeObjectsPerform:
70: * @selector(selectionDidChange)];
71: * [self updateObjectView:[[controller allObjects] objectAtIndex:0]];
72: *------------------------------------------------------------------------*/
73:
74: [[textDisplay docView] setText:""];
75:
76: [window reenableDisplay];
77: [window display];
78: [window makeKeyAndOrderFront:nil];
79:
80: startup = NO;
81: return self;
82: }
83:
84:
85: /*--------------------------------------------------------------------------
86: * Printing Trace Information
87: *------------------------------------------------------------------------*/
88: - console: (NSArray *) argArray
89: {
90: BOOL flag;
91:
92: if (startup == YES) return self;
93:
94: [[argArray objectAtIndex:1] getValue: &flag];
95: if ([[traceSetting cellAt:(int)flag:0] state] == NO)
96: return self;
97:
98: [console sprintf: "%s", [[argArray objectAtIndex:0] cString]];
99:
100: return self;
101: }
102:
103:
104: - display: (NSArray *) argArray
105: {
106: BOOL flag;
107:
108: if (startup == YES) return self;
109:
110: [[argArray objectAtIndex:1] getValue: &flag];
111: if ([[traceSetting cellAt:(int)flag:0] state] == NO)
112: return self;
113:
114: [[textDisplay docView] setText: [[argArray objectAtIndex:0] cString]];
115:
116: NXPing();
117: if ([traceDelay intValue])
118: SLEEP([traceDelay intValue]);
119:
120:
121: [[textDisplay docView] setText: ""];
122:
123: return self;
124: }
125:
126:
127: /*--------------------------------------------------------------------------
128: * Update object view
129: *------------------------------------------------------------------------*/
130: - updateObjectView: newObject
131: {
132: BOOL temp = startup;
133:
134: startup = YES;
135: [objectName setStringValue: [[newObject authorName] cString]];
136: [objectPrice setStringValue:
137: [[(NSNumber *)[newObject price] description] cString]];
138: [objectTitle setStringValue: [[newObject volumeTitle] cString]];
139:
140: startup = temp;
141: return self;
142: }
143:
144: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.