diff --git a/radiant/gtktheme.cpp b/radiant/gtktheme.cpp index 0f3604a8..dfcbe8de 100644 --- a/radiant/gtktheme.cpp +++ b/radiant/gtktheme.cpp @@ -21,20 +21,16 @@ #include - #include #include #include #include - #include "gtktheme.h" #include "mainframe.h" -//#include "gtkutil/window.h" + // ------------------------------------------------------ - - std::string& get_orig_theme(); std::string& get_orig_font(); @@ -44,711 +40,622 @@ std::string get_current_font(); std::string get_selected_theme(); std::string get_selected_font(); -void set_theme(const std::string& theme_name, const std::string& font); -void apply_theme(const std::string& theme_name, const std::string& font); - +void set_theme( const std::string& theme_name, const std::string& font ); +void apply_theme( const std::string& theme_name, const std::string& font ); GtkWidget* g_main_rc_window = NULL; - - static std::string s_rc_file; - // ------------------------------------------------------ +GtkWidget* lookup_widget( GtkWidget* widget, const gchar* widget_name ) { + GtkWidget* parent, *found_widget; + for( ;; ) { + if( GTK_IS_MENU( widget ) ) + parent = gtk_menu_get_attach_widget( GTK_MENU( widget ) ); + else + parent = widget->parent; + if( !parent ) + parent = (GtkWidget*)g_object_get_data( G_OBJECT( widget ), "GladeParentKey" ); + if( parent == NULL ) + break; + widget = parent; + } - -GtkWidget* lookup_widget (GtkWidget *widget, const gchar *widget_name){ - GtkWidget *parent, *found_widget; - - for (;;) - { - if (GTK_IS_MENU (widget)) - parent = gtk_menu_get_attach_widget (GTK_MENU (widget)); - else - parent = widget->parent; - if (!parent) - parent = (GtkWidget*)g_object_get_data (G_OBJECT (widget), "GladeParentKey"); - if (parent == NULL) - break; - widget = parent; - } - - found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget), - widget_name); - if (!found_widget) - g_warning ("Widget not found: %s", widget_name); - return found_widget; + found_widget = (GtkWidget*)g_object_get_data( G_OBJECT( widget ), widget_name ); + if( !found_widget ) + g_warning( "Widget not found: %s", widget_name ); + return found_widget; } - - - -void on_main_cancel_button_clicked( GtkButton *button, gpointer user_data ){ +void on_main_cancel_button_clicked( GtkButton* button, gpointer user_data ) { set_theme( get_orig_theme(), get_orig_font() ); gtk_widget_destroy( g_main_rc_window ); g_main_rc_window = NULL; } - -void on_main_reset_button_clicked( GtkButton *button, gpointer user_data ){ +void on_main_reset_button_clicked( GtkButton* button, gpointer user_data ) { set_theme( get_orig_theme(), get_orig_font() ); } - -gboolean on_main_window_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_data ){ +gboolean on_main_window_delete_event( GtkWidget* widget, GdkEvent* event, gpointer user_data ) { set_theme( get_orig_theme(), get_orig_font() ); gtk_widget_destroy( g_main_rc_window ); g_main_rc_window = NULL; return TRUE; } - -void on_main_use_default_font_radio_toggled ( GtkToggleButton *togglebutton, gpointer user_data ){ - bool default_font = gtk_toggle_button_get_active( togglebutton ); - +void on_main_use_default_font_radio_toggled( GtkToggleButton* togglebutton, gpointer user_data ) { + const bool default_font = gtk_toggle_button_get_active( togglebutton ); gtk_widget_set_sensitive( lookup_widget( g_main_rc_window, "main_font_selector_button" ), !default_font ); - apply_theme( get_selected_theme(), get_selected_font() ); } - -void on_main_font_selector_button_font_set( GtkFontButton *fontbutton, gpointer user_data ){ +void on_main_font_selector_button_font_set( GtkFontButton* fontbutton, gpointer user_data ) { apply_theme( get_selected_theme(), get_selected_font() ); } -void on_main_ok_button_clicked( GtkButton *button, gpointer user_data ){ +void on_main_ok_button_clicked( GtkButton* button, gpointer user_data ) { gtk_widget_destroy( g_main_rc_window ); g_main_rc_window = NULL; } +#define GLADE_HOOKUP_OBJECT( component, widget, name ) \ + g_object_set_data_full( G_OBJECT( component ), name, \ + gtk_widget_ref( widget ), (GDestroyNotify)gtk_widget_unref ) -#define GLADE_HOOKUP_OBJECT(component,widget,name) \ - g_object_set_data_full (G_OBJECT (component), name, \ - gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref) +#define GLADE_HOOKUP_OBJECT_NO_REF( component, widget, name ) \ + g_object_set_data( G_OBJECT( component ), name, widget ) -#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \ - g_object_set_data (G_OBJECT (component), name, widget) +GtkWidget* create_rc_window() { + GtkWidget* main_window; + GtkWidget* main_hbox; + GtkWidget* vbox1; + GtkWidget* hbox1; + GtkWidget* frame2; + GtkWidget* alignment3; + GtkWidget* scrolledwindow3; + GtkWidget* main_themelist; + GtkWidget* label1234; + GtkWidget* frame3; + GtkWidget* alignment4; + GtkWidget* vbox7; + GtkWidget* hbox8; + GtkWidget* vbox9; + GtkWidget* main_use_default_font_radio; + GSList* main_use_default_font_radio_group = NULL; + GtkWidget* main_use_custom_font_radio; + GtkWidget* alignment5; + GtkWidget* vbox10; + GtkWidget* hbox9; + GtkWidget* vbox11; + GtkWidget* main_font_selector_button; + GtkWidget* label669; + GtkWidget* vbox13; + GtkWidget* hbuttonbox1; + GtkWidget* hbox7; + GtkWidget* vbox6; + GtkWidget* hbox5; + GtkWidget* main_ok_button; + GtkWidget* main_cancel_button; + GtkWidget* main_reset_button; + GtkWidget* alignment2; + GtkWidget* hbox6; + GtkWidget* image1; + GtkWidget* label667; + GtkAccelGroup* accel_group; + GtkTooltips* tooltips; -GtkWidget* -create_rc_window (void) -{ - GtkWidget *main_window; - GtkWidget *main_hbox; - GtkWidget *vbox1; - GtkWidget *hbox1; - GtkWidget *frame2; - GtkWidget *alignment3; - GtkWidget *scrolledwindow3; - GtkWidget *main_themelist; - GtkWidget *label1234; - GtkWidget *frame3; - GtkWidget *alignment4; - GtkWidget *vbox7; - GtkWidget *hbox8; - GtkWidget *vbox9; - GtkWidget *main_use_default_font_radio; - GSList *main_use_default_font_radio_group = NULL; - GtkWidget *main_use_custom_font_radio; - GtkWidget *alignment5; - GtkWidget *vbox10; - GtkWidget *hbox9; - GtkWidget *vbox11; - GtkWidget *main_font_selector_button; - GtkWidget *label669; - GtkWidget *vbox13; - GtkWidget *hbuttonbox1; - GtkWidget *hbox7; - GtkWidget *vbox6; - GtkWidget *hbox5; - GtkWidget *main_ok_button; - GtkWidget *main_cancel_button; - GtkWidget *main_reset_button; - GtkWidget *alignment2; - GtkWidget *hbox6; - GtkWidget *image1; - GtkWidget *label667; - GtkAccelGroup *accel_group; - GtkTooltips *tooltips; + tooltips = gtk_tooltips_new(); - tooltips = gtk_tooltips_new (); + accel_group = gtk_accel_group_new(); - accel_group = gtk_accel_group_new (); + main_window = gtk_window_new( GTK_WINDOW_TOPLEVEL ); + gtk_widget_set_name( main_window, "main_window" ); + gtk_window_set_title( GTK_WINDOW( main_window ), "Gtk2 Theme Selector" ); + gtk_window_set_transient_for( GTK_WINDOW( main_window ), MainFrame_getWindow() ); + gtk_window_set_destroy_with_parent( GTK_WINDOW( main_window ), TRUE ); - main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_widget_set_name (main_window, "main_window"); - gtk_window_set_title (GTK_WINDOW (main_window), "Gtk2 Theme Selector"); - gtk_window_set_transient_for( GTK_WINDOW (main_window), MainFrame_getWindow() ); - gtk_window_set_destroy_with_parent( GTK_WINDOW (main_window), TRUE ); + //gtk_window_set_keep_above ( GTK_WINDOW( main_window ), TRUE ); - //gtk_window_set_keep_above ( GTK_WINDOW( main_window ), TRUE ); + main_hbox = gtk_hbox_new( FALSE, 0 ); + gtk_widget_set_name( main_hbox, "main_hbox" ); + gtk_widget_show( main_hbox ); + gtk_container_add( GTK_CONTAINER( main_window ), main_hbox ); + gtk_widget_set_size_request( main_hbox, 310, 320 ); + gtk_window_resize( GTK_WINDOW( main_window ), 310, 640 ); - main_hbox = gtk_hbox_new (FALSE, 0); - gtk_widget_set_name (main_hbox, "main_hbox"); - gtk_widget_show (main_hbox); - gtk_container_add (GTK_CONTAINER (main_window), main_hbox); - gtk_widget_set_size_request (main_hbox, 310, 320); - gtk_window_resize(GTK_WINDOW(main_window), 310, 640); + vbox1 = gtk_vbox_new( FALSE, 0 ); + gtk_widget_set_name( vbox1, "vbox1" ); + gtk_widget_show( vbox1 ); + gtk_box_pack_start( GTK_BOX( main_hbox ), vbox1, TRUE, TRUE, 0 ); + gtk_container_set_border_width( GTK_CONTAINER( vbox1 ), 3 ); - vbox1 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox1, "vbox1"); - gtk_widget_show (vbox1); - gtk_box_pack_start (GTK_BOX (main_hbox), vbox1, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (vbox1), 3); + hbox1 = gtk_hbox_new( FALSE, 0 ); + gtk_widget_set_name( hbox1, "hbox1" ); + gtk_widget_show( hbox1 ); + gtk_box_pack_start( GTK_BOX( vbox1 ), hbox1, TRUE, TRUE, 0 ); - hbox1 = gtk_hbox_new (FALSE, 0); - gtk_widget_set_name (hbox1, "hbox1"); - gtk_widget_show (hbox1); - gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0); + frame2 = gtk_frame_new( NULL ); + gtk_widget_set_name( frame2, "frame2" ); + gtk_widget_show( frame2 ); + gtk_box_pack_start( GTK_BOX( hbox1 ), frame2, TRUE, TRUE, 0 ); + gtk_frame_set_shadow_type( GTK_FRAME( frame2 ), GTK_SHADOW_NONE ); - frame2 = gtk_frame_new (NULL); - gtk_widget_set_name (frame2, "frame2"); - gtk_widget_show (frame2); - gtk_box_pack_start (GTK_BOX (hbox1), frame2, TRUE, TRUE, 0); - gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_NONE); + alignment3 = gtk_alignment_new( 0.5, 0.5, 1, 1 ); + gtk_widget_set_name( alignment3, "alignment3" ); + gtk_widget_show( alignment3 ); + gtk_container_add( GTK_CONTAINER( frame2 ), alignment3 ); + gtk_alignment_set_padding( GTK_ALIGNMENT( alignment3 ), 0, 0, 12, 0 ); - alignment3 = gtk_alignment_new (0.5, 0.5, 1, 1); - gtk_widget_set_name (alignment3, "alignment3"); - gtk_widget_show (alignment3); - gtk_container_add (GTK_CONTAINER (frame2), alignment3); - gtk_alignment_set_padding (GTK_ALIGNMENT (alignment3), 0, 0, 12, 0); + scrolledwindow3 = gtk_scrolled_window_new( NULL, NULL ); + gtk_widget_set_name( scrolledwindow3, "scrolledwindow3" ); + gtk_widget_show( scrolledwindow3 ); + gtk_container_add( GTK_CONTAINER( alignment3 ), scrolledwindow3 ); + gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledwindow3 ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); + gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scrolledwindow3 ), GTK_SHADOW_IN ); - scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL); - gtk_widget_set_name (scrolledwindow3, "scrolledwindow3"); - gtk_widget_show (scrolledwindow3); - gtk_container_add (GTK_CONTAINER (alignment3), scrolledwindow3); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_SHADOW_IN); + main_themelist = gtk_tree_view_new(); + gtk_widget_set_name( main_themelist, "main_themelist" ); + gtk_widget_show( main_themelist ); + gtk_container_add( GTK_CONTAINER( scrolledwindow3 ), main_themelist ); + GTK_WIDGET_SET_FLAGS( main_themelist, GTK_CAN_DEFAULT ); + gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( main_themelist ), FALSE ); - main_themelist = gtk_tree_view_new (); - gtk_widget_set_name (main_themelist, "main_themelist"); - gtk_widget_show (main_themelist); - gtk_container_add (GTK_CONTAINER (scrolledwindow3), main_themelist); - GTK_WIDGET_SET_FLAGS (main_themelist, GTK_CAN_DEFAULT); - gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (main_themelist), FALSE); + label1234 = gtk_label_new( "Theme" ); + gtk_widget_set_name( label1234, "label1234" ); + gtk_widget_show( label1234 ); + gtk_frame_set_label_widget( GTK_FRAME( frame2 ), label1234 ); + gtk_label_set_use_markup( GTK_LABEL( label1234 ), TRUE ); - label1234 = gtk_label_new ("Theme"); - gtk_widget_set_name (label1234, "label1234"); - gtk_widget_show (label1234); - gtk_frame_set_label_widget (GTK_FRAME (frame2), label1234); - gtk_label_set_use_markup (GTK_LABEL (label1234), TRUE); + frame3 = gtk_frame_new( NULL ); + gtk_widget_set_name( frame3, "frame3" ); + gtk_widget_show( frame3 ); + gtk_box_pack_start( GTK_BOX( vbox1 ), frame3, FALSE, FALSE, 9 ); + gtk_frame_set_shadow_type( GTK_FRAME( frame3 ), GTK_SHADOW_NONE ); - frame3 = gtk_frame_new (NULL); - gtk_widget_set_name (frame3, "frame3"); - gtk_widget_show (frame3); - gtk_box_pack_start (GTK_BOX (vbox1), frame3, FALSE, FALSE, 9); - gtk_frame_set_shadow_type (GTK_FRAME (frame3), GTK_SHADOW_NONE); + alignment4 = gtk_alignment_new( 0.5, 0.5, 1, 1 ); + gtk_widget_set_name( alignment4, "alignment4" ); + gtk_widget_show( alignment4 ); + gtk_container_add( GTK_CONTAINER( frame3 ), alignment4 ); + gtk_alignment_set_padding( GTK_ALIGNMENT( alignment4 ), 0, 0, 12, 0 ); - alignment4 = gtk_alignment_new (0.5, 0.5, 1, 1); - gtk_widget_set_name (alignment4, "alignment4"); - gtk_widget_show (alignment4); - gtk_container_add (GTK_CONTAINER (frame3), alignment4); - gtk_alignment_set_padding (GTK_ALIGNMENT (alignment4), 0, 0, 12, 0); + vbox7 = gtk_vbox_new( FALSE, 0 ); + gtk_widget_set_name( vbox7, "vbox7" ); + gtk_widget_show( vbox7 ); + gtk_container_add( GTK_CONTAINER( alignment4 ), vbox7 ); - vbox7 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox7, "vbox7"); - gtk_widget_show (vbox7); - gtk_container_add (GTK_CONTAINER (alignment4), vbox7); + hbox8 = gtk_hbox_new( FALSE, 0 ); + gtk_widget_set_name( hbox8, "hbox8" ); + gtk_widget_show( hbox8 ); + gtk_box_pack_start( GTK_BOX( vbox7 ), hbox8, FALSE, FALSE, 0 ); - hbox8 = gtk_hbox_new (FALSE, 0); - gtk_widget_set_name (hbox8, "hbox8"); - gtk_widget_show (hbox8); - gtk_box_pack_start (GTK_BOX (vbox7), hbox8, FALSE, FALSE, 0); + vbox9 = gtk_vbox_new( FALSE, 0 ); + gtk_widget_set_name( vbox9, "vbox9" ); + gtk_widget_show( vbox9 ); + gtk_box_pack_start( GTK_BOX( hbox8 ), vbox9, TRUE, TRUE, 0 ); - vbox9 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox9, "vbox9"); - gtk_widget_show (vbox9); - gtk_box_pack_start (GTK_BOX (hbox8), vbox9, TRUE, TRUE, 0); + main_use_default_font_radio = gtk_radio_button_new_with_mnemonic( NULL, "Use theme default font" ); + gtk_widget_set_name( main_use_default_font_radio, "main_use_default_font_radio" ); + gtk_widget_show( main_use_default_font_radio ); + gtk_box_pack_start( GTK_BOX( vbox9 ), main_use_default_font_radio, FALSE, FALSE, 0 ); + gtk_radio_button_set_group( GTK_RADIO_BUTTON( main_use_default_font_radio ), main_use_default_font_radio_group ); + main_use_default_font_radio_group = gtk_radio_button_get_group( GTK_RADIO_BUTTON( main_use_default_font_radio ) ); - main_use_default_font_radio = gtk_radio_button_new_with_mnemonic (NULL, "Use theme default font"); - gtk_widget_set_name (main_use_default_font_radio, "main_use_default_font_radio"); - gtk_widget_show (main_use_default_font_radio); - gtk_box_pack_start (GTK_BOX (vbox9), main_use_default_font_radio, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (main_use_default_font_radio), main_use_default_font_radio_group); - main_use_default_font_radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (main_use_default_font_radio)); + main_use_custom_font_radio = gtk_radio_button_new_with_mnemonic( NULL, "Use custom font:" ); + gtk_widget_set_name( main_use_custom_font_radio, "main_use_custom_font_radio" ); + gtk_widget_show( main_use_custom_font_radio ); + gtk_box_pack_start( GTK_BOX( vbox9 ), main_use_custom_font_radio, FALSE, FALSE, 0 ); + gtk_radio_button_set_group( GTK_RADIO_BUTTON( main_use_custom_font_radio ), main_use_default_font_radio_group ); + main_use_default_font_radio_group = gtk_radio_button_get_group( GTK_RADIO_BUTTON( main_use_custom_font_radio ) ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( main_use_custom_font_radio ), TRUE ); + //gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( main_use_custom_font_radio ), FALSE ); - main_use_custom_font_radio = gtk_radio_button_new_with_mnemonic (NULL, "Use custom font:"); - gtk_widget_set_name (main_use_custom_font_radio, "main_use_custom_font_radio"); - gtk_widget_show (main_use_custom_font_radio); - gtk_box_pack_start (GTK_BOX (vbox9), main_use_custom_font_radio, FALSE, FALSE, 0); - gtk_radio_button_set_group (GTK_RADIO_BUTTON (main_use_custom_font_radio), main_use_default_font_radio_group); - main_use_default_font_radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (main_use_custom_font_radio)); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (main_use_custom_font_radio), TRUE); - //gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (main_use_custom_font_radio), FALSE); + alignment5 = gtk_alignment_new( 0.5, 0.5, 1, 1 ); + gtk_widget_set_name( alignment5, "alignment5" ); + gtk_widget_show( alignment5 ); + gtk_box_pack_start( GTK_BOX( vbox9 ), alignment5, TRUE, TRUE, 0 ); + gtk_alignment_set_padding( GTK_ALIGNMENT( alignment5 ), 0, 0, 12, 0 ); - alignment5 = gtk_alignment_new (0.5, 0.5, 1, 1); - gtk_widget_set_name (alignment5, "alignment5"); - gtk_widget_show (alignment5); - gtk_box_pack_start (GTK_BOX (vbox9), alignment5, TRUE, TRUE, 0); - gtk_alignment_set_padding (GTK_ALIGNMENT (alignment5), 0, 0, 12, 0); + vbox10 = gtk_vbox_new( FALSE, 0 ); + gtk_widget_set_name( vbox10, "vbox10" ); + gtk_widget_show( vbox10 ); + gtk_container_add( GTK_CONTAINER( alignment5 ), vbox10 ); - vbox10 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox10, "vbox10"); - gtk_widget_show (vbox10); - gtk_container_add (GTK_CONTAINER (alignment5), vbox10); + hbox9 = gtk_hbox_new( FALSE, 0 ); + gtk_widget_set_name( hbox9, "hbox9" ); + gtk_widget_show( hbox9 ); + gtk_box_pack_start( GTK_BOX( vbox10 ), hbox9, FALSE, FALSE, 0 ); - hbox9 = gtk_hbox_new (FALSE, 0); - gtk_widget_set_name (hbox9, "hbox9"); - gtk_widget_show (hbox9); - gtk_box_pack_start (GTK_BOX (vbox10), hbox9, FALSE, FALSE, 0); + vbox11 = gtk_vbox_new( FALSE, 0 ); + gtk_widget_set_name( vbox11, "vbox11" ); + gtk_widget_show( vbox11 ); + gtk_box_pack_start( GTK_BOX( hbox9 ), vbox11, TRUE, TRUE, 0 ); - vbox11 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox11, "vbox11"); - gtk_widget_show (vbox11); - gtk_box_pack_start (GTK_BOX (hbox9), vbox11, TRUE, TRUE, 0); + main_font_selector_button = gtk_font_button_new(); + gtk_widget_set_name( main_font_selector_button, "main_font_selector_button" ); + gtk_widget_show( main_font_selector_button ); + gtk_box_pack_start( GTK_BOX( vbox11 ), main_font_selector_button, FALSE, FALSE, 0 ); - main_font_selector_button = gtk_font_button_new (); - gtk_widget_set_name (main_font_selector_button, "main_font_selector_button"); - gtk_widget_show (main_font_selector_button); - gtk_box_pack_start (GTK_BOX (vbox11), main_font_selector_button, FALSE, FALSE, 0); + label669 = gtk_label_new( "Font" ); + gtk_widget_set_name( label669, "label669" ); + gtk_widget_show( label669 ); + gtk_frame_set_label_widget( GTK_FRAME( frame3 ), label669 ); + gtk_label_set_use_markup( GTK_LABEL( label669 ), TRUE ); - label669 = gtk_label_new ("Font"); - gtk_widget_set_name (label669, "label669"); - gtk_widget_show (label669); - gtk_frame_set_label_widget (GTK_FRAME (frame3), label669); - gtk_label_set_use_markup (GTK_LABEL (label669), TRUE); + vbox13 = gtk_vbox_new( FALSE, 0 ); + gtk_widget_set_name( vbox13, "vbox13" ); + gtk_widget_show( vbox13 ); + gtk_box_pack_start( GTK_BOX( vbox1 ), vbox13, FALSE, FALSE, 0 ); - vbox13 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox13, "vbox13"); - gtk_widget_show (vbox13); - gtk_box_pack_start (GTK_BOX (vbox1), vbox13, FALSE, FALSE, 0); + hbuttonbox1 = gtk_hbutton_box_new(); + gtk_widget_set_name( hbuttonbox1, "hbuttonbox1" ); + gtk_widget_show( hbuttonbox1 ); + gtk_box_pack_start( GTK_BOX( vbox1 ), hbuttonbox1, FALSE, FALSE, 0 ); - hbuttonbox1 = gtk_hbutton_box_new (); - gtk_widget_set_name (hbuttonbox1, "hbuttonbox1"); - gtk_widget_show (hbuttonbox1); - gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox1, FALSE, FALSE, 0); + hbox7 = gtk_hbox_new( FALSE, 0 ); + gtk_widget_set_name( hbox7, "hbox7" ); + gtk_widget_show( hbox7 ); + gtk_box_pack_start( GTK_BOX( vbox1 ), hbox7, FALSE, TRUE, 6 ); - hbox7 = gtk_hbox_new (FALSE, 0); - gtk_widget_set_name (hbox7, "hbox7"); - gtk_widget_show (hbox7); - gtk_box_pack_start (GTK_BOX (vbox1), hbox7, FALSE, TRUE, 6); + vbox6 = gtk_vbox_new( FALSE, 0 ); + gtk_widget_set_name( vbox6, "vbox6" ); + gtk_widget_show( vbox6 ); + gtk_box_pack_start( GTK_BOX( vbox1 ), vbox6, FALSE, FALSE, 0 ); - vbox6 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox6, "vbox6"); - gtk_widget_show (vbox6); - gtk_box_pack_start (GTK_BOX (vbox1), vbox6, FALSE, FALSE, 0); + hbox5 = gtk_hbox_new( TRUE, 0 ); + gtk_widget_set_name( hbox5, "hbox5" ); + gtk_widget_show( hbox5 ); + gtk_box_pack_start( GTK_BOX( vbox6 ), hbox5, FALSE, FALSE, 0 ); + gtk_container_set_border_width( GTK_CONTAINER( hbox5 ), 4 ); - hbox5 = gtk_hbox_new (TRUE, 0); - gtk_widget_set_name (hbox5, "hbox5"); - gtk_widget_show (hbox5); - gtk_box_pack_start (GTK_BOX (vbox6), hbox5, FALSE, FALSE, 0); - gtk_container_set_border_width (GTK_CONTAINER (hbox5), 4); + main_ok_button = gtk_button_new_from_stock( "gtk-ok" ); + gtk_widget_set_name( main_ok_button, "main_ok_button" ); + gtk_widget_show( main_ok_button ); + gtk_box_pack_end( GTK_BOX( hbox5 ), main_ok_button, TRUE, TRUE, 4 ); + GTK_WIDGET_SET_FLAGS( main_ok_button, GTK_CAN_DEFAULT ); - main_ok_button = gtk_button_new_from_stock ("gtk-ok"); - gtk_widget_set_name (main_ok_button, "main_ok_button"); - gtk_widget_show (main_ok_button); - gtk_box_pack_end (GTK_BOX (hbox5), main_ok_button, TRUE, TRUE, 4); - GTK_WIDGET_SET_FLAGS (main_ok_button, GTK_CAN_DEFAULT); + main_cancel_button = gtk_button_new_from_stock( "gtk-cancel" ); + gtk_widget_set_name( main_cancel_button, "main_cancel_button" ); + gtk_widget_show( main_cancel_button ); + gtk_box_pack_end( GTK_BOX( hbox5 ), main_cancel_button, TRUE, TRUE, 4 ); + GTK_WIDGET_SET_FLAGS( main_cancel_button, GTK_CAN_DEFAULT ); - main_cancel_button = gtk_button_new_from_stock ("gtk-cancel"); - gtk_widget_set_name (main_cancel_button, "main_cancel_button"); - gtk_widget_show (main_cancel_button); - gtk_box_pack_end (GTK_BOX (hbox5), main_cancel_button, TRUE, TRUE, 4); - GTK_WIDGET_SET_FLAGS (main_cancel_button, GTK_CAN_DEFAULT); + main_reset_button = gtk_button_new(); + gtk_widget_set_name( main_reset_button, "main_reset_button" ); + gtk_widget_show( main_reset_button ); + gtk_box_pack_end( GTK_BOX( hbox5 ), main_reset_button, TRUE, TRUE, 4 ); - main_reset_button = gtk_button_new (); - gtk_widget_set_name (main_reset_button, "main_reset_button"); - gtk_widget_show (main_reset_button); - gtk_box_pack_end (GTK_BOX (hbox5), main_reset_button, TRUE, TRUE, 4); + alignment2 = gtk_alignment_new( 0.5, 0.5, 0, 0 ); + gtk_widget_set_name( alignment2, "alignment2" ); + gtk_widget_show( alignment2 ); + gtk_container_add( GTK_CONTAINER( main_reset_button ), alignment2 ); - alignment2 = gtk_alignment_new (0.5, 0.5, 0, 0); - gtk_widget_set_name (alignment2, "alignment2"); - gtk_widget_show (alignment2); - gtk_container_add (GTK_CONTAINER (main_reset_button), alignment2); + hbox6 = gtk_hbox_new( FALSE, 2 ); + gtk_widget_set_name( hbox6, "hbox6" ); + gtk_widget_show( hbox6 ); + gtk_container_add( GTK_CONTAINER( alignment2 ), hbox6 ); - hbox6 = gtk_hbox_new (FALSE, 2); - gtk_widget_set_name (hbox6, "hbox6"); - gtk_widget_show (hbox6); - gtk_container_add (GTK_CONTAINER (alignment2), hbox6); + image1 = gtk_image_new_from_stock( "gtk-revert-to-saved", GTK_ICON_SIZE_BUTTON ); + gtk_widget_set_name( image1, "image1" ); + gtk_widget_show( image1 ); + gtk_box_pack_start( GTK_BOX( hbox6 ), image1, FALSE, FALSE, 0 ); - image1 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_BUTTON); - gtk_widget_set_name (image1, "image1"); - gtk_widget_show (image1); - gtk_box_pack_start (GTK_BOX (hbox6), image1, FALSE, FALSE, 0); - - label667 = gtk_label_new_with_mnemonic ("_Reset"); - gtk_widget_set_name (label667, "label667"); - gtk_widget_show (label667); - gtk_box_pack_start (GTK_BOX (hbox6), label667, FALSE, FALSE, 0); + label667 = gtk_label_new_with_mnemonic( "_Reset" ); + gtk_widget_set_name( label667, "label667" ); + gtk_widget_show( label667 ); + gtk_box_pack_start( GTK_BOX( hbox6 ), label667, FALSE, FALSE, 0 ); - g_signal_connect ((gpointer) main_window, "delete_event", - G_CALLBACK (on_main_window_delete_event), - NULL); - g_signal_connect ((gpointer) main_use_default_font_radio, "toggled", - G_CALLBACK (on_main_use_default_font_radio_toggled), - NULL); - g_signal_connect ((gpointer) main_font_selector_button, "font_set", - G_CALLBACK (on_main_font_selector_button_font_set), - NULL); - g_signal_connect ((gpointer) main_cancel_button, "clicked", - G_CALLBACK (on_main_cancel_button_clicked), - NULL); - g_signal_connect ((gpointer) main_reset_button, "clicked", - G_CALLBACK (on_main_reset_button_clicked), - NULL); - g_signal_connect ((gpointer) main_ok_button, "clicked", - G_CALLBACK (on_main_ok_button_clicked), - NULL); + g_signal_connect( (gpointer)main_window, "delete_event", + G_CALLBACK( on_main_window_delete_event ), + NULL ); + g_signal_connect( (gpointer)main_use_default_font_radio, "toggled", + G_CALLBACK( on_main_use_default_font_radio_toggled ), + NULL ); + g_signal_connect( (gpointer)main_font_selector_button, "font_set", + G_CALLBACK( on_main_font_selector_button_font_set ), + NULL ); + g_signal_connect( (gpointer)main_cancel_button, "clicked", + G_CALLBACK( on_main_cancel_button_clicked ), + NULL ); + g_signal_connect( (gpointer)main_reset_button, "clicked", + G_CALLBACK( on_main_reset_button_clicked ), + NULL ); + g_signal_connect( (gpointer)main_ok_button, "clicked", + G_CALLBACK( on_main_ok_button_clicked ), + NULL ); - /* Store pointers to all widgets, for use by lookup_widget(). */ - GLADE_HOOKUP_OBJECT_NO_REF (main_window, main_window, "main_window"); - GLADE_HOOKUP_OBJECT (main_window, main_hbox, "main_hbox"); - GLADE_HOOKUP_OBJECT (main_window, vbox1, "vbox1"); - GLADE_HOOKUP_OBJECT (main_window, hbox1, "hbox1"); - GLADE_HOOKUP_OBJECT (main_window, frame2, "frame2"); - GLADE_HOOKUP_OBJECT (main_window, alignment3, "alignment3"); - GLADE_HOOKUP_OBJECT (main_window, scrolledwindow3, "scrolledwindow3"); - GLADE_HOOKUP_OBJECT (main_window, main_themelist, "main_themelist"); - GLADE_HOOKUP_OBJECT (main_window, label1234, "label1234"); - GLADE_HOOKUP_OBJECT (main_window, frame3, "frame3"); - GLADE_HOOKUP_OBJECT (main_window, alignment4, "alignment4"); - GLADE_HOOKUP_OBJECT (main_window, vbox7, "vbox7"); - GLADE_HOOKUP_OBJECT (main_window, hbox8, "hbox8"); - GLADE_HOOKUP_OBJECT (main_window, vbox9, "vbox9"); - GLADE_HOOKUP_OBJECT (main_window, main_use_default_font_radio, "main_use_default_font_radio"); - GLADE_HOOKUP_OBJECT (main_window, main_use_custom_font_radio, "main_use_custom_font_radio"); - GLADE_HOOKUP_OBJECT (main_window, alignment5, "alignment5"); - GLADE_HOOKUP_OBJECT (main_window, vbox10, "vbox10"); - GLADE_HOOKUP_OBJECT (main_window, hbox9, "hbox9"); - GLADE_HOOKUP_OBJECT (main_window, vbox11, "vbox11"); - GLADE_HOOKUP_OBJECT (main_window, main_font_selector_button, "main_font_selector_button"); - GLADE_HOOKUP_OBJECT (main_window, label669, "label669"); - GLADE_HOOKUP_OBJECT (main_window, vbox13, "vbox13"); - GLADE_HOOKUP_OBJECT (main_window, hbuttonbox1, "hbuttonbox1"); - GLADE_HOOKUP_OBJECT (main_window, hbox7, "hbox7"); - GLADE_HOOKUP_OBJECT (main_window, vbox6, "vbox6"); - GLADE_HOOKUP_OBJECT (main_window, hbox5, "hbox5"); - GLADE_HOOKUP_OBJECT (main_window, main_ok_button, "main_ok_button"); - GLADE_HOOKUP_OBJECT (main_window, main_cancel_button, "main_cancel_button"); - GLADE_HOOKUP_OBJECT (main_window, main_reset_button, "main_reset_button"); - GLADE_HOOKUP_OBJECT (main_window, alignment2, "alignment2"); - GLADE_HOOKUP_OBJECT (main_window, hbox6, "hbox6"); - GLADE_HOOKUP_OBJECT (main_window, image1, "image1"); - GLADE_HOOKUP_OBJECT (main_window, label667, "label667"); + /* Store pointers to all widgets, for use by lookup_widget(). */ + GLADE_HOOKUP_OBJECT_NO_REF( main_window, main_window, "main_window" ); + GLADE_HOOKUP_OBJECT( main_window, main_hbox, "main_hbox" ); + GLADE_HOOKUP_OBJECT( main_window, vbox1, "vbox1" ); + GLADE_HOOKUP_OBJECT( main_window, hbox1, "hbox1" ); + GLADE_HOOKUP_OBJECT( main_window, frame2, "frame2" ); + GLADE_HOOKUP_OBJECT( main_window, alignment3, "alignment3" ); + GLADE_HOOKUP_OBJECT( main_window, scrolledwindow3, "scrolledwindow3" ); + GLADE_HOOKUP_OBJECT( main_window, main_themelist, "main_themelist" ); + GLADE_HOOKUP_OBJECT( main_window, label1234, "label1234" ); + GLADE_HOOKUP_OBJECT( main_window, frame3, "frame3" ); + GLADE_HOOKUP_OBJECT( main_window, alignment4, "alignment4" ); + GLADE_HOOKUP_OBJECT( main_window, vbox7, "vbox7" ); + GLADE_HOOKUP_OBJECT( main_window, hbox8, "hbox8" ); + GLADE_HOOKUP_OBJECT( main_window, vbox9, "vbox9" ); + GLADE_HOOKUP_OBJECT( main_window, main_use_default_font_radio, "main_use_default_font_radio" ); + GLADE_HOOKUP_OBJECT( main_window, main_use_custom_font_radio, "main_use_custom_font_radio" ); + GLADE_HOOKUP_OBJECT( main_window, alignment5, "alignment5" ); + GLADE_HOOKUP_OBJECT( main_window, vbox10, "vbox10" ); + GLADE_HOOKUP_OBJECT( main_window, hbox9, "hbox9" ); + GLADE_HOOKUP_OBJECT( main_window, vbox11, "vbox11" ); + GLADE_HOOKUP_OBJECT( main_window, main_font_selector_button, "main_font_selector_button" ); + GLADE_HOOKUP_OBJECT( main_window, label669, "label669" ); + GLADE_HOOKUP_OBJECT( main_window, vbox13, "vbox13" ); + GLADE_HOOKUP_OBJECT( main_window, hbuttonbox1, "hbuttonbox1" ); + GLADE_HOOKUP_OBJECT( main_window, hbox7, "hbox7" ); + GLADE_HOOKUP_OBJECT( main_window, vbox6, "vbox6" ); + GLADE_HOOKUP_OBJECT( main_window, hbox5, "hbox5" ); + GLADE_HOOKUP_OBJECT( main_window, main_ok_button, "main_ok_button" ); + GLADE_HOOKUP_OBJECT( main_window, main_cancel_button, "main_cancel_button" ); + GLADE_HOOKUP_OBJECT( main_window, main_reset_button, "main_reset_button" ); + GLADE_HOOKUP_OBJECT( main_window, alignment2, "alignment2" ); + GLADE_HOOKUP_OBJECT( main_window, hbox6, "hbox6" ); + GLADE_HOOKUP_OBJECT( main_window, image1, "image1" ); + GLADE_HOOKUP_OBJECT( main_window, label667, "label667" ); - GLADE_HOOKUP_OBJECT_NO_REF (main_window, tooltips, "tooltips"); + GLADE_HOOKUP_OBJECT_NO_REF( main_window, tooltips, "tooltips" ); - gtk_widget_grab_default (main_themelist); - gtk_window_add_accel_group (GTK_WINDOW (main_window), accel_group); + gtk_widget_grab_default( main_themelist ); + gtk_window_add_accel_group( GTK_WINDOW( main_window ), accel_group ); - return main_window; + return main_window; } - -static std::string gchar_to_string(gchar* gstr) -{ - std::string str = (gstr ? gstr : ""); - g_free(gstr); +static std::string gchar_to_string( gchar* gstr ) { + std::string str = ( gstr ? gstr : "" ); + g_free( gstr ); return str; } - // ------------------------------------------------------ - - static std::string s_orig_theme; static std::string s_orig_font; -std::string& get_orig_theme() -{ +std::string& get_orig_theme() { return s_orig_theme; } - -std::string& get_orig_font() -{ +std::string& get_orig_font() { return s_orig_font; } // ------------------------------------------------------ - - -std::string get_current_theme() -{ - +std::string get_current_theme() { GtkSettings* settings = gtk_settings_get_default(); gchar* theme; - g_object_get(settings, "gtk-theme-name", &theme, NULL); + g_object_get( settings, "gtk-theme-name", &theme, NULL ); /* dummy check */ - if( !g_ascii_isalnum( theme[0] ) ){ + if( !g_ascii_isalnum( theme[0] ) ) { g_free( theme ); return ""; } - return gchar_to_string(theme); + return gchar_to_string( theme ); } - - - -std::string get_current_font() -{ +std::string get_current_font() { return gchar_to_string( pango_font_description_to_string( gtk_rc_get_style( g_main_rc_window )->font_desc ) ); } - // ------------------------------------------------------ - - - -std::string get_selected_theme() -{ - GtkTreeView* treeview = GTK_TREE_VIEW(lookup_widget(g_main_rc_window, "main_themelist")); - GtkTreeModel* model = gtk_tree_view_get_model(treeview); - GtkTreeSelection* selection = gtk_tree_view_get_selection(treeview); +std::string get_selected_theme() { + GtkTreeView* treeview = GTK_TREE_VIEW( lookup_widget( g_main_rc_window, "main_themelist" ) ); + GtkTreeModel* model = gtk_tree_view_get_model( treeview ); + GtkTreeSelection* selection = gtk_tree_view_get_selection( treeview ); GtkTreeIter iter; - gtk_tree_selection_get_selected(selection, 0, &iter); + gtk_tree_selection_get_selected( selection, 0, &iter ); gchar* theme_name; - gtk_tree_model_get(model, &iter, 0, &theme_name, -1); + gtk_tree_model_get( model, &iter, 0, &theme_name, -1 ); // std::cout << theme_name << "\n"; - return gchar_to_string(theme_name); + return gchar_to_string( theme_name ); } +std::string get_selected_font() { +// GtkWidget* fontentry = lookup_widget( g_main_rc_window, "main_fontentry" ); +// return gtk_entry_get_text( GTK_ENTRY( fontentry ) ); - -std::string get_selected_font() -{ -// GtkWidget* fontentry = lookup_widget(g_main_rc_window, "main_fontentry"); -// return gtk_entry_get_text(GTK_ENTRY(fontentry)); - - bool default_font = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(g_main_rc_window, "main_use_default_font_radio"))); - - if (default_font) + const bool default_font = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( lookup_widget( g_main_rc_window, "main_use_default_font_radio" ) ) ); + if( default_font ) return ""; - GtkWidget* fontbutton = lookup_widget(g_main_rc_window, "main_font_selector_button"); - return gtk_font_button_get_font_name(GTK_FONT_BUTTON(fontbutton)); + GtkWidget* fontbutton = lookup_widget( g_main_rc_window, "main_font_selector_button" ); + return gtk_font_button_get_font_name( GTK_FONT_BUTTON( fontbutton ) ); } // ------------------------------------------------------ - - - -static void themelist_selection_changed_cb(GtkTreeSelection* selection, gpointer data) -{ - if (gtk_tree_selection_get_selected (selection, 0, 0)) - apply_theme(get_selected_theme(), get_current_font()); +static void themelist_selection_changed_cb( GtkTreeSelection* selection, gpointer data ) { + if( gtk_tree_selection_get_selected( selection, 0, 0 ) ) + apply_theme( get_selected_theme(), get_current_font() ); } - // ------------------------------------------------------ +static void populate_with_themes( GtkWidget* w ) { + std::string search_path = gchar_to_string( gtk_rc_get_theme_dir() ); - - -static void populate_with_themes(GtkWidget* w) -{ - - std::string search_path = gchar_to_string(gtk_rc_get_theme_dir()); - - if (search_path.size() && search_path[search_path.size() -1] != G_DIR_SEPARATOR) + if( search_path.size() && search_path[search_path.size() - 1] != G_DIR_SEPARATOR ) search_path += G_DIR_SEPARATOR_S; - GDir* gdir = g_dir_open(search_path.c_str(), 0, NULL); - if (gdir == NULL) + GDir* gdir = g_dir_open( search_path.c_str(), 0, NULL ); + if( gdir == NULL ) return; - char* name; GList* glist = 0; - while ( (name = const_cast(g_dir_read_name(gdir))) != NULL ) { + while( ( name = const_cast( g_dir_read_name( gdir ) ) ) != NULL ) { std::string filename = name; -// if (g_ascii_strup(fname.c_str(), -1) == "Default") +// if ( g_ascii_strup( fname.c_str(), -1 ) == "Default" ) // continue; std::string fullname = search_path + filename; - std::string rc = fullname; rc += G_DIR_SEPARATOR_S; rc += "gtk-2.0"; rc += G_DIR_SEPARATOR_S; rc += "gtkrc"; + std::string rc = fullname; + rc += G_DIR_SEPARATOR_S; + rc += "gtk-2.0"; + rc += G_DIR_SEPARATOR_S; + rc += "gtkrc"; bool is_dir = 0; - if (g_file_test(fullname.c_str(), G_FILE_TEST_IS_DIR)) + if( g_file_test( fullname.c_str(), G_FILE_TEST_IS_DIR ) ) is_dir = 1; - if (is_dir && g_file_test(rc.c_str(), G_FILE_TEST_IS_REGULAR)) { - glist = g_list_insert_sorted(glist, g_strdup(filename.c_str()), (GCompareFunc)strcmp); + if( is_dir && g_file_test( rc.c_str(), G_FILE_TEST_IS_REGULAR ) ) { + glist = g_list_insert_sorted( glist, g_strdup( filename.c_str() ), ( GCompareFunc )strcmp ); } } - g_dir_close(gdir); - - - + g_dir_close( gdir ); // ---------------- tree + GtkTreeView* treeview = GTK_TREE_VIEW( w ); + GtkListStore* store = gtk_list_store_new( 1, G_TYPE_STRING ); + gtk_tree_view_set_model( treeview, GTK_TREE_MODEL( store ) ); - - GtkTreeView* treeview = GTK_TREE_VIEW(w); - GtkListStore *store = gtk_list_store_new (1, G_TYPE_STRING); - gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(store)); - - GtkTreeViewColumn* column = gtk_tree_view_column_new_with_attributes ( - "Theme", gtk_cell_renderer_text_new(), - "text", 0, - NULL); - gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_GROW_ONLY); - gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); - + GtkTreeViewColumn* column = gtk_tree_view_column_new_with_attributes( + "Theme", gtk_cell_renderer_text_new(), + "text", 0, + NULL ); + gtk_tree_view_column_set_sizing( column, GTK_TREE_VIEW_COLUMN_GROW_ONLY ); + gtk_tree_view_append_column( GTK_TREE_VIEW( treeview ), column ); GtkTreeIter iter; + int i = 0, curr = 0; + while( char* theme = (char*)g_list_nth_data( glist, i ) ) { + gtk_list_store_append( store, &iter ); + gtk_list_store_set( store, &iter, 0, theme, -1 ); - int i =0, curr=0; - while (char* theme = (char*)g_list_nth_data(glist, i)) { - gtk_list_store_append (store, &iter); - gtk_list_store_set (store, &iter, 0, theme, -1); - - if (strcmp(theme, get_current_theme().c_str()) == 0) { + if( strcmp( theme, get_current_theme().c_str() ) == 0 ) { curr = i; } - ++i; } - - GtkTreeSelection* selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); + GtkTreeSelection* selection = gtk_tree_view_get_selection( GTK_TREE_VIEW( treeview ) ); // set the default theme // THIS IS IMPORTANT!!! - gtk_widget_grab_focus(w); + gtk_widget_grab_focus( w ); std::stringstream str; str << curr; - GtkTreePath* selpath = gtk_tree_path_new_from_string (str.str().c_str()); - if (selpath) { - gtk_tree_selection_select_path(selection, selpath); - gtk_tree_view_scroll_to_cell(treeview, selpath, NULL, true, 0.5, 0.0); - gtk_tree_path_free(selpath); + GtkTreePath* selpath = gtk_tree_path_new_from_string( str.str().c_str() ); + if( selpath ) { + gtk_tree_selection_select_path( selection, selpath ); + gtk_tree_view_scroll_to_cell( treeview, selpath, NULL, true, 0.5, 0.0 ); + gtk_tree_path_free( selpath ); } - g_signal_connect (G_OBJECT (selection), "changed", - G_CALLBACK (themelist_selection_changed_cb), NULL); - - g_object_unref (G_OBJECT (store)); + g_signal_connect( G_OBJECT( selection ), "changed", + G_CALLBACK( themelist_selection_changed_cb ), NULL ); + g_object_unref( G_OBJECT( store ) ); // ---------------- font - - - GtkWidget* fontbutton = lookup_widget(g_main_rc_window, "main_font_selector_button"); - gtk_font_button_set_font_name(GTK_FONT_BUTTON(fontbutton), get_current_font().c_str()); - - + GtkWidget* fontbutton = lookup_widget( g_main_rc_window, "main_font_selector_button" ); + gtk_font_button_set_font_name( GTK_FONT_BUTTON( fontbutton ), get_current_font().c_str() ); } - - // ------------------------------------------------------ - - - - -void gtkThemeDlg(){ - if( g_main_rc_window ) return; +void gtkThemeDlg() { + if( g_main_rc_window ) + return; s_rc_file = std::string( AppPath_get() ) + G_DIR_SEPARATOR_S + ".gtkrc-2.0.radiant"; g_main_rc_window = create_rc_window(); - populate_with_themes( lookup_widget( g_main_rc_window, "main_themelist" ) ); + populate_with_themes( lookup_widget( g_main_rc_window, "main_themelist" ) ); get_orig_theme() = get_current_theme(); get_orig_font() = get_current_font(); - gtk_widget_show ( g_main_rc_window ); + gtk_widget_show( g_main_rc_window ); } - // ------------------------------- - - - -void set_theme(const std::string& theme_name, const std::string& font) -{ - if( theme_name.empty() ) return; +void set_theme( const std::string& theme_name, const std::string& font ) { + if( theme_name.empty() ) + return; // tree - GtkTreeView* treeview = GTK_TREE_VIEW(lookup_widget(g_main_rc_window, "main_themelist")); - GtkTreeModel* model = gtk_tree_view_get_model(treeview); - GtkTreeSelection* selection = gtk_tree_view_get_selection(treeview); + GtkTreeView* treeview = GTK_TREE_VIEW( lookup_widget( g_main_rc_window, "main_themelist" ) ); + GtkTreeModel* model = gtk_tree_view_get_model( treeview ); + GtkTreeSelection* selection = gtk_tree_view_get_selection( treeview ); GtkTreeIter iter; - gtk_tree_model_get_iter_first(model, &iter); - - while(gtk_tree_model_iter_next(model, &iter)) { + gtk_tree_model_get_iter_first( model, &iter ); + while( gtk_tree_model_iter_next( model, &iter ) ) { gchar* text; - gtk_tree_model_get (model, &iter, 0, &text, -1); - std::string theme = gchar_to_string(text); + gtk_tree_model_get( model, &iter, 0, &text, -1 ); + std::string theme = gchar_to_string( text ); - if (theme_name == theme) { - gtk_tree_selection_select_iter(selection, &iter); + if( theme_name == theme ) { + gtk_tree_selection_select_iter( selection, &iter ); break; } - } - // font - if (font != "") { - GtkWidget* fontbutton = lookup_widget(g_main_rc_window, "main_font_selector_button"); - //gtk_font_button_set_font_name(GTK_FONT_BUTTON(fontbutton), get_current_font().c_str()); - gtk_font_button_set_font_name(GTK_FONT_BUTTON(fontbutton), font.c_str()); + if( font != "" ) { + GtkWidget* fontbutton = lookup_widget( g_main_rc_window, "main_font_selector_button" ); + //gtk_font_button_set_font_name( GTK_FONT_BUTTON( fontbutton ), get_current_font().c_str() ); + gtk_font_button_set_font_name( GTK_FONT_BUTTON( fontbutton ), font.c_str() ); } - - apply_theme(get_selected_theme(), get_selected_font()); - + apply_theme( get_selected_theme(), get_selected_font() ); } - - - -void apply_theme(const std::string& theme_name, const std::string& font) -{ - +void apply_theme( const std::string& theme_name, const std::string& font ) { std::stringstream strstr; strstr << "gtk-theme-name = \"" << theme_name << "\"\n"; - if (font != "") + if( font != "" ) strstr << "style \"user-font\"\n{\nfont_name=\"" << font << "\"\n}\nwidget_class \"*\" style \"user-font\""; //strstr << "\ngtk-menu-popup-delay = 10"; // std::cout << strstr.str() << "\n\n\n"; std::fstream f; - f.open(s_rc_file.c_str(), std::ios::out); - f << strstr.str(); + f.open( s_rc_file.c_str(), std::ios::out ); + f << strstr.str(); f.close(); - GtkSettings* settings = gtk_settings_get_default(); - gtk_rc_reparse_all_for_settings (settings, true); -// gtk_rc_parse_string(strstr.str().c_str()); -// gtk_rc_parse("/root/.gtk-tmp"); -// gtk_rc_reset_styles(settings); + gtk_rc_reparse_all_for_settings( settings, true ); +// gtk_rc_parse_string( strstr.str().c_str() ); +// gtk_rc_parse( "/root/.gtk-tmp" ); +// gtk_rc_reset_styles( settings ); //unlink(s_rc_file.c_str()); - while (gtk_events_pending()) + while( gtk_events_pending() ) gtk_main_iteration(); - - }