diff options
author | Gerald Combs <gerald@wireshark.org> | 2015-07-30 16:15:40 -0700 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2015-07-30 23:39:05 +0000 |
commit | c321171ec898924386778ef2f81171a410b4e887 (patch) | |
tree | 48d35b5aa84d2c3c28d9535dabb3b1655e76dac4 /ui | |
parent | da07c62bd0d3a93d37e7ef66c7396c38999e0bcb (diff) | |
download | wireshark-c321171ec898924386778ef2f81171a410b4e887.tar.gz |
Add Colorize to the packet detail menu.
Change-Id: Idaac0b52e6e4534f40e13839e6dbce2408ca6bfa
Reviewed-on: https://code.wireshark.org/review/9831
Reviewed-by: Gerald Combs <gerald@wireshark.org>
Diffstat (limited to 'ui')
-rw-r--r-- | ui/qt/main_window.h | 2 | ||||
-rw-r--r-- | ui/qt/main_window_slots.cpp | 97 | ||||
-rw-r--r-- | ui/qt/proto_tree.cpp | 18 | ||||
-rw-r--r-- | ui/qt/proto_tree.h | 2 |
4 files changed, 48 insertions, 71 deletions
diff --git a/ui/qt/main_window.h b/ui/qt/main_window.h index cc042a8325..6bde9a8bf7 100644 --- a/ui/qt/main_window.h +++ b/ui/qt/main_window.h @@ -377,7 +377,7 @@ private slots: void on_actionViewColorizePacketList_triggered(bool checked); void on_actionViewColoringRules_triggered(); void colorizeConversation(bool create_rule = false); - void colorizePacketConversation(); + void colorizeWithFilter(); void on_actionViewColorizeResetColorization_triggered(); void on_actionViewColorizeNewConversationRule_triggered(); void on_actionViewResizeColumns_triggered(); diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp index 2805d4d1da..fad030c8fe 100644 --- a/ui/qt/main_window_slots.cpp +++ b/ui/qt/main_window_slots.cpp @@ -1102,18 +1102,15 @@ void MainWindow::setMenusForSelectedPacket() colorize_action->setProperty(color_number_property_, i++); colorize_action->setData(filter); colorize_action->setEnabled(enable); - connect(colorize_action, SIGNAL(triggered()), this, SLOT(colorizePacketConversation())); + connect(colorize_action, SIGNAL(triggered()), this, SLOT(colorizeWithFilter())); } QAction *conv_rule_action = submenu->addAction(main_ui_->actionViewColorizeNewConversationRule->text()); conv_rule_action->setData(conv_action->data()); conv_rule_action->setEnabled(enable); - connect(conv_rule_action, SIGNAL(triggered()), this, SLOT(colorizePacketConversation())); + connect(conv_rule_action, SIGNAL(triggered()), this, SLOT(colorizeWithFilter())); } - -// set_menu_sensitivity(ui_manager_packet_list_menu, "/PacketListMenuPopup/Copy", -// frame_selected); // set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/ViewMenu/NameResolution/ResolveName", // frame_selected && (gbl_resolv_flags.mac_name || gbl_resolv_flags.network_name || // gbl_resolv_flags.transport_name || gbl_resolv_flags.concurrent_dns)); @@ -1124,20 +1121,6 @@ void MainWindow::setMenusForSelectedPacket() main_ui_->actionSCTPShowAllAssociations->setEnabled(is_sctp); main_ui_->actionSCTPFilterThisAssociation->setEnabled(is_sctp); main_ui_->actionTelephonyRTPStreamAnalysis->setEnabled(is_rtp); - -// while (list_entry != NULL) { -// dissector_filter_t *filter_entry; -// gchar *path; - -// filter_entry = list_entry->data; -// path = g_strdup_printf("/Menubar/AnalyzeMenu/ConversationFilterMenu/Filters/filter-%u", i); - -// set_menu_sensitivity(ui_manager_main_menubar, path, -// menu_dissector_filter_spe_cb(/* frame_data *fd _U_*/ NULL, cf->edt, filter_entry)); -// g_free(path); -// i++; -// list_entry = g_list_next(list_entry); -// } } void MainWindow::setMenusForSelectedTreeRow(field_info *fi) { @@ -1151,6 +1134,14 @@ void MainWindow::setMenusForSelectedTreeRow(field_info *fi) { bool is_framenum = false; bool have_field_info = false; bool have_subtree = false; + QString field_filter; + + QList<QAction *> cc_actions = QList<QAction *>() + << main_ui_->actionViewColorizeConversation1 << main_ui_->actionViewColorizeConversation2 + << main_ui_->actionViewColorizeConversation3 << main_ui_->actionViewColorizeConversation4 + << main_ui_->actionViewColorizeConversation5 << main_ui_->actionViewColorizeConversation6 + << main_ui_->actionViewColorizeConversation7 << main_ui_->actionViewColorizeConversation8 + << main_ui_->actionViewColorizeConversation9 << main_ui_->actionViewColorizeConversation10; if (capture_file_.capFile()) { capture_file_.capFile()->finfo_selected = fi; @@ -1167,36 +1158,47 @@ void MainWindow::setMenusForSelectedTreeRow(field_info *fi) { can_match_selected = proto_can_match_selected(capture_file_.capFile()->finfo_selected, capture_file_.capFile()->edt); is_framenum = hfinfo && hfinfo->type == FT_FRAMENUM ? true : false; - main_ui_->menuConversationFilter->clear(); - for (GList *color_list_entry = color_conv_filter_list; color_list_entry; color_list_entry = g_list_next(color_list_entry)) { - color_conversation_filter_t* color_filter = (color_conversation_filter_t *)color_list_entry->data; - QAction *conv_action = main_ui_->menuConversationFilter->addAction(color_filter->display_name); + char *tmp_field = proto_construct_match_selected_string(fi, capture_file_.capFile()->edt); + field_filter = QString(tmp_field); + wmem_free(NULL, tmp_field); + } - bool enable = false; - QString filter; - if (capture_file_.capFile()->edt) { - enable = color_filter->is_filter_valid(&capture_file_.capFile()->edt->pi); - filter = color_filter->build_filter_string(&capture_file_.capFile()->edt->pi); - } - conv_action->setEnabled(enable); - conv_action->setData(filter); - connect(conv_action, SIGNAL(triggered()), this, SLOT(applyConversationFilter())); + main_ui_->menuConversationFilter->clear(); + for (GList *color_list_entry = color_conv_filter_list; color_list_entry; color_list_entry = g_list_next(color_list_entry)) { + color_conversation_filter_t* color_filter = (color_conversation_filter_t *)color_list_entry->data; + QAction *conv_action = main_ui_->menuConversationFilter->addAction(color_filter->display_name); + + bool conv_enable = false; + QString conv_filter; + if (capture_file_.capFile() && capture_file_.capFile()->edt) { + conv_enable = color_filter->is_filter_valid(&capture_file_.capFile()->edt->pi); + conv_filter = color_filter->build_filter_string(&capture_file_.capFile()->edt->pi); } + conv_action->setEnabled(conv_enable); + conv_action->setData(conv_filter); + connect(conv_action, SIGNAL(triggered()), this, SLOT(applyConversationFilter())); } + proto_tree_->colorizeMenu()->clear(); + int i = 1; + foreach (QAction *cc_action, cc_actions) { + QAction *colorize_action = proto_tree_->colorizeMenu()->addAction(cc_action->icon(), cc_action->text()); + colorize_action->setProperty(color_number_property_, i++); + colorize_action->setData(field_filter); + colorize_action->setEnabled(!field_filter.isEmpty()); + connect(colorize_action, SIGNAL(triggered()), this, SLOT(colorizeWithFilter())); + } + + QAction *conv_rule_action = proto_tree_->colorizeMenu()->addAction(main_ui_->actionViewColorizeNewConversationRule->text()); + conv_rule_action->setData(field_filter); + conv_rule_action->setEnabled(!field_filter.isEmpty()); + connect(conv_rule_action, SIGNAL(triggered()), this, SLOT(colorizeWithFilter())); + // set_menu_sensitivity(ui_manager_tree_view_menu, // "/TreeViewPopup/GotoCorrespondingPacket", hfinfo->type == FT_FRAMENUM); // set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/Copy", // TRUE); -// set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/CreateAColumn", -// hfinfo->type != FT_NONE); -// set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/ColorizewithFilter", -// proto_can_match_selected(cf->finfo_selected, cf->edt)); -// set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/DisableProtocol", -// (id == -1) ? FALSE : proto_can_toggle_protocol(id)); -// set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/ExpandSubtrees", -// cf->finfo_selected->tree_type != -1); // set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/WikiProtocolPage", // (id == -1) ? FALSE : TRUE); // set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/FilterFieldReference", @@ -1205,25 +1207,12 @@ void MainWindow::setMenusForSelectedTreeRow(field_info *fi) { // set_menu_sensitivity(ui_manager_main_menubar, // "/Menubar/GoMenu/GotoCorrespondingPacket", hfinfo->type == FT_FRAMENUM); -// set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/EditMenu/Copy/Description", -// proto_can_match_selected(cf->finfo_selected, cf->edt)); -// set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/EditMenu/Copy/Fieldname", -// proto_can_match_selected(cf->finfo_selected, cf->edt)); -// set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/EditMenu/Copy/Value", -// proto_can_match_selected(cf->finfo_selected, cf->edt)); -// set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/EditMenu/Copy/AsFilter", -// proto_can_match_selected(cf->finfo_selected, cf->edt)); // set_menu_sensitivity(ui_manager_tree_view_menu, // "/TreeViewPopup/GotoCorrespondingPacket", FALSE); -// set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/Copy", FALSE); -// set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/CreateAColumn", FALSE); -// set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/ColorizewithFilter", FALSE); -// set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/DisableProtocol", FALSE); // set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/ResolveName", // frame_selected && (gbl_resolv_flags.mac_name || gbl_resolv_flags.network_name || // gbl_resolv_flags.transport_name || gbl_resolv_flags.concurrent_dns)); -// set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/ExpandSubtrees", FALSE); // set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/WikiProtocolPage", // FALSE); // set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/FilterFieldReference", @@ -2227,7 +2216,7 @@ void MainWindow::colorizeConversation(bool create_rule) setMenusForSelectedPacket(); } -void MainWindow::colorizePacketConversation() +void MainWindow::colorizeWithFilter() { QAction *colorize_action = qobject_cast<QAction *>(sender()); if (!colorize_action) return; diff --git a/ui/qt/proto_tree.cpp b/ui/qt/proto_tree.cpp index 1e54bc3f44..898ec709ff 100644 --- a/ui/qt/proto_tree.cpp +++ b/ui/qt/proto_tree.cpp @@ -200,22 +200,8 @@ ProtoTree::ProtoTree(QWidget *parent) : conv_menu_.setTitle(main_conv_menu->title()); ctx_menu_.addMenu(&conv_menu_); -// action = window()->findChild<QAction *>("actionColorize_with_Filter"); -// submenu = new QMenu(); -// action->setMenu(submenu); -// ctx_menu_.addAction(action); -// " <menuitem name='Color1' action='/Colorize with Filter/Color 1'/>\n" -// " <menuitem name='Color2' action='/Colorize with Filter/Color 2'/>\n" -// " <menuitem name='Color3' action='/Colorize with Filter/Color 3'/>\n" -// " <menuitem name='Color4' action='/Colorize with Filter/Color 4'/>\n" -// " <menuitem name='Color5' action='/Colorize with Filter/Color 5'/>\n" -// " <menuitem name='Color6' action='/Colorize with Filter/Color 6'/>\n" -// " <menuitem name='Color7' action='/Colorize with Filter/Color 7'/>\n" -// " <menuitem name='Color8' action='/Colorize with Filter/Color 8'/>\n" -// " <menuitem name='Color9' action='/Colorize with Filter/Color 9'/>\n" -// " <menuitem name='Color10' action='/Colorize with Filter/Color 10'/>\n" -// " <menuitem name='NewColoringRule' action='/Colorize with Filter/New Coloring Rule'/>\n" -// " </menu>\n" + colorize_menu_.setTitle(tr("Colorize with Filter")); + ctx_menu_.addMenu(&colorize_menu_); main_menu_item = window()->findChild<QMenu *>("menuFollow"); submenu = new QMenu(main_menu_item->title()); diff --git a/ui/qt/proto_tree.h b/ui/qt/proto_tree.h index ad21111936..319c821cd3 100644 --- a/ui/qt/proto_tree.h +++ b/ui/qt/proto_tree.h @@ -38,6 +38,7 @@ class ProtoTree : public QTreeWidget Q_OBJECT public: explicit ProtoTree(QWidget *parent = 0); + QMenu *colorizeMenu() { return &colorize_menu_; } void fillProtocolTree(proto_tree *protocol_tree); void emitRelatedFrame(int related_frame, ft_framenum_type_t framenum_type = FT_FRAMENUM_NONE); void goToField(int hf_id); @@ -49,6 +50,7 @@ protected: private: QMenu ctx_menu_; QMenu conv_menu_; + QMenu colorize_menu_; ProtocolPreferencesMenu proto_prefs_menu_; QAction *decode_as_; QList<QAction *> copy_actions_; |