void ofApp::scan_dir_imgs(ofDirectory dir){ ofDirectory new_dir; int size = dir.listDir(); for (int i = 0; i < size; i++){ if (dir.getFile(i).isDirectory()){ new_dir = ofDirectory(dir.getFile(i).getAbsolutePath()); new_dir.listDir(); new_dir.sort(); scan_dir_imgs(new_dir); } else if (std::find(std::begin(allowed_ext), std::end(allowed_ext), dir.getFile(i).getExtension()) != std::end(allowed_ext)) { imageFiles.push_back(dir.getFile(i)); } } }
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(); } }