Bridge no longer needs depends on the UI. All interaction occurs via the callback

More cleanups

FossilOrigin-Name: 3d1e269fee5acd4b65025024f701319c3e993e97
This commit is contained in:
kostas 2015-04-27 19:54:01 +00:00
parent 46c5fba9d2
commit 2eb430b6e1
6 changed files with 38 additions and 34 deletions

View File

@ -1,5 +1,5 @@
C Transitioned\sto\snew\sfossil\sbridge C Bridge\sno\slonger\sneeds\sdepends\son\sthe\sUI.\sAll\sinteraction\soccurs\svia\sthe\scallback\nMore\scleanups
D 2015-04-27T19:31:43.310 D 2015-04-27T19:54:01.466
F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35 F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35
F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b
F debian/compat b6abd567fa79cbe0196d093a067271361dc6ca8b F debian/compat b6abd567fa79cbe0196d093a067271361dc6ca8b
@ -184,8 +184,8 @@ F rsrc/icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b
F rsrc/icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038 F rsrc/icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038
F rsrc/icons/fuel.png 40daf53b7f6bdcdd0d6aa5ef433d078ec5ea4342 F rsrc/icons/fuel.png 40daf53b7f6bdcdd0d6aa5ef433d078ec5ea4342
F rsrc/resources.qrc 4098be128fd6c045db933d041fe8844b14643a6f F rsrc/resources.qrc 4098be128fd6c045db933d041fe8844b14643a6f
F src/Bridge.cpp 00a460d33624258b29ad194297569c53cb10810f F src/Bridge.cpp a0661a0a68799140c7e0d9b185e64c266c882c98
F src/Bridge.h b121493715dd0bed15658b326a70af57f2252db7 F src/Bridge.h 33cea48e72c4c1a8dc8bd41c0bdd972454ca9240
F src/BrowserWidget.cpp 8b8f545cdff4a4188edc698a1b4777f5df46f056 F src/BrowserWidget.cpp 8b8f545cdff4a4188edc698a1b4777f5df46f056
F src/BrowserWidget.h 764d66aa9a93b890298bd0301097739cb4e16597 F src/BrowserWidget.h 764d66aa9a93b890298bd0301097739cb4e16597
F src/CloneDialog.cpp 812ef7d361c16da21540b7047c9d4d5e74f18539 F src/CloneDialog.cpp 812ef7d361c16da21540b7047c9d4d5e74f18539
@ -200,8 +200,8 @@ 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 8f20a49621c42bfa7ee5f6018900a9f6ef08f6c8 F src/MainWindow.cpp 5a66bf80a0af7c2f1255a7e567f108466dd4eba8
F src/MainWindow.h 045b784735d86cef7ed415ca46dccf9b6a005c39 F src/MainWindow.h c593f74f3b7d0b8f6d29288c6badd6b350fcb25f
F src/SettingsDialog.cpp a46cff5e5dd425e3dbdd15632abfd5829f5562b4 F src/SettingsDialog.cpp a46cff5e5dd425e3dbdd15632abfd5829f5562b4
F src/SettingsDialog.h 4e2790f581e991c744ae9f86580f1972b8c7ff43 F src/SettingsDialog.h 4e2790f581e991c744ae9f86580f1972b8c7ff43
F src/Utils.cpp f78728e0817b1db23007ba0d2c5c26980ee7ebca F src/Utils.cpp f78728e0817b1db23007ba0d2c5c26980ee7ebca
@ -215,7 +215,7 @@ F ui/CommitDialog.ui 6200f6cabdcf40a20812e811be28e0793f82516f
F ui/FileActionDialog.ui 89bb4dc2d0b8adcd41adcb11ec65f2028a09a12d F ui/FileActionDialog.ui 89bb4dc2d0b8adcd41adcb11ec65f2028a09a12d
F ui/MainWindow.ui 8677f5c8bca5bf7561d5f64bfdd0cef5157c6ac7 F ui/MainWindow.ui 8677f5c8bca5bf7561d5f64bfdd0cef5157c6ac7
F ui/SettingsDialog.ui 2b7c2870e0054b0f4106f495d85d02c0b814df8b F ui/SettingsDialog.ui 2b7c2870e0054b0f4106f495d85d02c0b814df8b
P e2b03b2a965ec50382ea89d374ece4a6a56b72b5 P c5b0a1a62a9607f434ac6426401fd40c94d6a2d8
R 7230e39179ffadefe20ce40a0176c6fa R f57a18f9cee5453e9453dfa80c854856
U kostas U kostas
Z 1c155b4c26131deaf429fe2b750502dc Z 7bfd61383d77ec4c7853ed5119f2785e

View File

@ -1 +1 @@
c5b0a1a62a9607f434ac6426401fd40c94d6a2d8 3d1e269fee5acd4b65025024f701319c3e993e97

View File

@ -4,7 +4,6 @@
#include <LoggedProcess.h> #include <LoggedProcess.h>
#include <QTextCodec> #include <QTextCodec>
#include <QDebug> #include <QDebug>
#include <QMessageBox>
#include <QDir> #include <QDir>
#include <QTemporaryFile> #include <QTemporaryFile>
#include <QUrl> #include <QUrl>
@ -529,7 +528,10 @@ bool Bridge::runFossilRaw(const QStringList &args, QStringList *output, int *exi
final_args = &run_args; final_args = &run_args;
// Create fossil process // Create fossil process
LoggedProcess process(parentWidget); // FIXME: when we are sure this works delete this
// LoggedProcess process(parentWidget*/);
LoggedProcess process(0);
process.setWorkingDirectory(wkdir); process.setWorkingDirectory(wkdir);
process.start(fossil, *final_args); process.start(fossil, *final_args);
@ -557,6 +559,7 @@ bool Bridge::runFossilRaw(const QStringList &args, QStringList *output, int *exi
QTextDecoder *decoder = codec->makeDecoder(); QTextDecoder *decoder = codec->makeDecoder();
Q_ASSERT(decoder); Q_ASSERT(decoder);
Q_ASSERT(uiCallback);
#ifdef QT_DEBUG #ifdef QT_DEBUG
size_t input_index = 0; size_t input_index = 0;
#endif #endif
@ -673,7 +676,7 @@ bool Bridge::runFossilRaw(const QStringList &args, QStringList *output, int *exi
if(have_acyn_query) if(have_acyn_query)
buttons |= QMessageBox::Apply; buttons |= QMessageBox::Apply;
QMessageBox::StandardButton res = DialogQuery(parentWidget, "Fossil", query, buttons); QMessageBox::StandardButton res = uiCallback->Query("Fossil", query, buttons);
if(res==QMessageBox::Yes) if(res==QMessageBox::Yes)
{ {
process.write(ans_yes.toLatin1()); process.write(ans_yes.toLatin1());
@ -700,7 +703,7 @@ bool Bridge::runFossilRaw(const QStringList &args, QStringList *output, int *exi
{ {
log(last_line); log(last_line);
QString query = ParseFossilQuery(last_line); QString query = ParseFossilQuery(last_line);
QMessageBox::StandardButton res = DialogQuery(parentWidget, "Fossil", query); QMessageBox::StandardButton res = uiCallback->Query("Fossil", query, QMessageBox::Yes|QMessageBox::No);
if(res==QMessageBox::Yes) if(res==QMessageBox::Yes)
{ {
@ -719,7 +722,7 @@ bool Bridge::runFossilRaw(const QStringList &args, QStringList *output, int *exi
{ {
log(last_line); log(last_line);
QString query = ParseFossilQuery(last_line); QString query = ParseFossilQuery(last_line);
QMessageBox::StandardButton res = DialogQuery(parentWidget, "Fossil", query, QMessageBox::YesToAll|QMessageBox::No); QMessageBox::StandardButton res = uiCallback->Query("Fossil", query, QMessageBox::YesToAll|QMessageBox::No);
if(res==QMessageBox::YesAll) if(res==QMessageBox::YesAll)
{ {
process.write(ans_always.toLatin1()); process.write(ans_always.toLatin1());
@ -802,7 +805,9 @@ bool Bridge::startUI(const QString &httpPort)
return true; return true;
} }
fossilUI.setParent(parentWidget); // FIXME: when we are sure this works delete this
//fossilUI.setParent(parentWidget);
fossilUI.setProcessChannelMode(QProcess::MergedChannels); fossilUI.setProcessChannelMode(QProcess::MergedChannels);
fossilUI.setWorkingDirectory(getCurrentWorkspace()); fossilUI.setWorkingDirectory(getCurrentWorkspace());

View File

@ -5,6 +5,7 @@ class QStringList;
#include <QString> #include <QString>
#include <QObject> #include <QObject>
#include <QProcess> #include <QProcess>
#include <QMessageBox>
typedef QMap<QString, QString> stashmap_t; typedef QMap<QString, QString> stashmap_t;
@ -35,22 +36,20 @@ public:
virtual void logText(const QString &text, bool isHTML)=0; virtual void logText(const QString &text, bool isHTML)=0;
virtual void beginProcess(const QString &text)=0; virtual void beginProcess(const QString &text)=0;
virtual void endProcess()=0; virtual void endProcess()=0;
virtual QMessageBox::StandardButton Query(const QString &title, const QString &query, QMessageBox::StandardButtons buttons)=0;
}; };
Bridge() Bridge()
: QObject(0) : QObject(0)
, parentWidget(0)
, abortOperation(false) , abortOperation(false)
, uiCallback(0) , uiCallback(0)
{ {
} }
void Init(QWidget *parent, UICallback *callback, const QString &fossPath, const QString &workspace) void Init(UICallback *callback, const QString &fossPath, const QString &workspace)
{ {
parentWidget = parent;
uiCallback = callback; uiCallback = callback;
fossilPath = fossPath; fossilPath = fossPath;
currentWorkspace = workspace; currentWorkspace = workspace;
} }
@ -129,12 +128,9 @@ private:
uiCallback->logText(text, isHTML); uiCallback->logText(text, isHTML);
} }
QString getFossilPath(); QString getFossilPath();
QWidget *parentWidget; // fixme
bool abortOperation; // FIXME: No GUI for it yet bool abortOperation; // FIXME: No GUI for it yet
UICallback *uiCallback; UICallback *uiCallback;
QString currentWorkspace; QString currentWorkspace;
QString fossilPath; // The value from the settings QString fossilPath; // The value from the settings

View File

@ -190,7 +190,7 @@ MainWindow::MainWindow(Settings &_settings, QWidget *parent, QString *workspaceP
uiCallback.init(this); uiCallback.init(this);
// Need to be before applySettings which sets the last workspace // Need to be before applySettings which sets the last workspace
bridge.Init(this, &uiCallback, "", ""); bridge.Init(&uiCallback, "", "");
applySettings(); applySettings();
@ -577,8 +577,8 @@ bool MainWindow::refresh()
setStatus(""); setStatus("");
enableActions(true); enableActions(true);
if(!getProjectName().isEmpty()) if(!bridge.getProjectName().isEmpty())
title += " - " + getProjectName(); title += " - " + bridge.getProjectName();
setWindowTitle(title); setWindowTitle(title);
return true; return true;
@ -635,7 +635,7 @@ void MainWindow::scanWorkspace()
QString fullpath = it->absoluteFilePath(); QString fullpath = it->absoluteFilePath();
// Skip fossil files // Skip fossil files
if(filename == FOSSIL_CHECKOUT1 || filename == FOSSIL_CHECKOUT2 || (!getRepositoryFile().isEmpty() && QFileInfo(fullpath) == QFileInfo(getRepositoryFile()))) if(filename == FOSSIL_CHECKOUT1 || filename == FOSSIL_CHECKOUT2 || (!bridge.getRepositoryFile().isEmpty() && QFileInfo(fullpath) == QFileInfo(bridge.getRepositoryFile())))
continue; continue;
RepoFile *rf = new RepoFile(*it, RepoFile::TYPE_UNKNOWN, wkdir); RepoFile *rf = new RepoFile(*it, RepoFile::TYPE_UNKNOWN, wkdir);
@ -777,7 +777,7 @@ void MainWindow::updateDirView()
header << tr("Folders"); header << tr("Folders");
repoDirModel.setHorizontalHeaderLabels(header); repoDirModel.setHorizontalHeaderLabels(header);
QStandardItem *root = new QStandardItem(QIcon(":icons/icons/My Documents-01.png"), getProjectName()); QStandardItem *root = new QStandardItem(QIcon(":icons/icons/My Documents-01.png"), bridge.getProjectName());
root->setData(""); // Empty Path root->setData(""); // Empty Path
root->setEditable(false); root->setEditable(false);
@ -2189,3 +2189,9 @@ void MainWindow::MainWinUICallback::endProcess()
mainWindow->ui->statusBar->clearMessage(); mainWindow->ui->statusBar->clearMessage();
mainWindow->progressBar->setHidden(true); mainWindow->progressBar->setHidden(true);
} }
//------------------------------------------------------------------------------
QMessageBox::StandardButton MainWindow::MainWinUICallback::Query(const QString &title, const QString &query, QMessageBox::StandardButtons buttons)
{
return DialogQuery(mainWindow, title, query, buttons);
}

View File

@ -230,6 +230,8 @@ private:
virtual void logText(const QString& text, bool isHTML); virtual void logText(const QString& text, bool isHTML);
virtual void beginProcess(const QString& text); virtual void beginProcess(const QString& text);
virtual void endProcess(); virtual void endProcess();
virtual QMessageBox::StandardButton Query(const QString &title, const QString &query, QMessageBox::StandardButtons buttons);
private: private:
class MainWindow *mainWindow; class MainWindow *mainWindow;
@ -242,7 +244,6 @@ private:
MAX_RECENT=5 MAX_RECENT=5
}; };
Ui::MainWindow *ui; Ui::MainWindow *ui;
QStandardItemModel repoFileModel; QStandardItemModel repoFileModel;
QStandardItemModel repoDirModel; QStandardItemModel repoDirModel;
@ -258,10 +259,6 @@ private:
MainWinUICallback uiCallback; MainWinUICallback uiCallback;
Bridge bridge; Bridge bridge;
const QString & getProjectName() const { return bridge.getProjectName(); }
const QString & getRepositoryFile() const { return bridge.getRepositoryFile(); }
void setRepositoryFile(const QString &filename) { bridge.setRepositoryFile(filename); }
ViewMode viewMode; ViewMode viewMode;
stringset_t selectedDirs; // The directory selected in the tree stringset_t selectedDirs; // The directory selected in the tree