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();
			}
		}
	}	
}
Beispiel #2
0
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();
			}
		}
	}	
}
Beispiel #3
0
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
		
	}
}