GUI: Check the project after creation.

Earlier the GUI (project) went into some weird state after creating
a new project. The project could not be checked in any discoverable
way.

This commit fixes the above bug by automatically checking the new
project after the project dialog is closed. I think this is what
most users expect to happen.
This commit is contained in:
Kimmo Varis 2011-08-24 22:41:48 +03:00
parent 6e78b51071
commit 1f4e1e0ffe
4 changed files with 41 additions and 3 deletions

View File

@ -856,8 +856,16 @@ void MainWindow::LoadProjectFile(const QString &filePath)
mUI.mActionEditProjectFile->setEnabled(true); mUI.mActionEditProjectFile->setEnabled(true);
delete mProject; delete mProject;
mProject = new Project(filePath, this); mProject = new Project(filePath, this);
mProject->Open(); CheckProject(mProject);
const QString rootpath = mProject->GetProjectFile()->GetRootPath(); }
void MainWindow::CheckProject(Project *project)
{
if (!project->IsOpen())
project->Open();
QFileInfo inf(project->Filename());
const QString rootpath = project->GetProjectFile()->GetRootPath();
// If the root path is not given or is not "current dir", use project // If the root path is not given or is not "current dir", use project
// file's location directory as root path // file's location directory as root path
@ -866,7 +874,7 @@ void MainWindow::LoadProjectFile(const QString &filePath)
else else
mCurrentDirectory = rootpath; mCurrentDirectory = rootpath;
QStringList paths = mProject->GetProjectFile()->GetCheckPaths(); QStringList paths = project->GetProjectFile()->GetCheckPaths();
// If paths not given then check the root path (which may be the project // If paths not given then check the root path (which may be the project
// file's location, see above). This is to keep the compatibility with // file's location, see above). This is to keep the compatibility with
@ -911,6 +919,7 @@ void MainWindow::NewProjectFile()
mProject->Edit(); mProject->Edit();
} }
AddProjectMRU(filepath); AddProjectMRU(filepath);
CheckProject(mProject);
} }
void MainWindow::CloseProjectFile() void MainWindow::CloseProjectFile()

View File

@ -169,6 +169,12 @@ public slots:
*/ */
void Save(); void Save();
/**
* @brief Check the project.
* @param project Pointer to the project to check.
*/
void CheckProject(Project *project);
/** /**
* @brief Slot to create new project file.. * @brief Slot to create new project file..
* *

View File

@ -47,11 +47,21 @@ Project::~Project()
delete mPFile; delete mPFile;
} }
QString Project::Filename() const
{
return mFilename;
}
void Project::SetFilename(const QString &filename) void Project::SetFilename(const QString &filename)
{ {
mFilename = filename; mFilename = filename;
} }
bool Project::IsOpen() const
{
return mPFile != NULL;
}
bool Project::Open() bool Project::Open()
{ {
mPFile = new ProjectFile(mFilename, this); mPFile = new ProjectFile(mFilename, this);

View File

@ -41,12 +41,25 @@ public:
Project(const QString &filename, QWidget *parent = 0); Project(const QString &filename, QWidget *parent = 0);
~Project(); ~Project();
/**
* @brief Return the filename of the project.
* @return Project's filename.
*/
QString Filename() const;
/** /**
* @brief Set filename for the project file. * @brief Set filename for the project file.
* @param filename Filename. * @param filename Filename.
*/ */
void SetFilename(const QString &filename); void SetFilename(const QString &filename);
/**
* @brief Is the project open?
* The project is considered to be open if it has an opened project file.
* @return true if the project is open, false otherwise.
*/
bool IsOpen() const;
/** /**
* @brief Open existing project file. * @brief Open existing project file.
*/ */