/** * @brief InfoManager::addProject Create project in this manager * @param name Name of the project * @param baseDir Path to given project * @return Return false if manager contains this project, true otherwise */ bool InfoManager::addProject(QString name, QDir baseDir) { if(projects.contains(name)) return false; MetaProject* proj = new MetaProject(name, baseDir); projects[name] = proj; emit projectCreated(name); if(activeProject.isEmpty()) setActiveProject(name); connect(proj,SIGNAL(shaderCreated(QString)),this,SLOT(projectChanged(QString))); connect(proj,SIGNAL(shaderDestroyed(QString,MetaShader::SHADERTYPE)),this,SLOT(projectChanged(QString))); connect(proj,SIGNAL(shProgCreated(QString)),this,SLOT(projectChanged(QString))); connect(proj,SIGNAL(shaderDestroyed(QString,MetaShader::SHADERTYPE)),this,SLOT(projectChanged(QString))); connect(proj,SIGNAL(textureCreated(QString)),this,SLOT(projectChanged(QString))); connect(proj,SIGNAL(textureDestroyed(QString)),this,SLOT(projectChanged(QString))); connect(proj,SIGNAL(uniformCreated(QString)),this,SLOT(projectChanged(QString))); connect(proj,SIGNAL(uniformDestroyed(QString)),this,SLOT(projectChanged(QString))); connect(proj,SIGNAL(modelLoaded()),this,SLOT(projectChanged())); return true; }
void ProjectSaveAs::selectionChanged(const QModelIndex& index) { setActiveProject(m_mainWindow->projectsModel()->indexToProject(index)); int type = m_mainWindow->projectsModel()->indexType(index); const TinyNode* node = m_mainWindow->projectsModel()->indexToNode(index); if(type == ProjectsModel::FileType) { ui_filename->setText(QTinyNode::name(node)); } }
PolycodeProject* PolycodeProjectManager::openProject(String path) { for(int i=0; i < projects.size(); i++) { if(projects[i]->getProjectFile() == path) { setActiveProject(projects[i]); return projects[i]; } } printf("Opening project %s\n", path.c_str()); FILE *f = fopen(path.c_str(), "r"); if(!f) { printf("WARNING: PROJECT DOESNT EXIST! (%s)\n", path.c_str()); return NULL; } fclose(f); vector<String> bits = path.split("/"); String projectPath = bits[0]; if(bits.size() > 2) { for(int i=1; i < bits.size() - 1; i++) { projectPath += "/"+bits[i]; } } vector<String> bits2 = bits[bits.size()-1].split("."); String projectName = bits2[bits2.size()-2]; PolycodeProject* newProject = new PolycodeProject(projectName, projectPath, path); projects.push_back(newProject); for(int i=0; i < newProject->data.fonts.size(); i++) { String fontPath = projectPath+"/"+newProject->data.fonts[i].fontPath; String fontName = newProject->data.fonts[i].fontName; CoreServices::getInstance()->getFontManager()->registerFont(fontName, fontPath); } setActiveProject(newProject); dispatchEvent(new Event(), Event::CHANGE_EVENT); return newProject; }
/** * @brief InfoManager::addProject Add project to this manager * @param project Pointer to given project class (manager will destroy this project in destructor) * @return Return false if manager contains this project, true otherwise */ bool InfoManager::addProject(MetaProject *project) { if(projects.contains(project->getName())) return false; projects.insert(project->getName(), project); emit projectCreated(project->getName()); if(activeProject.isEmpty()) setActiveProject(project->getName()); return true; }
void TamyEditor::onFileRemoved( const FilePath& path ) { // if the removed file was the active project resource, close the project if ( m_activeProject && m_activeProjectPath == path ) { // yes it was - close the project setActiveProject( NULL ); } else { // and close any editors tied to this particular resource ( Project may also have an editor assigned to it and it may be open at the moment ) closeEditors( path, PathTest::FROM_METHOD( TamyEditor, isSamePath, this ) ); } }
void TamyEditor::onDirRemoved( const FilePath& dir ) { if ( m_activeProject ) { // if the removed directory was where the active project was located, we need to close the project if ( m_activeProjectPath.isSubPath( dir ) ) { // yes it was - close the project setActiveProject( NULL ); } } else { closeEditors( dir, PathTest::FROM_METHOD( TamyEditor, isResourceFromDeletedDir, this ) ); } }
/** * @brief InfoManager::closeProject Close project given project if exists. If existing is active, set as active something else. * @param name Name of the project we want to close. * @return True if project was closed, false if project do not exists. */ bool InfoManager::closeProject(QString name) { if(!projects.contains(name)) return false; if(activeProject == name) setActiveProject(""); MetaProject* proj = projects.take(name); emit projectRemoved(name); delete proj; /* if(projects.isEmpty()) return true; */ //setActiveProject(projects.values().first()->getName()); return true; }
void ProjectSaveAs::setDefaultProject(Project* project) { ui_projects->selectionModel()->select(m_mainWindow->projectsModel()->rootIndexForProject(project), QItemSelectionModel::Select); setActiveProject(project); }