void AssetBrowser::setProject(PolycodeProject *project) { if(project == currentProject) { return; } templateContainer->getRootNode()->clearTree(); vector<OSFileEntry> templates = OSBasics::parseFolder(project->getRootFolder(), false); templateContainer->getRootNode()->setLabelText(project->getProjectName()); for(int i=0; i < templates.size(); i++) { OSFileEntry entry = templates[i]; if(entry.type == OSFileEntry::TYPE_FOLDER) { UITree *newChild = templateContainer->getRootNode()->addTreeChild("folder.png", entry.name, NULL); FolderUserData *data = new FolderUserData(); data->type = 0; data->folderPath = entry.fullPath; newChild->setUserData(data); newChild->toggleCollapsed(); parseFolderIntoTree(newChild, entry); } } currentProject = project; }
void AssetBrowser::setResourcePools(std::vector<ResourcePool*> pools, int resourceFilter) { if(this->resourceFilter != resourceFilter) { assetList->clearList(); } this->resourceFilter = resourceFilter; templateContainer->getRootNode()->clearTree(); templateContainer->getRootNode()->setLabelText("Resource pools"); FolderUserData *userData = (FolderUserData*) templateContainer->getRootNode()->getUserData(); if(userData) { delete userData; } templateContainer->getRootNode()->setUserData(NULL); for(int i=0; i < pools.size(); i++) { ResourcePool *pool = pools[i]; UITree *newChild = templateContainer->getRootNode()->addTreeChild("folder.png", pool->getName(), (void*)pool); newChild->setUserData(pool); } }
NewFileWindow::NewFileWindow() : UIWindow(L"Create New File", 580, 280) { defaultTemplateTree = NULL; Config *conf = CoreServices::getInstance()->getConfig(); String fontName = conf->getStringValue("Polycode", "uiDefaultFontName"); closeOnEscape = true; templateContainer = new UITreeContainer("boxIcon.png", L"File Templates", 250, 300-topPadding-padding-padding); FileTemplateUserData *data = new FileTemplateUserData(); data->type = 0; templateContainer->getRootNode()->setUserData(data); addChild(templateContainer); templateContainer->setPosition(padding,topPadding+padding); templateContainer->getRootNode()->toggleCollapsed(); templateContainer->getRootNode()->addEventListener(this, UITreeEvent::SELECTED_EVENT); templateContainer->getRootNode()->addEventListener(this, UITreeEvent::EXECUTED_EVENT); vector<OSFileEntry> templates = OSBasics::parseFolder(RESOURCE_PATH"FileTemplates", false); for(int i=0; i < templates.size(); i++) { OSFileEntry entry = templates[i]; if(entry.type == OSFileEntry::TYPE_FOLDER) { UITree *newChild = templateContainer->getRootNode()->addTreeChild("folder.png", entry.name, NULL); FileTemplateUserData *data = new FileTemplateUserData(); data->type = 0; newChild->setUserData(data); newChild->toggleCollapsed(); parseTemplatesIntoTree(newChild, entry); } } UILabel *label2 = new UILabel(L"NEW FILE NAME (NO EXTENSION)", 18, "section", Label::ANTIALIAS_FULL); label2->color.a = 1.0; label2->getLabel()->setColorForRange(Color(),0, 12); label2->getLabel()->setColorForRange(Color(0.6, 0.6, 0.6, 1.0),12, 40); label2->setText("NEW FILE NAME (NO EXTENSION)"); addChild(label2); label2->setPosition(padding+270, templateContainer->getPosition().y-5); fileNameInput = new UITextInput(false, 550-padding-210-padding-padding, 12); addFocusChild(fileNameInput); fileNameInput->setPosition(label2->getPosition().x, label2->getPosition().y+30); cancelButton = new UIButton(L"Cancel", 100); cancelButton->addEventListener(this, UIEvent::CLICK_EVENT); addFocusChild(cancelButton); cancelButton->setPosition(600-100-padding-100-10, 265); okButton = new UIButton(L"Create File", 100); okButton->addEventListener(this, UIEvent::CLICK_EVENT); addFocusChild(okButton); okButton->setPosition(600-100-padding, 265); }
void CurveEditor::addCurve(String name, BezierCurve *curve, Color curveColor) { UITree *newNode = treeContainer->getRootNode()->addTreeChild("Images/curve_icon.png", name); EditCurve *editCurve = new EditCurve(curve, curveColor); addChild(editCurve); editCurve->setPosition(160, 63); curves.push_back(editCurve); newNode->setUserData((void*) editCurve); }
NewFileWindow::NewFileWindow() : UIWindow(L"Create New File", 480, 280) { defaultTemplateTree = NULL; Config *conf = CoreServices::getInstance()->getConfig(); String fontName = conf->getStringValue("Polycode", "uiDefaultFontName"); int fontSize = conf->getNumericValue("Polycode", "uiDefaultFontSize"); closeOnEscape = true; templateContainer = new UITreeContainer("boxIcon.png", L"File Templates", 200, 300-topPadding-padding-padding); FileTemplateUserData *data = new FileTemplateUserData(); data->type = 0; templateContainer->getRootNode()->setUserData(data); addChild(templateContainer); templateContainer->setPosition(padding,topPadding+padding); templateContainer->getRootNode()->toggleCollapsed(); templateContainer->getRootNode()->addEventListener(this, UITreeEvent::SELECTED_EVENT); vector<OSFileEntry> templates = OSBasics::parseFolder(RESOURCE_PATH"FileTemplates", false); for(int i=0; i < templates.size(); i++) { OSFileEntry entry = templates[i]; if(entry.type == OSFileEntry::TYPE_FOLDER) { UITree *newChild = templateContainer->getRootNode()->addTreeChild("folder.png", entry.name, NULL); FileTemplateUserData *data = new FileTemplateUserData(); data->type = 0; newChild->setUserData(data); newChild->toggleCollapsed(); parseTemplatesIntoTree(newChild, entry); } } ScreenLabel *label2 = new ScreenLabel(L"New File Name (without extension)", fontSize, fontName, Label::ANTIALIAS_FULL); addChild(label2); label2->setPosition(padding+220, templateContainer->getPosition().y); fileNameInput = new UITextInput(false, 500-padding-220-padding-padding, 12); addChild(fileNameInput); fileNameInput->setPosition(label2->getPosition().x, label2->getPosition().y+label2->getHeight()+2); cancelButton = new UIButton(L"Cancel", 100); cancelButton->addEventListener(this, UIEvent::CLICK_EVENT); addChild(cancelButton); cancelButton->setPosition(500-100-padding-100-10, 265); okButton = new UIButton(L"Create File", 100); okButton->addEventListener(this, UIEvent::CLICK_EVENT); addChild(okButton); okButton->setPosition(500-100-padding, 265); }
void PolycodeProjectBrowser::addProject(PolycodeProject *project) { UITree *projectTree = treeContainer->getRootNode()->addTreeChild("projectIcon.png", project->getProjectName(), (void*) project); projectTree->toggleCollapsed(); BrowserUserData *data = new BrowserUserData(); data->type = 3; data->parentProject = project; projectTree->setUserData((void*) data) ; parseFolderIntoNode(projectTree, project->getRootFolder(), project); }
ExampleBrowserWindow::ExampleBrowserWindow() : UIWindow(L"Example Browser", 320, 300){ templateFolder = ""; closeOnEscape = true; defaultTemplateTree = NULL; Config *conf = CoreServices::getInstance()->getConfig(); String fontName = conf->getStringValue("Polycode", "uiDefaultFontName"); int fontSize = conf->getNumericValue("Polycode", "uiDefaultFontSize"); templateContainer = new UITreeContainer("boxIcon.png", L"Examples", 300, 300-topPadding-padding-padding- 40); ExampleTemplateUserData *data = new ExampleTemplateUserData(); data->type = 0; templateContainer->getRootNode()->setUserData(data); addChild(templateContainer); templateContainer->setPosition(padding,topPadding+padding); templateContainer->getRootNode()->toggleCollapsed(); templateContainer->getRootNode()->addEventListener(this, UITreeEvent::SELECTED_EVENT); vector<OSFileEntry> templates = OSBasics::parseFolder(RESOURCE_PATH"Standalone/Examples/Lua", false); for(int i=0; i < templates.size(); i++) { OSFileEntry entry = templates[i]; if(entry.type == OSFileEntry::TYPE_FOLDER) { UITree *newChild = templateContainer->getRootNode()->addTreeChild("folder.png", entry.name, NULL); ExampleTemplateUserData *data = new ExampleTemplateUserData(); data->type = 0; newChild->setUserData(data); if(i == 0) { newChild->toggleCollapsed(); } parseTemplatesIntoTree(newChild, entry); } } cancelButton = new UIButton(L"Cancel", 100); cancelButton->addEventListener(this, UIEvent::CLICK_EVENT); addChild(cancelButton); cancelButton->setPosition(300-100-padding-80-10, 265); okButton = new UIButton(L"Open Example", 100); okButton->addEventListener(this, UIEvent::CLICK_EVENT); addChild(okButton); okButton->setPosition(300-80-padding, 265); }
UITree *UITree::addTreeChild(String icon, String text, void *userData) { UITree *newTree = new UITree(icon, text, treeWidth, treeOffset+11); newTree->setUserData(userData); addChild(newTree); newTree->setParent(this); newTree->addEventListener(this, UITreeEvent::NEED_REFRESH_EVENT); newTree->addEventListener(this, UITreeEvent::SELECTED_EVENT); newTree->addEventListener(this, UITreeEvent::EXECUTED_EVENT); newTree->addEventListener(this, UITreeEvent::DRAG_START_EVENT); treeChildren.push_back(newTree); refreshTree(); return newTree; }
void AssetBrowser::parseFolderIntoTree(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("folder.png", entry.nameWithoutExtension, NULL); FolderUserData *data = new FolderUserData(); data->type = 1; data->folderPath = entry.fullPath; newChild->setUserData(data); parseFolderIntoTree(newChild, entry); } } }
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(); } } } }
NewProjectWindow::NewProjectWindow() : UIWindow(L"Create New Project", 480, 280){ templateFolder = ""; closeOnEscape = true; defaultTemplateTree = NULL; Config *conf = CoreServices::getInstance()->getConfig(); String fontName = conf->getStringValue("Polycode", "uiDefaultFontName"); int fontSize = conf->getNumericValue("Polycode", "uiDefaultFontSize"); templateContainer = new UITreeContainer("boxIcon.png", L"Templates", 200, 300-topPadding-padding-padding); TemplateUserData *data = new TemplateUserData(); data->type = 0; templateContainer->getRootNode()->setUserData(data); addChild(templateContainer); templateContainer->setPosition(padding,topPadding+padding); templateContainer->getRootNode()->toggleCollapsed(); templateContainer->getRootNode()->addEventListener(this, UITreeEvent::SELECTED_EVENT); vector<OSFileEntry> templates = OSBasics::parseFolder(RESOURCE_PATH"ProjectTemplates", false); for(int i=0; i < templates.size(); i++) { OSFileEntry entry = templates[i]; if(entry.type == OSFileEntry::TYPE_FOLDER) { UITree *newChild = templateContainer->getRootNode()->addTreeChild("folder.png", entry.name, NULL); TemplateUserData *data = new TemplateUserData(); data->type = 0; newChild->setUserData(data); if(i == 0) { newChild->toggleCollapsed(); } parseTemplatesIntoTree(newChild, entry); } } ScreenLabel *label2 = new ScreenLabel(L"PROJECT NAME", 22, "section", Label::ANTIALIAS_FULL); label2->color.a = 0.4; addChild(label2); label2->setPosition(padding+220, templateContainer->getPosition().y-5); projectNameInput = new UITextInput(false, 500-padding-210-padding-padding, 12); addChild(projectNameInput); projectNameInput->setPosition(label2->getPosition().x, label2->getPosition().y + 30); ScreenLabel *label3 = new ScreenLabel(L"PROJECT LOCATION", 22, "section", Label::ANTIALIAS_FULL); label3->color.a = 0.4; addChild(label3); label3->setPosition(padding+220, templateContainer->getPosition().y+60); projectLocationInput = new UITextInput(false, 500-padding-210-padding-padding, 12); addChild(projectLocationInput); projectLocationInput->setPosition(label3->getPosition().x, label3->getPosition().y+30); locationSelectButton = new UIButton(L"Choose...", 100); locationSelectButton->addEventListener(this, UIEvent::CLICK_EVENT); addChild(locationSelectButton); locationSelectButton->setPosition(500-103-padding, projectLocationInput->getPosition().y+projectLocationInput->getHeight()+10); cancelButton = new UIButton(L"Cancel", 100); cancelButton->addEventListener(this, UIEvent::CLICK_EVENT); addChild(cancelButton); cancelButton->setPosition(500-100-padding-100-10, 265); okButton = new UIButton(L"Create Project", 100); okButton->addEventListener(this, UIEvent::CLICK_EVENT); addChild(okButton); okButton->setPosition(500-100-padding, 265); }