Start to replace deprecated gtk_combo_new() with

gtk_combo_box_entry_new_text().

(I'll try to get back to this tomorrow)

svn path=/trunk/; revision=32759
This commit is contained in:
Anders Broman 2010-05-11 19:52:40 +00:00
parent 6321e07f8e
commit 55572b41b3
1 changed files with 81 additions and 6 deletions

View File

@ -58,9 +58,24 @@ static void
filter_activate_cb(GtkWidget *w _U_, gpointer data)
{
const char *s;
#ifdef NEW_FILTER_COMBO_BOX
#if GTK_CHECK_VERSION(2,6,0)
#else
GtkTreeIter iter;
GtkTreeModel *model;
#endif
/* Since 2.6 */
#if GTK_CHECK_VERSION(2,6,0)
s = gtk_combo_box_get_active_text(GTK_COMBO_BOX(filter_cm))
#else
gtk_combo_box_get_active_iter(GTK_COMBO_BOX(filter_cm), &iter);
model = gtk_combo_box_get_model(GTK_COMBO_BOX(filter_cm));
gtk_tree_model_get(model, &iter, 0, &s, -1);
#endif
#else
s = gtk_entry_get_text(GTK_ENTRY(data));
#endif
main_filter_packets(&cfile, s, FALSE);
}
@ -76,10 +91,12 @@ filter_reset_cb(GtkWidget *w, gpointer data _U_)
main_filter_packets(&cfile, NULL, FALSE);
}
/*#define NEW_FILTER_COMBO_BOX 1*/
GtkWidget *filter_toolbar_new()
{
GtkWidget *filter_cm, *filter_te;
GtkWidget *filter_cm;
GtkWidget *filter_te;
GtkWidget *filter_tb;
GList *dfilter_list = NULL;
GtkTooltips *tooltips;
@ -121,12 +138,17 @@ GtkWidget *filter_toolbar_new()
"Private");
/* Create the filter combobox */
#ifdef NEW_FILTER_COMBO_BOX
filter_cm = gtk_combo_box_entry_new_text ();
filter_te = gtk_bin_get_child(GTK_BIN(filter_cm));
#else
filter_cm = gtk_combo_new();
dfilter_list = NULL;
gtk_combo_disable_activate(GTK_COMBO(filter_cm));
gtk_combo_set_case_sensitive(GTK_COMBO(filter_cm), TRUE);
g_object_set_data(G_OBJECT(filter_cm), E_DFILTER_FL_KEY, dfilter_list);
filter_te = GTK_COMBO(filter_cm)->entry;
#endif
main_display_filter_widget=filter_te;
g_object_set_data(G_OBJECT(filter_bt), E_FILT_TE_PTR_KEY, filter_te);
g_object_set_data(G_OBJECT(filter_te), E_DFILTER_CM_KEY, filter_cm);
@ -137,9 +159,9 @@ GtkWidget *filter_toolbar_new()
g_object_set_data(G_OBJECT(filter_te), E_FILT_FIELD_USE_STATUSBAR_KEY, "");
g_signal_connect(filter_te, "key-press-event", G_CALLBACK (filter_string_te_key_pressed_cb), NULL);
g_signal_connect(filter_tb, "key-press-event", G_CALLBACK (filter_parent_dlg_key_pressed_cb), NULL);
gtk_widget_set_size_request(filter_cm, 400, -1);
gtk_widget_show(filter_cm);
gtk_widget_set_size_request(filter_cm, 400, -1);
gtk_widget_show(filter_cm);
item = gtk_tool_item_new ();
gtk_container_add (GTK_CONTAINER (item), filter_cm);
gtk_widget_show (GTK_WIDGET (item));
@ -149,7 +171,11 @@ GtkWidget *filter_toolbar_new()
-1);
/* setting a tooltip for a combobox will do nothing, so add it to the corresponding text entry */
#ifdef NEW_FILTER_COMBO_BOX
gtk_tooltips_set_tip(tooltips, filter_cm,
#else
gtk_tooltips_set_tip(tooltips, filter_te,
#endif
"Enter a display filter, or choose one of your recently used filters. "
"The background color of this field is changed by a continuous syntax check "
"(green is valid, red is invalid, yellow may have unexpected results).",
@ -158,8 +184,11 @@ GtkWidget *filter_toolbar_new()
/* Create the "Add Expression..." button, to pop up a dialog
for constructing filter comparison expressions. */
filter_add_expr_bt = gtk_tool_button_new_from_stock(WIRESHARK_STOCK_ADD_EXPRESSION);
#ifdef NEW_FILTER_COMBO_BOX
#else
g_object_set_data(G_OBJECT(filter_tb), E_FILT_FILTER_TE_KEY, filter_te);
g_signal_connect(filter_add_expr_bt, "clicked", G_CALLBACK(filter_add_expr_bt_cb), filter_tb);
#endif
gtk_widget_show(GTK_WIDGET(filter_add_expr_bt));
gtk_toolbar_insert(GTK_TOOLBAR(filter_tb),
@ -262,11 +291,38 @@ dfilter_entry_match(gconstpointer a, gconstpointer b)
return strcmp(s1, s2);
}
static gboolean
dfilter_entry_match_new(GtkWidget *filter_cm, char *s)
{
GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX(filter_cm));
GtkTreeIter iter;
GValue value = { 0, };
const char *filter_str;
if (!gtk_tree_model_get_iter_first (model, &iter))
return FALSE;
do{
gtk_tree_model_get_value (model, &iter, 0, &value);
filter_str = g_value_get_string (&value);
if(filter_str){
if(strcmp(s, filter_str) == 0){
g_value_unset (&value);
return TRUE;
}
}
}while (gtk_tree_model_iter_next (model, &iter));
return FALSE;
}
/* add a display filter to the combo box */
/* Note: a new filter string will not replace an old identical one */
static gboolean
dfilter_combo_add(GtkWidget *filter_cm, char *s) {
#ifdef NEW_FILTER_COMBO_BOX
if(!dfilter_entry_match_new(filter_cm,s))
gtk_combo_box_append_text(GTK_COMBO_BOX(filter_cm), s);
#else
GList *dfilter_list = g_object_get_data(G_OBJECT(filter_cm), E_DFILTER_FL_KEY);
/* GtkCombos don't let us get at their list contents easily, so we maintain
@ -282,7 +338,7 @@ dfilter_combo_add(GtkWidget *filter_cm, char *s) {
gtk_combo_set_popdown_strings(GTK_COMBO(filter_cm), dfilter_list);
gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(filter_cm)->entry), g_list_first(dfilter_list)->data);
}
#endif
g_free(s);
return TRUE;
@ -294,11 +350,29 @@ dfilter_combo_add(GtkWidget *filter_cm, char *s) {
void
dfilter_recent_combo_write_all(FILE *rf) {
GtkWidget *filter_cm = g_object_get_data(G_OBJECT(top_level), E_DFILTER_CM_KEY);
#ifdef NEW_FILTER_COMBO_BOX
GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX(filter_cm));
GtkTreeIter iter;
GValue value = { 0, };
const char *filter_str;
guint max_count = 0;
if (!gtk_tree_model_get_iter_first (model, &iter))
return;
do{
gtk_tree_model_get_value (model, &iter, 0, &value);
filter_str = g_value_get_string (&value);
if(filter_str)
fprintf (rf, RECENT_KEY_DISPLAY_FILTER ": %s\n", filter_str);
g_value_unset (&value);
}while (gtk_tree_model_iter_next (model, &iter)&& (max_count++ < prefs.gui_recent_df_entries_max));
#else
GList *dfilter_list = g_object_get_data(G_OBJECT(filter_cm), E_DFILTER_FL_KEY);
GList *li;
guint max_count = 0;
/* write all non empty display filter strings to the recent file (until max count) */
li = g_list_first(dfilter_list);
while ( li && (max_count++ < prefs.gui_recent_df_entries_max) ) {
@ -307,6 +381,7 @@ dfilter_recent_combo_write_all(FILE *rf) {
}
li = li->next;
}
#endif
}
/* empty the combobox entry field */