void PolycodeTextEditor::saveFile() { Data *data = new Data(); data->setFromString(textInput->getText(), String::ENCODING_UTF8); data->saveToFile(filePath); delete data; setHasChanges(false); }
void PolycodeEditor::didAction(String actionName, PolycodeEditorActionData *beforeData, PolycodeEditorActionData *afterData, bool setFileChanged) { // printf("DID ACTION (pos: %d): %s\n", currentUndoPosition, actionName.c_str()); if(setFileChanged) { setHasChanges(true); } // if the undo position is not at the end, remove the states after it if(currentUndoPosition < (int)(editorActions.size())-1 && editorActions.size() > 0) { for(int i=currentUndoPosition+1; i < editorActions.size(); i++) { editorActions[i].deleteData(); } if(currentUndoPosition > -1) { editorActions.erase(editorActions.begin()+currentUndoPosition+1, editorActions.end()); } else { editorActions.clear(); } } PolycodeEditorAction newAction; newAction.actionName = actionName; newAction.beforeData = beforeData; newAction.afterData = afterData; editorActions.push_back(newAction); if(editorActions.size() > MAX_EDITOR_UNDO_ACTIONS) { editorActions[0].deleteData(); editorActions.erase(editorActions.begin()); } currentUndoPosition = editorActions.size()-1; }
void PolycodeProjectEditor::handleEvent(Event *event) { if(event->getEventType() == "UIEvent") { if(event->getDispatcher() == vSyncCheckBox || event->getDispatcher() == defaultWidthInput || event->getDispatcher() == defaultHeightInput || event->getDispatcher() == framerateInput || event->getDispatcher() == aaLevelComboBox || event->getDispatcher() == afLevelComboBox || event->getDispatcher() == texFilteringComboBox || event->getDispatcher() == entryPointInput || event->getDispatcher() == bgColorBox) { if(!isLoading) { setHasChanges(true); } } } if(event->getDispatcher() == addFontButton && event->getEventCode() == UIEvent::CLICK_EVENT && event->getEventType() == "UIEvent") { globalFrame->assetBrowser->addEventListener(this, UIEvent::OK_EVENT); std::vector<String> extensions; extensions.push_back("ttf"); extensions.push_back("otf"); globalFrame->showAssetBrowser(extensions); } else if(event->getDispatcher() == globalFrame->assetBrowser && event->getEventType() == "UIEvent" && event->getEventCode() == UIEvent::OK_EVENT) { String newFontPath = globalFrame->assetBrowser->getSelectedAssetPath(); newFontPath = newFontPath.replace(parentProject->getRootFolder()+"/", ""); bool hasFont = false; for(int i=0; i < fontEntries.size(); i++) { if(fontEntries[i]->fontPath == newFontPath) { hasFont = true; break; } } if(!hasFont) { ProjectFontEntry *newEntry = new ProjectFontEntry(newFontPath, "font_name"); newEntry->addEventListener(this, Event::CHANGE_EVENT); fontEntryBase->addChild(newEntry); fontEntries.push_back(newEntry); refreshFontEntries(); } globalFrame->assetBrowser->removeAllHandlersForListener(this); dispatchEvent(new Event(), Event::CHANGE_EVENT); globalFrame->hideModal(); } bool doRefresh = false; for(int i=0; i < fontEntries.size(); i++) { if(event->getDispatcher() == fontEntries[i]) { fontEntryBase->removeChild(fontEntries[i]); fontEntries.erase(fontEntries.begin()+i); doRefresh = true; break; } } if(doRefresh) { refreshFontEntries(); } }
void PolycodeProjectEditor::refreshFontEntries() { for(int i=0; i < fontEntries.size(); i++) { fontEntries[i]->setPosition(0, 30*i); } addFontButton->setPosition(0, (fontEntries.size() * 30) + 10); if(!isLoading) { setHasChanges(true); } }
void PolycodeProjectEditor::saveFile() { if(!associatedProject) { return; } associatedProject->data.frameRate = atoi(framerateInput->getText().c_str()); associatedProject->data.defaultWidth = atoi(defaultWidthInput->getText().c_str()); associatedProject->data.defaultHeight = atoi(defaultHeightInput->getText().c_str()); associatedProject->data.entryPoint = entryPointInput->getText(); associatedProject->data.backgroundColorR = bgColorBox->getSelectedColor().r; associatedProject->data.backgroundColorG = bgColorBox->getSelectedColor().g; associatedProject->data.backgroundColorB = bgColorBox->getSelectedColor().b; associatedProject->data.modules.clear(); for(int j=0; j < moduleCheckboxes.size(); j++) { if(moduleCheckboxes[j]->isChecked()) { associatedProject->data.modules.push_back(moduleCheckboxes[j]->getCaptionLabel()); } } associatedProject->data.fonts.clear(); for(int j=0; j < fontEntries.size(); j++) { ProjectFontData fontData = ProjectFontData(fontEntries[j]->fontNameInput->getText(), fontEntries[j]->fontPath); associatedProject->data.fonts.push_back(fontData); } unsigned int afMap[6] = {0,1,2,4,8,16}; unsigned int aaMap[4] = {0,2,4,6}; String filteringMap[2] = {"nearest", "linear"}; associatedProject->data.filteringMode = filteringMap[texFilteringComboBox->getSelectedIndex()]; associatedProject->data.aaLevel = aaMap[aaLevelComboBox->getSelectedIndex()]; associatedProject->data.anisotropy = afMap[afLevelComboBox->getSelectedIndex()]; associatedProject->data.vSync = vSyncCheckBox->isChecked(); associatedProject->saveFile(); setHasChanges(false); }
void PolycodeTextEditor::handleEvent(Event *event) { if(event->getDispatcher() == textInput && event->getEventType() == "UIEvent") { if(!isLoading) { lastFindString = ""; setHasChanges(true); } } if(event->getDispatcher() == findBar->functionList) { if(event->getEventType() == "UIEvent" && event->getEventCode() == UIEvent::CHANGE_EVENT) { FindMatch *match = (FindMatch*)findBar->functionList->getSelectedItem()->data; textInput->showLine(match->lineNumber, true); } } if(event->getDispatcher() == findBar->replaceAllButton) { if(event->getEventType() == "UIEvent" && event->getEventCode() == UIEvent::CLICK_EVENT) { textInput->replaceAll(findBar->findInput->getText(), findBar->replaceInput->getText()); } } if(event->getDispatcher() == findBar->closeButton) { if(event->getEventType() == "UIEvent" && event->getEventCode() == UIEvent::CLICK_EVENT) { hideFindBar(); } } if(event->getDispatcher() == findBar->replaceInput) { if(event->getEventType() == "") { if(event->getEventCode() == Event::CANCEL_EVENT) { hideFindBar(); } if(event->getEventCode() == Event::COMPLETE_EVENT) { textInput->findString(findBar->findInput->getText(), true, findBar->replaceInput->getText()); } } } if(event->getDispatcher() == findBar->findInput) { if(event->getEventType() == "") { if(event->getEventCode() == Event::CANCEL_EVENT) { hideFindBar(); } if(event->getEventCode() == Event::COMPLETE_EVENT) { if(findBar->findInput->getText() != "") { if(findBar->findInput->getText() != lastFindString) { lastFindString = findBar->findInput->getText(); textInput->findString(lastFindString); } else { textInput->findNext(); } } } } } PolycodeEditor::handleEvent(event); }