comparison src/skins/plugin.c @ 2675:4beebb0e82f8

add ui_skinselector
author Tomasz Mon <desowin@gmail.com>
date Sun, 01 Jun 2008 15:57:12 +0200
parents 7156fc000796
children 096aa996e4fa
comparison
equal deleted inserted replaced
2674:b84f2aca1675 2675:4beebb0e82f8
30 #include <audacious/i18n.h> 30 #include <audacious/i18n.h>
31 #include <libintl.h> 31 #include <libintl.h>
32 32
33 #define PACKAGE "audacious-plugins" 33 #define PACKAGE "audacious-plugins"
34 34
35 gchar *skins_paths[SKINS_PATH_COUNT] = {};
36
35 GeneralPlugin skins_gp = 37 GeneralPlugin skins_gp =
36 { 38 {
37 .description= "Audacious Skinned GUI", 39 .description= "Audacious Skinned GUI",
38 .init = skins_init, 40 .init = skins_init,
39 .about = skins_about, 41 .about = skins_about,
44 GeneralPlugin *skins_gplist[] = { &skins_gp, NULL }; 46 GeneralPlugin *skins_gplist[] = { &skins_gp, NULL };
45 SIMPLE_GENERAL_PLUGIN(skins, skins_gplist); 47 SIMPLE_GENERAL_PLUGIN(skins, skins_gplist);
46 GtkWidget *mainwin; 48 GtkWidget *mainwin;
47 gboolean plugin_is_active = FALSE; 49 gboolean plugin_is_active = FALSE;
48 50
51 static void skins_free_paths(void) {
52 int i;
53
54 for (i = 0; i < BMP_PATH_COUNT; i++) {
55 g_free(skins_paths[i]);
56 skins_paths[i] = 0;
57 }
58 }
59
60 static void skins_init_paths() {
61 char *xdg_data_home;
62 char *xdg_cache_home;
63
64 xdg_data_home = (getenv("XDG_DATA_HOME") == NULL
65 ? g_build_filename(g_get_home_dir(), ".local", "share", NULL)
66 : g_strdup(getenv("XDG_DATA_HOME")));
67 xdg_cache_home = (getenv("XDG_CACHE_HOME") == NULL
68 ? g_build_filename(g_get_home_dir(), ".cache", NULL)
69 : g_strdup(getenv("XDG_CACHE_HOME")));
70
71 skins_paths[SKINS_PATH_USER_SKIN_DIR] =
72 g_build_filename(xdg_data_home, "audacious", "Skins", NULL);
73 skins_paths[SKINS_PATH_SKIN_THUMB_DIR] =
74 g_build_filename(xdg_cache_home, "audacious", "thumbs", NULL);
75
76 g_free(xdg_data_home);
77 g_free(xdg_cache_home);
78 }
79
49 void skins_init(void) { 80 void skins_init(void) {
50 plugin_is_active = TRUE; 81 plugin_is_active = TRUE;
51 g_log_set_handler(NULL, G_LOG_LEVEL_WARNING, g_log_default_handler, NULL); 82 g_log_set_handler(NULL, G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);
52 83
84 skins_init_paths();
53 skins_cfg_load(); 85 skins_cfg_load();
54 86
55 register_aud_stock_icons(); 87 register_aud_stock_icons();
56 ui_manager_init(); 88 ui_manager_init();
57 ui_manager_create_menus(); 89 ui_manager_create_menus();
67 } 99 }
68 100
69 void skins_cleanup(void) { 101 void skins_cleanup(void) {
70 if (plugin_is_active == TRUE) { 102 if (plugin_is_active == TRUE) {
71 skins_cfg_save(); 103 skins_cfg_save();
104 skins_free_paths();
72 ui_main_evlistener_dissociate(); 105 ui_main_evlistener_dissociate();
73 ui_playlist_evlistener_dissociate(); 106 ui_playlist_evlistener_dissociate();
74 skins_cfg_free(); 107 skins_cfg_free();
75 gtk_widget_destroy(mainwin); 108 gtk_widget_destroy(mainwin);
76 gtk_widget_destroy(equalizerwin); 109 gtk_widget_destroy(equalizerwin);