For anyone interested, this is an Objective-C code snippet (Mac OS X) 
to populate a drop down with a list of modules installed. It's really 
not that complicated - square brackets are for method calls, @ 
symbols indicate NSString's (vs. normal C strings).

Because Cocoa uses a bunch of its own data types (NSString is a 
Unicode string object used throughout the API), it seems I will be 
writing several wrappers for the Sword API. The swordModulesForType 
function below would be some of that wrapper code, using a mix of 
Objective-C and C++. The code in my AppController could then be pure 
Objective-C.

- n8


/* Startup code
  */
- (void)awakeFromNib
{
        [modulePopUp removeAllItems];
        [modulePopUp addItemsWithTitles: [self swordModulesForType: 
@"biblical texts"]];
}

/* swordModulesForType:
    Retrieve list of installed modules as an array, where type is:
        @"Biblical Texts"
        @"Commentaries"
        ...
        @"ALL"
  */
- (NSMutableArray *)swordModulesForType:(NSString *)type
{
        SWMgr manager;
        SWModule *module;
        ModMap::iterator it;
        NSMutableArray *moduleList = [[NSMutableArray alloc] init];

        for (it = manager.Modules.begin(); it != manager.Modules.end(); it++)
        {
                module = it->second;
                if( [type caseInsensitiveCompare: @"ALL"] ||[type 
caseInsensitiveCompare:
                        [NSString stringWithCString:module->Type()]] )
                {
                        [moduleList addObject: [NSString 
stringWithCString:module->Name()]];
                }
        }

        [moduleList autorelease];       // release memory later
        return moduleList;
}


-- 
Nathan Youngman
E-mail: sword at nathany.com
Web: http://nathany.com

Reply via email to