diff --git a/epan/funnel.h b/epan/funnel.h index 24ae0b3ead..601755809a 100644 --- a/epan/funnel.h +++ b/epan/funnel.h @@ -48,7 +48,7 @@ struct progdlg; typedef struct _funnel_ops_t { funnel_ops_id_t *ops_id; - funnel_text_window_t* (*new_text_window)(const char* label); + funnel_text_window_t* (*new_text_window)(funnel_ops_id_t *ops_id, const char* label); void (*set_text)(funnel_text_window_t* win, const char* text); void (*append_text)(funnel_text_window_t* win, const char* text); void (*prepend_text)(funnel_text_window_t* win, const char* text); @@ -59,7 +59,8 @@ typedef struct _funnel_ops_t { void (*destroy_text_window)(funnel_text_window_t* win); void (*add_button)(funnel_text_window_t* win, funnel_bt_t* cb, const char* label); - void (*new_dialog)(const gchar* title, + void (*new_dialog)(funnel_ops_id_t *ops_id, + const gchar* title, const gchar** field_names, const gchar** field_values, funnel_dlg_cb_t dlg_cb, diff --git a/epan/wslua/wslua_gui.c b/epan/wslua/wslua_gui.c index 3b293c4073..fce9a983e9 100644 --- a/epan/wslua/wslua_gui.c +++ b/epan/wslua/wslua_gui.c @@ -341,7 +341,7 @@ Instead of a strings it is possible to provide tables with fields 'name' and 'va g_ptr_array_add(field_names, NULL); g_ptr_array_add(field_values, NULL); - ops->new_dialog(title, (const gchar**)(field_names->pdata), (const gchar**)(field_values->pdata), lua_dialog_cb, dcbd, g_free); + ops->new_dialog(ops->ops_id, title, (const gchar**)(field_names->pdata), (const gchar**)(field_values->pdata), lua_dialog_cb, dcbd, g_free); g_ptr_array_free(field_names, TRUE); g_ptr_array_free(field_values, TRUE); @@ -606,7 +606,7 @@ WSLUA_CONSTRUCTOR TextWindow_new(lua_State* L) { /* title = luaL_optstring(L,WSLUA_OPTARG_TextWindow_new_TITLE, "Untitled Window"); tw = g_new(struct _wslua_tw, 1); tw->expired = FALSE; - tw->ws_tw = ops->new_text_window(title); + tw->ws_tw = ops->new_text_window(ops->ops_id, title); default_cbd = g_new(struct _close_cb_data, 1); diff --git a/ui/cli/tap-funnel.c b/ui/cli/tap-funnel.c index 4d30e2a7f4..454b37c8cd 100644 --- a/ui/cli/tap-funnel.c +++ b/ui/cli/tap-funnel.c @@ -31,7 +31,7 @@ struct _funnel_text_window_t { static GPtrArray *text_windows = NULL; -static funnel_text_window_t *new_text_window(const gchar *title) { +static funnel_text_window_t *new_text_window(funnel_ops_id_t *ops_id _U_, const gchar *title) { funnel_text_window_t *tw = g_new(funnel_text_window_t, 1); tw->title = g_strdup(title); tw->text = g_string_new(""); diff --git a/ui/qt/funnel_statistics.cpp b/ui/qt/funnel_statistics.cpp index 4bbaba8828..b113bd002f 100644 --- a/ui/qt/funnel_statistics.cpp +++ b/ui/qt/funnel_statistics.cpp @@ -39,6 +39,9 @@ // - Add a FunnelGraphDialog class? extern "C" { +static struct _funnel_text_window_t* text_window_new(funnel_ops_id_t *ops_id, const char* title); +static void string_dialog_new(funnel_ops_id_t *ops_id, const gchar* title, const gchar** field_names, const gchar** field_values, funnel_dlg_cb_t dialog_cb, void* dialog_cb_data, funnel_dlg_cb_data_free_t dialog_cb_data_free); + static void funnel_statistics_logger(const gchar *, enum ws_log_level, const gchar *message, gpointer); static void funnel_statistics_retap_packets(funnel_ops_id_t *ops_id); static void funnel_statistics_copy_to_clipboard(GString *text); @@ -224,6 +227,26 @@ void FunnelStatistics::displayFilterTextChanged(const QString &filter) display_filter_ = filter.toUtf8(); } +struct _funnel_text_window_t* text_window_new(funnel_ops_id_t *ops_id, const char* title) +{ + return FunnelTextDialog::textWindowNew(qobject_cast(ops_id->funnel_statistics->parent()), title); +} + +void string_dialog_new(funnel_ops_id_t *ops_id, const gchar* title, const gchar** field_names, const gchar** field_values, funnel_dlg_cb_t dialog_cb, void* dialog_cb_data, funnel_dlg_cb_data_free_t dialog_cb_data_free) +{ + QList> field_list; + for (int i = 0; field_names[i]; i++) { + QPair field = QPair(QString(field_names[i]), QString("")); + if (field_values != NULL && field_values[i]) + { + field.second = QString(field_values[i]); + } + + field_list << field; + } + FunnelStringDialog::stringDialogNew(qobject_cast(ops_id->funnel_statistics->parent()), title, field_list, dialog_cb, dialog_cb_data, dialog_cb_data_free); +} + void funnel_statistics_logger(const gchar *log_domain, enum ws_log_level log_level, const gchar *message, diff --git a/ui/qt/funnel_statistics.h b/ui/qt/funnel_statistics.h index 5b4da7e6fa..5e48bdea22 100644 --- a/ui/qt/funnel_statistics.h +++ b/ui/qt/funnel_statistics.h @@ -13,7 +13,6 @@ #include #include "capture_file.h" -#include "funnel_text_dialog.h" #include struct _funnel_ops_t; diff --git a/ui/qt/funnel_string_dialog.cpp b/ui/qt/funnel_string_dialog.cpp index 99294672e1..02defaaae7 100644 --- a/ui/qt/funnel_string_dialog.cpp +++ b/ui/qt/funnel_string_dialog.cpp @@ -20,8 +20,8 @@ static FunnelStringDialogHelper dialog_helper_; const int min_edit_width_ = 20; // em widths -FunnelStringDialog::FunnelStringDialog(const QString title, const QList> field_list, funnel_dlg_cb_t dialog_cb, void* dialog_cb_data, funnel_dlg_cb_data_free_t dialog_data_free_cb) : - QDialog(NULL), +FunnelStringDialog::FunnelStringDialog(QWidget *parent, const QString title, const QList> field_list, funnel_dlg_cb_t dialog_cb, void* dialog_cb_data, funnel_dlg_cb_data_free_t dialog_data_free_cb) : + QDialog(parent), ui(new Ui::FunnelStringDialog), dialog_cb_(dialog_cb), dialog_cb_data_(dialog_cb_data), @@ -85,9 +85,9 @@ void FunnelStringDialog::on_buttonBox_accepted() dialog_cb_(user_input, dialog_cb_data_); } -void FunnelStringDialog::stringDialogNew(const QString title, QList> field_list, funnel_dlg_cb_t dialog_cb, void* dialog_cb_data, funnel_dlg_cb_data_free_t dialog_cb_data_free) +void FunnelStringDialog::stringDialogNew(QWidget *parent, const QString title, QList> field_list, funnel_dlg_cb_t dialog_cb, void* dialog_cb_data, funnel_dlg_cb_data_free_t dialog_cb_data_free) { - FunnelStringDialog* fsd = new FunnelStringDialog(title, field_list, dialog_cb, dialog_cb_data, dialog_cb_data_free); + FunnelStringDialog* fsd = new FunnelStringDialog(parent, title, field_list, dialog_cb, dialog_cb_data, dialog_cb_data_free); connect(&dialog_helper_, &FunnelStringDialogHelper::closeDialogs, fsd, &FunnelStringDialog::close); fsd->show(); } @@ -97,21 +97,6 @@ void FunnelStringDialogHelper::emitCloseDialogs() emit closeDialogs(); } -void string_dialog_new(const gchar* title, const gchar** field_names, const gchar** field_values, funnel_dlg_cb_t dialog_cb, void* dialog_cb_data, funnel_dlg_cb_data_free_t dialog_cb_data_free) -{ - QList> field_list; - for (int i = 0; field_names[i]; i++) { - QPair field = QPair(QString(field_names[i]), QString("")); - if (field_values != NULL && field_values[i]) - { - field.second = QString(field_values[i]); - } - - field_list << field; - } - FunnelStringDialog::stringDialogNew(title, field_list, dialog_cb, dialog_cb_data, dialog_cb_data_free); -} - void string_dialogs_close(void) { dialog_helper_.emitCloseDialogs(); diff --git a/ui/qt/funnel_string_dialog.h b/ui/qt/funnel_string_dialog.h index c59a3ada67..246ca06397 100644 --- a/ui/qt/funnel_string_dialog.h +++ b/ui/qt/funnel_string_dialog.h @@ -28,11 +28,11 @@ class FunnelStringDialog : public QDialog Q_OBJECT public: - explicit FunnelStringDialog(const QString title, const QList> field_list, funnel_dlg_cb_t dialog_cb, void* dialog_cb_data, funnel_dlg_cb_data_free_t dialog_data_free_cb); + explicit FunnelStringDialog(QWidget *parent, const QString title, const QList> field_list, funnel_dlg_cb_t dialog_cb, void* dialog_cb_data, funnel_dlg_cb_data_free_t dialog_data_free_cb); ~FunnelStringDialog(); // Funnel ops - static void stringDialogNew(const QString title, const QList> field_list, funnel_dlg_cb_t dialog_cb, void* dialog_cb_data, funnel_dlg_cb_data_free_t dialog_cb_data_free); + static void stringDialogNew(QWidget *parent, const QString title, const QList> field_list, funnel_dlg_cb_t dialog_cb, void* dialog_cb_data, funnel_dlg_cb_data_free_t dialog_cb_data_free); void accept(); void reject(); @@ -60,7 +60,6 @@ signals: }; extern "C" { - void string_dialog_new(const gchar* title, const gchar** field_names, const gchar** field_values, funnel_dlg_cb_t dialog_cb, void* dialog_cb_data, funnel_dlg_cb_data_free_t dialog_cb_data_free); void string_dialogs_close(void); } diff --git a/ui/qt/funnel_text_dialog.cpp b/ui/qt/funnel_text_dialog.cpp index 107bd8f5e7..06cd88dd21 100644 --- a/ui/qt/funnel_text_dialog.cpp +++ b/ui/qt/funnel_text_dialog.cpp @@ -25,8 +25,8 @@ static QHash text_button_to_funnel_button_; -FunnelTextDialog::FunnelTextDialog(const QString &title) : - GeometryStateDialog(NULL), +FunnelTextDialog::FunnelTextDialog(QWidget *parent, const QString &title) : + GeometryStateDialog(parent), ui(new Ui::FunnelTextDialog), close_cb_(NULL), close_cb_data_(NULL) @@ -73,9 +73,9 @@ void FunnelTextDialog::reject() deleteLater(); } -struct _funnel_text_window_t *FunnelTextDialog::textWindowNew(const QString title) +struct _funnel_text_window_t *FunnelTextDialog::textWindowNew(QWidget *parent, const QString title) { - FunnelTextDialog *ftd = new FunnelTextDialog(title); + FunnelTextDialog *ftd = new FunnelTextDialog(parent, title); ftd->show(); return &ftd->funnel_text_window_; } @@ -170,11 +170,6 @@ void FunnelTextDialog::on_findLineEdit_textChanged(const QString &pattern) setUpdatesEnabled(true); } -struct _funnel_text_window_t* text_window_new(const char* title) -{ - return FunnelTextDialog::textWindowNew(title); -} - void text_window_set_text(funnel_text_window_t *ftw, const char* text) { if (ftw) { diff --git a/ui/qt/funnel_text_dialog.h b/ui/qt/funnel_text_dialog.h index 5c55170693..f024a60a66 100644 --- a/ui/qt/funnel_text_dialog.h +++ b/ui/qt/funnel_text_dialog.h @@ -31,13 +31,13 @@ class FunnelTextDialog : public GeometryStateDialog Q_OBJECT public: - explicit FunnelTextDialog(const QString &title = QString()); + explicit FunnelTextDialog(QWidget *parent, const QString &title = QString()); ~FunnelTextDialog(); void reject(); // Funnel ops - static struct _funnel_text_window_t *textWindowNew(const QString title); + static struct _funnel_text_window_t *textWindowNew(QWidget *parent, const QString title); void setText(const QString text); void appendText(const QString text); void prependText(const QString text); @@ -60,7 +60,6 @@ private: }; extern "C" { -struct _funnel_text_window_t* text_window_new(const char* title); void text_window_set_text(funnel_text_window_t* ftw, const char* text); void text_window_append(funnel_text_window_t *ftw, const char* text); void text_window_prepend(funnel_text_window_t* ftw, const char* text); diff --git a/ui/qt/interface_toolbar.cpp b/ui/qt/interface_toolbar.cpp index 601b741949..0f5d68e934 100644 --- a/ui/qt/interface_toolbar.cpp +++ b/ui/qt/interface_toolbar.cpp @@ -666,7 +666,7 @@ void InterfaceToolbar::onLogButtonClicked() if (!interface_[ifname].log_dialog.contains(num)) { - interface_[ifname].log_dialog[num] = new FunnelTextDialog(ifname + " " + button->text()); + interface_[ifname].log_dialog[num] = new FunnelTextDialog(window(), ifname + " " + button->text()); connect(interface_[ifname].log_dialog[num], SIGNAL(accepted()), this, SLOT(closeLog())); connect(interface_[ifname].log_dialog[num], SIGNAL(rejected()), this, SLOT(closeLog()));