Support for force closing a workspace

FossilOrigin-Name: 16b4d25fe14b5d8a9398db1a31e683382b532473
This commit is contained in:
Kostas
2015-10-16 09:41:21 +00:00
parent 214a2f8deb
commit eb150f950b
6 changed files with 40 additions and 17 deletions

View File

@@ -114,9 +114,15 @@ bool Fossil::createRepository(const QString& repositoryPath)
}
//------------------------------------------------------------------------------
bool Fossil::closeWorkspace()
bool Fossil::closeWorkspace(bool force)
{
if(!runFossil(QStringList() << "close"))
QStringList params;
params << "close";
if(force)
params << "--force";
if(!runFossil(params))
return false;
stopUI();

View File

@@ -22,7 +22,7 @@ public:
// Workspace
bool createWorkspace(const QString &repositoryPath, const QString& workspacePath);
bool closeWorkspace();
bool closeWorkspace(bool force=false);
void setWorkspace(const QString &_workspacePath);
bool pushWorkspace(const QUrl& url);
bool pullWorkspace(const QUrl& url);

View File

@@ -540,9 +540,26 @@ void MainWindow::on_actionCloseRepository_triggered()
return;
// Close Repo
if(!getWorkspace().close())
bool success = getWorkspace().close();
if(!success)
{
QMessageBox::critical(this, tr("Error"), tr("Cannot close the workspace.\nAre there still uncommitted changes available?"), QMessageBox::Ok );
if(QMessageBox::Yes !=DialogQuery(this, tr("Close Workspace"),
tr("Could not close the workspace.\n"
"Perhaps there are uncommitted changes available\n"
"Would you like to force closing this workspace?")))
{
refresh();
return;
}
success = getWorkspace().close(true);
}
if(!success)
{
QMessageBox::critical(this, tr("Error"), tr("Could not close the workspace."), QMessageBox::Ok);
refresh();
return;
}

View File

@@ -74,9 +74,9 @@ public:
return fossil().getWorkspaceState();
}
bool close()
bool close(bool force=false)
{
return fossil().closeWorkspace();
return fossil().closeWorkspace(force);
}
bool cloneRepository(const QString &repository, const QUrl &url, const QUrl &proxyUrl)