# HG changeset patch # User Tomasz Mon # Date 1212582425 -7200 # Node ID e540e041b34b2170290608d1225ecd466fb5a5ba # Parent fb5375e86a03251393f2b67f48dc3cc8472d9e64 add basic configuration gui diff -r fb5375e86a03 -r e540e041b34b src/skins/plugin.c --- a/src/skins/plugin.c Sun Jun 01 17:12:08 2008 +0200 +++ b/src/skins/plugin.c Wed Jun 04 14:27:05 2008 +0200 @@ -27,6 +27,9 @@ #include "icons-stock.h" #include "ui_main_evlisteners.h" #include "ui_playlist_evlisteners.h" +#include "ui_skinned_textbox.h" +#include "ui_skinned_playlist.h" +#include "ui_skinselector.h" #include #include @@ -45,9 +48,12 @@ GeneralPlugin *skins_gplist[] = { &skins_gp, NULL }; SIMPLE_GENERAL_PLUGIN(skins, skins_gplist); -GtkWidget *mainwin; gboolean plugin_is_active = FALSE; + +GtkWidget *skin_view; +GtkWidget *skin_refresh_button; + static void skins_free_paths(void) { int i; @@ -121,8 +127,188 @@ return; } +static void +playlist_show_pl_separator_numbers_cb() +{ + playlistwin_update_list(aud_playlist_get_active()); +} + +static void +mainwin_font_set_cb() +{ + ui_skinned_textbox_set_xfont(mainwin_info, !config.mainwin_use_bitmapfont, config.mainwin_font); +} + +static void +playlist_font_set_cb() +{ + AUDDBG("Attempt to set font \"%s\"\n", config.playlist_font); + ui_skinned_playlist_set_font(config.playlist_font); + playlistwin_set_sinfo_font(config.playlist_font); /* propagate font setting to playlistwin_sinfo */ + playlistwin_update_list(aud_playlist_get_active()); +} + +static void +bitmap_fonts_cb() +{ + ui_skinned_textbox_set_xfont(mainwin_info, !config.mainwin_use_bitmapfont, config.mainwin_font); + playlistwin_set_sinfo_font(config.playlist_font); + + if (config.playlist_shaded) { + playlistwin_update_list(aud_playlist_get_active()); + ui_skinned_window_draw_all(playlistwin); + } +} + +static void +show_wm_decorations_cb() +{ + gtk_window_set_decorated(GTK_WINDOW(mainwin), config.show_wm_decorations); + gtk_window_set_decorated(GTK_WINDOW(playlistwin), config.show_wm_decorations); + gtk_window_set_decorated(GTK_WINDOW(equalizerwin), config.show_wm_decorations); +} + +static PreferencesWidget appearance_misc_widgets[] = { + {WIDGET_LABEL, N_("_Fonts"), NULL, NULL, NULL, FALSE}, + {WIDGET_FONT_BTN, N_("_Player:"), &config.mainwin_font, G_CALLBACK(mainwin_font_set_cb), N_("Select main player window font:"), FALSE}, + {WIDGET_FONT_BTN, N_("_Playlist:"), &config.playlist_font, G_CALLBACK(playlist_font_set_cb), N_("Select playlist font:"), FALSE}, + {WIDGET_CHK_BTN, N_("Use Bitmap fonts if available"), &config.mainwin_use_bitmapfont, G_CALLBACK(bitmap_fonts_cb), N_("Use bitmap fonts if they are available. Bitmap fonts do not support Unicode strings."), FALSE}, + {WIDGET_LABEL, N_("_Miscellaneous"), NULL, NULL, NULL, FALSE}, + {WIDGET_CHK_BTN, N_("Show track numbers in playlist"), &config.show_numbers_in_pl, + G_CALLBACK(playlist_show_pl_separator_numbers_cb), NULL, FALSE}, + {WIDGET_CHK_BTN, N_("Show separators in playlist"), &config.show_separator_in_pl, + G_CALLBACK(playlist_show_pl_separator_numbers_cb), NULL, FALSE}, + {WIDGET_CHK_BTN, N_("Show window manager decoration"), &config.show_wm_decorations, G_CALLBACK(show_wm_decorations_cb), + N_("This enables the window manager to show decorations for windows."), FALSE}, + {WIDGET_CHK_BTN, N_("Use two-way text scroller"), &config.twoway_scroll, NULL, + N_("If selected, the file information text in the main window will scroll back and forth. If not selected, the text will only scroll in one direction."), FALSE}, + {WIDGET_CHK_BTN, N_("Disable inline gtk theme"), &config.disable_inline_gtk, NULL, NULL, FALSE}, + {WIDGET_CHK_BTN, N_("Allow loading incomplete skins"), &config.allow_broken_skins, NULL, + N_("If selected, audacious won't refuse loading broken skins. Use only if your favourite skin doesn't work"), FALSE}, +}; + +static gboolean +on_skin_view_realize(GtkTreeView * treeview, + gpointer data) +{ + skin_view_realize(treeview); + skin_view_update(GTK_TREE_VIEW(skin_view), GTK_WIDGET(skin_refresh_button)); + + return TRUE; +} void skins_configure(void) { + static GtkWidget *cfg_win = NULL; + GtkWidget *appearance_page_vbox; + GtkWidget *vbox37; + GtkWidget *vbox38; + GtkWidget *hbox12; + GtkWidget *alignment94; + GtkWidget *hbox13; + GtkWidget *label103; + GtkWidget *colorspace_button; + GtkWidget *image11; + GtkWidget *image12; + GtkWidget *alignment95; + GtkWidget *skin_view_scrolled_window; + + if (cfg_win != NULL) { + gtk_window_present(GTK_WINDOW(cfg_win)); + return; + } + + cfg_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_type_hint(GTK_WINDOW(cfg_win), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_title(GTK_WINDOW(cfg_win), _("Audacious Skinned GUI Configuration")); + gtk_container_set_border_width(GTK_CONTAINER(cfg_win), 10); + g_signal_connect(G_OBJECT(cfg_win), "destroy" , + G_CALLBACK(gtk_widget_destroyed), &cfg_win); + gtk_widget_set_size_request(cfg_win, 500, -1); + + appearance_page_vbox = gtk_vbox_new (FALSE, 0); + gtk_container_add(GTK_CONTAINER(cfg_win), appearance_page_vbox); + + vbox37 = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (appearance_page_vbox), vbox37, TRUE, TRUE, 0); + + vbox38 = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox37), vbox38, FALSE, TRUE, 0); + + hbox12 = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox38), hbox12, TRUE, TRUE, 0); + + alignment94 = gtk_alignment_new (0.5, 0.5, 1, 1); + gtk_box_pack_start (GTK_BOX (hbox12), alignment94, TRUE, TRUE, 0); + gtk_alignment_set_padding (GTK_ALIGNMENT (alignment94), 0, 4, 0, 0); + + hbox13 = gtk_hbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (alignment94), hbox13); + + label103 = gtk_label_new_with_mnemonic (_("_Skin")); + gtk_box_pack_start (GTK_BOX (hbox13), label103, TRUE, TRUE, 0); + gtk_label_set_use_markup (GTK_LABEL (label103), TRUE); + gtk_misc_set_alignment (GTK_MISC (label103), 0, 0); + + colorspace_button = gtk_button_new (); + gtk_box_pack_start (GTK_BOX (hbox13), colorspace_button, FALSE, FALSE, 0); + + image11 = gtk_image_new_from_stock ("gtk-properties", GTK_ICON_SIZE_BUTTON); + gtk_container_add (GTK_CONTAINER (colorspace_button), image11); + + skin_refresh_button = gtk_button_new (); + gtk_box_pack_start (GTK_BOX (hbox13), skin_refresh_button, FALSE, FALSE, 0); + GTK_WIDGET_UNSET_FLAGS (skin_refresh_button, GTK_CAN_FOCUS); + gtk_button_set_relief (GTK_BUTTON (skin_refresh_button), GTK_RELIEF_HALF); + gtk_button_set_focus_on_click (GTK_BUTTON (skin_refresh_button), FALSE); + + image12 = gtk_image_new_from_stock ("gtk-refresh", GTK_ICON_SIZE_BUTTON); + gtk_container_add (GTK_CONTAINER (skin_refresh_button), image12); + + alignment95 = gtk_alignment_new (0.5, 0.5, 1, 1); + gtk_box_pack_start (GTK_BOX (vbox38), alignment95, TRUE, TRUE, 0); + gtk_widget_set_size_request (alignment95, -1, 172); + gtk_alignment_set_padding (GTK_ALIGNMENT (alignment95), 0, 0, 12, 0); + + skin_view_scrolled_window = gtk_scrolled_window_new (NULL, NULL); + gtk_container_add (GTK_CONTAINER (alignment95), skin_view_scrolled_window); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (skin_view_scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (skin_view_scrolled_window), GTK_SHADOW_IN); + + skin_view = gtk_tree_view_new (); + gtk_container_add (GTK_CONTAINER (skin_view_scrolled_window), skin_view); + gtk_widget_set_size_request (skin_view, -1, 100); + + aud_create_widgets(GTK_BOX(vbox37), appearance_misc_widgets, G_N_ELEMENTS(appearance_misc_widgets)); + gtk_widget_show_all(appearance_page_vbox); + +#if 0 + g_signal_connect(G_OBJECT(colorspace_button), "clicked", + G_CALLBACK(on_colorize_button_clicked), + NULL); + + g_signal_connect(skin_view, "drag-data-received", + G_CALLBACK(on_skin_view_drag_data_received), + NULL); + aud_drag_dest_set(skin_view); + + g_signal_connect(mainwin, "drag-data-received", + G_CALLBACK(mainwin_drag_data_received), + skin_view); + + g_signal_connect(skin_refresh_button, "clicked", + G_CALLBACK(on_skin_refresh_button_clicked), + NULL); + + g_signal_connect_swapped(G_OBJECT(skin_refresh_button), "clicked", + G_CALLBACK(on_skin_refresh_button_clicked), + prefswin); +#endif + g_signal_connect_after(G_OBJECT(skin_view), "realize", + G_CALLBACK(on_skin_view_realize), + NULL); + + gtk_window_present(GTK_WINDOW(cfg_win)); + return; } diff -r fb5375e86a03 -r e540e041b34b src/skins/skins_cfg.c --- a/src/skins/skins_cfg.c Sun Jun 01 17:12:08 2008 +0200 +++ b/src/skins/skins_cfg.c Wed Jun 04 14:27:05 2008 +0200 @@ -83,7 +83,6 @@ .twoway_scroll = TRUE, /* use back and forth scroll */ .mainwin_use_bitmapfont = TRUE, .eq_scaled_linked = TRUE, - .use_xmms_style_fileselector = FALSE, .show_numbers_in_pl = TRUE, .show_separator_in_pl = TRUE, .playlist_font = NULL, diff -r fb5375e86a03 -r e540e041b34b src/skins/skins_cfg.h --- a/src/skins/skins_cfg.h Sun Jun 01 17:12:08 2008 +0200 +++ b/src/skins/skins_cfg.h Wed Jun 04 14:27:05 2008 +0200 @@ -72,7 +72,6 @@ gboolean warn_about_broken_gtk_engines; gboolean mainwin_use_bitmapfont; gboolean eq_scaled_linked; - gboolean use_xmms_style_fileselector; gboolean show_numbers_in_pl, show_separator_in_pl; gchar *playlist_font, *mainwin_font; gboolean show_filepopup_for_tuple;