--- scripts/kconfig/gconf.c 2012-01-05 00:55:44.000000000 +0100 +++ scripts/kconfig/gconf.c 2012-04-17 01:41:52.145427498 +0200 @@ -13,7 +13,6 @@ #include "lkc.h" #include "images.c" -#include #include #include #include @@ -41,15 +40,14 @@ static gboolean show_value = TRUE; static gboolean resizeable = FALSE; static int opt_mode = OPT_NORMAL; -GtkWidget *main_wnd = NULL; +GObject *main_wnd = NULL; GtkWidget *tree1_w = NULL; // left frame GtkWidget *tree2_w = NULL; // right frame -GtkWidget *text_w = NULL; -GtkWidget *hpaned = NULL; -GtkWidget *vpaned = NULL; +GObject *text_w = NULL; +GObject *hpaned = NULL; +GObject *vpaned = NULL; GtkWidget *back_btn = NULL; -GtkWidget *save_btn = NULL; -GtkWidget *save_menu_item = NULL; +GObject *save_action = NULL; GtkTextTag *tag1, *tag2; GdkColor color; @@ -109,20 +107,17 @@ const char *dbg_sym_flags(int val) return buf; } -void replace_button_icon(GladeXML * xml, GdkDrawable * window, - GtkStyle * style, gchar * btn_name, gchar ** xpm) +void replace_button_icon(GtkBuilder * xml, + gchar * btn_name, gchar ** xpm) { - GdkPixmap *pixmap; - GdkBitmap *mask; + GdkPixbuf *pixmap; GtkToolButton *button; GtkWidget *image; - pixmap = gdk_pixmap_create_from_xpm_d(window, &mask, - &style->bg[GTK_STATE_NORMAL], - xpm); + pixmap = gdk_pixbuf_new_from_xpm_data((const char**)xpm); - button = GTK_TOOL_BUTTON(glade_xml_get_widget(xml, btn_name)); - image = gtk_image_new_from_pixmap(pixmap, mask); + button = GTK_TOOL_BUTTON(gtk_builder_get_object(xml, btn_name)); + image = gtk_image_new_from_pixbuf(pixmap); gtk_widget_show(image); gtk_tool_button_set_icon_widget(button, image); } @@ -130,72 +125,97 @@ void replace_button_icon(GladeXML * xml, /* Main Window Initialization */ void init_main_window(const gchar * glade_file) { - GladeXML *xml; - GtkWidget *widget; + GtkBuilder *xml; + GObject *widget; GtkTextBuffer *txtbuf; + /* GtkStyle *style; + GtkUIManager *ui_manager; + GtkActionGroup *action_group; + GtkAccelGroup *accel_group; + */ +#if 0 + const gchar * objects[] = { + "window1", + "textbuffer1", + "quit", + "save-as", + "open", + "save", + /* "gconfig-actions", */ + "gconfig-radio-actions", + "image43", + "image44", + "image45" + }; +#endif + GError *error = NULL; - xml = glade_xml_new(glade_file, "window1", NULL); - if (!xml) - g_error(_("GUI loading failed !\n")); - glade_xml_signal_autoconnect(xml); - - main_wnd = glade_xml_get_widget(xml, "window1"); - hpaned = glade_xml_get_widget(xml, "hpaned1"); - vpaned = glade_xml_get_widget(xml, "vpaned1"); - tree1_w = glade_xml_get_widget(xml, "treeview1"); - tree2_w = glade_xml_get_widget(xml, "treeview2"); - text_w = glade_xml_get_widget(xml, "textview3"); + xml = gtk_builder_new(); + //gtk_builder_add_objects_from_file(xml, glade_file, objects, &error); + gtk_builder_add_from_file(xml, glade_file, &error); + if (error) + g_error(_("GUI loading failed ! %s\n"), error->message); + gtk_builder_connect_signals(xml, NULL); + +/* + ui_manager = gtk_ui_manager_new(); + action_group = (GtkActionGroup*) + gtk_builder_get_object(xml, "gconfig-actions"); + gtk_ui_manager_insert_action_group(ui_manager, action_group, NULL); + accel_group = gtk_ui_manager_get_accel_group(ui_manager); + gtk_window_add_accel_group(GTK_WINDOW(main_wnd), accel_group); +*/ + + main_wnd = gtk_builder_get_object(xml, "window1"); + hpaned = gtk_builder_get_object(xml, "hpaned1"); + vpaned = gtk_builder_get_object(xml, "vpaned1"); + tree1_w = GTK_WIDGET(gtk_builder_get_object(xml, "treeview1")); + tree2_w = GTK_WIDGET(gtk_builder_get_object(xml, "treeview2")); + text_w = gtk_builder_get_object(xml, "textview3"); - back_btn = glade_xml_get_widget(xml, "button1"); + back_btn = GTK_WIDGET(gtk_builder_get_object(xml, "button1")); gtk_widget_set_sensitive(back_btn, FALSE); - widget = glade_xml_get_widget(xml, "show_name1"); + widget = gtk_builder_get_object(xml, "show_name1"); gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, show_name); - widget = glade_xml_get_widget(xml, "show_range1"); + widget = gtk_builder_get_object(xml, "show_range1"); gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, show_range); - widget = glade_xml_get_widget(xml, "show_data1"); + widget = gtk_builder_get_object(xml, "show_data1"); gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, show_value); - save_btn = glade_xml_get_widget(xml, "button3"); - save_menu_item = glade_xml_get_widget(xml, "save1"); + save_action = gtk_builder_get_object(xml, "save"); conf_set_changed_callback(conf_changed); - style = gtk_widget_get_style(main_wnd); - widget = glade_xml_get_widget(xml, "toolbar1"); + /* style = gtk_widget_get_style(main_wnd); */ + widget = gtk_builder_get_object(xml, "toolbar1"); #if 0 /* Use stock Gtk icons instead */ - replace_button_icon(xml, main_wnd->window, style, - "button1", (gchar **) xpm_back); - replace_button_icon(xml, main_wnd->window, style, - "button2", (gchar **) xpm_load); - replace_button_icon(xml, main_wnd->window, style, - "button3", (gchar **) xpm_save); + replace_button_icon(xml, "button1", (gchar **) xpm_back); + replace_button_icon(xml, "button2", (gchar **) xpm_load); + replace_button_icon(xml, "button3", (gchar **) xpm_save); #endif - replace_button_icon(xml, main_wnd->window, style, - "button4", (gchar **) xpm_single_view); - replace_button_icon(xml, main_wnd->window, style, - "button5", (gchar **) xpm_split_view); - replace_button_icon(xml, main_wnd->window, style, - "button6", (gchar **) xpm_tree_view); + replace_button_icon(xml, "button4", (gchar **) xpm_single_view); + replace_button_icon(xml, "button5", (gchar **) xpm_split_view); + replace_button_icon(xml, "button6", (gchar **) xpm_tree_view); #if 0 switch (view_mode) { case SINGLE_VIEW: - widget = glade_xml_get_widget(xml, "button4"); + widget = gtk_builder_get_object(xml, "button4"); g_signal_emit_by_name(widget, "clicked"); break; case SPLIT_VIEW: - widget = glade_xml_get_widget(xml, "button5"); + widget = gtk_builder_get_object(xml, "button5"); g_signal_emit_by_name(widget, "clicked"); break; case FULL_VIEW: - widget = glade_xml_get_widget(xml, "button6"); + widget = gtk_builder_get_object(xml, "button6"); g_signal_emit_by_name(widget, "clicked"); break; } @@ -211,7 +231,7 @@ void init_main_window(const gchar * glad gtk_window_set_title(GTK_WINDOW(main_wnd), rootmenu.prompt->text); - gtk_widget_show(main_wnd); + gtk_widget_show(GTK_WIDGET(main_wnd)); } void init_tree_model(void) @@ -222,7 +242,7 @@ void init_tree_model(void) G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, - G_TYPE_POINTER, GDK_TYPE_COLOR, + G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, @@ -236,7 +256,7 @@ void init_tree_model(void) G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, - G_TYPE_POINTER, GDK_TYPE_COLOR, + G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, @@ -274,7 +294,7 @@ void init_left_tree(void) gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), renderer, "text", COL_OPTION, - "foreground-gdk", + "foreground", COL_COLOR, NULL); sel = gtk_tree_view_get_selection(view); @@ -324,32 +344,32 @@ void init_right_tree(void) gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), renderer, "text", COL_OPTION, - "foreground-gdk", + "foreground", COL_COLOR, NULL); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, _("Name"), renderer, "text", COL_NAME, - "foreground-gdk", + "foreground", COL_COLOR, NULL); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, "N", renderer, "text", COL_NO, - "foreground-gdk", + "foreground", COL_COLOR, NULL); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, "M", renderer, "text", COL_MOD, - "foreground-gdk", + "foreground", COL_COLOR, NULL); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, "Y", renderer, "text", COL_YES, - "foreground-gdk", + "foreground", COL_COLOR, NULL); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(view, -1, @@ -357,7 +377,7 @@ void init_right_tree(void) "text", COL_VALUE, "editable", COL_EDIT, - "foreground-gdk", + "foreground", COL_COLOR, NULL); g_signal_connect(G_OBJECT(renderer), "edited", G_CALLBACK(renderer_edited), NULL); @@ -436,7 +456,7 @@ static void text_insert_msg(const char * /* Main Windows Callbacks */ -void on_save_activate(GtkMenuItem * menuitem, gpointer user_data); +void on_save_activate(GtkAction * menuitem, gpointer user_data); gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, gpointer user_data) { @@ -461,7 +481,8 @@ gboolean on_window1_delete_event(GtkWidg GTK_RESPONSE_CANCEL); label = gtk_label_new(_("\nSave configuration ?\n")); - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); + gtk_container_add(GTK_CONTAINER( + gtk_dialog_get_content_area(GTK_DIALOG(dialog))), label); gtk_widget_show(label); result = gtk_dialog_run(GTK_DIALOG(dialog)); @@ -482,7 +503,7 @@ gboolean on_window1_delete_event(GtkWidg } -void on_window1_destroy(GtkObject * object, gpointer user_data) +void on_window1_destroy(GtkWidget * object, gpointer user_data) { gtk_main_quit(); } @@ -490,15 +511,12 @@ void on_window1_destroy(GtkObject * obje void on_window1_size_request(GtkWidget * widget, - GtkRequisition * requisition, gpointer user_data) + GdkRectangle * allocation, gpointer user_data) { - static gint old_h; - gint w, h; + static gint old_h = -1; + gint h; - if (widget->window == NULL) - gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h); - else - gdk_window_get_size(widget->window, &w, &h); + h = allocation->height; if (h == old_h) return; @@ -512,40 +530,41 @@ on_window1_size_request(GtkWidget * widg static void -load_filename(GtkFileSelection * file_selector, gpointer user_data) +load_filename(GtkWidget * file_selector, gint response, gpointer user_data) { const gchar *fn; - fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION - (user_data)); + if (response == GTK_RESPONSE_ACCEPT) { + fn = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER + (file_selector)); if (conf_read(fn)) text_insert_msg(_("Error"), _("Unable to load configuration !")); else display_tree(&rootmenu); + } + + gtk_widget_destroy(file_selector); } -void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) +void on_load1_activate(GtkAction * menuitem, gpointer user_data) { GtkWidget *fs; - fs = gtk_file_selection_new(_("Load file...")); - g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), - "clicked", - G_CALLBACK(load_filename), (gpointer) fs); - g_signal_connect_swapped(GTK_OBJECT - (GTK_FILE_SELECTION(fs)->ok_button), - "clicked", G_CALLBACK(gtk_widget_destroy), - (gpointer) fs); - g_signal_connect_swapped(GTK_OBJECT - (GTK_FILE_SELECTION(fs)->cancel_button), - "clicked", G_CALLBACK(gtk_widget_destroy), - (gpointer) fs); + fs = gtk_file_chooser_dialog_new(_("Load file..."), + GTK_WINDOW(main_wnd), + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + NULL); + g_signal_connect(G_OBJECT(fs), + "response", + G_CALLBACK(load_filename), NULL); gtk_widget_show(fs); } -void on_save_activate(GtkMenuItem * menuitem, gpointer user_data) +void on_save_activate(GtkAction * menuitem, gpointer user_data) { if (conf_write(NULL)) text_insert_msg(_("Error"), _("Unable to save configuration !")); @@ -553,40 +572,39 @@ void on_save_activate(GtkMenuItem * menu static void -store_filename(GtkFileSelection * file_selector, gpointer user_data) +store_filename(GtkWidget * file_selector, gint response, gpointer user_data) { const gchar *fn; + if (response == GTK_RESPONSE_ACCEPT) { - fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION - (user_data)); + fn = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER + (file_selector)); if (conf_write(fn)) text_insert_msg(_("Error"), _("Unable to save configuration !")); + } - gtk_widget_destroy(GTK_WIDGET(user_data)); + gtk_widget_destroy(user_data); } -void on_save_as1_activate(GtkMenuItem * menuitem, gpointer user_data) +void on_save_as1_activate(GtkAction * menuitem, gpointer user_data) { GtkWidget *fs; - fs = gtk_file_selection_new(_("Save file as...")); - g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), - "clicked", - G_CALLBACK(store_filename), (gpointer) fs); - g_signal_connect_swapped(GTK_OBJECT - (GTK_FILE_SELECTION(fs)->ok_button), - "clicked", G_CALLBACK(gtk_widget_destroy), - (gpointer) fs); - g_signal_connect_swapped(GTK_OBJECT - (GTK_FILE_SELECTION(fs)->cancel_button), - "clicked", G_CALLBACK(gtk_widget_destroy), - (gpointer) fs); + fs = gtk_file_chooser_dialog_new(_("Save file as..."), + GTK_WINDOW(main_wnd), + GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, + NULL); + g_signal_connect(G_OBJECT(fs), + "response", + G_CALLBACK(store_filename), NULL); gtk_widget_show(fs); } -void on_quit1_activate(GtkMenuItem * menuitem, gpointer user_data) +void on_quit1_activate(GtkAction * menuitem, gpointer user_data) { if (!on_window1_delete_event(NULL, NULL, NULL)) gtk_widget_destroy(GTK_WIDGET(main_wnd)); @@ -597,7 +615,8 @@ void on_show_name1_activate(GtkMenuItem { GtkTreeViewColumn *col; - show_name = GTK_CHECK_MENU_ITEM(menuitem)->active; + show_name = gtk_check_menu_item_get_active( + GTK_CHECK_MENU_ITEM(menuitem)); col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NAME); if (col) gtk_tree_view_column_set_visible(col, show_name); @@ -608,7 +627,8 @@ void on_show_range1_activate(GtkMenuItem { GtkTreeViewColumn *col; - show_range = GTK_CHECK_MENU_ITEM(menuitem)->active; + show_range = gtk_check_menu_item_get_active( + GTK_CHECK_MENU_ITEM(menuitem)); col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NO); if (col) gtk_tree_view_column_set_visible(col, show_range); @@ -626,7 +646,8 @@ void on_show_data1_activate(GtkMenuItem { GtkTreeViewColumn *col; - show_value = GTK_CHECK_MENU_ITEM(menuitem)->active; + show_value = gtk_check_menu_item_get_active( + GTK_CHECK_MENU_ITEM(menuitem)); col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_VALUE); if (col) gtk_tree_view_column_set_visible(col, show_value); @@ -683,10 +704,10 @@ void on_introduction1_activate(GtkMenuIt dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, - GTK_BUTTONS_CLOSE, intro_text); - g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + GTK_BUTTONS_CLOSE, "%s", intro_text); + g_signal_connect_swapped(G_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), - GTK_OBJECT(dialog)); + G_OBJECT(dialog)); gtk_widget_show_all(dialog); } @@ -701,10 +722,10 @@ void on_about1_activate(GtkMenuItem * me dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, - GTK_BUTTONS_CLOSE, about_text); - g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + GTK_BUTTONS_CLOSE, "%s", about_text); + g_signal_connect_swapped(G_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), - GTK_OBJECT(dialog)); + G_OBJECT(dialog)); gtk_widget_show_all(dialog); } @@ -720,10 +741,10 @@ void on_license1_activate(GtkMenuItem * dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, - GTK_BUTTONS_CLOSE, license_text); - g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + GTK_BUTTONS_CLOSE, "%s", license_text); + g_signal_connect_swapped(G_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), - GTK_OBJECT(dialog)); + G_OBJECT(dialog)); gtk_widget_show_all(dialog); } @@ -743,13 +764,7 @@ void on_back_clicked(GtkButton * button, } -void on_load_clicked(GtkButton * button, gpointer user_data) -{ - on_load1_activate(NULL, user_data); -} - - -void on_single_clicked(GtkButton * button, gpointer user_data) +void on_single_clicked(GtkAction * button, gpointer user_data) { view_mode = SINGLE_VIEW; gtk_widget_hide(tree1_w); @@ -758,7 +773,7 @@ void on_single_clicked(GtkButton * butto } -void on_split_clicked(GtkButton * button, gpointer user_data) +void on_split_clicked(GtkAction * button, gpointer user_data) { gint w, h; view_mode = SPLIT_VIEW; @@ -774,7 +789,7 @@ void on_split_clicked(GtkButton * button } -void on_full_clicked(GtkButton * button, gpointer user_data) +void on_full_clicked(GtkAction * button, gpointer user_data) { view_mode = FULL_VIEW; gtk_widget_hide(tree1_w); @@ -973,14 +988,14 @@ on_treeview2_key_press_event(GtkWidget * if (path == NULL) return FALSE; - if (event->keyval == GDK_space) { + if (event->keyval == GDK_KEY_space) { if (gtk_tree_view_row_expanded(view, path)) gtk_tree_view_collapse_row(view, path); else gtk_tree_view_expand_row(view, path, FALSE); return TRUE; } - if (event->keyval == GDK_KP_Enter) { + if (event->keyval == GDK_KEY_KP_Enter) { } if (widget == tree1_w) return FALSE; @@ -1186,17 +1201,11 @@ static gchar **fill_row(struct menu *men /* Set the node content with a row of strings */ static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row) { - GdkColor color; - gboolean success; GdkPixbuf *pix; pix = gdk_pixbuf_new_from_xpm_data((const char **) row[COL_PIXBUF]); - gdk_color_parse(row[COL_COLOR], &color); - gdk_colormap_alloc_colors(gdk_colormap_get_system(), &color, 1, - FALSE, FALSE, &success); - gtk_tree_store_set(tree, node, COL_OPTION, row[COL_OPTION], COL_NAME, row[COL_NAME], @@ -1205,7 +1214,7 @@ static void set_node(GtkTreeIter * node, COL_YES, row[COL_YES], COL_VALUE, row[COL_VALUE], COL_MENU, (gpointer) menu, - COL_COLOR, &color, + COL_COLOR, row[COL_COLOR], COL_EDIT, GPOINTER_TO_INT(row[COL_EDIT]), COL_PIXBUF, pix, COL_PIXVIS, GPOINTER_TO_INT(row[COL_PIXVIS]), @@ -1479,9 +1488,8 @@ int main(int ac, char *av[]) textdomain(PACKAGE); /* GTK stuffs */ - gtk_set_locale(); + setlocale(LC_ALL, ""); gtk_init(&ac, &av); - glade_init(); //add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); //add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps"); @@ -1540,6 +1548,5 @@ int main(int ac, char *av[]) static void conf_changed(void) { bool changed = conf_get_changed(); - gtk_widget_set_sensitive(save_btn, changed); - gtk_widget_set_sensitive(save_menu_item, changed); + gtk_action_set_sensitive((GtkAction*)save_action, changed); }