예제 #1
0
/**
 * @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;
}
예제 #2
0
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;
}
예제 #4
0
/**
 * @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;
}
예제 #5
0
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 ) );
   }
}
예제 #6
0
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 ) );
   }
}
예제 #7
0
/**
 * @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;
}
예제 #8
0
void ProjectSaveAs::setDefaultProject(Project* project)
{
	ui_projects->selectionModel()->select(m_mainWindow->projectsModel()->rootIndexForProject(project), QItemSelectionModel::Select);
	setActiveProject(project);
}