diff options
author | Michael Mann <mmann78@netscape.net> | 2017-06-25 11:48:46 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-06-26 02:48:58 +0000 |
commit | 5c60b517a70cab8138312ec39946f18f3ed75f58 (patch) | |
tree | ed0882fa1aca052246d207b3dcc81b9c5839f7aa | |
parent | 1b7f5d9f798634770656a82aaa2df30f7f01a9b0 (diff) | |
download | wireshark-5c60b517a70cab8138312ec39946f18f3ed75f58.tar.gz |
Add support for comments for a display filter button
Add a field to the display filter button UAT to allow comments
to be displayed as part of the tooltip to the diplay filter
button
Bug: 13814
Change-Id: I74459e4102856258d31d6429e2fd924a9f798cd5
Reviewed-on: https://code.wireshark.org/review/22390
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r-- | epan/filter_expressions.c | 8 | ||||
-rw-r--r-- | epan/filter_expressions.h | 3 | ||||
-rw-r--r-- | epan/prefs.c | 3 | ||||
-rw-r--r-- | ui/gtk/filter_expression_save_dlg.c | 13 | ||||
-rw-r--r-- | ui/qt/filter_expression_frame.cpp | 3 | ||||
-rw-r--r-- | ui/qt/filter_expression_frame.ui | 25 | ||||
-rw-r--r-- | ui/qt/main_window_slots.cpp | 10 |
7 files changed, 57 insertions, 8 deletions
diff --git a/epan/filter_expressions.c b/epan/filter_expressions.c index 048bad65bd..ae69c15989 100644 --- a/epan/filter_expressions.c +++ b/epan/filter_expressions.c @@ -39,6 +39,7 @@ static guint num_display_filter_macros = 0; UAT_BOOL_CB_DEF(display_filter_macro_uat, enabled, filter_expression_t) UAT_CSTRING_CB_DEF(display_filter_macro_uat, label, filter_expression_t) UAT_DISPLAY_FILTER_CB_DEF(display_filter_macro_uat, expression, filter_expression_t) +UAT_CSTRING_CB_DEF(display_filter_macro_uat, comment, filter_expression_t) /* * Create a new filter_expression and add it to the end of the list @@ -46,7 +47,7 @@ UAT_DISPLAY_FILTER_CB_DEF(display_filter_macro_uat, expression, filter_expressio */ filter_expression_t* filter_expression_new(const gchar *label, const gchar *expr, - const gboolean enabled) + const gchar *comment, const gboolean enabled) { filter_expression_t expression; @@ -54,6 +55,7 @@ filter_expression_new(const gchar *label, const gchar *expr, memset(&expression, 0, sizeof(expression)); expression.label = g_strdup(label); expression.expression = g_strdup(expr); + expression.comment = g_strdup(comment); expression.enabled = enabled; /* XXX - This is just returned to make GTK GUI work. */ @@ -75,6 +77,7 @@ static void display_filter_free_cb(void*r) { g_free(rec->label); g_free(rec->expression); + g_free(rec->comment); } static void* display_filter_copy_cb(void* n, const void* o, size_t siz _U_) { @@ -84,6 +87,7 @@ static void* display_filter_copy_cb(void* n, const void* o, size_t siz _U_) { new_record->button = old_record->button; new_record->label = g_strdup(old_record->label); new_record->expression = g_strdup(old_record->expression); + new_record->comment = g_strdup(old_record->comment); new_record->enabled = old_record->enabled; @@ -97,6 +101,8 @@ static uat_field_t display_filter_uat_flds[] = { "Name of the display filter button"), UAT_FLD_DISPLAY_FILTER(display_filter_macro_uat, expression, "Filter Expression", "Filter expression to be applied by the button"), + UAT_FLD_CSTRING(display_filter_macro_uat, comment, "Comment", + "Comment describing filter expression"), UAT_END_FIELDS }; diff --git a/epan/filter_expressions.h b/epan/filter_expressions.h index a9af58860a..aaa4322f3f 100644 --- a/epan/filter_expressions.h +++ b/epan/filter_expressions.h @@ -40,6 +40,7 @@ typedef struct filter_expression { gpointer button; /* Filter toolbar (GTK only) */ gchar *label; gchar *expression; + gchar *comment; gboolean enabled; /* Can be set to FALSE by Preferences Dialog */ } filter_expression_t; @@ -55,7 +56,7 @@ WS_DLL_PUBLIC void filter_expression_iterate_expressions(wmem_foreach_func func, */ WS_DLL_PUBLIC filter_expression_t *filter_expression_new(const gchar *label, - const gchar *expr, const gboolean enabled); + const gchar *expr, const gchar *comment, const gboolean enabled); /* Keep the UAT structure local to the filter_expressions */ void filter_expression_register_uat(module_t* pref_module); diff --git a/epan/prefs.c b/epan/prefs.c index a63223b221..56d7e734a3 100644 --- a/epan/prefs.c +++ b/epan/prefs.c @@ -5307,7 +5307,8 @@ set_pref(gchar *pref_name, const gchar *value, void *private_data _U_, filter_enabled = (strcmp(value, "TRUE") == 0) ? TRUE : FALSE; } else if (strcmp(pref_name, PRS_GUI_FILTER_EXPR) == 0) { filter_expr = g_strdup(value); - filter_expression_new(filter_label, filter_expr, filter_enabled); + /* Comments not supported for "old" preference style */ + filter_expression_new(filter_label, filter_expr, "", filter_enabled); g_free(filter_label); g_free(filter_expr); } else if (strcmp(pref_name, "gui.version_in_start_page") == 0) { diff --git a/ui/gtk/filter_expression_save_dlg.c b/ui/gtk/filter_expression_save_dlg.c index d60778d505..6a40dc30d4 100644 --- a/ui/gtk/filter_expression_save_dlg.c +++ b/ui/gtk/filter_expression_save_dlg.c @@ -134,10 +134,11 @@ filter_button_add(const char *label, const char *expr, struct filter_expression { struct filter_expression *fe; GtkWidget *button; + gchar* tooltip; /* No duplicate buttons when adding a new one */ if (newfe == NULL) - fe = filter_expression_new(label, expr, TRUE); + fe = filter_expression_new(label, expr, "", TRUE); else fe = newfe; @@ -153,7 +154,15 @@ filter_button_add(const char *label, const char *expr, struct filter_expression gtk_toolbar_insert(GTK_TOOLBAR(_filter_tb), (GtkToolItem *)button, -1); gtk_widget_set_sensitive(GTK_WIDGET(button), TRUE); - gtk_widget_set_tooltip_text(GTK_WIDGET(button), fe->expression); + if (strlen(fe->comment) > 0) + { + tooltip = g_strdup_printf("%s, %s", fe->expression, fe->comment); + gtk_widget_set_tooltip_text(GTK_WIDGET(button), tooltip); + } + else + { + gtk_widget_set_tooltip_text(GTK_WIDGET(button), fe->expression); + } fe->button = button; filter_buttons = g_list_append (filter_buttons, button); diff --git a/ui/qt/filter_expression_frame.cpp b/ui/qt/filter_expression_frame.cpp index 15fae7eeeb..b67eba6adf 100644 --- a/ui/qt/filter_expression_frame.cpp +++ b/ui/qt/filter_expression_frame.cpp @@ -95,8 +95,9 @@ void FilterExpressionFrame::on_buttonBox_accepted() gchar* err = NULL; QByteArray label_ba = ui->labelLineEdit->text().toUtf8(); QByteArray expr_ba = ui->displayFilterLineEdit->text().toUtf8(); + QByteArray comment_ba = ui->commentLineEdit->text().toUtf8(); - filter_expression_new(label_ba.constData(), expr_ba.constData(), TRUE); + filter_expression_new(label_ba.constData(), expr_ba.constData(), comment_ba.constData(), TRUE); on_buttonBox_rejected(); emit filterExpressionsChanged(); diff --git a/ui/qt/filter_expression_frame.ui b/ui/qt/filter_expression_frame.ui index a20b0ddddc..df9691bfd9 100644 --- a/ui/qt/filter_expression_frame.ui +++ b/ui/qt/filter_expression_frame.ui @@ -105,7 +105,30 @@ </property> </widget> </item> - <item> + <item> + <widget class="QLabel" name="commentLabel"> + <property name="text"> + <string>Comment:</string> + </property> + </widget> + </item> + <item> + <widget class="SyntaxLineEdit" name="commentLineEdit"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>80</width> + <height>0</height> + </size> + </property> + </widget> + </item> + <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp index 8f675926d9..1b153ce19a 100644 --- a/ui/qt/main_window_slots.cpp +++ b/ui/qt/main_window_slots.cpp @@ -909,7 +909,15 @@ gboolean MainWindow::filter_expression_add_action(const void *key _U_, void *val return FALSE; QAction *dfb_action = new QAction(fe->label, data->window->filter_expression_toolbar_); - dfb_action->setToolTip(fe->expression); + if (strlen(fe->comment) > 0) + { + QString tooltip = QString("%1, %2").arg(fe->expression).arg(fe->comment); + dfb_action->setToolTip(tooltip); + } + else + { + dfb_action->setToolTip(fe->expression); + } dfb_action->setData(fe->expression); dfb_action->setProperty(dfe_property_, true); data->window->filter_expression_toolbar_->addAction(dfb_action); |