void ExampleBrowserWindow::handleEvent(Event *event) { if(event->getEventType() == "UIEvent") { if(event->getEventCode() == UIEvent::CLICK_EVENT) { UITree *node = templateContainer->getRootNode()->getSelectedNode(); ExampleTemplateUserData *data = (ExampleTemplateUserData*)node->getUserData(); if(event->getDispatcher() == okButton && data->type == 1) { dispatchEvent(new UIEvent(), UIEvent::OK_EVENT); } if(event->getDispatcher() == cancelButton) { dispatchEvent(new UIEvent(), UIEvent::CLOSE_EVENT); } } } if(event->getEventType() == "UITreeEvent" && event->getEventCode() == UITreeEvent::SELECTED_EVENT) { if(event->getDispatcher() == templateContainer->getRootNode()) { UITreeEvent *treeEvent = (UITreeEvent*) event; ExampleTemplateUserData *data = (ExampleTemplateUserData *)treeEvent->selection->getUserData(); if(data->type == 1) templateFolder = data->templateFolder; } } UIWindow::handleEvent(event); }
void PolycodeProjectBrowser::removeProject(PolycodeProject *project) { UITree *projectTree = treeContainer->getRootNode(); for(int i=0; i < projectTree->getNumTreeChildren(); i++) { UITree *projectChild = projectTree->getTreeChild(i); BrowserUserData *userData = (BrowserUserData*)projectChild->getUserData(); if(userData->parentProject == project) { projectTree->removeTreeChild(projectChild); return; } } }
void PolycodeProjectBrowser::refreshProject(PolycodeProject *project) { UITree *projectTree = treeContainer->getRootNode(); for(int i=0; i < projectTree->getNumTreeChildren(); i++) { UITree *projectChild = projectTree->getTreeChild(i); BrowserUserData *userData = (BrowserUserData*)projectChild->getUserData(); if(userData->parentProject == project) { parseFolderIntoNode(projectChild, project->getRootFolder(), project); return; } } }
void PolycodeProjectBrowser::parseFolderIntoNode(UITree *node, String spath, PolycodeProject *parentProject) { vector<OSFileEntry> files = OSBasics::parseFolder(spath, false); // check if files got deleted for(int i=0; i < node->getNumTreeChildren(); i++) { UITree *projectChild = node->getTreeChild(i); if(!listHasFileEntry(files, ((BrowserUserData*)projectChild->getUserData())->fileEntry)) { node->removeTreeChild(projectChild); } } for(int i=0; i < files.size(); i++) { OSFileEntry entry = files[i]; if(entry.type == OSFileEntry::TYPE_FOLDER) { UITree *existing = nodeHasName(node, entry.name); if(!existing) { BrowserUserData *data = new BrowserUserData(); data->fileEntry = entry; UITree *newChild = node->addTreeChild("folder.png", entry.name, (void*) data); data->type = 2; data->parentProject = parentProject; parseFolderIntoNode(newChild, entry.fullPath, parentProject); } else { parseFolderIntoNode(existing, entry.fullPath, parentProject); } } else { if(!nodeHasName(node, entry.name)) { BrowserUserData *data = new BrowserUserData(); data->fileEntry = entry; data->type = 1; data->parentProject = parentProject; node->addTreeChild("file.png", entry.name, (void*) data); } } } }