summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2017-06-25 11:48:46 -0400
committerMichael Mann <mmann78@netscape.net>2017-06-26 02:48:58 +0000
commit5c60b517a70cab8138312ec39946f18f3ed75f58 (patch)
treeed0882fa1aca052246d207b3dcc81b9c5839f7aa
parent1b7f5d9f798634770656a82aaa2df30f7f01a9b0 (diff)
downloadwireshark-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.c8
-rw-r--r--epan/filter_expressions.h3
-rw-r--r--epan/prefs.c3
-rw-r--r--ui/gtk/filter_expression_save_dlg.c13
-rw-r--r--ui/qt/filter_expression_frame.cpp3
-rw-r--r--ui/qt/filter_expression_frame.ui25
-rw-r--r--ui/qt/main_window_slots.cpp10
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);