changeset 2680:e540e041b34b

add basic configuration gui
author Tomasz Mon <desowin@gmail.com>
date Wed, 04 Jun 2008 14:27:05 +0200
parents fb5375e86a03
children b75948ed2fbb
files src/skins/plugin.c src/skins/skins_cfg.c src/skins/skins_cfg.h
diffstat 3 files changed, 187 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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 <audacious/i18n.h>
 #include <libintl.h>
 
@@ -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_("<b>_Fonts</b>"), 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_("<b>_Miscellaneous</b>"), 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 (_("<b>_Skin</b>"));
+    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;
 }
 
--- 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,
--- 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;