# HG changeset patch # User Tomasz Mon # Date 1211290607 -7200 # Node ID 9b4dfc007b87c7765bd737a2bb998230ddb47b53 # Parent 6a0755e8c1b3443cfc0dc6e2a1ef128c27af240c use more local configuration options diff -r 6a0755e8c1b3 -r 9b4dfc007b87 src/skins/plugin.c --- a/src/skins/plugin.c Tue May 20 14:37:50 2008 +0200 +++ b/src/skins/plugin.c Tue May 20 15:36:47 2008 +0200 @@ -40,15 +40,13 @@ GeneralPlugin *skins_gplist[] = { &skins_gp, NULL }; SIMPLE_GENERAL_PLUGIN(skins, skins_gplist); GtkWidget *mainwin; -skins_cfg_t * config = NULL; gboolean plugin_is_active = FALSE; void skins_init(void) { plugin_is_active = TRUE; g_log_set_handler(NULL, G_LOG_LEVEL_WARNING, g_log_default_handler, NULL); - config = skins_cfg_new(); - skins_cfg_load(config); + skins_cfg_load(); gint width, height; @@ -58,7 +56,7 @@ gtk_window_set_resizable(GTK_WINDOW(mainwin), FALSE); - init_skins(config->skin); + init_skins(config.skin); width = aud_active_skin->properties.mainwin_width; height = aud_active_skin->properties.mainwin_height; @@ -70,11 +68,7 @@ void skins_cleanup(void) { if (plugin_is_active == TRUE) { - - if (config != NULL) { - skins_cfg_delete(config); - config = NULL; - } + skins_cfg_free(); gtk_widget_destroy(mainwin); skin_free(aud_active_skin); aud_active_skin = NULL; diff -r 6a0755e8c1b3 -r 9b4dfc007b87 src/skins/plugin.h --- a/src/skins/plugin.h Tue May 20 14:37:50 2008 +0200 +++ b/src/skins/plugin.h Tue May 20 15:36:47 2008 +0200 @@ -26,7 +26,6 @@ #include "skins_cfg.h" extern GtkWidget *mainwin; -extern skins_cfg_t *config; void skins_init(void); void skins_cleanup(void); diff -r 6a0755e8c1b3 -r 9b4dfc007b87 src/skins/skins_cfg.c --- a/src/skins/skins_cfg.c Tue May 20 14:37:50 2008 +0200 +++ b/src/skins/skins_cfg.c Tue May 20 15:36:47 2008 +0200 @@ -25,23 +25,49 @@ #include #include -skins_cfg_t * skins_cfg_new(void) { - skins_cfg_t *cfg = g_malloc0(sizeof(skins_cfg_t)); - cfg->set = FALSE; - cfg->skin = NULL; - return cfg; +skins_cfg_t config; + +skins_cfg_t skins_default_config = { + .scaled = FALSE, + .always_on_top = FALSE, + .scale_factor = 2.0, + .always_show_cb = TRUE, + .skin = NULL, + .player_shaded = FALSE, + .equalizer_shaded = FALSE, + .playlist_shaded = FALSE, + .dim_titlebar = TRUE, + .show_wm_decorations = FALSE, + .easy_move = TRUE, +}; + +typedef struct skins_cfg_boolent_t { + char const *be_vname; + gboolean *be_vloc; + gboolean be_wrt; +} skins_cfg_boolent; + +static skins_cfg_boolent skins_boolents[] = { + {"always_show_cb", &config.always_show_cb, TRUE}, + {"always_on_top", &config.always_on_top, TRUE}, + {"always_show_cb", &config.always_show_cb, TRUE}, + {"scaled", &config.scaled, TRUE}, + {"player_shaded", &config.player_shaded, TRUE}, + {"equalizer_shaded", &config.equalizer_shaded, TRUE}, + {"playlist_shaded", &config.playlist_shaded, TRUE}, + {"dim_titlebar", &config.dim_titlebar, TRUE}, + {"show_wm_decorations", &config.show_wm_decorations, TRUE}, + {"easy_move", &config.easy_move, TRUE}, +}; + +static gint ncfgbent = G_N_ELEMENTS(skins_boolents); + +void skins_cfg_free() { + if (config.skin) { g_free(config.skin); config.skin = NULL; } } - -void skins_cfg_delete(skins_cfg_t * cfg) { - if (cfg != NULL) { - if (cfg->skin) g_free(cfg->skin); - g_free(cfg); - } -} - -gint skins_cfg_load(skins_cfg_t * cfg) { - mcs_handle_t *cfgfile = aud_cfg_db_open(); +void skins_cfg_load() { + mcs_handle_t *cfgfile = aud_cfg_db_open(); /* if (!aud_cfg_db_get_int(cfgfile, "skins", "field_name", &(cfg->where))) cfg->where = default value @@ -50,36 +76,29 @@ if (!aud_cfg_db_get_bool(cfgfile, "skins", "field_name", &(cfg->where))) cfg->where = FALSE / TRUE; */ - - if (!aud_cfg_db_get_string(cfgfile, "skins", "skin", &(cfg->skin))) - cfg->skin = g_strdup(BMP_DEFAULT_SKIN_PATH); - - if (!aud_cfg_db_get_bool(cfgfile, "skins", "scaled", &(cfg->scaled))) - cfg->scaled = FALSE; - - if (!aud_cfg_db_get_bool(cfgfile, "skins", "always_on_top", &(cfg->always_on_top))) - cfg->always_on_top = FALSE; + + memcpy(&config, &skins_default_config, sizeof(skins_cfg_t)); + int i; + + for (i = 0; i < ncfgbent; ++i) { + aud_cfg_db_get_bool(cfgfile, "skins", + skins_boolents[i].be_vname, + skins_boolents[i].be_vloc); + } - if (!aud_cfg_db_get_float(cfgfile, "skins", "scale_factor", &(cfg->scale_factor))) - cfg->scale_factor = 2.0; - - if (!aud_cfg_db_get_bool(cfgfile, "skins", "always_show_cb", &(cfg->always_show_cb))) - cfg->always_show_cb = TRUE; + if (!aud_cfg_db_get_string(cfgfile, "skins", "skin", &(config.skin))) + config.skin = g_strdup(BMP_DEFAULT_SKIN_PATH); - aud_cfg_db_close( cfgfile ); + if (!aud_cfg_db_get_float(cfgfile, "skins", "scale_factor", &(config.scale_factor))) + config.scale_factor = 2.0; - cfg->set = TRUE; - - return 0; + aud_cfg_db_close(cfgfile); } -gint skins_cfg_save(skins_cfg_t * cfg) { +void skins_cfg_save(skins_cfg_t * cfg) { mcs_handle_t *cfgfile = aud_cfg_db_open(); - if (cfg->set == FALSE) - return -1; - /* aud_cfg_db_set_int(cfgfile, "skins", "field_name", cfg->where); aud_cfg_db_set_string(cfgfile, "skins", "field_name", cfg->where); @@ -87,7 +106,13 @@ */ aud_cfg_db_set_string(cfgfile, "skins", "skin", cfg->skin); - aud_cfg_db_close(cfgfile); + int i; - return 0; + for (i = 0; i < ncfgbent; ++i) + if (skins_boolents[i].be_wrt) + aud_cfg_db_set_bool(cfgfile, "skins", + skins_boolents[i].be_vname, + *skins_boolents[i].be_vloc); + + aud_cfg_db_close(cfgfile); } diff -r 6a0755e8c1b3 -r 9b4dfc007b87 src/skins/skins_cfg.h --- a/src/skins/skins_cfg.h Tue May 20 14:37:50 2008 +0200 +++ b/src/skins/skins_cfg.h Tue May 20 15:36:47 2008 +0200 @@ -25,19 +25,22 @@ typedef struct { - gboolean set; - gboolean scaled; - gboolean always_on_top; - gfloat scale_factor; - gboolean always_show_cb; - gchar *skin; -} -skins_cfg_t; + gboolean scaled; + gboolean always_on_top; + gfloat scale_factor; + gboolean always_show_cb; + gchar *skin; + gboolean player_shaded, equalizer_shaded, playlist_shaded; + gboolean dim_titlebar; + gboolean show_wm_decorations; + gboolean easy_move; +} skins_cfg_t; +extern skins_cfg_t config; skins_cfg_t * skins_cfg_new(void); -void skins_cfg_delete(skins_cfg_t * cfg); -gint skins_cfg_load(skins_cfg_t * cfg); -gint skins_cfg_save(skins_cfg_t * cfg); +void skins_cfg_free(); +void skins_cfg_load(); +void skins_cfg_save(); #endif diff -r 6a0755e8c1b3 -r 9b4dfc007b87 src/skins/ui_skinned_menurow.c --- a/src/skins/ui_skinned_menurow.c Tue May 20 14:37:50 2008 +0200 +++ b/src/skins/ui_skinned_menurow.c Tue May 20 15:36:47 2008 +0200 @@ -114,8 +114,8 @@ } static void ui_skinned_menurow_init(UiSkinnedMenurow *menurow) { - menurow->scale_selected = config->scaled; - menurow->always_selected = config->always_on_top; + menurow->scale_selected = config.scaled; + menurow->always_selected = config.always_on_top; } GtkWidget* ui_skinned_menurow_new(GtkWidget *fixed, gint x, gint y, gint nx, gint ny, gint sx, gint sy, SkinPixmapId si) { @@ -186,21 +186,21 @@ static void ui_skinned_menurow_size_request(GtkWidget *widget, GtkRequisition *requisition) { UiSkinnedMenurow *menurow = UI_SKINNED_MENUROW(widget); - requisition->width = menurow->width*(menurow->scaled ? config->scale_factor : 1); - requisition->height = menurow->height*(menurow->scaled ? config->scale_factor : 1); + requisition->width = menurow->width*(menurow->scaled ? config.scale_factor : 1); + requisition->height = menurow->height*(menurow->scaled ? config.scale_factor : 1); } static void ui_skinned_menurow_size_allocate(GtkWidget *widget, GtkAllocation *allocation) { UiSkinnedMenurow *menurow = UI_SKINNED_MENUROW (widget); widget->allocation = *allocation; - widget->allocation.x *= (menurow->scaled ? config->scale_factor : 1); - widget->allocation.y *= (menurow->scaled ? config->scale_factor : 1); + widget->allocation.x *= (menurow->scaled ? config.scale_factor : 1); + widget->allocation.y *= (menurow->scaled ? config.scale_factor : 1); if (GTK_WIDGET_REALIZED (widget)) gdk_window_move_resize(widget->window, widget->allocation.x, widget->allocation.y, allocation->width, allocation->height); - menurow->x = widget->allocation.x/(menurow->scaled ? config->scale_factor : 1); - menurow->y = widget->allocation.y/(menurow->scaled ? config->scale_factor : 1); + menurow->x = widget->allocation.x/(menurow->scaled ? config.scale_factor : 1); + menurow->y = widget->allocation.y/(menurow->scaled ? config.scale_factor : 1); } static gboolean ui_skinned_menurow_expose(GtkWidget *widget, GdkEventExpose *event) { @@ -215,7 +215,7 @@ obj = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, menurow->width, menurow->height); if (menurow->selected == MENUROW_NONE) { - if (config->always_show_cb || menurow->pushed) + if (config.always_show_cb || menurow->pushed) skin_draw_pixbuf(widget, aud_active_skin, obj, menurow->skin_index, menurow->nx, menurow->ny, 0, 0, 8, 43); else @@ -227,7 +227,7 @@ menurow->sx + ((menurow->selected - 1) * 8), menurow->sy, 0, 0, 8, 43); } - if (config->always_show_cb || menurow->pushed) { + if (config.always_show_cb || menurow->pushed) { if (menurow->always_selected) skin_draw_pixbuf(widget, aud_active_skin, obj, menurow->skin_index, menurow->sx + 8, menurow->sy + 10, 0, 10, 8, 8); @@ -246,8 +246,8 @@ static MenuRowItem menurow_find_selected(UiSkinnedMenurow * mr, gint x, gint y) { MenuRowItem ret = MENUROW_NONE; - x = x/(mr->scaled ? config->scale_factor : 1); - y = y/(mr->scaled ? config->scale_factor : 1); + x = x/(mr->scaled ? config.scale_factor : 1); + y = y/(mr->scaled ? config.scale_factor : 1); if (x > 0 && x < 8) { if (y >= 0 && y <= 10) ret = MENUROW_OPTIONS; @@ -325,8 +325,8 @@ GtkWidget *widget = GTK_WIDGET (menurow); menurow->scaled = !menurow->scaled; - gtk_widget_set_size_request(widget, menurow->width* (menurow->scaled ? config->scale_factor : 1), - menurow->height * (menurow->scaled ? config->scale_factor : 1)); + gtk_widget_set_size_request(widget, menurow->width* (menurow->scaled ? config.scale_factor : 1), + menurow->height * (menurow->scaled ? config.scale_factor : 1)); gtk_widget_queue_draw(GTK_WIDGET(menurow)); } diff -r 6a0755e8c1b3 -r 9b4dfc007b87 src/skins/ui_skinned_window.c --- a/src/skins/ui_skinned_window.c Tue May 20 14:37:50 2008 +0200 +++ b/src/skins/ui_skinned_window.c Tue May 20 15:36:47 2008 +0200 @@ -20,6 +20,7 @@ #include "platform/smartinclude.h" #include "ui_skin.h" +#include "skins_cfg.h" #include #include @@ -71,11 +72,11 @@ SkinnedWindow *window = SKINNED_WINDOW(widget); if (window->type == WINDOW_MAIN) - gtk_widget_shape_combine_mask(widget, skin_get_mask(aud_active_skin, SKIN_MASK_MAIN + aud_cfg->player_shaded), 0, 0); + gtk_widget_shape_combine_mask(widget, skin_get_mask(aud_active_skin, SKIN_MASK_MAIN + config.player_shaded), 0, 0); else if (window->type == WINDOW_EQ) - gtk_widget_shape_combine_mask(widget, skin_get_mask(aud_active_skin, SKIN_MASK_EQ + aud_cfg->equalizer_shaded), 0, 0); + gtk_widget_shape_combine_mask(widget, skin_get_mask(aud_active_skin, SKIN_MASK_EQ + config.equalizer_shaded), 0, 0); - gtk_window_set_keep_above(GTK_WINDOW(widget), aud_cfg->always_on_top); + gtk_window_set_keep_above(GTK_WINDOW(widget), config.always_on_top); } static gboolean @@ -102,7 +103,7 @@ static gboolean ui_skinned_window_button_press(GtkWidget *widget, GdkEventButton *event) { if (event->button == 1 && event->type == GDK_BUTTON_PRESS && - (aud_cfg->easy_move || aud_cfg->equalizer_shaded || (event->y / aud_cfg->scale_factor) < 14)) { + (config.easy_move || config.equalizer_shaded || (event->y / config.scale_factor) < 14)) { dock_move_press(get_dock_window_list(), GTK_WINDOW(widget), event, SKINNED_WINDOW(widget)->type == WINDOW_MAIN ? TRUE : FALSE); } @@ -129,8 +130,8 @@ height = aud_active_skin->properties.mainwin_height; break; case WINDOW_EQ: - width = 275 * (aud_cfg->scaled ? aud_cfg->scale_factor : 1); - height = 116 * (aud_cfg->scaled ? aud_cfg->scale_factor : 1) ; + width = 275 * (config.scaled ? config.scale_factor : 1); + height = 116 * (config.scaled ? config.scale_factor : 1) ; break; case WINDOW_PLAYLIST: #if 0 @@ -148,25 +149,25 @@ switch (window->type) { case WINDOW_MAIN: skin_draw_pixbuf(widget, aud_active_skin, obj,SKIN_MAIN, 0, 0, 0, 0, width, height); - skin_draw_mainwin_titlebar(aud_active_skin, obj, aud_cfg->player_shaded, focus || !aud_cfg->dim_titlebar); + skin_draw_mainwin_titlebar(aud_active_skin, obj, config.player_shaded, focus || !aud_cfg->dim_titlebar); break; case WINDOW_EQ: skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_EQMAIN, 0, 0, 0, 0, width, height); - if (focus || !aud_cfg->dim_titlebar) { - if (!aud_cfg->equalizer_shaded) + if (focus || !config.dim_titlebar) { + if (!config.equalizer_shaded) skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_EQMAIN, 0, 134, 0, 0, width, 14); else skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_EQ_EX, 0, 0, 0, 0, width, 14); } else { - if (!aud_cfg->equalizer_shaded) + if (!config.equalizer_shaded) skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_EQMAIN, 0, 149, 0, 0, width, 14); else skin_draw_pixbuf(widget, aud_active_skin, obj, SKIN_EQ_EX, 0, 15, 0, 0, width, 14); } break; case WINDOW_PLAYLIST: - focus |= !aud_cfg->dim_titlebar; - if (aud_cfg->playlist_shaded) { + focus |= !config.dim_titlebar; + if (config.playlist_shaded) { skin_draw_playlistwin_shaded(aud_active_skin, obj, width, focus); } else { skin_draw_playlistwin_frame(aud_active_skin, obj, width, aud_cfg->playlist_height, focus); @@ -175,7 +176,7 @@ } ui_skinned_widget_draw(GTK_WIDGET(window), obj, width, height, - window->type != WINDOW_PLAYLIST && aud_cfg->scaled); + window->type != WINDOW_PLAYLIST && config.scaled); g_object_unref(obj); @@ -247,7 +248,7 @@ set_dock_window_list(dock_window_set_decorated(get_dock_window_list(), GTK_WINDOW(widget), - aud_cfg->show_wm_decorations)); + config.show_wm_decorations)); gtk_widget_set_app_paintable(GTK_WIDGET(widget), TRUE); gdk_window_set_back_pixmap(widget->window, NULL, FALSE); gtk_widget_shape_combine_mask(widget, NULL, 0, 0);