- Perform the first workspace scan after the main window is visible
- Aborted scans now leave the workspace state empty to prevent incorrect operation - Minor refactoring FossilOrigin-Name: be20b59a51389fdf0527c039742581032b52e3a5
This commit is contained in:
parent
76f6550ae5
commit
f33f1d4a82
18
manifest
18
manifest
@ -1,5 +1,5 @@
|
|||||||
C Initial\ssupport\sfor\sabortable\srefreshes\n
|
C -\sPerform\sthe\sfirst\sworkspace\sscan\safter\sthe\smain\swindow\sis\svisible\n-\sAborted\sscans\snow\sleave\sthe\sworkspace\sstate\sempty\sto\sprevent\sincorrect\soperation\n-\sMinor\srefactoring
|
||||||
D 2014-07-29T11:59:44.606
|
D 2014-07-29T14:09:36.103
|
||||||
F dist/arch/PKGBUILD 1d72dad77767f94a6b1a018067188e61927fa564
|
F dist/arch/PKGBUILD 1d72dad77767f94a6b1a018067188e61927fa564
|
||||||
F dist/win/fuel.iss ef3558dbba409eb194938b930377fc9ee27d319e
|
F dist/win/fuel.iss ef3558dbba409eb194938b930377fc9ee27d319e
|
||||||
F doc/Building.txt 7c0f1060d4a08ed330058d4a3a68905c05228381
|
F doc/Building.txt 7c0f1060d4a08ed330058d4a3a68905c05228381
|
||||||
@ -187,13 +187,13 @@ F src/FileTableView.cpp 5ddf8c391c9a3ac449ec61fb1db837b577afeec2
|
|||||||
F src/FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df
|
F src/FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df
|
||||||
F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c
|
F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c
|
||||||
F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261
|
F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261
|
||||||
F src/MainWindow.cpp ec7c571b7664e537998ae8930e5e9d6cb1994fb3
|
F src/MainWindow.cpp 0299d46ad799733c7e179a120b6a535b5f5fb2ab
|
||||||
F src/MainWindow.h 6ee1c046c176782130a064a9feed35def4d93af6
|
F src/MainWindow.h dc0a9ed7de8a338e56c38c00ec303796f31bd24d
|
||||||
F src/SettingsDialog.cpp effff92f746a71b07f0e6a72a21caac5a9085123
|
F src/SettingsDialog.cpp effff92f746a71b07f0e6a72a21caac5a9085123
|
||||||
F src/SettingsDialog.h 01c1f876c64f750ba8820a0d745e377acabe4921
|
F src/SettingsDialog.h 01c1f876c64f750ba8820a0d745e377acabe4921
|
||||||
F src/Utils.cpp 9aff456712e4276b49083426301b3b96d3819c77
|
F src/Utils.cpp 9aff456712e4276b49083426301b3b96d3819c77
|
||||||
F src/Utils.h c546e478a1225a28c99cd4c30f70cf9be9804a2a
|
F src/Utils.h c546e478a1225a28c99cd4c30f70cf9be9804a2a
|
||||||
F src/main.cpp 3150a2a1fb103f120a3dcda581a7a41a3c246715
|
F src/main.cpp 99a9d7e0634f4ea54259542cacfbb9d1e76ccb75
|
||||||
F tools/pack.sh d7f38a498c4e9327fecd6a6e5ac27be270d43008 x
|
F tools/pack.sh d7f38a498c4e9327fecd6a6e5ac27be270d43008 x
|
||||||
F ui/BrowserWidget.ui 5ad98b13773afadb20a1a2c22148aaebe5dbd95d
|
F ui/BrowserWidget.ui 5ad98b13773afadb20a1a2c22148aaebe5dbd95d
|
||||||
F ui/CloneDialog.ui 0fc820804df91f16506ee466a44519fdd44e468f
|
F ui/CloneDialog.ui 0fc820804df91f16506ee466a44519fdd44e468f
|
||||||
@ -201,7 +201,7 @@ F ui/CommitDialog.ui 6200f6cabdcf40a20812e811be28e0793f82516f
|
|||||||
F ui/FileActionDialog.ui 89bb4dc2d0b8adcd41adcb11ec65f2028a09a12d
|
F ui/FileActionDialog.ui 89bb4dc2d0b8adcd41adcb11ec65f2028a09a12d
|
||||||
F ui/MainWindow.ui 7ede8bbb54513e0771fdf5d5a2566d88c81b73ad
|
F ui/MainWindow.ui 7ede8bbb54513e0771fdf5d5a2566d88c81b73ad
|
||||||
F ui/SettingsDialog.ui 55aefad7145c40d936c43759789d1b50e361b020
|
F ui/SettingsDialog.ui 55aefad7145c40d936c43759789d1b50e361b020
|
||||||
P 30ee66fdd239b24a6450dbb8b2dee4b904813a55
|
P ac8a195f2fcfaa16e849461ae63aa01f88d1794d
|
||||||
R 7a758f7890147cf5446303afc8b7b101
|
R 0de503ecd93bfe74dd7fd86b2c3e51e5
|
||||||
U Kostas
|
U kostas
|
||||||
Z edd995531a4645688e87cfd0c0dd161e
|
Z 5ca34810e5aa3638217680aac3bf6987
|
||||||
|
@ -1 +1 @@
|
|||||||
ac8a195f2fcfaa16e849461ae63aa01f88d1794d
|
be20b59a51389fdf0527c039742581032b52e3a5
|
@ -25,10 +25,15 @@
|
|||||||
#include "Utils.h"
|
#include "Utils.h"
|
||||||
#include "LoggedProcess.h"
|
#include "LoggedProcess.h"
|
||||||
|
|
||||||
#define COUNTOF(array) (sizeof(array)/sizeof(array[0]))
|
#define COUNTOF(array) (sizeof(array)/sizeof(array[0]))
|
||||||
|
|
||||||
|
#define PATH_SEP "/"
|
||||||
|
|
||||||
|
static const unsigned char UTF8_BOM[] = { 0xEF, 0xBB, 0xBF };
|
||||||
|
|
||||||
|
// 19: [5c46757d4b9765] on 2012-04-22 04:41:15
|
||||||
|
static const QRegExp REGEX_STASH("\\s*(\\d+):\\s+\\[(.*)\\] on (\\d+)-(\\d+)-(\\d+) (\\d+):(\\d+):(\\d+)", Qt::CaseInsensitive);
|
||||||
|
|
||||||
#define PATH_SEP "/"
|
|
||||||
static const unsigned char UTF8_BOM[] = { 0xEF, 0xBB, 0xBF };
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
enum
|
enum
|
||||||
@ -229,15 +234,14 @@ MainWindow::MainWindow(Settings &_settings, QWidget *parent, QString *workspaceP
|
|||||||
viewMode = VIEWMODE_TREE;
|
viewMode = VIEWMODE_TREE;
|
||||||
|
|
||||||
applySettings();
|
applySettings();
|
||||||
refreshOnShow = true;
|
|
||||||
|
|
||||||
// Apply any explicit workspace path if available
|
// Apply any explicit workspace path if available
|
||||||
if(workspacePath && !workspacePath->isEmpty())
|
if(workspacePath && !workspacePath->isEmpty())
|
||||||
openWorkspace(*workspacePath);
|
openWorkspace(*workspacePath);
|
||||||
|
|
||||||
abortCurrentAction = false;
|
abortOperation = false;
|
||||||
|
|
||||||
connect(this, SIGNAL(show), SLOT(onShow()), Qt::DirectConnection);
|
rebuildRecent();
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@ -669,7 +673,7 @@ void MainWindow::scanWorkspace()
|
|||||||
workspaceFiles.clear();
|
workspaceFiles.clear();
|
||||||
pathSet.clear();
|
pathSet.clear();
|
||||||
|
|
||||||
abortCurrentAction = false;
|
abortOperation = false;
|
||||||
|
|
||||||
if(scan_files)
|
if(scan_files)
|
||||||
{
|
{
|
||||||
@ -683,13 +687,8 @@ void MainWindow::scanWorkspace()
|
|||||||
ignore = settings.GetFossilValue(FOSSIL_SETTING_IGNORE_GLOB).toString().replace(',',';');
|
ignore = settings.GetFossilValue(FOSSIL_SETTING_IGNORE_GLOB).toString().replace(',',';');
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!scanDirectory(all_files, wkdir, wkdir, ignore, abortCurrentAction))
|
if(!scanDirectory(all_files, wkdir, wkdir, ignore, abortOperation))
|
||||||
{
|
goto _done;
|
||||||
setBusy(false);
|
|
||||||
setStatus("");
|
|
||||||
QApplication::restoreOverrideCursor();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(QFileInfoList::iterator it=all_files.begin(); it!=all_files.end(); ++it)
|
for(QFileInfoList::iterator it=all_files.begin(); it!=all_files.end(); ++it)
|
||||||
{
|
{
|
||||||
@ -783,30 +782,22 @@ void MainWindow::scanWorkspace()
|
|||||||
stashMap.clear();
|
stashMap.clear();
|
||||||
res.clear();
|
res.clear();
|
||||||
if(!runFossil(QStringList() << "stash" << "ls", &res, RUNFLAGS_SILENT_ALL))
|
if(!runFossil(QStringList() << "stash" << "ls", &res, RUNFLAGS_SILENT_ALL))
|
||||||
{
|
goto _done;
|
||||||
setBusy(false);
|
|
||||||
setStatus("");
|
|
||||||
QApplication::restoreOverrideCursor();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 19: [5c46757d4b9765] on 2012-04-22 04:41:15
|
|
||||||
QRegExp stash_rx("\\s*(\\d+):\\s+\\[(.*)\\] on (\\d+)-(\\d+)-(\\d+) (\\d+):(\\d+):(\\d+)", Qt::CaseInsensitive);
|
|
||||||
|
|
||||||
for(QStringList::iterator line_it=res.begin(); line_it!=res.end(); )
|
for(QStringList::iterator line_it=res.begin(); line_it!=res.end(); )
|
||||||
{
|
{
|
||||||
QString line = *line_it;
|
QString line = *line_it;
|
||||||
|
|
||||||
int index = stash_rx.indexIn(line);
|
int index = REGEX_STASH.indexIn(line);
|
||||||
if(index==-1)
|
if(index==-1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
QString id = stash_rx.cap(1);
|
QString id = REGEX_STASH.cap(1);
|
||||||
++line_it;
|
++line_it;
|
||||||
|
|
||||||
QString name;
|
QString name;
|
||||||
// Finish at an anonymous stash or start of a new stash ?
|
// Finish at an anonymous stash or start of a new stash ?
|
||||||
if(line_it==res.end() || stash_rx.indexIn(*line_it)!=-1)
|
if(line_it==res.end() || REGEX_STASH.indexIn(*line_it)!=-1)
|
||||||
name = line.trimmed();
|
name = line.trimmed();
|
||||||
else // Named stash
|
else // Named stash
|
||||||
{
|
{
|
||||||
@ -821,6 +812,7 @@ void MainWindow::scanWorkspace()
|
|||||||
|
|
||||||
|
|
||||||
// Update the file item model
|
// Update the file item model
|
||||||
|
_done:
|
||||||
updateDirView();
|
updateDirView();
|
||||||
updateFileView();
|
updateFileView();
|
||||||
updateStashView();
|
updateStashView();
|
||||||
@ -1129,7 +1121,7 @@ bool MainWindow::runFossilRaw(const QStringList &args, QStringList *output, int
|
|||||||
QString ans_always = 'a' + EOL_MARK;
|
QString ans_always = 'a' + EOL_MARK;
|
||||||
QString ans_convert = 'c' + EOL_MARK;
|
QString ans_convert = 'c' + EOL_MARK;
|
||||||
|
|
||||||
abortCurrentAction = false;
|
abortOperation = false;
|
||||||
QString buffer;
|
QString buffer;
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
@ -1150,7 +1142,7 @@ bool MainWindow::runFossilRaw(const QStringList &args, QStringList *output, int
|
|||||||
if(state!=QProcess::Running && bytes_avail<1)
|
if(state!=QProcess::Running && bytes_avail<1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if(abortCurrentAction)
|
if(abortOperation)
|
||||||
{
|
{
|
||||||
#ifdef Q_OS_WIN // Verify this is still true on Qt5
|
#ifdef Q_OS_WIN // Verify this is still true on Qt5
|
||||||
process.kill(); // QT on windows cannot terminate console processes with QProcess::terminate
|
process.kill(); // QT on windows cannot terminate console processes with QProcess::terminate
|
||||||
@ -2666,19 +2658,15 @@ void MainWindow::setBusy(bool busy)
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
void MainWindow::onAbort()
|
void MainWindow::onAbort()
|
||||||
{
|
{
|
||||||
abortCurrentAction = true;
|
abortOperation = true;
|
||||||
log("\n* "+tr("Terminated")+" *\n");
|
// FIXME: Rename this to something better, Operation Aborted
|
||||||
|
log("<br><b>* "+tr("Terminated")+" *</b><br>", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
void MainWindow::onShow()
|
void MainWindow::fullRefresh()
|
||||||
{
|
{
|
||||||
if(refreshOnShow)
|
refresh();
|
||||||
{
|
// Select the Root of the tree to update the file view
|
||||||
refresh();
|
selectRootDir();
|
||||||
rebuildRecent();
|
|
||||||
// Select the Root of the tree to update the file view
|
|
||||||
selectRootDir();
|
|
||||||
refreshOnShow = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -120,6 +120,7 @@ public:
|
|||||||
explicit MainWindow(Settings &_settings, QWidget *parent = 0, QString *workspacePath = 0);
|
explicit MainWindow(Settings &_settings, QWidget *parent = 0, QString *workspacePath = 0);
|
||||||
~MainWindow();
|
~MainWindow();
|
||||||
bool diffFile(QString repoFile);
|
bool diffFile(QString repoFile);
|
||||||
|
void fullRefresh();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef QSet<QString> stringset_t;
|
typedef QSet<QString> stringset_t;
|
||||||
@ -192,7 +193,6 @@ private slots:
|
|||||||
void onTreeViewSelectionChanged(const class QItemSelection &selected, const class QItemSelection &deselected);
|
void onTreeViewSelectionChanged(const class QItemSelection &selected, const class QItemSelection &deselected);
|
||||||
void onFileViewDragOut();
|
void onFileViewDragOut();
|
||||||
void onAbort();
|
void onAbort();
|
||||||
void onShow();
|
|
||||||
|
|
||||||
// Designer slots
|
// Designer slots
|
||||||
void on_actionRefresh_triggered();
|
void on_actionRefresh_triggered();
|
||||||
@ -251,8 +251,7 @@ private:
|
|||||||
class QAction *recentWorkspaceActs[MAX_RECENT];
|
class QAction *recentWorkspaceActs[MAX_RECENT];
|
||||||
class QProgressBar *progressBar;
|
class QProgressBar *progressBar;
|
||||||
class QShortcut *abortShortcut;
|
class QShortcut *abortShortcut;
|
||||||
bool abortCurrentAction;
|
bool abortOperation;
|
||||||
bool refreshOnShow;
|
|
||||||
|
|
||||||
Settings &settings;
|
Settings &settings;
|
||||||
QString projectName;
|
QString projectName;
|
||||||
|
@ -39,6 +39,7 @@ int main(int argc, char *argv[])
|
|||||||
0,
|
0,
|
||||||
workspace.isEmpty() ? 0 : &workspace);
|
workspace.isEmpty() ? 0 : &workspace);
|
||||||
mainwin.show();
|
mainwin.show();
|
||||||
|
mainwin.fullRefresh();
|
||||||
return app.exec();
|
return app.exec();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user