| 27 | using namespace ui; |
| 28 | |
| 29 | void scanFolder(const std::string& scriptsDir, Command* cmd_run_script, Menu* parent) { |
| 30 | auto fs = FileSystemModule::instance(); |
| 31 | auto item = fs->getFileItemFromPath(base::fix_path_separators(scriptsDir)); |
| 32 | if (!item) |
| 33 | return; |
| 34 | Params params; |
| 35 | FileItemList list = item->children(); |
| 36 | for (auto child : list) { |
| 37 | bool isFolder = child->isFolder(); |
| 38 | std::string fullPath = child->fileName(); |
| 39 | if (!isFolder && !app::AppScripting::scanScript(fullPath)) { |
| 40 | continue; |
| 41 | } |
| 42 | auto cmd = isFolder ? nullptr : cmd_run_script; |
| 43 | params.set("filename", fullPath.c_str()); |
| 44 | auto menuitem = new AppMenuItem(child->displayName().c_str(), cmd, params); |
| 45 | parent->addChild(menuitem); |
| 46 | if (isFolder) { |
| 47 | auto menu = new Menu(); |
| 48 | scanFolder(fullPath, cmd_run_script, menu); |
| 49 | menuitem->setSubmenu(menu); |
| 50 | } |
| 51 | } |
| 52 | } |
| 53 | |
| 54 | bool ScriptMenu::rebuildScriptsList(Menu* menu) |
| 55 | { |
no test coverage detected