void TransformGrips::handleEvent(Event *event) { if(event->getDispatcher() == Services()->getCore()->getInput()) { if(transforming) { Vector2 newMouse = Services()->getCore()->getInput()->getMousePosition(); if(movingTransform == mainRect) { gripRectangle.x += newMouse.x - mouseBase.x; gripRectangle.y += newMouse.y - mouseBase.y; } else if(movingTransform == transformTL) { gripRectangle.x += newMouse.x - mouseBase.x; gripRectangle.y += newMouse.y - mouseBase.y; gripRectangle.w -= newMouse.x - mouseBase.x; gripRectangle.h -= newMouse.y - mouseBase.y; } else if(movingTransform == transformTR) { gripRectangle.y += newMouse.y - mouseBase.y; gripRectangle.w += newMouse.x - mouseBase.x; gripRectangle.h -= newMouse.y - mouseBase.y; } else if(movingTransform == transformT) { gripRectangle.y += newMouse.y - mouseBase.y; gripRectangle.h -= newMouse.y - mouseBase.y; } else if(movingTransform == transformL) { gripRectangle.x += newMouse.x - mouseBase.x; gripRectangle.w -= newMouse.x - mouseBase.x; } else if(movingTransform == transformR) { gripRectangle.w += newMouse.x - mouseBase.x; } else if(movingTransform == transformBL) { gripRectangle.x += newMouse.x - mouseBase.x; gripRectangle.w -= newMouse.x - mouseBase.x; gripRectangle.h += newMouse.y - mouseBase.y; } else if(movingTransform == transformBR) { gripRectangle.w += newMouse.x - mouseBase.x; gripRectangle.h += newMouse.y - mouseBase.y; } else if(movingTransform == transformB) { gripRectangle.h += newMouse.y - mouseBase.y; } else if(movingTransform == transformOffset) { anchorPoint.x += (newMouse.x - mouseBase.x) / gripRectangle.w; anchorPoint.y += (newMouse.y - mouseBase.y) / gripRectangle.h; } mouseBase = newMouse; dispatchEvent(new Event(), Event::CHANGE_EVENT); } } else { if(event->getEventCode() == InputEvent::EVENT_MOUSEDOWN) { movingTransform = (UIImage*) event->getDispatcher(); transforming = true; mouseBase = Services()->getCore()->getInput()->getMousePosition(); } else { transforming = false; } } }
void PolycodeProjectManager::setActiveProject(PolycodeProject* project) { if(project != activeProject) { if(activeProject != NULL) { Services()->getCore()->removeFileSource("archive", activeProject->getRootFolder()); } activeProject = project; if(project){ Services()->getCore()->addFileSource("archive", activeProject->getRootFolder()); } dispatchEvent(new Event(), Event::CHANGE_EVENT); } }
TransformGrips::TransformGrips() : UIElement() { mainRect = new UIRect(1.0, 1.0); mainRect->setBlendingMode(Renderer::BLEND_MODE_NORMAL); mainRect->color.setColor(0.0, 0.5, 1.0, 0.2); grips.push_back(mainRect); transformTL = new UIImage("spriteEditor/transform_corner.png", 8, 8); grips.push_back(transformTL); transformT = new UIImage("spriteEditor/transform_corner.png", 8, 8); grips.push_back(transformT); transformTR = new UIImage("spriteEditor/transform_corner.png", 8, 8); grips.push_back(transformTR); transformL = new UIImage("spriteEditor/transform_corner.png", 8, 8); grips.push_back(transformL); transformR = new UIImage("spriteEditor/transform_corner.png", 8, 8); grips.push_back(transformR); transformBL = new UIImage("spriteEditor/transform_corner.png", 8, 8); grips.push_back(transformBL); transformB = new UIImage("spriteEditor/transform_corner.png", 8, 8); grips.push_back(transformB); transformBR = new UIImage("spriteEditor/transform_corner.png", 8, 8); grips.push_back(transformBR); transformOffset = new UIImage("spriteEditor/transform_offset.png", 12, 12); grips.push_back(transformOffset); for(int i=0; i < grips.size(); i++) { addChild(grips[i]); if(grips[i] != mainRect) { grips[i]->setAnchorPoint(Vector3()); } grips[i]->addEventListener(this, InputEvent::EVENT_MOUSEDOWN); grips[i]->addEventListener(this, InputEvent::EVENT_MOUSEUP); grips[i]->addEventListener(this, InputEvent::EVENT_MOUSEUP_OUTSIDE); grips[i]->blockMouseInput = true; } Services()->getCore()->getInput()->addEventListener(this, InputEvent::EVENT_MOUSEMOVE); transforming = false; movingTransform = NULL; }
void PolycodeProjectBrowser::parseFolderIntoNode(UITree *node, String spath) { vector<OSFileEntry> files = Services()->getCore()->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 = project; parseFolderIntoNode(newChild, entry.fullPath); } else { parseFolderIntoNode(existing, entry.fullPath); } } else { if(!nodeHasName(node, entry.name)) { BrowserUserData *data = new BrowserUserData(); data->fileEntry = entry; data->type = 1; data->parentProject = project; node->addTreeChild(getIconForExtension(entry.extension), entry.name, (void*) data); } } } }
void Duration::append(float start, float arrival, const std::string & services) { BOOST_ASSERT(start < arrival); timetable.push_back(Time(start, arrival, Services(services))); }
TransformGrips::~TransformGrips() { Services()->getCore()->getInput()->removeAllHandlersForListener(this); }
SettingsWindow::SettingsWindow() : UIWindow(L"Settings", SETTINGS_WINDOW_WIDTH, SETTINGS_WINDOW_HEIGHT) { closeOnEscape = true; UILabel *label = new UILabel("TEXT EDITING", 22, "section", Label::ANTIALIAS_FULL); addChild(label); label->color.a = 1.0; label->setPosition(padding, 50); useExternalTextEditorBox = new UICheckBox("Use external text editor", false); addChild(useExternalTextEditorBox); useExternalTextEditorBox->setPosition(padding, 85); #define BUTTON_WIDTH 80 #define BUTTON_PADDING 10 #define EDITOR_BROWSE_POS 110 #define TEXTBOX_HEIGHT 12 externalTextEditorCommand = new UITextInput(false, SETTINGS_WINDOW_WIDTH - (padding*2 + BUTTON_WIDTH + BUTTON_PADDING/2), TEXTBOX_HEIGHT); addChild(externalTextEditorCommand); externalTextEditorCommand->setPosition(padding, EDITOR_BROWSE_POS); label = new UILabel("Syntax highlighting theme", 12); addChild(label); label->color.a = 1.0; label->setPosition(padding, EDITOR_BROWSE_POS + 35); syntaxThemeBox = new UIComboBox(globalMenu, 300); addChild(syntaxThemeBox); syntaxThemeBox->setPosition(padding, EDITOR_BROWSE_POS + 55); syntaxThemeBox->addEventListener(this, UIEvent::CHANGE_EVENT); std::vector<OSFileEntry> themes = Services()->getCore()->parseFolder(CoreServices::getInstance()->getCore()->getDefaultWorkingDirectory() + "/SyntaxThemes", false); for(int i=0; i < themes.size(); i++) { if(themes[i].extension == "xml") { syntaxThemeBox->addComboItem(themes[i].nameWithoutExtension); } } browseButton = new UIButton("Browse...", BUTTON_WIDTH); browseButton->addEventListener(this, UIEvent::CLICK_EVENT); addChild(browseButton); browseButton->setPosition(SETTINGS_WINDOW_WIDTH - (2*padding + BUTTON_WIDTH/2), EDITOR_BROWSE_POS); label = new UILabel("GENERAL", 22, "section", Label::ANTIALIAS_FULL); addChild(label); label->color.a = 1.0; label->setPosition(padding, 200); label = new UILabel("UI theme (requires restart)", 12); addChild(label); label->color.a = 1.0; label->setPosition(padding, 235); uiThemeBox = new UIComboBox(globalMenu, 300); addChild(uiThemeBox); uiThemeBox->setPosition(padding, 255); uiThemeBox->addEventListener(this, UIEvent::CHANGE_EVENT); std::vector<OSFileEntry> uiThemes = Services()->getCore()->parseFolder(CoreServices::getInstance()->getCore()->getDefaultWorkingDirectory() + "/UIThemes", false); for(int i=0; i < uiThemes.size(); i++) { if(uiThemes[i].type == OSFileEntry::TYPE_FOLDER) { // do not list retina theme copies if(uiThemes[i].name.find("_retina") == -1) { uiThemeBox->addComboItem(uiThemes[i].name); if(uiThemes[i].name == CoreServices::getInstance()->getConfig()->getStringValue("Polycode", "uiTheme")) { uiThemeBox->setSelectedIndex(i); } } } } label = new UILabel("Texture filtering (requires restart)", 12); addChild(label); label->color.a = 1.0; label->setPosition(padding, 285); textureFilteringBox = new UIComboBox(globalMenu, 300); addChild(textureFilteringBox); textureFilteringBox->setPosition(padding, 305); textureFilteringBox->addEventListener(this, UIEvent::CHANGE_EVENT); textureFilteringBox->addComboItem("Linear"); textureFilteringBox->addComboItem("Nearest"); cancelButton = new UIButton("Cancel", BUTTON_WIDTH); cancelButton->addEventListener(this, UIEvent::CLICK_EVENT); addChild(cancelButton); cancelButton->setPosition(SETTINGS_WINDOW_WIDTH - (2*padding + BUTTON_WIDTH*1.5 + BUTTON_PADDING), SETTINGS_WINDOW_HEIGHT - padding); okButton = new UIButton("OK", BUTTON_WIDTH); okButton->addEventListener(this, UIEvent::CLICK_EVENT); addChild(okButton); okButton->setPosition(SETTINGS_WINDOW_WIDTH - (2*padding + BUTTON_WIDTH/2), SETTINGS_WINDOW_HEIGHT - padding); }