Exemple #1
0
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);
	}
}
Exemple #3
0
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);
            }
        }
    }

}
Exemple #5
0
void Duration::append(float start, float arrival, const std::string & services)
{
    BOOST_ASSERT(start < arrival);
    timetable.push_back(Time(start, arrival, Services(services)));
}
Exemple #6
0
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);
}