diff --git a/manifest b/manifest index f2adbff..4bded07 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C CloneDialog:\sFixed\sincorrect\sparsing\sfor\slocal\srepositories\nCloneDialog:\sFixed\sincorrect\smissing\ssuffix\sdetection\nWe\snow\spass\slocal\srepository\surls\sas\slocal\spaths\sto\sfossil,\sin\sorder\sto\sovercome\sbuggy\sbehavior\sof\sQUrl\sfor\sWindows\spaths -D 2015-08-26T19:56:14.906 +C Fixed\sissue\swith\sincosistent\sUI\sstate\swhen\sclosing\sa\sworkspace\nSimplified\sworkspace\srefresh\slogic +D 2015-08-26T20:28:00.267 F .fossil-settings/manifest a09a968bf05a50058f3ad50132730b719bc39e76 F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35 F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b @@ -232,8 +232,8 @@ F src/FslSettingsDialog.cpp e00907d493fba469e48a008aecda88426350b5ac F src/FslSettingsDialog.h dfe2a61884a55a74cbb9206b6f6b482b979725e7 F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261 -F src/MainWindow.cpp 47aa96182c3a005d27295ef52e351f57a79721da -F src/MainWindow.h f4cffbe4d360d30aa2eeaa25fc6d50d0a39c617f +F src/MainWindow.cpp 28f0155821d42c645c99fdd5214344c177cea3bc +F src/MainWindow.h 15f703522d1d6cd6239c8c8f037d158870b6b0b9 F src/RemoteDialog.cpp 8540cc5e2e41c4127ed8a028d84691604fa6ecac F src/RemoteDialog.h 5e0438c2bd7c79b1bb44bfbd58c2181b544a9e5d F src/RevisionDialog.cpp e58c4f8a704f00addebb15d521b76620fdafda79 @@ -261,7 +261,7 @@ F ui/MainWindow.ui e2a18caa7482b3ee0dff477592cdc9574b35fe4f F ui/RemoteDialog.ui 95a4750d972ed8c49bb10b95db91ff16cfe2dd0b F ui/RevisionDialog.ui 27c3b98c665fec014a50cbf3352c0627f75e68cd F ui/SettingsDialog.ui 2e1b6ce7a49100088c5649292c1319e62e0302e1 -P e574454625a7701da9d1959fa72e54036d5ab7c3 -R edb709028da6b5b7318a59278b5a9c29 +P afa9b2538a0bfa258104a979eadce28c099e9848 +R 8e7f8d9d9b9c83f269cd7044b0450be8 U Kostas -Z 791f9cfa7aba39378f947f3aabef881e +Z 3db267354ced0e1a65fb38289663a642 diff --git a/manifest.uuid b/manifest.uuid index 4618e0a..f591d36 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -afa9b2538a0bfa258104a979eadce28c099e9848 \ No newline at end of file +2e0cbf44fd99ae2c1155857c79d0c09be9897483 \ No newline at end of file diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index ba240c3..a2bbe15 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -648,105 +648,112 @@ void MainWindow::enableActions(bool on) ui->actionCreateBranch, ui->actionMergeBranch, ui->actionFossilSettings, + ui->actionViewAll, + ui->actionViewAsFolders, + ui->actionViewAsList, + ui->actionViewIgnored, + ui->actionViewModifedOnly, + ui->actionViewModified, + ui->actionViewUnchanged, + ui->actionViewUnknown }; for(size_t i=0; isetEnabled(on); - } + //------------------------------------------------------------------------------ bool MainWindow::refresh() { QString title = "Fuel"; + loadFossilSettings(); + + bool valid = scanWorkspace(); + if(valid) + { + const QString &project_name = getWorkspace().getProjectName(); + if(!project_name.isEmpty()) + title += " - " + project_name; + } + + enableActions(valid); + setWindowTitle(title); + return valid; +} + +//------------------------------------------------------------------------------ +bool MainWindow::scanWorkspace() +{ + setBusy(true); + bool valid = true; + // Load repository info RepoStatus st = fossil().getRepoStatus(); + QString status; if(st==REPO_NOT_FOUND) { - setStatus(tr("No workspace detected.")); - enableActions(false); - getWorkspace().getFileModel().removeRows(0, getWorkspace().getFileModel().rowCount()); - getWorkspace().getTreeModel().removeRows(0, getWorkspace().getFileModel().rowCount()); - setWindowTitle(title); - return false; + status = tr("No workspace detected."); + valid = false; } else if(st==REPO_OLD_SCHEMA) { - setStatus(tr("Old repository schema detected. Consider running 'fossil rebuild'")); - enableActions(false); - getWorkspace().getFileModel().removeRows(0, getWorkspace().getFileModel().rowCount()); - getWorkspace().getTreeModel().removeRows(0, getWorkspace().getFileModel().rowCount()); - setWindowTitle(title); - return true; + status = tr("Old repository schema detected. Consider running 'fossil rebuild'"); + valid = false; } - loadFossilSettings(); - scanWorkspace(); - setStatus(""); - enableActions(true); - - const QString &project_name = getWorkspace().getProjectName(); - if(!project_name.isEmpty()) - title += " - " + project_name; - - setWindowTitle(title); - return true; -} - - - -//------------------------------------------------------------------------------ -void MainWindow::scanWorkspace() -{ - setBusy(true); - - static const QRegExp REGEX_GLOB_LIST(",|\\n", Qt::CaseSensitive); - - QStringList ignore_patterns; - - // Determine ignored file patterns - { - QString ignore_list = settings.GetFossilValue(FOSSIL_SETTING_IGNORE_GLOB).toString().trimmed(); - - // Read patterns from versionable file if it exists - QFile ignored_file(getWorkspace().getPath() + PATH_SEPARATOR ".fossil-settings" PATH_SEPARATOR "ignore-glob"); - - if(ignored_file.open(QFile::ReadOnly)) - { - ignore_list = ignored_file.readAll(); - ignored_file.close(); - } - - if(!ignore_list.isEmpty()) - ignore_patterns = ignore_list.split(REGEX_GLOB_LIST, QString::SkipEmptyParts); - - TrimStringList(ignore_patterns); - } - - getWorkspace().scanWorkspace(ui->actionViewUnknown->isChecked(), - ui->actionViewIgnored->isChecked(), - ui->actionViewModified->isChecked(), - ui->actionViewUnchanged->isChecked(), - ignore_patterns, - uiCallback, - operationAborted - ); - updateWorkspaceView(); - updateFileView(); - - // Build default versions list versionList.clear(); - versionList += getWorkspace().getBranches(); - versionList += getWorkspace().getTags().keys(); - selectedTags.clear(); selectedBranches.clear(); + if(valid) + { + // Determine ignored file patterns + QStringList ignore_patterns; + { + static const QRegExp REGEX_GLOB_LIST(",|\\n", Qt::CaseSensitive); + + QString ignore_list = settings.GetFossilValue(FOSSIL_SETTING_IGNORE_GLOB).toString().trimmed(); + + // Read patterns from versionable file if it exists + QFile ignored_file(getWorkspace().getPath() + PATH_SEPARATOR ".fossil-settings" PATH_SEPARATOR "ignore-glob"); + + if(ignored_file.open(QFile::ReadOnly)) + { + ignore_list = ignored_file.readAll(); + ignored_file.close(); + } + + if(!ignore_list.isEmpty()) + ignore_patterns = ignore_list.split(REGEX_GLOB_LIST, QString::SkipEmptyParts); + + TrimStringList(ignore_patterns); + } + + getWorkspace().scanWorkspace(ui->actionViewUnknown->isChecked(), + ui->actionViewIgnored->isChecked(), + ui->actionViewModified->isChecked(), + ui->actionViewUnchanged->isChecked(), + ignore_patterns, + uiCallback, + operationAborted + ); + + // Build default versions list + versionList += getWorkspace().getBranches(); + versionList += getWorkspace().getTags().keys(); + lblTags->setText(" " + getWorkspace().getActiveTags().join(" ") + " "); + } + + updateWorkspaceView(); + updateFileView(); + + setStatus(status); + lblTags->setVisible(valid); + setBusy(false); - setStatus(""); - lblTags->setText(" " + getWorkspace().getActiveTags().join(" ") + " "); - lblTags->setVisible(true); + return valid; } //------------------------------------------------------------------------------ diff --git a/src/MainWindow.h b/src/MainWindow.h index 8505a86..6c487f2 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -26,7 +26,7 @@ public: private: bool refresh(); - void scanWorkspace(); + bool scanWorkspace(); void applySettings(); void updateSettings(); void updateRevision(const QString& revision);