diff --git a/MainWindow.cpp b/MainWindow.cpp index 16215a9..b162285 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -639,7 +639,11 @@ bool MainWindow::runFossilRaw(const QStringList &args, QStringList *output, int if(fossilAbort) { log("\n* Terminated *\n"); - process.terminate(); + #ifdef Q_WS_WIN + fossilUI.kill(); // QT on windows cannot terminate console processes with QProcess::terminate + #else + process.terminate(); + #endif break; } @@ -748,20 +752,20 @@ QString MainWindow::getFossilPath() { // Use the user-specified fossil if available if(!settings.fossilPath.isEmpty()) - return QDir::toNativeSeparators(settings.fossilPath); + return QDir::toNativeSeparators(settings.fossilPath); - QString fossil_exe = "fossil"; + QString fossil_exe = "fossil"; #ifdef Q_WS_WIN32 - fossil_exe += ".exe"; + fossil_exe += ".exe"; #endif - // Use our fossil if available - QString fuel_fossil = QDir::toNativeSeparators(QCoreApplication::applicationDirPath() + QDir::separator() + fossil_exe); + // Use our fossil if available + QString fuel_fossil = QDir::toNativeSeparators(QCoreApplication::applicationDirPath() + QDir::separator() + fossil_exe); if(QFile::exists(fuel_fossil)) return fuel_fossil; // Otherwise assume there is a "fossil" executable in the path - return fossil_exe; + return fossil_exe; } //------------------------------------------------------------------------------ void MainWindow::loadSettings() @@ -903,6 +907,7 @@ bool MainWindow::startUI() if(uiRunning()) return true; + fossilUI.setParent(this); fossilUI.setProcessChannelMode(QProcess::MergedChannels); fossilUI.setWorkingDirectory(getCurrentWorkspace()); @@ -910,12 +915,38 @@ bool MainWindow::startUI() QString fossil = getFossilPath(); fossilUI.start(fossil, QStringList() << "ui"); - if(!fossilUI.waitForStarted()) + if(!fossilUI.waitForStarted() || fossilUI.state()!=QProcess::Running) { log(fossil+ tr(" does not exist") +"\n"); + ui->actionFossilUI->setChecked(false); return false; } +#if 0 + QString buffer; + while(buffer.indexOf(EOL_MARK)==-1) + { + fossilUI.waitForReadyRead(500); + buffer += fossilUI.readAll(); + QCoreApplication::processEvents(); + } + + fossilUIPort.clear(); + + // Parse output to determine the running port + // "Listening for HTTP requests on TCP port 8080" + int idx = buffer.indexOf("TCP Port "); + if(idx!=-1) + fossilUIPort = buffer.mid(idx, 4); + else + fossilUIPort = "8080"; // Have a sensible default if we failed to parse the message +#else + fossilUIPort = "8080"; +#endif + + + ui->actionFossilUI->setChecked(true); + return true; } @@ -923,14 +954,20 @@ bool MainWindow::startUI() void MainWindow::stopUI() { if(uiRunning()) + { +#ifdef Q_WS_WIN + fossilUI.kill(); // QT on windows cannot terminate console processes with QProcess::terminate +#else fossilUI.terminate(); +#endif + } + ui->actionFossilUI->setChecked(false); } - //------------------------------------------------------------------------------ -void MainWindow::on_actionFossilUI_toggled(bool arg1) +void MainWindow::on_actionFossilUI_triggered() { - if(arg1) + if(!uiRunning()) startUI(); else stopUI(); @@ -950,7 +987,7 @@ void MainWindow::on_actionTimeline_triggered() Q_ASSERT(uiRunning()); - QDesktopServices::openUrl(QUrl("http://127.0.0.1:8080/timeline")); + QDesktopServices::openUrl(QUrl(getFossilHttpAddress()+"/timeline")); } //------------------------------------------------------------------------------ @@ -966,14 +1003,14 @@ void MainWindow::on_actionHistory_triggered() for(QStringList::iterator it = selection.begin(); it!=selection.end(); ++it) { - QDesktopServices::openUrl(QUrl("http://127.0.0.1:8080/finfo?name="+*it)); + QDesktopServices::openUrl(QUrl(getFossilHttpAddress()+"/finfo?name="+*it)); } } //------------------------------------------------------------------------------ void MainWindow::on_tableView_doubleClicked(const QModelIndex &/*index*/) { - on_actionOpenFile_triggered(); + on_actionDiff_triggered(); } //------------------------------------------------------------------------------ @@ -1336,7 +1373,7 @@ void MainWindow::on_actionSettings_triggered() if(maps[m].value->isEmpty()) runFossil(QStringList() << "unset" << maps[m].command << "-global"); else - runFossil(QStringList() << "settings" << maps[m].command << *maps[m].value << "-global"); + runFossil(QStringList() << "settings" << maps[m].command << *maps[m].value << "-global"); } } @@ -1383,3 +1420,10 @@ void MainWindow::on_actionViewUnknown_triggered() { refresh(); } + +//------------------------------------------------------------------------------ +QString MainWindow::getFossilHttpAddress() +{ + return "http://127.0.0.1:"+fossilUIPort; +} + diff --git a/MainWindow.h b/MainWindow.h index 9409551..b1f264e 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -118,6 +118,7 @@ private: void rebuildRecent(); bool openWorkspace(const QString &dir); QString getFossilPath(); + QString getFossilHttpAddress(); enum RepoStatus { @@ -136,7 +137,7 @@ private slots: void on_actionRefresh_triggered(); void on_actionOpen_triggered(); void on_actionDiff_triggered(); - void on_actionFossilUI_toggled(bool arg1); + void on_actionFossilUI_triggered(); void on_actionQuit_triggered(); void on_actionTimeline_triggered(); void on_actionHistory_triggered(); @@ -171,6 +172,7 @@ private: Ui::MainWindow *ui; QStandardItemModel itemModel; QProcess fossilUI; + QString fossilUIPort; class QAction *recentWorkspaceActs[MAX_RECENT]; class QLabel *statusLabel; bool fossilAbort; // FIXME: No GUI for it yet diff --git a/MainWindow.ui b/MainWindow.ui index 09e6a4c..3d0dbf4 100644 --- a/MainWindow.ui +++ b/MainWindow.ui @@ -1,523 +1,523 @@ - - - MainWindow - - - - 0 - 0 - 865 - 640 - - - - Fuel - - - - :/icons/icons/Battery-01.png:/icons/icons/Battery-01.png - - - true - - - - - 4 - - - - - Qt::Vertical - - - - - 0 - 80 - - - - Qt::ActionsContextMenu - - - QAbstractItemView::NoEditTriggers - - - true - - - QAbstractItemView::SelectRows - - - false - - - true - - - false - - - 20 - - - false - - - 30 - - - - - - 0 - 20 - - - - - - - - - - - 0 - 0 - 865 - 27 - - - - - Workspace - - - - - - - - - - - - - - Help - - - - - - View - - - - - - - - - - - - false - - - - 32 - 32 - - - - Qt::ToolButtonIconOnly - - - false - - - TopToolBarArea - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - :/icons/icons/Button Refresh-01.png:/icons/icons/Button Refresh-01.png - - - Refresh - - - F5 - - - - - - :/icons/icons/Save-01.png:/icons/icons/Save-01.png - - - Commit - - - Ctrl+M - - - - - - :/icons/icons/Document Copy-01.png:/icons/icons/Document Copy-01.png - - - Diff - - - Ctrl+D - - - - - - :/icons/icons/File New-01.png:/icons/icons/File New-01.png - - - Add - - - Ctrl++ - - - - - - :/icons/icons/File Delete-01.png:/icons/icons/File Delete-01.png - - - Delete - - - Ctrl+- - - - - - - :/icons/icons/My Documents-01.png:/icons/icons/My Documents-01.png - - - Open Workspace... - - - Open a fossil checkout folder - - - Ctrl+O - - - true - - - - - - :/icons/icons/Button Upload-01.png:/icons/icons/Button Upload-01.png - - - Push - - - Ctrl+P - - - - - - :/icons/icons/Button Download-01.png:/icons/icons/Button Download-01.png - - - Pull - - - Ctrl+L - - - - - - :/icons/icons/File Open-01.png:/icons/icons/File Open-01.png - - - Rename - - - Rename - - - Ctrl+R - - - - - - :/icons/icons/Button Turn Off-01.png:/icons/icons/Button Turn Off-01.png - - - Quit - - - Ctrl+Q - - - true - - - - - - :/icons/icons/File History-01.png:/icons/icons/File History-01.png - - - History - - - History - - - Ctrl+H - - - - - true - - - - :/icons/icons/Network MAC-01.png:/icons/icons/Network MAC-01.png - - - Fossil UI - - - Starts the Fosill UI - - - - - - :/icons/icons/Document-Revert-icon.png:/icons/icons/Document-Revert-icon.png - - - Revert - - - Revert - - - - - - :/icons/icons/Text Edit.png:/icons/icons/Text Edit.png - - - Clear Log - - - Clear Log - - - Ctrl+K - - - - - - :/icons/icons/Clock-01.png:/icons/icons/Clock-01.png - - - Timeline - - - - - - :/icons/icons/Document-01.png:/icons/icons/Document-01.png - - - Open file - - - Ctrl+Return - - - - - - :/icons/icons/Book-01.png:/icons/icons/Book-01.png - - - New Repository... - - - Ctrl+N - - - - - - :/icons/icons/Address Book-01.png:/icons/icons/Address Book-01.png - - - Clone Repository... - - - - - - :/icons/icons/My Documents-01.png:/icons/icons/My Documents-01.png - - - Open Containing Folder - - - Alt+Return - - - - - - :/icons/icons/Button Reload-01.png:/icons/icons/Button Reload-01.png - - - Undo - - - Ctrl+Z - - - - - - :/icons/icons/Battery-01.png:/icons/icons/Battery-01.png - - - About... - - - - - - :/icons/icons/Button Play-01.png:/icons/icons/Button Play-01.png - - - Update - - - Ctrl+U - - - - - - :/icons/icons/Gear-01.png:/icons/icons/Gear-01.png - - - Preferences... - - - Application Preferences - - - - - Workspace Settings... - - - Set remote synchronization settings - - - - - true - - - true - - - Modified - - - - - true - - - true - - - Unchanged - - - - - true - - - true - - - Unknown - - - - - - - - - - tableView - customContextMenuRequested(QPoint) - MainWindow - deleteLater() - - - 432 - 278 - - - 432 - 319 - - - - - + + + MainWindow + + + + 0 + 0 + 865 + 640 + + + + Fuel + + + + :/icons/icons/Battery-01.png:/icons/icons/Battery-01.png + + + true + + + + + 4 + + + + + Qt::Vertical + + + + + 0 + 80 + + + + Qt::ActionsContextMenu + + + QAbstractItemView::NoEditTriggers + + + true + + + QAbstractItemView::SelectRows + + + false + + + true + + + false + + + 20 + + + false + + + 30 + + + + + + 0 + 20 + + + + + + + + + + + 0 + 0 + 865 + 21 + + + + + Workspace + + + + + + + + + + + + + + Help + + + + + + View + + + + + + + + + + + + false + + + + 32 + 32 + + + + Qt::ToolButtonIconOnly + + + false + + + TopToolBarArea + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + :/icons/icons/Button Refresh-01.png:/icons/icons/Button Refresh-01.png + + + Refresh + + + F5 + + + + + + :/icons/icons/Save-01.png:/icons/icons/Save-01.png + + + Commit + + + Ctrl+M + + + + + + :/icons/icons/Document Copy-01.png:/icons/icons/Document Copy-01.png + + + Diff + + + Ctrl+D + + + + + + :/icons/icons/File New-01.png:/icons/icons/File New-01.png + + + Add + + + Ctrl++ + + + + + + :/icons/icons/File Delete-01.png:/icons/icons/File Delete-01.png + + + Delete + + + Ctrl+- + + + + + + :/icons/icons/My Documents-01.png:/icons/icons/My Documents-01.png + + + Open Workspace... + + + Open a fossil checkout folder + + + Ctrl+O + + + true + + + + + + :/icons/icons/Button Upload-01.png:/icons/icons/Button Upload-01.png + + + Push + + + Ctrl+P + + + + + + :/icons/icons/Button Download-01.png:/icons/icons/Button Download-01.png + + + Pull + + + Ctrl+L + + + + + + :/icons/icons/File Open-01.png:/icons/icons/File Open-01.png + + + Rename + + + Rename + + + Ctrl+R + + + + + + :/icons/icons/Button Turn Off-01.png:/icons/icons/Button Turn Off-01.png + + + Quit + + + Ctrl+Q + + + true + + + + + + :/icons/icons/File History-01.png:/icons/icons/File History-01.png + + + History + + + History + + + Ctrl+H + + + + + true + + + + :/icons/icons/Network MAC-01.png:/icons/icons/Network MAC-01.png + + + Fossil UI + + + Starts the Fosill UI + + + + + + :/icons/icons/Document-Revert-icon.png:/icons/icons/Document-Revert-icon.png + + + Revert + + + Revert + + + + + + :/icons/icons/Text Edit.png:/icons/icons/Text Edit.png + + + Clear Log + + + Clear Log + + + Ctrl+K + + + + + + :/icons/icons/Clock-01.png:/icons/icons/Clock-01.png + + + Timeline + + + + + + :/icons/icons/Document-01.png:/icons/icons/Document-01.png + + + Open file + + + Ctrl+Return + + + + + + :/icons/icons/Book-01.png:/icons/icons/Book-01.png + + + New Repository... + + + Ctrl+N + + + + + + :/icons/icons/Address Book-01.png:/icons/icons/Address Book-01.png + + + Clone Repository... + + + + + + :/icons/icons/My Documents-01.png:/icons/icons/My Documents-01.png + + + Open Containing Folder + + + Alt+Return + + + + + + :/icons/icons/Button Reload-01.png:/icons/icons/Button Reload-01.png + + + Undo + + + Ctrl+Z + + + + + + :/icons/icons/Battery-01.png:/icons/icons/Battery-01.png + + + About... + + + + + + :/icons/icons/Button Play-01.png:/icons/icons/Button Play-01.png + + + Update + + + Ctrl+U + + + + + + :/icons/icons/Gear-01.png:/icons/icons/Gear-01.png + + + Preferences... + + + Application Preferences + + + + + Workspace Settings... + + + Set remote synchronization settings + + + + + true + + + true + + + Modified + + + + + true + + + true + + + Unchanged + + + + + true + + + true + + + Unknown + + + + + + + + + + tableView + customContextMenuRequested(QPoint) + MainWindow + deleteLater() + + + 432 + 278 + + + 432 + 319 + + + + + diff --git a/manifest b/manifest index 68417e1..28a48de 100644 --- a/manifest +++ b/manifest @@ -1,14 +1,14 @@ -C Fixed\sfossil\spath\sdetection\son\swindows\nThe\ssettings\sdialog\snow\squotes\spaths\sto\sexternal\stools\sif\sthey\scontain\sspaces\n -D 2011-09-03T12:33:47.295 +C Fixed\sfossil\sprocess\stermination\son\sWindows\nAbstracted\sfossil\sui\surl\nAdded\s(disabled)\scode\sto\sdetect\sfossil\sui\slaunch\sport\n +D 2011-09-03T15:03:01.556 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 7d7371085c08bbacc347a1b656d0a352a234c3f9 -F MainWindow.h 21fbbabd8b827d0b49fe3d40763b71042205fc3d -F MainWindow.ui 5d10c04ab0f19f9b38a4da0abb0b36a00ff12efc +F MainWindow.cpp 741cb2db89baf6330d3bfe87c99fb5918b5b2516 +F MainWindow.h cb4d2ab3c3fb3ecc26c5d162358316516090a89e +F MainWindow.ui fcce2709fd2dc332061ee72cbc5a5a17adfd0779 F RepoDialog.cpp 8f20e1511526973555c774350ec413dcecf51c9e F RepoDialog.h a958c5f98f1e6882bf41dbdd2e4df3cb89700802 F RepoDialog.ui be7b18199c04a3003f3c7534a616cd7441b7bb0c @@ -173,7 +173,7 @@ F icons/fuel.icns 81e535004b62db801a02f3e15d0a33afc9d4070b F icons/fuel.ico eb529ab3332a17b9302ef3e851db5b9ebce2a038 F main.cpp 083845039c167badd57a4abf482dd3d5e77aab35 F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53 -P ee85c090a173816f1d8053a7c982ab7facfe5c8b -R 3f3a7738535c921e5dd68fe8b5c4cc7b +P 208e56425e61f15f00ee2bbe200de18fda7fbc07 +R b8326070b54d51ef8c16887c4286d870 U kostas -Z dad7dd77b03e67f817ef15852b8851a5 +Z ba35c3d1bb569a4e3dbcd9d6ff41a92f diff --git a/manifest.uuid b/manifest.uuid index dc0430c..bd047f0 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -208e56425e61f15f00ee2bbe200de18fda7fbc07 \ No newline at end of file +e8b33f373c855cce60dd9fc528b7684f85849d5d \ No newline at end of file