diff options
-rw-r--r-- | ui/preference_utils.c | 10 | ||||
-rw-r--r-- | ui/preference_utils.h | 4 | ||||
-rw-r--r-- | ui/qt/main_window.h | 1 | ||||
-rw-r--r-- | ui/qt/main_window.ui | 5 | ||||
-rw-r--r-- | ui/qt/main_window_slots.cpp | 23 | ||||
-rw-r--r-- | ui/qt/proto_tree.cpp | 7 |
6 files changed, 39 insertions, 11 deletions
diff --git a/ui/preference_utils.c b/ui/preference_utils.c index 1bed39bd2f..1e358bd7d0 100644 --- a/ui/preference_utils.c +++ b/ui/preference_utils.c @@ -273,11 +273,12 @@ prefs_main_write(void) } } -void +gint column_prefs_add_custom(gint fmt, const gchar *title, const gchar *custom_field, gint custom_occurrence) { GList *clp; fmt_data *cfmt, *last_cfmt; + gint colnr; cfmt = (fmt_data *) g_malloc(sizeof(fmt_data)); /* @@ -291,13 +292,16 @@ column_prefs_add_custom(gint fmt, const gchar *title, const gchar *custom_field, cfmt->custom_occurrence = custom_occurrence; cfmt->resolved = TRUE; + colnr = g_list_length(prefs.col_list); + if (custom_field) { cfmt->visible = TRUE; clp = g_list_last(prefs.col_list); last_cfmt = (fmt_data *) clp->data; if (last_cfmt->fmt == COL_INFO) { /* Last column is COL_INFO, add custom column before this */ - prefs.col_list = g_list_insert(prefs.col_list, cfmt, g_list_length(prefs.col_list)-1); + colnr -= 1; + prefs.col_list = g_list_insert(prefs.col_list, cfmt, colnr); } else { prefs.col_list = g_list_append(prefs.col_list, cfmt); } @@ -305,6 +309,8 @@ column_prefs_add_custom(gint fmt, const gchar *title, const gchar *custom_field, cfmt->visible = FALSE; /* Will be set to TRUE in visible_toggled() when added to list */ prefs.col_list = g_list_append(prefs.col_list, cfmt); } + + return colnr; } void diff --git a/ui/preference_utils.h b/ui/preference_utils.h index e4117d682e..882555d70a 100644 --- a/ui/preference_utils.h +++ b/ui/preference_utils.h @@ -86,8 +86,10 @@ extern void prefs_main_write(void); * @param title column title * @param custom_field column custom field * @param custom_occurrence custom occurrence + * + * @return The index of the inserted column */ -void column_prefs_add_custom(gint fmt, const gchar *title, +gint column_prefs_add_custom(gint fmt, const gchar *title, const gchar *custom_field, gint custom_occurrence); diff --git a/ui/qt/main_window.h b/ui/qt/main_window.h index e4becaf39e..1d379079ce 100644 --- a/ui/qt/main_window.h +++ b/ui/qt/main_window.h @@ -356,6 +356,7 @@ private slots: #endif void matchFieldFilter(FilterAction::Action action, FilterAction::ActionType filter_type); + void on_actionAnalyzeCreateAColumn_triggered(); void on_actionAnalyzeAAFSelected_triggered(); void on_actionAnalyzeAAFNotSelected_triggered(); void on_actionAnalyzeAAFAndSelected_triggered(); diff --git a/ui/qt/main_window.ui b/ui/qt/main_window.ui index d62d46c1aa..d05587f108 100644 --- a/ui/qt/main_window.ui +++ b/ui/qt/main_window.ui @@ -1206,11 +1206,8 @@ </property> </action> <action name="actionAnalyzeCreateAColumn"> - <property name="enabled"> - <bool>false</bool> - </property> <property name="text"> - <string>Create a Column</string> + <string>Apply as Column</string> </property> <property name="toolTip"> <string>Create a packet list column from the selected field.</string> diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp index 41b8371d1d..354f0b8dce 100644 --- a/ui/qt/main_window_slots.cpp +++ b/ui/qt/main_window_slots.cpp @@ -1233,8 +1233,8 @@ void MainWindow::setMenusForSelectedTreeRow(field_info *fi) { // 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_main_menubar, "/Menubar/AnalyzeMenu/CreateAColumn", -// hfinfo->type != FT_NONE); + main_ui_->actionAnalyzeCreateAColumn->setEnabled(can_match_selected); + main_ui_->actionAnalyzeAAFSelected->setEnabled(can_match_selected); main_ui_->actionAnalyzeAAFNotSelected->setEnabled(can_match_selected); main_ui_->actionAnalyzeAAFAndSelected->setEnabled(can_match_selected); @@ -1287,7 +1287,8 @@ void MainWindow::setMenusForSelectedTreeRow(field_info *fi) { main_ui_->actionEditCopyFieldName->setEnabled(false); main_ui_->actionEditCopyValue->setEnabled(false); main_ui_->actionEditCopyAsFilter->setEnabled(false); -// set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/AnalyzeMenu/CreateAColumn", FALSE); + + main_ui_->actionAnalyzeCreateAColumn->setEnabled(false); main_ui_->actionAnalyzeAAFSelected->setEnabled(false); main_ui_->actionAnalyzeAAFNotSelected->setEnabled(false); @@ -2192,6 +2193,22 @@ void MainWindow::matchFieldFilter(FilterAction::Action action, FilterAction::Act filterAction(field_filter, action, filter_type); } +void MainWindow::on_actionAnalyzeCreateAColumn_triggered() +{ + gint colnr = 0; + + if ( capture_file_.capFile() != 0 && capture_file_.capFile()->finfo_selected != 0 ) + { + colnr = column_prefs_add_custom(COL_CUSTOM, capture_file_.capFile()->finfo_selected->hfinfo->name, + capture_file_.capFile()->finfo_selected->hfinfo->abbrev,0); + + packet_list_->redrawVisiblePackets(); + packet_list_->resizeColumnToContents(colnr); + + prefs_main_write(); + } +} + // XXX We could probably create the analyze and prepare actions // dynamically using FilterActions and consolidate the methods // below into one callback. diff --git a/ui/qt/proto_tree.cpp b/ui/qt/proto_tree.cpp index c12b2dc48d..ac2dac3a52 100644 --- a/ui/qt/proto_tree.cpp +++ b/ui/qt/proto_tree.cpp @@ -167,8 +167,13 @@ ProtoTree::ProtoTree(QWidget *parent) : ctx_menu_.addAction(window()->findChild<QAction *>("actionViewExpandAll")); ctx_menu_.addAction(window()->findChild<QAction *>("actionViewCollapseAll")); ctx_menu_.addSeparator(); -// " <menuitem name='CreateAColumn' action='/Create a Column'/>\n" + + action = window()->findChild<QAction *>("actionAnalyzeCreateAColumn"); + ctx_menu_.addAction(action); + ctx_menu_.addSeparator(); + action = window()->findChild<QAction *>("actionApply_as_Filter"); + submenu = new QMenu(); action->setMenu(submenu); ctx_menu_.addAction(action); |