aboutsummaryrefslogtreecommitdiffstats
path: root/ui/qt/main_window_slots.cpp
diff options
context:
space:
mode:
authorRoland Knall <rknall@gmail.com>2019-08-27 17:14:31 +0200
committerRoland Knall <rknall@gmail.com>2019-08-29 07:51:45 +0000
commitcd8f720251c7c0ecbdd375cbfebb8b39273f6b84 (patch)
tree445dbeb37601ad790062147bed160678d1bde4d5 /ui/qt/main_window_slots.cpp
parent92ac2f509915b73198d7f7beef6ede11983df524 (diff)
Qt: Move Apply/Prepare to general QMenu handler
Also clarify the method by which the filter can be selected. From the main menu only selected filters from a ProtoTree can be selected, therefore the code for PacketList handling has been removed. Change-Id: I5e5827d763ab3b25db14a384581f283238f96d28 Reviewed-on: https://code.wireshark.org/review/34384 Petri-Dish: Roland Knall <rknall@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Gerald Combs <gerald@wireshark.org> Reviewed-by: Roland Knall <rknall@gmail.com>
Diffstat (limited to 'ui/qt/main_window_slots.cpp')
-rw-r--r--ui/qt/main_window_slots.cpp113
1 files changed, 19 insertions, 94 deletions
diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp
index aab4c23384..2dd873165c 100644
--- a/ui/qt/main_window_slots.cpp
+++ b/ui/qt/main_window_slots.cpp
@@ -1145,8 +1145,6 @@ void MainWindow::setMenusForSelectedPacket()
than one time reference frame or the current frame isn't a
time reference frame). (XXX - why check frame_selected?) */
bool another_is_time_ref = false;
- /* We have a valid filter expression */
- bool have_filter_expr = false;
QList<QAction *> cc_actions = QList<QAction *>()
<< main_ui_->actionViewColorizeConversation1 << main_ui_->actionViewColorizeConversation2
@@ -1178,8 +1176,6 @@ void MainWindow::setMenusForSelectedPacket()
}
}
- have_filter_expr = !packet_list_->getFilterFromRowAndColumn(packet_list_->currentIndex()).isEmpty();
-
main_ui_->actionEditMarkPacket->setEnabled(frame_selected);
main_ui_->actionEditMarkAllDisplayed->setEnabled(have_frames);
/* Unlike un-ignore, do not allow unmark of all frames when no frames are displayed */
@@ -1205,20 +1201,6 @@ void MainWindow::setMenusForSelectedPacket()
main_ui_->actionGoNextHistoryPacket->setEnabled(next_selection_history);
main_ui_->actionGoPreviousHistoryPacket->setEnabled(previous_selection_history);
- main_ui_->actionAnalyzeAAFSelected->setEnabled(have_filter_expr);
- main_ui_->actionAnalyzeAAFNotSelected->setEnabled(have_filter_expr);
- main_ui_->actionAnalyzeAAFAndSelected->setEnabled(have_filter_expr);
- main_ui_->actionAnalyzeAAFOrSelected->setEnabled(have_filter_expr);
- main_ui_->actionAnalyzeAAFAndNotSelected->setEnabled(have_filter_expr);
- main_ui_->actionAnalyzeAAFOrNotSelected->setEnabled(have_filter_expr);
-
- main_ui_->actionAnalyzePAFSelected->setEnabled(have_filter_expr);
- main_ui_->actionAnalyzePAFNotSelected->setEnabled(have_filter_expr);
- main_ui_->actionAnalyzePAFAndSelected->setEnabled(have_filter_expr);
- main_ui_->actionAnalyzePAFOrSelected->setEnabled(have_filter_expr);
- main_ui_->actionAnalyzePAFAndNotSelected->setEnabled(have_filter_expr);
- main_ui_->actionAnalyzePAFOrNotSelected->setEnabled(have_filter_expr);
-
main_ui_->actionAnalyzeFollowTCPStream->setEnabled(is_tcp);
main_ui_->actionAnalyzeFollowUDPStream->setEnabled(is_udp);
main_ui_->actionAnalyzeFollowTLSStream->setEnabled(is_tls);
@@ -1356,19 +1338,6 @@ void MainWindow::setMenusForSelectedTreeRow(FieldInformation *finfo) {
// frame_selected && (gbl_resolv_flags.mac_name || gbl_resolv_flags.network_name ||
// gbl_resolv_flags.transport_name));
- main_ui_->actionAnalyzeAAFSelected->setEnabled(can_match_selected);
- main_ui_->actionAnalyzeAAFNotSelected->setEnabled(can_match_selected);
- main_ui_->actionAnalyzeAAFAndSelected->setEnabled(can_match_selected);
- main_ui_->actionAnalyzeAAFOrSelected->setEnabled(can_match_selected);
- main_ui_->actionAnalyzeAAFAndNotSelected->setEnabled(can_match_selected);
- main_ui_->actionAnalyzeAAFOrNotSelected->setEnabled(can_match_selected);
-
- main_ui_->actionAnalyzePAFSelected->setEnabled(can_match_selected);
- main_ui_->actionAnalyzePAFNotSelected->setEnabled(can_match_selected);
- main_ui_->actionAnalyzePAFAndSelected->setEnabled(can_match_selected);
- main_ui_->actionAnalyzePAFOrSelected->setEnabled(can_match_selected);
- main_ui_->actionAnalyzePAFAndNotSelected->setEnabled(can_match_selected);
- main_ui_->actionAnalyzePAFOrNotSelected->setEnabled(can_match_selected);
}
void MainWindow::interfaceSelectionChanged()
@@ -2587,6 +2556,25 @@ void MainWindow::on_actionViewReload_as_File_Format_or_Capture_triggered()
// Analyze Menu
+void MainWindow::filterMenuAboutToShow()
+{
+ QMenu * menu = qobject_cast<QMenu *>(sender());
+ QString field_filter;
+
+ if (capture_file_.capFile() && capture_file_.capFile()->finfo_selected) {
+ char *tmp_field = proto_construct_match_selected_string(capture_file_.capFile()->finfo_selected,
+ capture_file_.capFile()->edt);
+ field_filter = QString(tmp_field);
+ wmem_free(NULL, tmp_field);
+ }
+ bool enable = ! field_filter.isEmpty();
+ bool prepare = menu->objectName().compare("menuPrepareAFilter") == 0;
+
+ menu->clear();
+ QActionGroup * group = FilterAction::createFilterGroup(field_filter, prepare, enable, menu);
+ menu->addActions(group->actions());
+}
+
void MainWindow::matchFieldFilter(FilterAction::Action action, FilterAction::ActionType filter_type)
{
QString field_filter;
@@ -2678,69 +2666,6 @@ void MainWindow::applyExportObject()
}
-// XXX We could probably create the analyze and prepare actions
-// dynamically using FilterActions and consolidate the methods
-// below into one callback.
-void MainWindow::on_actionAnalyzeAAFSelected_triggered()
-{
- matchFieldFilter(FilterAction::ActionApply, FilterAction::ActionTypePlain);
-}
-
-void MainWindow::on_actionAnalyzeAAFNotSelected_triggered()
-{
- matchFieldFilter(FilterAction::ActionApply, FilterAction::ActionTypeNot);
-}
-
-void MainWindow::on_actionAnalyzeAAFAndSelected_triggered()
-{
- matchFieldFilter(FilterAction::ActionApply, FilterAction::ActionTypeAnd);
-}
-
-void MainWindow::on_actionAnalyzeAAFOrSelected_triggered()
-{
- matchFieldFilter(FilterAction::ActionApply, FilterAction::ActionTypeOr);
-}
-
-void MainWindow::on_actionAnalyzeAAFAndNotSelected_triggered()
-{
- matchFieldFilter(FilterAction::ActionApply, FilterAction::ActionTypeAndNot);
-}
-
-void MainWindow::on_actionAnalyzeAAFOrNotSelected_triggered()
-{
- matchFieldFilter(FilterAction::ActionApply, FilterAction::ActionTypeOrNot);
-}
-
-void MainWindow::on_actionAnalyzePAFSelected_triggered()
-{
- matchFieldFilter(FilterAction::ActionPrepare, FilterAction::ActionTypePlain);
-}
-
-void MainWindow::on_actionAnalyzePAFNotSelected_triggered()
-{
- matchFieldFilter(FilterAction::ActionPrepare, FilterAction::ActionTypeNot);
-}
-
-void MainWindow::on_actionAnalyzePAFAndSelected_triggered()
-{
- matchFieldFilter(FilterAction::ActionPrepare, FilterAction::ActionTypeAnd);
-}
-
-void MainWindow::on_actionAnalyzePAFOrSelected_triggered()
-{
- matchFieldFilter(FilterAction::ActionPrepare, FilterAction::ActionTypeOr);
-}
-
-void MainWindow::on_actionAnalyzePAFAndNotSelected_triggered()
-{
- matchFieldFilter(FilterAction::ActionPrepare, FilterAction::ActionTypeAndNot);
-}
-
-void MainWindow::on_actionAnalyzePAFOrNotSelected_triggered()
-{
- matchFieldFilter(FilterAction::ActionPrepare, FilterAction::ActionTypeOrNot);
-}
-
void MainWindow::on_actionAnalyzeEnabledProtocols_triggered()
{
EnabledProtocolsDialog enable_proto_dialog(this);