aboutsummaryrefslogtreecommitdiffstats
path: root/ui/qt/packet_list.cpp
diff options
context:
space:
mode:
authorRoland Knall <rknall@gmail.com>2017-12-28 11:22:06 +0100
committerRoland Knall <rknall@gmail.com>2017-12-28 11:26:25 +0000
commite3329cdc313e2a4c1e35a0f9d4f8777e3f9a77e1 (patch)
tree26c867db8cca1f923bf3cc029cb5c9827de70922 /ui/qt/packet_list.cpp
parentfbeca26f035fe6a2a9632dee6d691629a6003d28 (diff)
Qt: Remove duplicate copy actions
Remove the final copy actions from MainWindow and use DataPrinter instead. This way, MainWindow no longer is involved in copying data, and the actions purely are defined by DataPrinter Change-Id: Ib70ad6394dee501bb2c8d58c9d174a0eb04b47de Reviewed-on: https://code.wireshark.org/review/25031 Petri-Dish: Roland Knall <rknall@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Roland Knall <rknall@gmail.com>
Diffstat (limited to 'ui/qt/packet_list.cpp')
-rw-r--r--ui/qt/packet_list.cpp208
1 files changed, 90 insertions, 118 deletions
diff --git a/ui/qt/packet_list.cpp b/ui/qt/packet_list.cpp
index d5578702f2..16e545e96d 100644
--- a/ui/qt/packet_list.cpp
+++ b/ui/qt/packet_list.cpp
@@ -241,9 +241,6 @@ PacketList::PacketList(QWidget *parent) :
cur_history_(-1),
in_history_(false)
{
- QMenu *main_menu_item, *submenu;
- QAction *action;
-
setItemsExpandable(false);
setRootIsDecorated(false);
setSortingEnabled(true);
@@ -257,113 +254,6 @@ PacketList::PacketList(QWidget *parent) :
setModel(packet_list_model_);
sortByColumn(-1, Qt::AscendingOrder);
- // XXX We might want to reimplement setParent() and fill in the context
- // menu there.
- ctx_menu_.addAction(window()->findChild<QAction *>("actionEditMarkPacket"));
- ctx_menu_.addAction(window()->findChild<QAction *>("actionEditIgnorePacket"));
- ctx_menu_.addAction(window()->findChild<QAction *>("actionEditSetTimeReference"));
- ctx_menu_.addAction(window()->findChild<QAction *>("actionEditTimeShift"));
- ctx_menu_.addAction(window()->findChild<QAction *>("actionEditPacketComment"));
-
- ctx_menu_.addSeparator();
-
- ctx_menu_.addAction(window()->findChild<QAction *>("actionViewEditResolvedName"));
- ctx_menu_.addSeparator();
-
- main_menu_item = window()->findChild<QMenu *>("menuApplyAsFilter");
- submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
- ctx_menu_.addMenu(submenu);
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFSelected"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFNotSelected"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFAndSelected"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFOrSelected"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFAndNotSelected"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFOrNotSelected"));
-
- main_menu_item = window()->findChild<QMenu *>("menuPrepareAFilter");
- submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
- ctx_menu_.addMenu(submenu);
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFSelected"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFNotSelected"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFAndSelected"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFOrSelected"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFAndNotSelected"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFOrNotSelected"));
-
- const char *conv_menu_name = "menuConversationFilter";
- main_menu_item = window()->findChild<QMenu *>(conv_menu_name);
- conv_menu_.setTitle(main_menu_item->title());
- conv_menu_.setObjectName(conv_menu_name);
- ctx_menu_.addMenu(&conv_menu_);
-
- const char *colorize_menu_name = "menuColorizeConversation";
- main_menu_item = window()->findChild<QMenu *>(colorize_menu_name);
- colorize_menu_.setTitle(main_menu_item->title());
- colorize_menu_.setObjectName(colorize_menu_name);
- ctx_menu_.addMenu(&colorize_menu_);
-
- main_menu_item = window()->findChild<QMenu *>("menuSCTP");
- submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
- ctx_menu_.addMenu(submenu);
- submenu->addAction(window()->findChild<QAction *>("actionSCTPAnalyseThisAssociation"));
- submenu->addAction(window()->findChild<QAction *>("actionSCTPShowAllAssociations"));
- submenu->addAction(window()->findChild<QAction *>("actionSCTPFilterThisAssociation"));
-
- main_menu_item = window()->findChild<QMenu *>("menuFollow");
- submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
- ctx_menu_.addMenu(submenu);
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowTCPStream"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowUDPStream"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowSSLStream"));
- submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowHTTPStream"));
-
- ctx_menu_.addSeparator();
-
- main_menu_item = window()->findChild<QMenu *>("menuEditCopy");
- submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
- ctx_menu_.addMenu(submenu);
-
- action = submenu->addAction(tr("Summary as Text"));
- action->setData(copy_summary_text_);
- connect(action, SIGNAL(triggered()), this, SLOT(copySummary()));
- action = submenu->addAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as CSV"));
- action->setData(copy_summary_csv_);
- connect(action, SIGNAL(triggered()), this, SLOT(copySummary()));
- action = submenu->addAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as YAML"));
- action->setData(copy_summary_yaml_);
- connect(action, SIGNAL(triggered()), this, SLOT(copySummary()));
- submenu->addSeparator();
-
- submenu->addAction(window()->findChild<QAction *>("actionEditCopyAsFilter"));
- submenu->addSeparator();
-
- action = window()->findChild<QAction *>("actionContextCopyBytesHexTextDump");
- submenu->addAction(action);
- copy_actions_ << action;
- action = window()->findChild<QAction *>("actionContextCopyBytesHexDump");
- submenu->addAction(action);
- copy_actions_ << action;
- action = window()->findChild<QAction *>("actionContextCopyBytesPrintableText");
- submenu->addAction(action);
- copy_actions_ << action;
- action = window()->findChild<QAction *>("actionContextCopyBytesHexStream");
- submenu->addAction(action);
- copy_actions_ << action;
- action = window()->findChild<QAction *>("actionContextCopyBytesBinary");
- submenu->addAction(action);
- copy_actions_ << action;
- action = window()->findChild<QAction *>("actionContextCopyBytesEscapedString");
- submenu->addAction(action);
- copy_actions_ << action;
-
- ctx_menu_.addSeparator();
- ctx_menu_.addMenu(&proto_prefs_menu_);
- decode_as_ = window()->findChild<QAction *>("actionAnalyzeDecodeAs");
- ctx_menu_.addAction(decode_as_);
- // "Print" not ported intentionally
- action = window()->findChild<QAction *>("actionViewShowPacketInNewWindow");
- ctx_menu_.addAction(action);
-
initHeaderContextMenu();
g_assert(gbl_cur_packet_list == NULL);
@@ -564,15 +454,97 @@ void PacketList::contextMenuEvent(QContextMenuEvent *event)
FrameInformation * frameData =
new FrameInformation(new CaptureFile(this, cap_file_), packet_list_model_->getRowFdata(ctxIndex.row()));
- foreach (QAction *action, copy_actions_) {
- if ( frameData->isValid() )
- {
- action->setProperty("idataprintable_",
- VariantPointer<IDataPrintable>::asQVariant((IDataPrintable*)frameData));
- }
+ ctx_menu_.clear();
+ // XXX We might want to reimplement setParent() and fill in the context
+ // menu there.
+ ctx_menu_.addAction(window()->findChild<QAction *>("actionEditMarkPacket"));
+ ctx_menu_.addAction(window()->findChild<QAction *>("actionEditIgnorePacket"));
+ ctx_menu_.addAction(window()->findChild<QAction *>("actionEditSetTimeReference"));
+ ctx_menu_.addAction(window()->findChild<QAction *>("actionEditTimeShift"));
+ ctx_menu_.addAction(window()->findChild<QAction *>("actionEditPacketComment"));
- action->setData(QVariant());
- }
+ ctx_menu_.addSeparator();
+
+ ctx_menu_.addAction(window()->findChild<QAction *>("actionViewEditResolvedName"));
+ ctx_menu_.addSeparator();
+
+ QMenu *main_menu_item = window()->findChild<QMenu *>("menuApplyAsFilter");
+ QMenu *submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
+ ctx_menu_.addMenu(submenu);
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFSelected"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFNotSelected"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFAndSelected"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFOrSelected"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFAndNotSelected"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzeAAFOrNotSelected"));
+
+ main_menu_item = window()->findChild<QMenu *>("menuPrepareAFilter");
+ submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
+ ctx_menu_.addMenu(submenu);
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFSelected"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFNotSelected"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFAndSelected"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFOrSelected"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFAndNotSelected"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzePAFOrNotSelected"));
+
+ const char *conv_menu_name = "menuConversationFilter";
+ main_menu_item = window()->findChild<QMenu *>(conv_menu_name);
+ conv_menu_.setTitle(main_menu_item->title());
+ conv_menu_.setObjectName(conv_menu_name);
+ ctx_menu_.addMenu(&conv_menu_);
+
+ const char *colorize_menu_name = "menuColorizeConversation";
+ main_menu_item = window()->findChild<QMenu *>(colorize_menu_name);
+ colorize_menu_.setTitle(main_menu_item->title());
+ colorize_menu_.setObjectName(colorize_menu_name);
+ ctx_menu_.addMenu(&colorize_menu_);
+
+ main_menu_item = window()->findChild<QMenu *>("menuSCTP");
+ submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
+ ctx_menu_.addMenu(submenu);
+ submenu->addAction(window()->findChild<QAction *>("actionSCTPAnalyseThisAssociation"));
+ submenu->addAction(window()->findChild<QAction *>("actionSCTPShowAllAssociations"));
+ submenu->addAction(window()->findChild<QAction *>("actionSCTPFilterThisAssociation"));
+
+ main_menu_item = window()->findChild<QMenu *>("menuFollow");
+ submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
+ ctx_menu_.addMenu(submenu);
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowTCPStream"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowUDPStream"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowSSLStream"));
+ submenu->addAction(window()->findChild<QAction *>("actionAnalyzeFollowHTTPStream"));
+
+ ctx_menu_.addSeparator();
+
+ main_menu_item = window()->findChild<QMenu *>("menuEditCopy");
+ submenu = new QMenu(main_menu_item->title(), &ctx_menu_);
+ ctx_menu_.addMenu(submenu);
+
+ QAction * action = submenu->addAction(tr("Summary as Text"));
+ action->setData(copy_summary_text_);
+ connect(action, SIGNAL(triggered()), this, SLOT(copySummary()));
+ action = submenu->addAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as CSV"));
+ action->setData(copy_summary_csv_);
+ connect(action, SIGNAL(triggered()), this, SLOT(copySummary()));
+ action = submenu->addAction(tr(UTF8_HORIZONTAL_ELLIPSIS "as YAML"));
+ action->setData(copy_summary_yaml_);
+ connect(action, SIGNAL(triggered()), this, SLOT(copySummary()));
+ submenu->addSeparator();
+
+ submenu->addAction(window()->findChild<QAction *>("actionEditCopyAsFilter"));
+ submenu->addSeparator();
+
+ QActionGroup * copyEntries = DataPrinter::copyActions(this, frameData);
+ submenu->addActions(copyEntries->actions());
+
+ ctx_menu_.addSeparator();
+ ctx_menu_.addMenu(&proto_prefs_menu_);
+ decode_as_ = window()->findChild<QAction *>("actionAnalyzeDecodeAs");
+ ctx_menu_.addAction(decode_as_);
+ // "Print" not ported intentionally
+ action = window()->findChild<QAction *>("actionViewShowPacketInNewWindow");
+ ctx_menu_.addAction(action);
decode_as_->setData(qVariantFromValue(true));
ctx_column_ = columnAt(event->x());