void Menu::loadMenuItems(ofDirectory directory, ofPtr< MenuItem > currentItem){ // Each directory in the Presentations directory is a MenuItem: // - Directories with a presentation.xml file are Presentations. // - Directories with subdirectories are Categories. int i, size; // Check if there is a presentation.xml file. directory.listDir(); directory.sort(); size = directory.size(); for(i = 0; i < size; i++){ ofFile file = directory.getFile(i); if (file.isDirectory()){ ofPtr<MenuItem> item(new MenuItem()); item->name = file.getFileName(); item->parent = currentItem; ofFile presentation = ofFile(file.getAbsolutePath() + "/presentation.xml"); if(presentation.exists()){ // Directory is a Presentation. item->isCategory = false; item->path = file.getAbsolutePath(); } else { // Directory is a Category. item->isCategory = true; item->path = currentItem->path + " \/ " + item->name; // Add MenuItem to navigate up. ofPtr<MenuItem> itemUp(new MenuItem); itemUp->name = "..."; itemUp->isMenuUp = true; itemUp->font = &font_small; itemUp->parent = item; item->items.push_back(itemUp); loadMenuItems(ofDirectory(file.path()), item); } item->font = &font_small; currentItem->items.push_back(item); } } if(currentItem->items.size() > 0){ currentItem->items[0]->select(); } }