void NewProjectWindow::parseTemplatesIntoTree(UITree *tree, OSFileEntry folder) { vector<OSFileEntry> templates = OSBasics::parseFolder(folder.fullPath, false); for(int i=0; i < templates.size(); i++) { OSFileEntry entry = templates[i]; if(entry.type == OSFileEntry::TYPE_FOLDER) { UITree *newChild = tree->addTreeChild("templateIcon.png", entry.name, NULL); TemplateUserData *data = new TemplateUserData(); data->type = 1; data->templateFolder = entry.fullPath; newChild->setUserData(data); if(entry.name == "Empty Project") { defaultTemplateTree = newChild; newChild->setSelected(); } } } }
void NewFileWindow::parseTemplatesIntoTree(UITree *tree, OSFileEntry folder) { vector<OSFileEntry> templates = OSBasics::parseFolder(folder.fullPath, false); for(int i=0; i < templates.size(); i++) { OSFileEntry entry = templates[i]; if(entry.type != OSFileEntry::TYPE_FOLDER) { UITree *newChild = tree->addTreeChild("templateIcon.png", entry.nameWithoutExtension, NULL); FileTemplateUserData *data = new FileTemplateUserData(); data->type = 1; data->templatePath = entry.fullPath; newChild->setUserData(data); if(entry.name == "LUA Source File.lua") { defaultTemplateTree = newChild; newChild->setSelected(); } } } }
void UITreeContainer::onKeyDown(PolyKEY key, wchar_t charCode) { if (hasFocus) { // KEYBOARD NAV STUFF // TODO: add ability to jump to prev/next sibling via holding down some button // if (keyNavigable) { enum { NONE, UP, DOWN } scrollDir = NONE; UITree *currentSelection = getRootNode()->getSelectedNode(); if (!currentSelection) return; UITree *parent = currentSelection->getParent(); // - select parent if currently selected node is first in the tree // - else, select the last opened node in a sibling above if (key == KEY_UP) { if (parent) { for (int i=0; i < parent->getNumTreeChildren(); i++) { if (parent->getTreeChild(i) == currentSelection) { if (i == 0) parent->setSelected(true); else findLastOpenNode((parent->getTreeChild(i-1)))->setSelected(true); scrollDir = UP; break; } } } } // - select first child of currently selected if expanded and has children // - or select next sibling // - else, select the next sibling of some ancestor node if (key == KEY_DOWN) { if (currentSelection == getRootNode()) parent = getRootNode(); if (currentSelection->hasTreeChildren() && !currentSelection->isCollapsed()) { currentSelection->getTreeChild(0)->setSelected(true); scrollDir = DOWN; } else { for (int i=0; i < parent->getNumTreeChildren(); i++) { if (parent->getTreeChild(i) == currentSelection) { if (i == parent->getNumTreeChildren()-1) { UITree *psib = findNextParentSibling(parent); if (psib) psib->setSelected(true); } else { parent->getTreeChild(i+1)->setSelected(true); } scrollDir = DOWN; break; } } } } if (key == KEY_LEFT) { if (currentSelection->hasTreeChildren() && !currentSelection->isCollapsed()) currentSelection->toggleCollapsed(); else if (parent) { parent->setSelected(true); scrollDir = UP; } } if (key == KEY_RIGHT) { if (currentSelection->hasTreeChildren()) { if (currentSelection->isCollapsed()) currentSelection->toggleCollapsed(); } } if (scrollDir != NONE) scrollToNode(getRootNode()->getSelectedNode(), (scrollDir == UP) ? true : false); } // // END KEYBOARD NAV STUFF } }