|
|
1.1 ! root 1: /* Controller.m: ! 2: * You may freely copy, distribute, and reuse the code in this example. ! 3: * NeXT disclaims any warranty of any kind, expressed or implied, as to its ! 4: * fitness for any particular use. ! 5: * ! 6: * ! 7: * ! 8: */ ! 9: ! 10: #import "Controller.h" ! 11: #import "SQLWindow.h" ! 12: ! 13: @implementation Controller ! 14: ! 15: #define DEFAULT_LIBRARY "Library/Databases" ! 16: ! 17: - open:sender ! 18: { ! 19: char **files; ! 20: char *path; ! 21: const char *directory; ! 22: const char *const types[] = { "dbmodel", "dbmodela", 0 }; ! 23: id openPanel; ! 24: ! 25: openPanel = [OpenPanel new]; ! 26: [openPanel allowMultipleFiles:YES]; ! 27: path = alloca(1 + MAXPATHLEN); ! 28: sprintf(path, "%s/%s", getenv("HOME"), DEFAULT_LIBRARY); ! 29: if ([openPanel runModalForDirectory:path file:NULL types:types]) ! 30: if ((files = (char **) [openPanel filenames]) != NULL) ! 31: { ! 32: directory = [openPanel directory]; ! 33: for (; *files; ++files) ! 34: { ! 35: sprintf(path, "%s/%s", directory, *files); ! 36: [self openFileNamed:path]; ! 37: } ! 38: } ! 39: ! 40: return self; ! 41: } ! 42: ! 43: - openFileNamed:(const char *)filename ! 44: { ! 45: return [[SQLWindow alloc] initWithFile:filename]; ! 46: } ! 47: ! 48: - evaluate:sender ! 49: { ! 50: [[[NXApp mainWindow] delegate] evaluate:sender]; ! 51: return self; ! 52: } ! 53: ! 54: - clear:sender ! 55: { ! 56: [[[NXApp mainWindow] delegate] clear:sender]; ! 57: return self; ! 58: } ! 59: ! 60: - print:sender ! 61: { ! 62: [[[NXApp mainWindow] delegate] print:sender]; ! 63: return self; ! 64: } ! 65: ! 66: - close:sender ! 67: { ! 68: [[[NXApp mainWindow] delegate] performClose:sender]; ! 69: return self; ! 70: } ! 71: ! 72: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.