Annotation of Examples/EnterpriseObjects/SQLExecutor/Controller.m, revision 1.1.1.1

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:  * Controller is providing the high level interface to the main menu commands
                      7:  * like open, close, evaluate, and clear.
                      8:  *
                      9:  */
                     10:  
                     11: #import<foundation/NSString.h>
                     12: #import <foundation/NSException.h>
                     13: 
                     14: #import "Controller.h"
                     15: #import "Evaluator.h"
                     16: 
                     17: void MyTopLevelErrorHandler(NXHandler *errorState);
                     18: 
                     19: @implementation Controller
                     20: 
                     21: #define DEFAULT_LIBRARY "Library/Models"
                     22: 
                     23: - appDidInit:sender
                     24: {
                     25:        NXSetTopLevelErrorHandler(MyTopLevelErrorHandler);
                     26: 
                     27:        [self open:sender];
                     28:        return self;
                     29: }
                     30: 
                     31: void MyTopLevelErrorHandler(NXHandler *errorState)
                     32: {
                     33:        if (errorState->code >= NSExceptionBase &&
                     34:           errorState->code <= NSLastException) {
                     35:           NSException *exception = (id) errorState->data1;
                     36: 
                     37:         NSLog(@"%@: %@\n", [exception exceptionName], [exception exceptionReason]);
                     38:            }
                     39: }
                     40: 
                     41: 
                     42: - open:sender
                     43: {
                     44:     char **files;
                     45:     char *path;
                     46:     const char *directory;
                     47:     const char *const types[] = { "eomodel", 0 };
                     48:     id openPanel;
                     49: 
                     50:     openPanel = [OpenPanel new];
                     51:     [openPanel allowMultipleFiles:YES];
                     52:    
                     53:        path = malloc((MAXPATHLEN +1)*sizeof(char));
                     54:     sprintf(path, "%s/%s", getenv("HOME"), DEFAULT_LIBRARY);
                     55:     if ([openPanel runModalForDirectory:path file:NULL types:types])
                     56:        if ((files = (char **) [openPanel filenames]) != NULL)
                     57:        {
                     58:            directory = [openPanel directory];
                     59:            for (; *files; ++files)
                     60:            {
                     61:                sprintf(path, "%s/%s", directory, *files);
                     62:                [self openFileNamed:path];
                     63:            }
                     64:        }
                     65:        free(path);
                     66:     return self;
                     67: }
                     68: 
                     69: - openFileNamed:(const char *)filename
                     70: {
                     71:     return [[Evaluator alloc] initWithModelFile:
                     72:                                [[NSString alloc]initWithCString:filename]];
                     73: }
                     74: 
                     75: - evaluate:sender
                     76: {
                     77:     [[[NXApp mainWindow] delegate] evaluate:sender];
                     78:     return self;
                     79: }
                     80: 
                     81: - clear:sender
                     82: {
                     83:     [[[NXApp mainWindow] delegate] clear:sender];
                     84:     return self;
                     85: }
                     86: 
                     87: 
                     88: - close:sender
                     89: {
                     90:     [[[NXApp mainWindow] delegate] close:sender];
                     91:     return self;
                     92: }
                     93: 
                     94: @end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.