From 379d9707cb66cd9b50e4cd7ac6c91967cba4cbb4 Mon Sep 17 00:00:00 2001 From: kostas Date: Sun, 7 Aug 2011 04:56:05 +0000 Subject: [PATCH] Reintroduced the status character, since it is necessary for the automatic sorting Streamlined the settings storage We now support an implicit fossil executable living in QCoreApplication::applicationDirPath() or in the system path, unless the user has provided an override FossilOrigin-Name: 97aefbc7825732e8fc2e711187c32c49e1149c11 --- MainWindow.cpp | 75 +++++++++++++++++++++++++++++++------------------- MainWindow.h | 6 ++-- main.cpp | 2 +- manifest | 16 +++++------ manifest.uuid | 2 +- 5 files changed, 58 insertions(+), 43 deletions(-) diff --git a/MainWindow.cpp b/MainWindow.cpp index a32df81..dd58eaa 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -353,7 +353,7 @@ void MainWindow::scanWorkspace() } } - QStandardItem *status = new QStandardItem(QIcon(icon), ""); + QStandardItem *status = new QStandardItem(QIcon(icon), tag); status->setToolTip(tooltip); itemModel.setItem(i, COLUMN_STATUS, status); @@ -468,19 +468,21 @@ bool MainWindow::runFossilRaw(const QStringList &args, QStringList *output, int QString wkdir = getCurrentWorkspace(); + QString fossil = getFossilPath(); + if(detached) { - return QProcess::startDetached(settings.fossilPath, args, wkdir); + return QProcess::startDetached(fossil, args, wkdir); } QProcess process(this); process.setProcessChannelMode(QProcess::MergedChannels); process.setWorkingDirectory(wkdir); - process.start(settings.fossilPath, args); + process.start(fossil, args); if(!process.waitForStarted()) { - log("Could not start fossil executable '"+settings.fossilPath + "''\n"); + log("Could not start fossil executable '" + fossil + "''\n"); return false; } @@ -610,35 +612,46 @@ void MainWindow::addWorkspace(const QString &dir) workspaceHistory.append(new_workspace); } + +//------------------------------------------------------------------------------ +QString MainWindow::getFossilPath() +{ + // Use the user-specified fossil if available + if(!settings.fossilPath.isEmpty()) + return settings.fossilPath; + + // Use our fossil if available + QString fuel_fossil = QCoreApplication::applicationDirPath() + QDir::separator() + "fossil"; + + if(QFile::exists(fuel_fossil)) + return fuel_fossil; + + // Otherwise assume there is a "fossil" executable in the path + return "fossil"; +} //------------------------------------------------------------------------------ void MainWindow::loadSettings() { + // Linux: ~/.config/organizationName/applicationName.conf + // Windows: HKEY_CURRENT_USER\Software\organizationName\Fuel QSettings qsettings(QSettings::UserScope, QCoreApplication::organizationName(), QCoreApplication::applicationName()); if(qsettings.contains("FossilPath")) settings.fossilPath = qsettings.value("FossilPath").toString(); - else - settings.fossilPath = "fossil"; - - int num_wks = 0; - - if(qsettings.contains("NumWorkspaces")) - num_wks = qsettings.value("NumWorkspaces").toInt(); + int num_wks = qsettings.beginReadArray("Workspaces"); for(int i=0; i-1) - qsettings.setValue("LastWorkspace", curr_wkspace); + qsettings.endArray(); qsettings.setValue("WindowX", x()); qsettings.setValue("WindowY", y()); @@ -742,11 +757,12 @@ bool MainWindow::startUI() fossilUI.setWorkingDirectory(getCurrentWorkspace()); log("> fossil ui\n"); + QString fossil = getFossilPath(); - fossilUI.start(settings.fossilPath, QStringList() << "ui"); + fossilUI.start(fossil, QStringList() << "ui"); if(!fossilUI.waitForStarted()) { - log(settings.fossilPath + tr(" does not exist") +"\n"); + log(fossil+ tr(" does not exist") +"\n"); return false; } @@ -1102,3 +1118,4 @@ void MainWindow::on_actionSettings_triggered() { SettingsDialog::run(this, settings); } + diff --git a/MainWindow.h b/MainWindow.h index c46a877..0fd86dd 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -116,6 +116,7 @@ private: void addWorkspace(const QString &dir); void rebuildRecent(); bool openWorkspace(const QString &dir); + QString getFossilPath(); enum RepoStatus { @@ -154,22 +155,19 @@ private slots: void on_actionUndo_triggered(); void on_actionAbout_triggered(); void on_actionUpdate_triggered(); - void on_actionSettings_triggered(); - private: enum { MAX_RECENT=5 }; - Ui::MainWindow *ui; QStandardItemModel itemModel; QProcess fossilUI; class QAction *recentWorkspaceActs[MAX_RECENT]; class QLabel *statusLabel; - bool fossilAbort; + bool fossilAbort; // FIXME: No GUI for it yet Settings settings; QString projectName; diff --git a/main.cpp b/main.cpp index ea5bd26..5f38ec1 100644 --- a/main.cpp +++ b/main.cpp @@ -7,7 +7,7 @@ int main(int argc, char *argv[]) a.setApplicationName("Fuel"); a.setApplicationVersion("0.9.0"); a.setOrganizationDomain("karanik.com"); - a.setOrganizationName("karanik"); + a.setOrganizationName("Karanik"); MainWindow w; w.show(); diff --git a/manifest b/manifest index 05aca93..de9d6d1 100644 --- a/manifest +++ b/manifest @@ -1,13 +1,13 @@ -C Improved\ssupport\sfor\sfossil\sinteractive\squestions -D 2011-08-07T03:14:37.316 +C Reintroduced\sthe\sstatus\scharacter,\ssince\sit\sis\snecessary\sfor\sthe\sautomatic\ssorting\nStreamlined\sthe\ssettings\sstorage\nWe\snow\ssupport\san\simplicit\sfossil\sexecutable\sliving\sin\sQCoreApplication::applicationDirPath()\sor\sin\sthe\ssystem\spath,\sunless\sthe\suser\shas\sprovided\san\soverride +D 2011-08-07T04:56:05.986 F CommitDialog.cpp a1fcdc94933f4e1a144224c7c70f1e067d3ee31e F CommitDialog.h 0550b1b652924ae54b6f6c9274cad2d4c491808a F CommitDialog.ui 5067623f6af6f5a42c87df903278e383e945e154 F FileActionDialog.cpp fcaebf9986f789b3440d5390b3458ad5f86fe0c8 F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7 -F MainWindow.cpp 18c298a5cc9a8d27f59d377c4d363c7a9b7e1085 -F MainWindow.h 81a5061a551c9969a7acfcc49c84adc076e5eaf6 +F MainWindow.cpp 809b27413caa8192b135f6addf40fc2119d8f3b3 +F MainWindow.h 67778cc3e6e5a933d4b198e2a8284523f591ff44 F MainWindow.ui 9f901c1f06b24df3cbd36d5349ffe0d82896c05b F RepoDialog.cpp 8f20e1511526973555c774350ec413dcecf51c9e F RepoDialog.h a958c5f98f1e6882bf41dbdd2e4df3cb89700802 @@ -171,9 +171,9 @@ F icons/Zoom\sOut-01.png 8eda092100d9e00c9097f43a80d1e26695947448 F icons/Zoom-01.png 67ca532922e9166325c5c75fce1ca3fbb0d2b6a6 F icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b F icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038 -F main.cpp aed85ed9766ddb8685e300e8ca4a0dc193ae2586 +F main.cpp c27bddc9ee5efdee649c6bf96696197874560e22 F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53 -P 6a6a654b0db2537fc73774e7dc37d25cb2ae63d7 -R 40a5f682e0b0200d3bd354258d471c18 +P 2c36e183b8e8816ada688991ea6da7ad64caf2a8 +R 3b0c20ab4fb5da73c9585141277a12f4 U kostas -Z 68777a7f034546864430c866d1616086 +Z 306fe72a4f590e48c01e123486041f37 diff --git a/manifest.uuid b/manifest.uuid index fce606e..51e068e 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2c36e183b8e8816ada688991ea6da7ad64caf2a8 \ No newline at end of file +97aefbc7825732e8fc2e711187c32c49e1149c11 \ No newline at end of file