From 813443e38046283936907a01dcf33be5c6b7df94 Mon Sep 17 00:00:00 2001 From: kostas Date: Fri, 10 Jul 2015 18:20:19 +0000 Subject: [PATCH] Allow triggering custom actions via double-clicking a file in the file view FossilOrigin-Name: 4270974c3f9f7fb166a74a9d76c9db8a24428fe5 --- manifest | 18 +++++++++--------- manifest.uuid | 2 +- src/MainWindow.cpp | 24 ++++++++++++++++-------- src/MainWindow.h | 2 +- src/Settings.h | 1 + src/SettingsDialog.cpp | 1 + 6 files changed, 29 insertions(+), 19 deletions(-) diff --git a/manifest b/manifest index e91e2d6..4ecf66c 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Custom\sactions\snow\ssupport\sexplicit\ssingle\sselections\n\n -D 2015-07-10T18:06:40.135 +C Allow\striggering\scustom\sactions\svia\sdouble-clicking\sa\sfile\sin\sthe\sfile\sview +D 2015-07-10T18:20:19.694 F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35 F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b F debian/compat b6abd567fa79cbe0196d093a067271361dc6ca8b @@ -224,8 +224,8 @@ F src/FslSettingsDialog.cpp 2531d3709f0eab66651671e3edead2ca720d07d5 F src/FslSettingsDialog.h dfe2a61884a55a74cbb9206b6f6b482b979725e7 F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261 -F src/MainWindow.cpp 6b31ae5eca52bc128a0a9dd3d3dc153545de7f8c -F src/MainWindow.h 573ffe960044afb446505949da50e0fb5ec2f75f +F src/MainWindow.cpp 764eb76c1c420ea4677639baae925e5e8fc203d6 +F src/MainWindow.h 765c362ad4937da808276ec321adf4a351ab5b28 F src/RemoteDialog.cpp 8540cc5e2e41c4127ed8a028d84691604fa6ecac F src/RemoteDialog.h 5e0438c2bd7c79b1bb44bfbd58c2181b544a9e5d F src/RevisionDialog.cpp e58c4f8a704f00addebb15d521b76620fdafda79 @@ -233,8 +233,8 @@ F src/RevisionDialog.h b718c3009342eaabad39c8a11a253a4e4fef7a73 F src/SearchBox.cpp d4209c575baa9933e1ce5ed376e785b289a145ba F src/SearchBox.h 0c78d3a68136dab3e0e71b83ae36f22bd2688ab2 F src/Settings.cpp 258d3f466f6a125ce2b8519d6d57a312cbc44a3f -F src/Settings.h c743065c1388ae431aa46c2e02470fb3c08b6a79 -F src/SettingsDialog.cpp 1b092c050753afa96f0d23e85775ecf32f6d939a +F src/Settings.h 0a10b0b83fe804bdc7dac58eed06b5b6ee422055 +F src/SettingsDialog.cpp cab739fb0569bd26550e57f97136c7515fe757fe F src/SettingsDialog.h 5eb3ae2cbb00ab5544e1889860f5376f69fe47cd F src/Utils.cpp 876942a44202611d3c778c67f6d0a344e241a000 F src/Utils.h 4613424aaeb6910689b5821a2dd44ca0b6dd301f @@ -252,7 +252,7 @@ F ui/MainWindow.ui 10181826a25056ed5aba2b23a7d110159be7c043 F ui/RemoteDialog.ui 95a4750d972ed8c49bb10b95db91ff16cfe2dd0b F ui/RevisionDialog.ui 27c3b98c665fec014a50cbf3352c0627f75e68cd F ui/SettingsDialog.ui 47b9a31e28ad523f14a1c4cd361270b6babbdf7d -P bf36bf1c733da77a39ab9a8b7c63b892c11ef93c -R acadfb6b4bc5dcb566aa9c59fbff87eb +P e422f84c485ada3ae538712434ae64ea80021f8b +R 724773d1d3e654260b0257e41d2ffb40 U kostas -Z 902db766b484bf48a8c240b796fa1687 +Z 1d18b22dc355232cae5061179d4d3a7e diff --git a/manifest.uuid b/manifest.uuid index 5b47647..7f8af23 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e422f84c485ada3ae538712434ae64ea80021f8b \ No newline at end of file +4270974c3f9f7fb166a74a9d76c9db8a24428fe5 \ No newline at end of file diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index ba98b3d..1ed61ce 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -1433,6 +1433,8 @@ void MainWindow::on_fileTableView_doubleClicked(const QModelIndex &/*index*/) on_actionOpenFile_triggered(); else if(action==FILE_DLBCLICK_ACTION_OPENCONTAINING) on_actionOpenContaining_triggered(); + else if(action==FILE_DLBCLICK_ACTION_CUSTOM) + invokeCustomAction(0); } //------------------------------------------------------------------------------ @@ -2783,15 +2785,10 @@ void MainWindow::updateCustomActions() } //------------------------------------------------------------------------------ -void MainWindow::on_actionCustomAction_triggered() +void MainWindow::invokeCustomAction(int actionId) { - QAction *action = qobject_cast(sender()); - if(!action) - return; - - int action_id = action->data().toInt(); - Q_ASSERT(action_id < settings.GetCustomActions().size()); - CustomAction &cust_action = settings.GetCustomActions()[action_id]; + Q_ASSERT(actionId < settings.GetCustomActions().size()); + CustomAction &cust_action = settings.GetCustomActions()[actionId]; Q_ASSERT(cust_action.IsValid()); Q_ASSERT(!cust_action.Command.isEmpty()); @@ -2826,3 +2823,14 @@ void MainWindow::on_actionCustomAction_triggered() SpawnExternalProcess(this, cust_action.Command, file_selection, path_selection, wkdir, uiCallback); } + +//------------------------------------------------------------------------------ +void MainWindow::on_actionCustomAction_triggered() +{ + QAction *action = qobject_cast(sender()); + if(!action) + return; + + int action_id = action->data().toInt(); + invokeCustomAction(action_id); +} diff --git a/src/MainWindow.h b/src/MainWindow.h index d40eb7c..d3b07cf 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -54,7 +54,7 @@ private: void selectRootDir(); void mergeRevision(const QString& defaultRevision); void updateCustomActions(); - + void invokeCustomAction(int actionId); void fossilBrowse(const QString &fossilUrl); void dragEnterEvent(class QDragEnterEvent *event); diff --git a/src/Settings.h b/src/Settings.h index 12db25a..63b3e41 100644 --- a/src/Settings.h +++ b/src/Settings.h @@ -25,6 +25,7 @@ enum FileDblClickAction FILE_DLBCLICK_ACTION_DIFF, FILE_DLBCLICK_ACTION_OPEN, FILE_DLBCLICK_ACTION_OPENCONTAINING, + FILE_DLBCLICK_ACTION_CUSTOM, // Custom Action 1 FILE_DLBCLICK_ACTION_MAX }; diff --git a/src/SettingsDialog.cpp b/src/SettingsDialog.cpp index d179e32..4f93e74 100644 --- a/src/SettingsDialog.cpp +++ b/src/SettingsDialog.cpp @@ -17,6 +17,7 @@ SettingsDialog::SettingsDialog(QWidget *parent, Settings &_settings) : ui->cmbDoubleClickAction->addItem(tr("Diff File")); ui->cmbDoubleClickAction->addItem(tr("Open File")); ui->cmbDoubleClickAction->addItem(tr("Open Containing Folder")); + ui->cmbDoubleClickAction->addItem(tr("Custom Action %0").arg(1)); ui->cmbFossilBrowser->addItem(tr("System")); ui->cmbFossilBrowser->addItem(tr("Internal"));