# HG changeset patch # User Jari Korhonen # Date 1276561000 -10800 # Node ID 4f307720272f188e232458512194ee94e156293f # Parent 552a496351247517b7f5db4d353ce866276002c4 Version 0.5.0: Added "Copy comment" context menu to "parents" list. diff -r 552a49635124 -r 4f307720272f common.h --- a/common.h Mon Jun 14 22:04:52 2010 +0300 +++ b/common.h Tue Jun 15 03:16:40 2010 +0300 @@ -8,7 +8,7 @@ #include #define APPNAME "HgExplorer" -#define APPVERSION "0.4.7" +#define APPVERSION "0.5.0" #define MY_ICON_SIZE 32 #define REPOMENU_TITLE "Repository actions" #define WORKFOLDERMENU_TITLE "Workfolder actions" diff -r 552a49635124 -r 4f307720272f hgexpwidget.cpp --- a/hgexpwidget.cpp Mon Jun 14 22:04:52 2010 +0300 +++ b/hgexpwidget.cpp Tue Jun 15 03:16:40 2010 +0300 @@ -3,6 +3,8 @@ ****************************************************************************/ #include +#include +#include #include "hgexpwidget.h" #include "common.h" @@ -42,6 +44,10 @@ parentsLayout -> addWidget(parentsLabel); parentsLayout -> addWidget(localRepoHgParentsList); grpLocalRepo -> setLayout(parentsLayout); + copyCommentAct = new QAction("Copy comment", localRepoHgParentsList); + userListMenu = new QMenu(localRepoHgParentsList); + userListMenu -> addAction(copyCommentAct); + connect(copyCommentAct, SIGNAL(triggered()), this, SLOT(copyComment())); //Workfolder grpWorkFolder = new QGroupBox(tr(WORKFOLDER_STR) + workFolderPath); @@ -106,6 +112,49 @@ setTabEnabled(HISTORYTAB, false); } +void HgExpWidget::contextMenuEvent(QContextMenuEvent * event) +{ + if (copyCommentAct -> isEnabled()) + { + QPoint topL; + QPoint bottomR; + + topL = localRepoHgParentsList-> + mapToGlobal(QPoint(0, 0)); + bottomR = localRepoHgParentsList-> + mapToGlobal(QPoint(localRepoHgParentsList -> width(), localRepoHgParentsList -> height())); + + if ((event -> globalPos().x() > topL.x()) && (event -> globalPos().x() < bottomR.x())) + { + if ((event -> globalPos().y() > topL.y()) && (event -> globalPos().y() < bottomR.y())) + { + userListMenu->exec(event -> globalPos()); + } + } + } +} + +void HgExpWidget::copyComment() +{ + if (localRepoHgParentsList -> count() >= 1) + { + QListWidgetItem *it = localRepoHgParentsList -> item(0); + QString tmp = it -> text(); + int ind = tmp.indexOf("summary:"); + if (ind != -1) + { + QString comment; + ind += 11; //jump over word "summary:" + + comment = tmp.mid(ind); + + QClipboard *clipboard = QApplication::clipboard(); + clipboard->setText(comment); + } + } +} + + QString HgExpWidget::getStatFlags() { @@ -353,9 +402,23 @@ } +void HgExpWidget::enableDisableOtherTabs(int tabPage) +{ + static int oldTabPage = -1; -void HgExpWidget::enableDisableOtherTabs() -{ + if (tabPage != oldTabPage) + { + oldTabPage = tabPage; + if (tabPage == WORKTAB) + { + copyCommentAct -> setEnabled(true); + } + else + { + copyCommentAct -> setEnabled(false); + } + } + //history list is only interesting when we have something in it ;-) if (localRepoHgLogList -> count() < 2) { diff -r 552a49635124 -r 4f307720272f hgexpwidget.h --- a/hgexpwidget.h Mon Jun 14 22:04:52 2010 +0300 +++ b/hgexpwidget.h Tue Jun 15 03:16:40 2010 +0300 @@ -7,6 +7,8 @@ #include #include +#include + #include "common.h" #define NUM_STAT_FILE_TYPES 7 @@ -28,7 +30,7 @@ void getHistoryDiffRevisions(QString& revA, QString& revB); void getUpdateToRevRevision(QString& rev); void clearLists(); - void enableDisableOtherTabs(); + void enableDisableOtherTabs(int tabPage); QString getStatFlags(void); unsigned char getFileTypesBits(); @@ -40,6 +42,9 @@ signals: void workFolderViewTypesChanged(); +private slots: + void copyComment(); + private: QGroupBox *grpRemoteRepo; QWidget *workPageWidget; @@ -52,6 +57,8 @@ QVBoxLayout *parentsLayout; QListWidget *localRepoHgParentsList; QLabel *parentsLabel; + QMenu *userListMenu; + QAction *copyCommentAct; QGroupBox *grpWorkFolder; QHBoxLayout *workFolderLayout; @@ -66,6 +73,7 @@ QString findRev(QString itemText, QString& smallRev); QStringList splitChangeSets(QString chgSetsStr); int findLineStart(int nowIndex, QString chgSetsStr); + void contextMenuEvent (QContextMenuEvent * event); }; #endif // HGEXPWIDGET_H diff -r 552a49635124 -r 4f307720272f mainwindow.cpp --- a/mainwindow.cpp Mon Jun 14 22:04:52 2010 +0300 +++ b/mainwindow.cpp Tue Jun 15 03:16:40 2010 +0300 @@ -963,6 +963,7 @@ void MainWindow::tabChanged(int currTab) { tabPage = currTab; + } void MainWindow::enableDisableActions() @@ -1026,7 +1027,7 @@ hgAnnotateAct -> setEnabled(localRepoActionsEnabled); hgServeAct -> setEnabled(localRepoActionsEnabled); - hgExp -> enableDisableOtherTabs(); + hgExp -> enableDisableOtherTabs(tabPage); int added, modified, removed, notTracked, selected, selectedAdded, selectedModified, selectedRemoved, selectedNotTracked;