diff --git a/MainWindow.cpp b/MainWindow.cpp index e602698..b781337 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -4,7 +4,7 @@ #include #include #include - +#include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), @@ -12,28 +12,26 @@ MainWindow::MainWindow(QWidget *parent) : { ui->setupUi(this); ui->tableView->setModel(&itemModel); + ui->tableView->addAction(ui->actionDiff); + ui->tableView->addAction(ui->actionHistory); ui->tableView->addAction(ui->actionAdd); ui->tableView->addAction(ui->actionDelete); ui->tableView->addAction(ui->actionRename); - ui->tableView->addAction(ui->actionHistory); - ui->tableView->addAction(ui->actionDiff); - settingsFile = QApplication::applicationDirPath().left(1) + ":/qfossil.ini"; + settingsFile = QDir::homePath() + QDir::separator() + ".fuelrc"; currentWorkspace = 0; loadSettings(); if(workspaces.empty()) workspaces.append("/home/kostas/tmp/cheesy-fos"); - if(fossilPath.isEmpty()) - fossilPath = "fossil"; - refresh(); } //------------------------------------------------------------------------------ MainWindow::~MainWindow() { + stopUI(); saveSettings(); delete ui; } @@ -54,7 +52,6 @@ void MainWindow::on_actionOpen_triggered() currentWorkspace = workspaces.size()-1; refresh(); } - } //------------------------------------------------------------------------------ @@ -174,6 +171,11 @@ void MainWindow::Log(const QString &text) { ui->textBrowser->append(text); } +//------------------------------------------------------------------------------ +void MainWindow::on_actionClearLog_triggered() +{ + ui->textBrowser->clear(); +} //------------------------------------------------------------------------------ bool MainWindow::runFossil(QStringList &result, const QStringList &args) @@ -233,27 +235,44 @@ void MainWindow::loadSettings() { QSettings settings(settingsFile, QSettings::NativeFormat); - bool ok=false; - - fossilPath = settings.value("FossilPath").toString(); - if(fossilPath.isEmpty()) + if(settings.contains("FossilPath")) + fossilPath = settings.value("FossilPath").toString(); + else fossilPath = "fossil"; - int num_repos = settings.value("NumWorkspaces").toInt(&ok); - if(!ok) - num_repos=0; + int num_wks = 0; - for(int i=0; itableView->selectionModel()->selectedIndexes(); for(QModelIndexList::iterator mi_it = selection.begin(); mi_it!=selection.end(); ++mi_it) @@ -283,32 +310,92 @@ void MainWindow::on_actionDiff_triggered() continue; QVariant data = itemModel.data(mi); - QString fname = data.toString(); + filenames.append(data.toString()); + } +} +//------------------------------------------------------------------------------ +void MainWindow::on_actionDiff_triggered() +{ + QStringList selection; + getSelectionFilenames(selection); + + for(QStringList::iterator it = selection.begin(); it!=selection.end(); ++it) + { QStringList res; - if(!runFossil(res, QStringList() << "gdiff" << fname)) + if(!runFossil(res, QStringList() << "gdiff" << *it)) return; } } +//------------------------------------------------------------------------------ +bool MainWindow::startUI() +{ + if(uiRunning()) + return true; + fossilUI.setProcessChannelMode(QProcess::MergedChannels); + fossilUI.setWorkingDirectory(getCurrentWorkspace()); + + Log("> fossil ui"); + + fossilUI.start(fossilPath, QStringList() << "ui"); + if(!fossilUI.waitForStarted()) + { + Log(fossilPath + " does not exist\n"); + return false; + } + + return true; +} + +//------------------------------------------------------------------------------ +void MainWindow::stopUI() +{ + if(uiRunning()) + fossilUI.terminate(); +} + + +//------------------------------------------------------------------------------ void MainWindow::on_actionFossilUI_toggled(bool arg1) { - if(arg1 && fossilUI.state()==QProcess::NotRunning) - { - fossilUI.setProcessChannelMode(QProcess::MergedChannels); - fossilUI.setWorkingDirectory(getCurrentWorkspace()); + if(arg1) + startUI(); + else + stopUI(); +} - Log("> fossil ui"); +//------------------------------------------------------------------------------ +void MainWindow::on_actionQuit_triggered() +{ + close(); +} - fossilUI.start(fossilPath, QStringList() << "ui"); - if(!fossilUI.waitForStarted()) - { - Log(fossilPath + " does not exist\n"); - return; - } - } - else if(!arg1 && fossilUI.state()==QProcess::Running) +//------------------------------------------------------------------------------ +void MainWindow::on_actionTimeline_triggered() +{ + if(!uiRunning()) + ui->actionFossilUI->activate(QAction::Trigger); + + Q_ASSERT(uiRunning()); + + QDesktopServices::openUrl(QUrl("http://localhost:8080/timeline")); +} + +//------------------------------------------------------------------------------ +void MainWindow::on_actionHistory_triggered() +{ + if(!uiRunning()) + ui->actionFossilUI->activate(QAction::Trigger); + + Q_ASSERT(uiRunning()); + + QStringList selection; + getSelectionFilenames(selection); + + for(QStringList::iterator it = selection.begin(); it!=selection.end(); ++it) { - fossilUI.terminate(); + QDesktopServices::openUrl(QUrl("http://localhost:8080/finfo?name="+*it)); } } + diff --git a/MainWindow.h b/MainWindow.h index 6ce612e..78fb5ef 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -57,14 +57,21 @@ private: void saveSettings(); const QString &getCurrentWorkspace() { Q_ASSERT(currentWorkspace - QFossil + Fuel @@ -130,6 +130,10 @@ + + + + @@ -145,7 +149,7 @@ - :/icons/icons/Save-01.png:/icons/icons/Save-01.png + :/icons/icons/Button Add-01.png:/icons/icons/Button Add-01.png Commit @@ -184,7 +188,13 @@ :/icons/icons/My Documents-01.png:/icons/icons/My Documents-01.png - Open workspace... + Open Workspace... + + + Open a fossil checkout folder + + + true @@ -225,6 +235,9 @@ Quit + + true + @@ -232,7 +245,10 @@ :/icons/icons/File History-01.png:/icons/icons/File History-01.png - history + History + + + History @@ -256,16 +272,31 @@ :/icons/icons/Document-Revert-icon.png:/icons/icons/Document-Revert-icon.png - revert + Revert + + + Revert - :/icons/icons/Book-01.png:/icons/icons/Book-01.png + :/icons/icons/Text Edit.png:/icons/icons/Text Edit.png - clearLog + Clear Log + + + Clear Log + + + + + + :/icons/icons/Clock-01.png:/icons/icons/Clock-01.png + + + Timeline diff --git a/manifest b/manifest index 9b31f45..cec135e 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,8 @@ -C Implemented\sdiff\scommand\nImplemented\sui\scommand\nAdded\sfull\sset\sof\sicons -D 2011-08-02T13:16:35.211 -F MainWindow.cpp e1ab75af0cac9bb128c2c113823dd2986ba04920 -F MainWindow.h 502a65528683310c9b8c3d661705faaed90a02a2 -F MainWindow.ui aeb073a5e930adcfd63bc83e3647644a12d9d4f9 +C Reorganized\scontext\smenu\nAdded\sClear\slog\saction\nImproved\ssettings\sserialization.\nAdded\sSaving\sand\sloading\sof\swindow\sposition\sand\ssize\nAdded\sQuit\saction\nAdded\sTimeline\saction\nAdded\sFile\shistory\saction +D 2011-08-02T14:37:32.392 +F MainWindow.cpp 40b52cc20d0bdd312eda97dabfe061d0b811c4ca +F MainWindow.h d9dd1137ff2af5a3a10d0f63f6bfe85d25b466c4 +F MainWindow.ui ecde2d039645f4ff31d56416985fa372b534dade F icons/Address\sBook-01.png ef2cec80ea5a559b72e8be4a344a1869fe69cbd8 F icons/Adobe\sIllustrator\sCS3\sDocument-01.png 2e44e933d58eefee7ccfa1650fed4ceadcf3c2be F icons/Adobe\sPDF\sDocument-01.png 8a0bc3ba633d08debde748d64b5a9675e30447a3 @@ -157,9 +157,9 @@ F icons/Zoom\sOut-01.png 8eda092100d9e00c9097f43a80d1e26695947448 F icons/Zoom-01.png 67ca532922e9166325c5c75fce1ca3fbb0d2b6a6 F main.cpp f53e9e1e34f65565f06b2d37d7be5c38e2113a03 F qtfossil.pro 80268b3b1ec8f73cbc24896a0f2ae3fbcca286cb -F qtfossil.pro.user 0a24670f4ebfd9af897655ca0e5d4eafbb71df9e +F qtfossil.pro.user 22fafa96fdc37a358378024e78fab11e7796b61d F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53 -P ef1ad7e20ba3aa605446197cecbba38c8b0e60da -R b848f9cf5a2c81fe399e52d22d9c4dc8 +P b900691237413a91803d830d1e9e6702ed76d749 +R 73ae2bf1796d58dab2d89012f1383da3 U kostas -Z 125f8c422d72643bb1465048f8f4c3de +Z 7d44a0e71f9d084bae91ca71484d39c3 diff --git a/manifest.uuid b/manifest.uuid index bee20f6..fb3d5bc 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b900691237413a91803d830d1e9e6702ed76d749 \ No newline at end of file +836ed88f08a4d0133120fa5735627bbd24cd30a0 \ No newline at end of file diff --git a/qtfossil.pro.user b/qtfossil.pro.user index f44d4a2..f0d454e 100644 --- a/qtfossil.pro.user +++ b/qtfossil.pro.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget