Пример #1
0
void PolycodeTextEditor::saveFile() {
	Data *data = new Data();
	data->setFromString(textInput->getText(), String::ENCODING_UTF8);
	data->saveToFile(filePath);
	delete data;
	setHasChanges(false);
}
Пример #2
0
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);
}
Пример #6
0
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);
}