aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorMichal Labedzki <michal.labedzki@tieto.com>2015-12-11 09:34:08 +0100
committerAnders Broman <a.broman58@gmail.com>2015-12-20 08:21:02 +0000
commit9bb3f6be4c18822267a64633c298e1a8f1809221 (patch)
treede9b8934c58f239e29d0227039ad7f55f3d42f06 /ui
parent7e0ec2c8eb3c88e70992dc40b130c76177b83a30 (diff)
Qt: Add missing multi-field column validation
GTK already has it, but Qt forgot about it, so multi-field custom column works ok if previously saved in GTK-shark. Invalid validation prevent from modifying and saving multi-field custom column in Qt version. While at it, rename "custom field" to "custom fields" to ensure we think about multi-field custom column. Change-Id: I99588150ccb38be11b75f5dd5b0f6443e7055ebb Reviewed-on: https://code.wireshark.org/review/12685 Petri-Dish: Michal Labedzki <michal.labedzki@tieto.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'ui')
-rw-r--r--ui/gtk/main.c2
-rw-r--r--ui/gtk/main_menubar.c4
-rw-r--r--ui/gtk/packet_list.c10
-rw-r--r--ui/gtk/packet_list_store.c2
-rw-r--r--ui/gtk/prefs_column.c34
-rw-r--r--ui/packet_list_utils.c4
-rw-r--r--ui/preference_utils.c8
-rw-r--r--ui/qt/column_editor_frame.cpp26
-rw-r--r--ui/qt/column_editor_frame.h4
-rw-r--r--ui/qt/column_editor_frame.ui4
-rw-r--r--ui/qt/column_preferences_frame.cpp38
-rw-r--r--ui/qt/column_preferences_frame.h4
-rw-r--r--ui/qt/column_preferences_frame.ui2
-rw-r--r--ui/qt/packet_list.cpp4
-rw-r--r--ui/qt/packet_list_model.cpp2
-rw-r--r--ui/qt/syntax_line_edit.cpp26
-rw-r--r--ui/qt/syntax_line_edit.h1
-rw-r--r--ui/recent.c8
18 files changed, 105 insertions, 78 deletions
diff --git a/ui/gtk/main.c b/ui/gtk/main.c
index 245bc1e12c..8eab2b5b55 100644
--- a/ui/gtk/main.c
+++ b/ui/gtk/main.c
@@ -593,7 +593,7 @@ get_filter_from_packet_list_row_and_column(gpointer data)
strlen(cfile.cinfo.col_expr.col_expr_val[column]) != 0) {
/* leak a little; is there a safe wmem_ scope here? */
if (cfile.cinfo.columns[column].col_fmt == COL_CUSTOM) {
- header_field_info *hfi = proto_registrar_get_byname(cfile.cinfo.columns[column].col_custom_field);
+ header_field_info *hfi = proto_registrar_get_byname(cfile.cinfo.columns[column].col_custom_fields);
if (hfi && hfi->parent == -1) {
/* Protocol only */
buf = g_strdup(cfile.cinfo.col_expr.col_expr[column]);
diff --git a/ui/gtk/main_menubar.c b/ui/gtk/main_menubar.c
index 8d089fe66c..4edfa5140f 100644
--- a/ui/gtk/main_menubar.c
+++ b/ui/gtk/main_menubar.c
@@ -5117,13 +5117,13 @@ rebuild_visible_columns_menu (void)
cfmt = (fmt_data *) clp->data;
if (cfmt->title[0]) {
if (cfmt->fmt == COL_CUSTOM) {
- title = g_strdup_printf ("%s (%s)", cfmt->title, cfmt->custom_field);
+ title = g_strdup_printf ("%s (%s)", cfmt->title, cfmt->custom_fields);
} else {
title = g_strdup_printf ("%s (%s)", cfmt->title, col_format_desc (cfmt->fmt));
}
} else {
if (cfmt->fmt == COL_CUSTOM) {
- title = g_strdup_printf ("(%s)", cfmt->custom_field);
+ title = g_strdup_printf ("(%s)", cfmt->custom_fields);
} else {
title = g_strdup_printf ("(%s)", col_format_desc (cfmt->fmt));
}
diff --git a/ui/gtk/packet_list.c b/ui/gtk/packet_list.c
index a46562367b..28a1aec161 100644
--- a/ui/gtk/packet_list.c
+++ b/ui/gtk/packet_list.c
@@ -178,9 +178,9 @@ col_title_change_ok (GtkWidget *w, gpointer parent_w)
}
if (cur_fmt == COL_CUSTOM) {
- const gchar *custom_field = get_column_custom_field(col_id);
- if ((custom_field && strcmp (name, custom_field) != 0) || (custom_field == NULL)) {
- set_column_custom_field (col_id, name);
+ const gchar *custom_fields = get_column_custom_fields(col_id);
+ if ((custom_fields && strcmp (name, custom_fields) != 0) || (custom_fields == NULL)) {
+ set_column_custom_fields(col_id, name);
recreate = TRUE;
}
@@ -339,7 +339,7 @@ col_details_edit_dlg (gint col_id, GtkTreeViewColumn *col)
cur_fmt = get_column_format (col_id);
gtk_combo_box_set_active(GTK_COMBO_BOX(format_cmb), cur_fmt);
if (cur_fmt == COL_CUSTOM) {
- gtk_entry_set_text(GTK_ENTRY(field_te), get_column_custom_field(col_id));
+ gtk_entry_set_text(GTK_ENTRY(field_te), get_column_custom_fields(col_id));
g_snprintf(custom_occurrence_str, sizeof(custom_occurrence_str), "%d", get_column_custom_occurrence(col_id));
gtk_entry_set_text(GTK_ENTRY(occurrence_te), custom_occurrence_str);
}
@@ -1629,7 +1629,7 @@ packet_list_recent_write_all(FILE *rf)
for (col = 0; col < num_cols; col++) {
col_fmt = get_column_format(col);
if (col_fmt == COL_CUSTOM) {
- fprintf (rf, " %%Cus:%s,", get_column_custom_field(col));
+ fprintf (rf, " %%Cus:%s,", get_column_custom_fields(col));
} else {
fprintf (rf, " %s,", col_format_to_string(col_fmt));
}
diff --git a/ui/gtk/packet_list_store.c b/ui/gtk/packet_list_store.c
index c7598ebb4e..d7696a3597 100644
--- a/ui/gtk/packet_list_store.c
+++ b/ui/gtk/packet_list_store.c
@@ -935,7 +935,7 @@ packet_list_compare_custom(gint sort_id, gint text_sort_id, PacketListRecord *a,
{
header_field_info *hfi;
- hfi = proto_registrar_get_byname(cfile.cinfo.columns[sort_id].col_custom_field);
+ hfi = proto_registrar_get_byname(cfile.cinfo.columns[sort_id].col_custom_fields);
if (hfi == NULL) {
return frame_data_compare(cfile.epan, a->fdata, b->fdata, COL_NUMBER);
diff --git a/ui/gtk/prefs_column.c b/ui/gtk/prefs_column.c
index 87fcf133ad..715042a95b 100644
--- a/ui/gtk/prefs_column.c
+++ b/ui/gtk/prefs_column.c
@@ -179,15 +179,15 @@ column_prefs_show(GtkWidget *prefs_window) {
cfmt = (fmt_data *) clp->data;
if (cfmt->fmt == COL_CUSTOM) {
if (cfmt->custom_occurrence) {
- fmt = g_strdup_printf("%s (%s#%d)", col_format_desc(cfmt->fmt), cfmt->custom_field, cfmt->custom_occurrence);
+ fmt = g_strdup_printf("%s (%s#%d)", col_format_desc(cfmt->fmt), cfmt->custom_fields, cfmt->custom_occurrence);
} else {
- fmt = g_strdup_printf("%s (%s)", col_format_desc(cfmt->fmt), cfmt->custom_field);
+ fmt = g_strdup_printf("%s (%s)", col_format_desc(cfmt->fmt), cfmt->custom_fields);
}
} else {
- if (cfmt->custom_field) {
- /* Delete custom_field from previous changes */
- g_free (cfmt->custom_field);
- cfmt->custom_field = NULL;
+ if (cfmt->custom_fields) {
+ /* Delete custom_fields from previous changes */
+ g_free (cfmt->custom_fields);
+ cfmt->custom_fields = NULL;
cfmt->custom_occurrence = 0;
}
fmt = g_strdup_printf("%s", col_format_desc(cfmt->fmt));
@@ -480,7 +480,7 @@ column_list_select_cb(GtkTreeSelection *sel, gpointer data _U_)
g_signal_handler_block (field_te, column_field_changed_handler_id);
g_signal_handler_block (occurrence_te, column_occurrence_changed_handler_id);
if (cfmt->fmt == COL_CUSTOM) {
- gtk_entry_set_text(GTK_ENTRY(field_te), cfmt->custom_field);
+ gtk_entry_set_text(GTK_ENTRY(field_te), cfmt->custom_fields);
gtk_widget_set_sensitive(field_lb, TRUE);
gtk_widget_set_sensitive(field_te, TRUE);
g_snprintf(custom_occurrence_str, sizeof(custom_occurrence_str), "%d", cfmt->custom_occurrence);
@@ -569,17 +569,17 @@ column_menu_changed_cb(GtkWidget *w, gpointer data) {
} else if (cur_cb_fmt == COL_CUSTOM) {
/* Changing from non-custom to custom */
- if (cfmt->custom_field == NULL)
- cfmt->custom_field = g_strdup("");
+ if (cfmt->custom_fields == NULL)
+ cfmt->custom_fields = g_strdup("");
/* The following doesn't trigger a call to menu_field_changed_cb() */
- gtk_entry_set_text(GTK_ENTRY(field_te), cfmt->custom_field);
+ gtk_entry_set_text(GTK_ENTRY(field_te), cfmt->custom_fields);
g_snprintf(custom_occurrence_str, sizeof(custom_occurrence_str), "%d", cfmt->custom_occurrence);
gtk_entry_set_text(GTK_ENTRY(occurrence_te), custom_occurrence_str);
if (cfmt->custom_occurrence) {
- fmt = g_strdup_printf("%s (%s#%d)", col_format_desc(cur_cb_fmt), cfmt->custom_field, cfmt->custom_occurrence);
+ fmt = g_strdup_printf("%s (%s#%d)", col_format_desc(cur_cb_fmt), cfmt->custom_fields, cfmt->custom_occurrence);
} else {
- fmt = g_strdup_printf("%s (%s)", col_format_desc(cur_cb_fmt), cfmt->custom_field);
+ fmt = g_strdup_printf("%s (%s)", col_format_desc(cur_cb_fmt), cfmt->custom_fields);
}
gtk_widget_set_sensitive(field_lb, TRUE);
gtk_widget_set_sensitive(field_te, TRUE);
@@ -627,7 +627,7 @@ column_field_changed_cb(GtkEditable *te, gpointer data) {
field = gtk_editable_get_chars(te, 0, -1);
gtk_tree_model_get(model, &iter, DATA_COLUMN, &clp, -1);
cfmt = (fmt_data *) clp->data;
- if (strcmp(cfmt->custom_field, field) == 0) {
+ if (strcmp(cfmt->custom_fields, field) == 0) {
return; /* no action req'd */
}
@@ -640,8 +640,8 @@ column_field_changed_cb(GtkEditable *te, gpointer data) {
gtk_list_store_set(GTK_LIST_STORE(model), &iter, FORMAT_COLUMN, fmt, -1);
g_free(fmt);
- g_free(cfmt->custom_field);
- cfmt->custom_field = field;
+ g_free(cfmt->custom_fields);
+ cfmt->custom_fields = field;
cfile.columns_changed = TRUE;
}
@@ -680,9 +680,9 @@ column_occurrence_changed_cb(GtkEditable *te, gpointer data) {
/* The user has entered a new value in the field occurrence entry box: make the req'd changes */
if (occurrence) {
- fmt = g_strdup_printf("%s (%s#%d)", col_format_desc(cfmt->fmt), cfmt->custom_field, occurrence);
+ fmt = g_strdup_printf("%s (%s#%d)", col_format_desc(cfmt->fmt), cfmt->custom_fields, occurrence);
} else {
- fmt = g_strdup_printf("%s (%s)", col_format_desc(cfmt->fmt), cfmt->custom_field);
+ fmt = g_strdup_printf("%s (%s)", col_format_desc(cfmt->fmt), cfmt->custom_fields);
}
gtk_list_store_set(GTK_LIST_STORE(model), &iter, FORMAT_COLUMN, fmt, -1);
diff --git a/ui/packet_list_utils.c b/ui/packet_list_utils.c
index 348fa9ccc5..de645cd9bd 100644
--- a/ui/packet_list_utils.c
+++ b/ui/packet_list_utils.c
@@ -54,7 +54,7 @@ right_justify_column (gint col, capture_file *cf)
break;
case COL_CUSTOM:
- hfi = proto_registrar_get_byname(cf->cinfo.columns[col].col_custom_field);
+ hfi = proto_registrar_get_byname(cf->cinfo.columns[col].col_custom_fields);
/* Check if this is a valid field and we have no strings lookup table */
if ((hfi != NULL) && ((hfi->strings == NULL) || !get_column_resolved(col))) {
/* Check for bool, framenum and decimal/octal integer types */
@@ -84,7 +84,7 @@ resolve_column (gint col, capture_file *cf)
switch (cf->cinfo.columns[col].col_fmt) {
case COL_CUSTOM:
- hfi = proto_registrar_get_byname(cf->cinfo.columns[col].col_custom_field);
+ hfi = proto_registrar_get_byname(cf->cinfo.columns[col].col_custom_fields);
/* Check if this is a valid field */
if (hfi != NULL) {
/* Check if we have an OID or a strings table with integer values */
diff --git a/ui/preference_utils.c b/ui/preference_utils.c
index 51265aa5c5..ce92c5c872 100644
--- a/ui/preference_utils.c
+++ b/ui/preference_utils.c
@@ -316,7 +316,7 @@ prefs_store_ext(const char * module_name, const char *pref_name, const char *pre
}
gint
-column_prefs_add_custom(gint fmt, const gchar *title, const gchar *custom_field, gint custom_occurrence)
+column_prefs_add_custom(gint fmt, const gchar *title, const gchar *custom_fields, gint custom_occurrence)
{
GList *clp;
fmt_data *cfmt, *last_cfmt;
@@ -330,13 +330,13 @@ column_prefs_add_custom(gint fmt, const gchar *title, const gchar *custom_field,
*/
cfmt->title = g_strdup(title);
cfmt->fmt = fmt;
- cfmt->custom_field = g_strdup(custom_field);
+ cfmt->custom_fields = g_strdup(custom_fields);
cfmt->custom_occurrence = custom_occurrence;
cfmt->resolved = TRUE;
colnr = g_list_length(prefs.col_list);
- if (custom_field) {
+ if (custom_fields) {
cfmt->visible = TRUE;
clp = g_list_last(prefs.col_list);
last_cfmt = (fmt_data *) clp->data;
@@ -365,7 +365,7 @@ column_prefs_remove_link(GList *col_link)
cfmt = (fmt_data *) col_link->data;
g_free(cfmt->title);
- g_free(cfmt->custom_field);
+ g_free(cfmt->custom_fields);
g_free(cfmt);
prefs.col_list = g_list_remove_link(prefs.col_list, col_link);
}
diff --git a/ui/qt/column_editor_frame.cpp b/ui/qt/column_editor_frame.cpp
index 2e3ca3dc16..dcacada1ef 100644
--- a/ui/qt/column_editor_frame.cpp
+++ b/ui/qt/column_editor_frame.cpp
@@ -63,17 +63,17 @@ void ColumnEditorFrame::setFields(int index)
bool ok = true;
if (index == COL_CUSTOM) {
- ui->fieldNameLineEdit->setText(saved_field_);
- ui->fieldNameLineEdit->checkFieldName(saved_field_);
+ ui->fieldsNameLineEdit->setText(saved_fields_);
+ ui->fieldsNameLineEdit->checkCustomColumn(saved_fields_);
ui->occurrenceLineEdit->setText(saved_occurrence_);
ui->occurrenceLineEdit->checkInteger(saved_occurrence_);
- if ((ui->fieldNameLineEdit->syntaxState() != SyntaxLineEdit::Valid) ||
+ if ((ui->fieldsNameLineEdit->syntaxState() != SyntaxLineEdit::Valid) ||
(ui->occurrenceLineEdit->syntaxState() != SyntaxLineEdit::Valid)) {
ok = false;
}
} else {
- ui->fieldNameLineEdit->clear();
- ui->fieldNameLineEdit->setSyntaxState(SyntaxLineEdit::Empty);
+ ui->fieldsNameLineEdit->clear();
+ ui->fieldsNameLineEdit->setSyntaxState(SyntaxLineEdit::Empty);
ui->occurrenceLineEdit->clear();
ui->occurrenceLineEdit->setSyntaxState(SyntaxLineEdit::Empty);
}
@@ -84,7 +84,7 @@ void ColumnEditorFrame::editColumn(int column)
{
cur_column_ = column;
ui->titleLineEdit->setText(get_column_title(column));
- saved_field_ = get_column_custom_field(column);
+ saved_fields_ = get_column_custom_fields(column);
saved_occurrence_ = QString::number(get_column_custom_occurrence(column));
ui->typeComboBox->setCurrentIndex(get_column_format(column));
setFields(ui->typeComboBox->currentIndex());
@@ -95,22 +95,22 @@ void ColumnEditorFrame::on_typeComboBox_activated(int index)
setFields(index);
}
-void ColumnEditorFrame::on_fieldNameLineEdit_textEdited(const QString &field)
+void ColumnEditorFrame::on_fieldsNameLineEdit_textEdited(const QString &fields)
{
- ui->fieldNameLineEdit->checkFieldName(field);
+ ui->fieldsNameLineEdit->checkCustomColumn(fields);
if (ui->typeComboBox->currentIndex() != COL_CUSTOM) {
ui->typeComboBox->setCurrentIndex(COL_CUSTOM);
ui->occurrenceLineEdit->setText(saved_occurrence_);
}
bool ok = true;
- if ((ui->fieldNameLineEdit->syntaxState() == SyntaxLineEdit::Invalid) ||
+ if ((ui->fieldsNameLineEdit->syntaxState() == SyntaxLineEdit::Invalid) ||
((ui->typeComboBox->currentIndex() == COL_CUSTOM) &&
(ui->occurrenceLineEdit->syntaxState() == SyntaxLineEdit::Empty)))
ok = false;
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(ok);
- saved_field_ = field;
+ saved_fields_ = fields;
}
void ColumnEditorFrame::on_occurrenceLineEdit_textEdited(const QString &occurrence)
@@ -118,7 +118,7 @@ void ColumnEditorFrame::on_occurrenceLineEdit_textEdited(const QString &occurren
ui->occurrenceLineEdit->checkInteger(occurrence);
if (ui->typeComboBox->currentIndex() != COL_CUSTOM) {
ui->typeComboBox->setCurrentIndex(COL_CUSTOM);
- ui->fieldNameLineEdit->setText(saved_field_);
+ ui->fieldsNameLineEdit->setText(saved_fields_);
}
bool ok = true;
@@ -145,8 +145,8 @@ void ColumnEditorFrame::on_buttonBox_accepted()
set_column_title(cur_column_, col_str.constData());
set_column_format(cur_column_, ui->typeComboBox->currentIndex());
if (ui->typeComboBox->currentIndex() == COL_CUSTOM) {
- col_str = ui->fieldNameLineEdit->text().toUtf8();
- set_column_custom_field(cur_column_, col_str.constData());
+ col_str = ui->fieldsNameLineEdit->text().toUtf8();
+ set_column_custom_fields(cur_column_, col_str.constData());
if (!ui->occurrenceLineEdit->text().isEmpty()) {
set_column_custom_occurrence(cur_column_, ui->occurrenceLineEdit->text().toInt());
}
diff --git a/ui/qt/column_editor_frame.h b/ui/qt/column_editor_frame.h
index f7e019bad5..7ee6023a5d 100644
--- a/ui/qt/column_editor_frame.h
+++ b/ui/qt/column_editor_frame.h
@@ -42,7 +42,7 @@ signals:
private slots:
void on_typeComboBox_activated(int index);
- void on_fieldNameLineEdit_textEdited(const QString &field);
+ void on_fieldsNameLineEdit_textEdited(const QString &fields);
void on_occurrenceLineEdit_textEdited(const QString &occurrence);
void on_buttonBox_rejected();
void on_buttonBox_accepted();
@@ -50,7 +50,7 @@ private slots:
private:
Ui::ColumnEditorFrame *ui;
int cur_column_;
- QString saved_field_;
+ QString saved_fields_;
QString saved_occurrence_;
void setFields(int index);
};
diff --git a/ui/qt/column_editor_frame.ui b/ui/qt/column_editor_frame.ui
index cbf3812c3d..8040623cd9 100644
--- a/ui/qt/column_editor_frame.ui
+++ b/ui/qt/column_editor_frame.ui
@@ -75,12 +75,12 @@
<item>
<widget class="QLabel" name="label_3">
<property name="text">
- <string>Field Name</string>
+ <string>Fields</string>
</property>
</widget>
</item>
<item>
- <widget class="SyntaxLineEdit" name="fieldNameLineEdit"/>
+ <widget class="SyntaxLineEdit" name="fieldsNameLineEdit"/>
</item>
<item>
<spacer name="horizontalSpacer_4">
diff --git a/ui/qt/column_preferences_frame.cpp b/ui/qt/column_preferences_frame.cpp
index a83111015f..943861d352 100644
--- a/ui/qt/column_preferences_frame.cpp
+++ b/ui/qt/column_preferences_frame.cpp
@@ -46,7 +46,7 @@
const int visible_col_ = 0;
const int title_col_ = 1;
const int type_col_ = 2;
-const int custom_field_col_ = 3;
+const int custom_fields_col_ = 3;
const int custom_occurrence_col_ = 4;
ColumnPreferencesFrame::ColumnPreferencesFrame(QWidget *parent) :
@@ -58,7 +58,7 @@ ColumnPreferencesFrame::ColumnPreferencesFrame(QWidget *parent) :
ui->setupUi(this);
int one_em = ui->columnTreeWidget->fontMetrics().height();
- ui->columnTreeWidget->setColumnWidth(custom_field_col_, one_em * 10);
+ ui->columnTreeWidget->setColumnWidth(custom_fields_col_, one_em * 10);
ui->columnTreeWidget->setColumnWidth(custom_occurrence_col_, one_em * 5);
ui->columnTreeWidget->setMinimumWidth(one_em * 20);
@@ -72,7 +72,7 @@ ColumnPreferencesFrame::ColumnPreferencesFrame(QWidget *parent) :
for (GList *cur = g_list_first(prefs.col_list); cur != NULL && cur->data != NULL; cur = cur->next) {
fmt_data *cfmt = (fmt_data *) cur->data;
- addColumn(cfmt->visible, cfmt->title, cfmt->fmt, cfmt->custom_field, cfmt->custom_occurrence);
+ addColumn(cfmt->visible, cfmt->title, cfmt->fmt, cfmt->custom_fields, cfmt->custom_occurrence);
}
connect(ui->columnTreeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(updateWidgets()));
@@ -106,7 +106,7 @@ void ColumnPreferencesFrame::unstash()
if (cfmt->fmt == COL_CUSTOM) {
bool ok;
int occurrence = (*it)->text(custom_occurrence_col_).toInt(&ok);
- cfmt->custom_field = qstring_strdup((*it)->text(custom_field_col_));
+ cfmt->custom_fields = qstring_strdup((*it)->text(custom_fields_col_));
cfmt->custom_occurrence = ok ? occurrence : 0;
}
@@ -119,7 +119,7 @@ void ColumnPreferencesFrame::unstash()
old_cfmt->fmt != cfmt->fmt ||
old_cfmt->visible != cfmt->visible ||
(old_cfmt->fmt == COL_CUSTOM && (
- g_strcmp0(old_cfmt->custom_field, cfmt->custom_field) != 0 ||
+ g_strcmp0(old_cfmt->custom_fields, cfmt->custom_fields) != 0 ||
old_cfmt->custom_occurrence != cfmt->custom_occurrence))) {
changed = true;
}
@@ -156,8 +156,8 @@ void ColumnPreferencesFrame::keyPressEvent(QKeyEvent *evt)
case title_col_:
columnTitleEditingFinished();
break;
- case custom_field_col_:
- customFieldEditingFinished();
+ case custom_fields_col_:
+ customFieldsEditingFinished();
columnTypeCurrentIndexChanged(new_idx);
break;
case custom_occurrence_col_:
@@ -191,7 +191,7 @@ void ColumnPreferencesFrame::keyPressEvent(QKeyEvent *evt)
QFrame::keyPressEvent(evt);
}
-void ColumnPreferencesFrame::addColumn(bool visible, const char *title, int fmt, const char *custom_field, int custom_occurrence)
+void ColumnPreferencesFrame::addColumn(bool visible, const char *title, int fmt, const char *custom_fields, int custom_occurrence)
{
QTreeWidgetItem *item = new QTreeWidgetItem(ui->columnTreeWidget);
@@ -202,7 +202,7 @@ void ColumnPreferencesFrame::addColumn(bool visible, const char *title, int fmt,
item->setText(type_col_, col_format_desc(fmt));
item->setData(type_col_, Qt::UserRole, QVariant(fmt));
if (fmt == COL_CUSTOM) {
- item->setText(custom_field_col_, custom_field);
+ item->setText(custom_fields_col_, custom_fields);
item->setText(custom_occurrence_col_, QString::number(custom_occurrence));
}
@@ -228,8 +228,8 @@ void ColumnPreferencesFrame::on_columnTreeWidget_currentItemChanged(QTreeWidgetI
ui->columnTreeWidget->removeItemWidget(previous, type_col_);
previous->setText(type_col_, col_format_desc(previous->data(type_col_, Qt::UserRole).toInt()));
}
- if (previous && ui->columnTreeWidget->itemWidget(previous, custom_field_col_)) {
- ui->columnTreeWidget->removeItemWidget(previous, custom_field_col_);
+ if (previous && ui->columnTreeWidget->itemWidget(previous, custom_fields_col_)) {
+ ui->columnTreeWidget->removeItemWidget(previous, custom_fields_col_);
}
if (previous && ui->columnTreeWidget->itemWidget(previous, custom_occurrence_col_)) {
ui->columnTreeWidget->removeItemWidget(previous, custom_occurrence_col_);
@@ -269,13 +269,13 @@ void ColumnPreferencesFrame::on_columnTreeWidget_itemActivated(QTreeWidgetItem *
editor = cur_combo_box_;
break;
}
- case custom_field_col_:
+ case custom_fields_col_:
{
SyntaxLineEdit *syntax_edit = new SyntaxLineEdit();
- saved_col_string_ = item->text(custom_field_col_);
+ saved_col_string_ = item->text(custom_fields_col_);
connect(syntax_edit, SIGNAL(textChanged(QString)),
- syntax_edit, SLOT(checkFieldName(QString)));
- connect(syntax_edit, SIGNAL(editingFinished()), this, SLOT(customFieldEditingFinished()));
+ syntax_edit, SLOT(checkCustomColumn(QString)));
+ connect(syntax_edit, SIGNAL(editingFinished()), this, SLOT(customFieldsEditingFinished()));
editor = cur_line_edit_ = syntax_edit;
saved_combo_idx_ = item->data(type_col_, Qt::UserRole).toInt();
@@ -358,18 +358,18 @@ void ColumnPreferencesFrame::columnTypeCurrentIndexChanged(int index)
item->setText(type_col_, col_format_desc(index));
if (index != COL_CUSTOM) {
- item->setText(custom_field_col_, "");
+ item->setText(custom_fields_col_, "");
item->setText(custom_occurrence_col_, "");
}
}
-void ColumnPreferencesFrame::customFieldEditingFinished()
+void ColumnPreferencesFrame::customFieldsEditingFinished()
{
QTreeWidgetItem *item = ui->columnTreeWidget->currentItem();
if (!cur_line_edit_ || !item) return;
- item->setText(custom_field_col_, cur_line_edit_->text());
- ui->columnTreeWidget->removeItemWidget(item, custom_field_col_);
+ item->setText(custom_fields_col_, cur_line_edit_->text());
+ ui->columnTreeWidget->removeItemWidget(item, custom_fields_col_);
}
void ColumnPreferencesFrame::customOccurrenceEditingFinished()
diff --git a/ui/qt/column_preferences_frame.h b/ui/qt/column_preferences_frame.h
index c5c45e2895..0a7ae664b6 100644
--- a/ui/qt/column_preferences_frame.h
+++ b/ui/qt/column_preferences_frame.h
@@ -54,7 +54,7 @@ private:
QComboBox *cur_combo_box_;
int saved_combo_idx_;
- void addColumn(bool visible, const char *title, int fmt, const char *custom_field, int custom_occurrence);
+ void addColumn(bool visible, const char *title, int fmt, const char *custom_fields, int custom_occurrence);
private slots:
void updateWidgets(void);
@@ -64,7 +64,7 @@ private slots:
void comboDestroyed();
void columnTitleEditingFinished();
void columnTypeCurrentIndexChanged(int index);
- void customFieldEditingFinished();
+ void customFieldsEditingFinished();
void customOccurrenceEditingFinished();
void on_newToolButton_clicked();
void on_deleteToolButton_clicked();
diff --git a/ui/qt/column_preferences_frame.ui b/ui/qt/column_preferences_frame.ui
index 6303354c2f..3dfb5a639e 100644
--- a/ui/qt/column_preferences_frame.ui
+++ b/ui/qt/column_preferences_frame.ui
@@ -42,7 +42,7 @@
</column>
<column>
<property name="text">
- <string>Field Name</string>
+ <string>Fields</string>
</property>
</column>
<column>
diff --git a/ui/qt/packet_list.cpp b/ui/qt/packet_list.cpp
index 22bab09700..2d92d30779 100644
--- a/ui/qt/packet_list.cpp
+++ b/ui/qt/packet_list.cpp
@@ -848,7 +848,7 @@ void PacketList::writeRecent(FILE *rf) {
}
col_fmt = get_column_format(col);
if (col_fmt == COL_CUSTOM) {
- fprintf (rf, " %%Cus:%s,", get_column_custom_field(col));
+ fprintf (rf, " %%Cus:%s,", get_column_custom_fields(col));
} else {
fprintf (rf, " %s,", col_format_to_string(col_fmt));
}
@@ -903,7 +903,7 @@ QString PacketList::getFilterFromRowAndColumn()
if (strlen(cap_file_->cinfo.col_expr.col_expr[ctx_column_]) != 0 &&
strlen(cap_file_->cinfo.col_expr.col_expr_val[ctx_column_]) != 0) {
if (cap_file_->cinfo.columns[ctx_column_].col_fmt == COL_CUSTOM) {
- header_field_info *hfi = proto_registrar_get_byname(cap_file_->cinfo.columns[ctx_column_].col_custom_field);
+ header_field_info *hfi = proto_registrar_get_byname(cap_file_->cinfo.columns[ctx_column_].col_custom_fields);
if (hfi && hfi->parent == -1) {
/* Protocol only */
filter.append(cap_file_->cinfo.col_expr.col_expr[ctx_column_]);
diff --git a/ui/qt/packet_list_model.cpp b/ui/qt/packet_list_model.cpp
index 351e74e20f..db6e6f58f9 100644
--- a/ui/qt/packet_list_model.cpp
+++ b/ui/qt/packet_list_model.cpp
@@ -370,7 +370,7 @@ bool PacketListModel::recordLessThan(PacketListRecord *r1, PacketListRecord *r2)
header_field_info *hfi;
// Column comes from custom data
- hfi = proto_registrar_get_byname(sort_cap_file_->cinfo.columns[sort_column_].col_custom_field);
+ hfi = proto_registrar_get_byname(sort_cap_file_->cinfo.columns[sort_column_].col_custom_fields);
if (hfi == NULL) {
cmp_val = frame_data_compare(sort_cap_file_->epan, r1->frameData(), r2->frameData(), COL_NUMBER);
diff --git a/ui/qt/syntax_line_edit.cpp b/ui/qt/syntax_line_edit.cpp
index f9333d098b..bd2e16a4a5 100644
--- a/ui/qt/syntax_line_edit.cpp
+++ b/ui/qt/syntax_line_edit.cpp
@@ -180,6 +180,32 @@ void SyntaxLineEdit::checkFieldName(QString field)
}
}
+void SyntaxLineEdit::checkCustomColumn(QString fields)
+{
+ gchar **splitted_fields;
+ guint i_field;
+ if (fields.isEmpty()) {
+ setSyntaxState(SyntaxLineEdit::Empty);
+ return;
+ }
+
+ splitted_fields = g_regex_split_simple(" *([^ \\|]+) *(?:(?:\\|\\|)|(?:or))? *",
+ fields.toUtf8().constData(), G_REGEX_ANCHORED, G_REGEX_MATCH_ANCHORED);
+
+ for (i_field =0; i_field < g_strv_length(splitted_fields); i_field += 1) {
+ if (splitted_fields[i_field] && *splitted_fields[i_field]) {
+ if (proto_check_field_name(splitted_fields[i_field]) != 0) {
+ setSyntaxState(SyntaxLineEdit::Invalid);
+ g_strfreev(splitted_fields);
+ return;
+ }
+ }
+ }
+ g_strfreev(splitted_fields);
+
+ checkDisplayFilter(fields);
+}
+
void SyntaxLineEdit::checkInteger(QString number)
{
if (number.isEmpty()) {
diff --git a/ui/qt/syntax_line_edit.h b/ui/qt/syntax_line_edit.h
index c161b5fabf..f76e6bc626 100644
--- a/ui/qt/syntax_line_edit.h
+++ b/ui/qt/syntax_line_edit.h
@@ -57,6 +57,7 @@ public slots:
// Built-in syntax checks. Connect textChanged to these as needed.
void checkDisplayFilter(QString filter);
void checkFieldName(QString field);
+ void checkCustomColumn(QString fields);
void checkInteger(QString number);
protected:
diff --git a/ui/recent.c b/ui/recent.c
index 54cafe6af8..ac5e204a54 100644
--- a/ui/recent.c
+++ b/ui/recent.c
@@ -1355,7 +1355,7 @@ recent_get_column_width(gint col)
cfmt = get_column_format(col);
if (cfmt == COL_CUSTOM) {
- cfield = get_column_custom_field(col);
+ cfield = get_column_custom_fields(col);
}
col_l = g_list_first(recent.col_width_list);
@@ -1383,7 +1383,7 @@ recent_set_column_width(gint col, gint width)
cfmt = get_column_format(col);
if (cfmt == COL_CUSTOM) {
- cfield = get_column_custom_field(col);
+ cfield = get_column_custom_fields(col);
}
col_l = g_list_first(recent.col_width_list);
@@ -1423,7 +1423,7 @@ recent_get_column_xalign(gint col)
cfmt = get_column_format(col);
if (cfmt == COL_CUSTOM) {
- cfield = get_column_custom_field(col);
+ cfield = get_column_custom_fields(col);
}
col_l = g_list_first(recent.col_width_list);
@@ -1451,7 +1451,7 @@ recent_set_column_xalign(gint col, gchar xalign)
cfmt = get_column_format(col);
if (cfmt == COL_CUSTOM) {
- cfield = get_column_custom_field(col);
+ cfield = get_column_custom_fields(col);
}
col_l = g_list_first(recent.col_width_list);