annotate Plugins/Visualization/libvisual-proxy/lv_bmp_config.c @ 316:950f104f2e11 trunk

[svn] Fix spacing in --help output, patch by Mikachu.
author chainsaw
date Sun, 18 Dec 2005 06:41:22 -0800
parents 31725d73a697
children 45a0d9a765be
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1 #include <stdlib.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
2 #include <string.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
3 #include <gtk/gtk.h>
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
4 #include <libaudacious/configfile.h>
314
31725d73a697 [svn] Squash the implicit declaration warnings by including the correct util.h
chainsaw
parents: 313
diff changeset
5 #include <libaudacious/util.h>
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
6 #include <libvisual/libvisual.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
7 #include <glib/gi18n.h>
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
8
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
9 #include "config.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
10
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
11 #include "lv_bmp_config.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
12 #include "config_gui.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
13
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
14 #define CONFIG_DEFAULT_ACTOR_PLUGIN "infinite"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
15 #define CONFIG_DEFAULT_INPUT_PLUGIN "esd"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
16 #define CONFIG_DEFAULT_MORPH_PLUGIN "alphablend"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
17
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
18 static const Options default_options = { NULL, NULL, NULL, 320, 200, 30, 24, FALSE, FALSE, FALSE, TRUE, FALSE };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
19 static Options options = { NULL, NULL, NULL, -1, -1, -1, -1, FALSE, FALSE, FALSE, TRUE, FALSE };
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
20 static ConfigWin *config_win = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
21
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
22 static gboolean options_loaded = FALSE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
23 static gboolean fullscreen;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
24 static gboolean gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
25 static gboolean non_gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
26 static gboolean all_plugins_enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
27 static gboolean random_morph;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
28 static int fps;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
29
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
30 static gchar *actor_plugin_buffer = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
31
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
32 /* Table of GtkListItem's */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
33 static GHashTable *actor_plugin_table = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
34
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
35 /* List of gboolean's */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
36 static GHashTable *actor_plugin_enable_table = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
37
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
38 /* Lists of VisPluginRef's */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
39 static GSList *actor_plugins_gl = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
40 static GSList *actor_plugins_nongl = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
41
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
42 static VisPluginRef *current_actor = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
43
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
44 static char *morph_plugin = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
45 static char *morph_plugin_buffer = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
46 static GSList *morph_plugins_list = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
47
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
48 static void sync_options (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
49
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
50 static void config_win_load_actor_plugin_gl_list (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
51 static void config_win_load_actor_plugin_nongl_list (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
52
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
53 static int config_win_load_morph_plugin_list (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
54
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
55 static int load_actor_plugin_list (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
56 static int load_morph_plugin_list (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
57
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
58 static void load_actor_plugin_enable_table (ConfigFile *f);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
59
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
60 static void remove_boolean (gpointer key, gpointer value, gpointer data);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
62 static void config_win_set_defaults (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
63 static void config_win_connect_callbacks (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
64 static void config_visual_initialize (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
65
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
66 static gboolean read_config_file (ConfigFile *f);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
67
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
68 static void dummy (GtkWidget *widget, gpointer data);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
69
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
70 static void set_defaults (void);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
71
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
72
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
73 Options *lv_bmp_config_open ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
74 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
75 actor_plugin_buffer = g_malloc0 (OPTIONS_MAX_NAME_LEN);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
76 options.last_plugin = actor_plugin_buffer;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
77 morph_plugin_buffer = g_malloc0 (OPTIONS_MAX_NAME_LEN);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
78 options.icon_file = g_malloc0 (OPTIONS_MAX_ICON_PATH_LEN);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
79
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
80 config_visual_initialize ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
81
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
82 srand (time(NULL));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
83
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
84 load_actor_plugin_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
85
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
86 load_morph_plugin_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
87
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
88 return &options;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
89 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
90
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
91 int lv_bmp_config_close ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
92 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
93 if (actor_plugin_buffer != NULL)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
94 g_free (actor_plugin_buffer);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
95 if (morph_plugin_buffer != NULL)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
96 g_free (morph_plugin_buffer);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
97 if (options.icon_file != NULL)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
98 g_free (options.icon_file);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
99
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
100 if (actor_plugin_table) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
101 g_hash_table_destroy (actor_plugin_table);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
102 actor_plugin_table = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
103 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
104 if (actor_plugin_enable_table) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
105 g_hash_table_foreach (actor_plugin_enable_table, remove_boolean, NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
106 g_hash_table_destroy (actor_plugin_enable_table);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
107 actor_plugin_enable_table = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
108 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
109
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
110 if (actor_plugins_gl) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
111 g_slist_free (actor_plugins_gl);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
112 actor_plugins_gl = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
113 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
114 if (actor_plugins_nongl) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
115 g_slist_free (actor_plugins_nongl);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
116 actor_plugins_nongl = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
117 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
118 if (morph_plugins_list) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
119 g_slist_free (morph_plugins_list);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
120 morph_plugins_list = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
121 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
122
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
123 options_loaded = FALSE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
124
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
125 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
126 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
127
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
128 int lv_bmp_config_load_prefs ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
129 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
130 gchar *vstr;
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
131 ConfigFile *f;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
132 gboolean errors;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
133 gboolean must_create_entry;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
134 gboolean must_update;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
135 GtkWidget *msg;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
136
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
137 if ((f = xmms_cfg_open_default_file ()) == NULL)
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
138 return -1;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
139
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
140 errors = FALSE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
141 must_create_entry = FALSE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
142 must_update = FALSE;
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
143 if (xmms_cfg_read_string (f, "libvisual_bmp", "version", &vstr)) {
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
144 if (strcmp (vstr, VERSION) == 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
145 errors = read_config_file (f);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
146 if (errors)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
147 visual_log (VISUAL_LOG_INFO, "There are errors on config file");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
148 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
149 else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
150 must_update = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
151 g_free (vstr);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
152 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
153 must_create_entry = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
154 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
155
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
156 if (must_update || must_create_entry)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
157 set_defaults ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
158
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
159 load_actor_plugin_enable_table (f);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
160
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
161 xmms_cfg_free (f);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
162
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
163 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
164 * Set our local copies
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
165 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
166 if (!visual_morph_valid_by_name (morph_plugin_buffer)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
167 msg = xmms_show_message (PACKAGE_NAME,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
168 _("The morph plugin specified on the config\n"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
169 "file is not a valid morph plugin.\n"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
170 "We will use "CONFIG_DEFAULT_MORPH_PLUGIN
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
171 " morph plugin instead.\n"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
172 "If you want another one, please choose it\n"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
173 "on the configure dialog."),
314
31725d73a697 [svn] Squash the implicit declaration warnings by including the correct util.h
chainsaw
parents: 313
diff changeset
174 _("Accept"), TRUE, GTK_SIGNAL_FUNC(dummy), NULL);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
175 gtk_widget_show (msg);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
176 strcpy (morph_plugin_buffer, CONFIG_DEFAULT_MORPH_PLUGIN);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
177 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
178 options.morph_plugin = morph_plugin_buffer;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
179 morph_plugin = morph_plugin_buffer;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
180 random_morph = options.random_morph;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
181
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
182 fullscreen = options.fullscreen;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
183 fps = options.fps;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
184 gl_plugins_only = options.gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
185 non_gl_plugins_only = options.non_gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
186 all_plugins_enabled = options.all_plugins_enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
187
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
188 if (gl_plugins_only)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
189 visual_log (VISUAL_LOG_INFO, _("GL plugins only"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
190 else if (non_gl_plugins_only)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
191 visual_log (VISUAL_LOG_INFO, _("non GL plugins only"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
192 else if (all_plugins_enabled)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
193 visual_log (VISUAL_LOG_INFO, _("All plugins enabled"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
194 else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
195 visual_log (VISUAL_LOG_WARNING, "Cannot determine which kind of plugin to show");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
196
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
197 if (errors) {
257
256b3acc87d4 [svn] Properly report Audacious instead of XMMS or BMP in all places. Patch by laci; closes bug #379.
chainsaw
parents: 61
diff changeset
198 visual_log (VISUAL_LOG_INFO, _("LibVisual Audacious plugin: config file contain errors, fixing..."));
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
199 lv_bmp_config_save_prefs ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
200 } else if (must_update) {
257
256b3acc87d4 [svn] Properly report Audacious instead of XMMS or BMP in all places. Patch by laci; closes bug #379.
chainsaw
parents: 61
diff changeset
201 visual_log (VISUAL_LOG_INFO, _("LibVisual Audacious plugin: config file is from old version, updating..."));
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
202 lv_bmp_config_save_prefs ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
203 } else if (must_create_entry) {
257
256b3acc87d4 [svn] Properly report Audacious instead of XMMS or BMP in all places. Patch by laci; closes bug #379.
chainsaw
parents: 61
diff changeset
204 visual_log (VISUAL_LOG_INFO, _("LibVisual Audacious plugin: adding entry to config file..."));
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
205 lv_bmp_config_save_prefs ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
206 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
207
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
208 options_loaded = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
209
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
210 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
211 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
212
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
213 static void save_actor_enable_state (gpointer data, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
214 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
215 VisPluginRef *actor;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
216 ConfigFile *f;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
217 gboolean *enable;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
218
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
219 actor = data;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
220 f = user_data;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
221
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
222 visual_log_return_if_fail (actor != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
223 visual_log_return_if_fail (actor->info != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
224 visual_log_return_if_fail (f != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
225
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
226 enable = g_hash_table_lookup (actor_plugin_enable_table, actor->info->plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
227 if (!enable) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
228 visual_log (VISUAL_LOG_DEBUG, "enable == NULL for %s", actor->info->plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
229 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
230 }
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
231 xmms_cfg_write_boolean (f, "libvisual_bmp", actor->info->plugname, *enable);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
232 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
233
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
234 int lv_bmp_config_save_prefs ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
235 {
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
236 ConfigFile *f;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
237
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
238 if((f = xmms_cfg_open_default_file ()) == NULL)
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
239 f = xmms_cfg_new ();
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
240 if (f == NULL)
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
241 return -1;
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
242
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
243 xmms_cfg_write_string (f, "libvisual_bmp", "version", VERSION);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
244
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
245 if (options.last_plugin != NULL && (strlen(options.last_plugin) > 0))
314
31725d73a697 [svn] Squash the implicit declaration warnings by including the correct util.h
chainsaw
parents: 313
diff changeset
246 xmms_cfg_write_string (f, "libvisual_bmp", "last_plugin", GTK_SIGNAL_FUNC(options.last_plugin));
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
247 else
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
248 xmms_cfg_write_string (f, "libvisual_bmp", "last_plugin", CONFIG_DEFAULT_ACTOR_PLUGIN);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
249
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
250 if (options.morph_plugin != NULL && (strlen(options.morph_plugin) > 0))
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
251 xmms_cfg_write_string (f, "libvisual_bmp", "morph_plugin", options.morph_plugin);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
252 else
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
253 xmms_cfg_write_string (f, "libvisual_bmp", "morph_plugin", CONFIG_DEFAULT_MORPH_PLUGIN);
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
254 xmms_cfg_write_boolean (f, "libvisual_bmp", "random_morph", options.random_morph);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
255
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
256 if (options.icon_file != NULL && (strlen(options.icon_file) > 0))
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
257 xmms_cfg_write_string (f, "libvisual_bmp", "icon", options.icon_file);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
258
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
259 xmms_cfg_write_int (f, "libvisual_bmp", "width", options.width);
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
260 xmms_cfg_write_int (f, "libvisual_bmp", "height", options.height);
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
261 xmms_cfg_write_int (f, "libvisual_bmp", "color_depth", options.depth);
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
262 xmms_cfg_write_int (f, "libvisual_bmp", "fps", options.fps);
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
263 xmms_cfg_write_boolean (f, "libvisual_bmp", "fullscreen", options.fullscreen);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
264 if (options.gl_plugins_only)
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
265 xmms_cfg_write_string (f, "libvisual_bmp", "enabled_plugins", "gl_only");
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
266 else if (options.non_gl_plugins_only)
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
267 xmms_cfg_write_string (f, "libvisual_bmp", "enabled_plugins", "non_gl_only");
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
268 else if (options.all_plugins_enabled)
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
269 xmms_cfg_write_string (f, "libvisual_bmp", "enabled_plugins", "all");
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
270 else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
271 g_warning ("Inconsistency on config module");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
272
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
273 visual_log_return_val_if_fail (actor_plugins_gl != NULL, -1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
274
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
275 g_slist_foreach (actor_plugins_gl, save_actor_enable_state, f);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
276 g_slist_foreach (actor_plugins_nongl, save_actor_enable_state, f);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
277
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
278 xmms_cfg_write_default_file (f);
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
279 xmms_cfg_free (f);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
280
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
281 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
282 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
283
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
284 void lv_bmp_config_toggle_fullscreen (void)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
285 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
286 fullscreen = !fullscreen;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
287 options.fullscreen = !options.fullscreen;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
288 if (config_win != NULL)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
289 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->checkbutton_fullscreen),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
290 fullscreen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
291 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
292
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
293 const char *lv_bmp_config_get_prev_actor (void)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
294 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
295 const gchar *prev_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
296 gboolean *plugin_enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
297 int round;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
298
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
299 round = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
300 prev_plugin = options.last_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
301 do {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
302 prev_plugin = visual_actor_get_prev_by_name (prev_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
303 if (!prev_plugin) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
304 round++;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
305 continue;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
306 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
307 plugin_enabled = g_hash_table_lookup (actor_plugin_enable_table, prev_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
308 if (!plugin_enabled)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
309 continue;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
310 if (*plugin_enabled)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
311 return prev_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
312 } while (round < 2);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
313
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
314 return NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
315 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
316
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
317 const char *lv_bmp_config_get_next_actor (void)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
318 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
319 const gchar *next_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
320 gboolean *plugin_enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
321 int round;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
322
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
323 round = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
324 next_plugin = options.last_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
325 do {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
326 next_plugin = visual_actor_get_next_by_name (next_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
327 if (!next_plugin) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
328 round++;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
329 continue;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
330 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
331 plugin_enabled = g_hash_table_lookup (actor_plugin_enable_table, next_plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
332 if (!plugin_enabled)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
333 continue;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
334 if (*plugin_enabled)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
335 return next_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
336 } while (round < 2);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
337
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
338 return NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
339 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
340
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
341 void lv_bmp_config_set_current_actor (const char *name)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
342 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
343 visual_log_return_if_fail (name != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
344
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
345 options.last_plugin = name;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
346 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
347
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
348 const char *lv_bmp_config_morph_plugin (void)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
349 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
350 GSList *l;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
351 int i, pos;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
352
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
353 visual_log_return_val_if_fail (g_slist_length (morph_plugins_list) > 0, NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
354
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
355 if (random_morph) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
356 pos = (rand () % (g_slist_length (morph_plugins_list)));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
357 l = morph_plugins_list;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
358 for (i = 0; i < pos; i++)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
359 l = g_slist_next(l);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
360 return ((char*)l->data);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
361 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
362 return options.morph_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
363 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
364 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
365
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
366 void lv_bmp_config_window ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
367 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
368 #if 0
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
369 if (config_win != NULL) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
370 gtk_widget_grab_default (config_win->button_cancel);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
371 gtk_widget_show (config_win->window_main);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
372 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
373 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
374
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
375 config_visual_initialize ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
376
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
377 if (!options_loaded) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
378 lv_bmp_config_open ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
379 lv_bmp_config_load_prefs ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
380 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
381
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
382 config_win = lv_bmp_config_gui_new ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
383
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
384 if (options_loaded) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
385 gtk_spin_button_set_value (GTK_SPIN_BUTTON(config_win->spinbutton_fps), options.fps);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
386 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->checkbutton_fullscreen),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
387 options.fullscreen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
388 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->radiobutton_onlygl),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
389 options.gl_plugins_only);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
390 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->radiobutton_onlynongl),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
391 options.non_gl_plugins_only);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
392 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->radiobutton_all_plugins),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
393 options.all_plugins_enabled);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
394 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->checkbutton_morph_random),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
395 options.random_morph);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
396
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
397 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
398 config_win_set_defaults ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
399 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
400
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
401 config_win_connect_callbacks ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
402
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
403 gtk_widget_grab_default (config_win->button_cancel);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
404
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
405 if (options.all_plugins_enabled || options.non_gl_plugins_only)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
406 config_win_load_actor_plugin_nongl_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
407 if (options.all_plugins_enabled || options.gl_plugins_only)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
408 config_win_load_actor_plugin_gl_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
409
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
410 config_win_load_morph_plugin_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
411
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
412 gtk_widget_show (config_win->window_main);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
413 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
414 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
415
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
416 static void on_checkbutton_fullscreen_toggled (GtkToggleButton *togglebutton, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
417 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
418 fullscreen = !fullscreen;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
419 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
420
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
421 static void on_radiobutton_opengl_toggled (GtkToggleButton *togglebutton, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
422 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
423 gl_plugins_only = !gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
424
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
425 gtk_list_clear_items (GTK_LIST(config_win->list_vis_plugins), 0, -1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
426 config_win_load_actor_plugin_gl_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
427 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
428
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
429 static void on_radiobutton_non_opengl_toggled (GtkToggleButton *togglebutton, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
430 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
431 non_gl_plugins_only = !non_gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
432
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
433 gtk_list_clear_items (GTK_LIST(config_win->list_vis_plugins), 0, -1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
434 config_win_load_actor_plugin_nongl_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
435 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
436
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
437 static void on_radiobutton_all_plugins_toggled (GtkToggleButton *togglebutton, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
438 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
439 all_plugins_enabled = !all_plugins_enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
440
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
441 gtk_list_clear_items (GTK_LIST(config_win->list_vis_plugins), 0, -1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
442 config_win_load_actor_plugin_gl_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
443 config_win_load_actor_plugin_nongl_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
444 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
445
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
446 static void on_spinbutton_fps_changed (GtkEditable *editable, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
447 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
448 gchar *buffer;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
449
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
450 buffer = gtk_editable_get_chars (editable, (gint) 0, (gint) -1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
451 fps = atoi (buffer);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
452 g_free (buffer);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
453 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
454
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
455 static void on_button_ok_clicked (GtkButton *button, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
456 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
457 sync_options ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
458 lv_bmp_config_save_prefs ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
459 gtk_widget_hide (gtk_widget_get_toplevel (GTK_WIDGET(button)));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
460 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
461
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
462 static void on_button_apply_clicked (GtkButton *button, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
463 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
464 sync_options ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
465 lv_bmp_config_save_prefs ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
466 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
467
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
468
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
469 static void on_button_cancel_clicked (GtkButton *button, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
470 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
471 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
472 * Restore original values
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
473 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
474 if (options_loaded) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
475 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->checkbutton_fullscreen),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
476 options.fullscreen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
477 gtk_spin_button_set_value (GTK_SPIN_BUTTON(config_win->spinbutton_fps), options.fps);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
478 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->radiobutton_onlygl),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
479 options.gl_plugins_only);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
480 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->radiobutton_onlynongl),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
481 options.non_gl_plugins_only);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
482 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->radiobutton_all_plugins),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
483 options.all_plugins_enabled);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
484 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->checkbutton_morph_random),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
485 options.random_morph);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
486
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
487 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
488 config_win_set_defaults ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
489 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
490
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
491 gtk_widget_hide (gtk_widget_get_toplevel (GTK_WIDGET(button)));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
492 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
493
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
494 static void sync_options ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
495 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
496 options.fullscreen = fullscreen;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
497 options.fps = fps;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
498 options.gl_plugins_only = gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
499 options.non_gl_plugins_only = non_gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
500 options.all_plugins_enabled = all_plugins_enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
501 options.morph_plugin = morph_plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
502 options.random_morph = random_morph;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
503 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
504
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
505 static void on_checkbutton_vis_plugin_toggled (GtkToggleButton *togglebutton, gpointer user_data);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
506
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
507 static void on_actor_plugin_selected (GtkListItem *item, VisPluginRef *actor)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
508 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
509 gboolean *enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
510
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
511 visual_log_return_if_fail (actor != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
512 visual_log_return_if_fail (actor->info != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
513
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
514 current_actor = actor;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
515 enabled = g_hash_table_lookup (actor_plugin_enable_table, actor->info->plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
516 visual_log_return_if_fail (enabled != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
517
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
518 gtk_signal_disconnect_by_func (GTK_OBJECT (config_win->checkbutton_vis_plugin),
314
31725d73a697 [svn] Squash the implicit declaration warnings by including the correct util.h
chainsaw
parents: 313
diff changeset
519 GTK_SIGNAL_FUNC(on_checkbutton_vis_plugin_toggled), NULL);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
520
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
521 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->checkbutton_vis_plugin), *enabled);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
522
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
523 gtk_signal_connect (GTK_OBJECT (config_win->checkbutton_vis_plugin), "toggled",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
524 GTK_SIGNAL_FUNC (on_checkbutton_vis_plugin_toggled),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
525 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
526 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
527
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
528 static void on_checkbutton_vis_plugin_toggled (GtkToggleButton *togglebutton, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
529 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
530 GtkWidget *item;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
531 GList *items = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
532 gint pos;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
533 gchar *name;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
534 gchar *plugname;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
535 gboolean *enable;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
536
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
537 if (!current_actor)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
538 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
539
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
540 plugname = current_actor->info->plugname;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
541 if (gtk_toggle_button_get_active (togglebutton)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
542 /* We are enabling the selected actor */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
543 item = g_hash_table_lookup (actor_plugin_table, plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
544 g_hash_table_remove (actor_plugin_table, plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
545
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
546 /* Drop the item from the list, after save his position */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
547 pos = gtk_list_child_position (GTK_LIST(config_win->list_vis_plugins), item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
548 items = g_list_append (items, item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
549 gtk_list_remove_items (GTK_LIST(config_win->list_vis_plugins), items);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
550 g_list_free (items);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
551
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
552 /* Create a new item marked as enabled */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
553 name = g_strconcat (current_actor->info->name, _(" (enabled)"), 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
554 item = gtk_list_item_new_with_label (name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
555 g_free (name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
556 /*gtk_list_select_item (GTK_LIST(config_win->list_vis_plugins), pos);*/
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
557 gtk_widget_show (item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
558 gtk_signal_connect (GTK_OBJECT(item), "select",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
559 GTK_SIGNAL_FUNC(on_actor_plugin_selected),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
560 (gpointer) current_actor);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
561
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
562 /* Insert the new item */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
563 items = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
564 items = g_list_append (items, item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
565 gtk_list_insert_items (GTK_LIST(config_win->list_vis_plugins), items, pos);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
566
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
567 g_hash_table_insert (actor_plugin_table, plugname, item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
568
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
569 /* Mark it as enabled */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
570 enable = g_hash_table_lookup (actor_plugin_enable_table, plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
571 visual_log_return_if_fail (enable != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
572 *enable = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
573 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
574 item = g_hash_table_lookup (actor_plugin_table, plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
575 g_hash_table_remove (actor_plugin_table, plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
576
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
577 /* Drop the item from the list, after save his position */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
578 pos = gtk_list_child_position (GTK_LIST(config_win->list_vis_plugins), item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
579 items = g_list_append (items, item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
580 gtk_list_remove_items (GTK_LIST(config_win->list_vis_plugins), items);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
581 g_list_free (items);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
582
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
583 /* Create a new item marked as enabled */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
584 item = gtk_list_item_new_with_label (current_actor->info->name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
585 /*gtk_list_select_item (GTK_LIST(config_win->list_vis_plugins), pos);*/
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
586 gtk_widget_show (item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
587 gtk_signal_connect (GTK_OBJECT(item), "select",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
588 GTK_SIGNAL_FUNC(on_actor_plugin_selected),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
589 (gpointer) current_actor);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
590
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
591 /* Insert the new item */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
592 items = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
593 items = g_list_append (items, item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
594 gtk_list_insert_items (GTK_LIST(config_win->list_vis_plugins), items, pos);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
595
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
596 g_hash_table_insert (actor_plugin_table, plugname, item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
597
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
598 /* Mark it as disabled */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
599 enable = g_hash_table_lookup (actor_plugin_enable_table, plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
600 visual_log_return_if_fail (enable != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
601 *enable = FALSE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
602 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
603 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
604
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
605 static void on_button_vis_plugin_about_clicked (GtkButton *button, gpointer data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
606 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
607 GtkWidget *msgwin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
608 gchar *msg;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
609
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
610 if (!current_actor)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
611 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
612
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
613 visual_log_return_if_fail (current_actor->info != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
614
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
615 msg = g_strconcat (current_actor->info->name, "\n",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
616 _("Version: "), current_actor->info->version, "\n",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
617 current_actor->info->about, "\n",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
618 _("Author: "), current_actor->info->author, "\n\n",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
619 current_actor->info->help, 0);
314
31725d73a697 [svn] Squash the implicit declaration warnings by including the correct util.h
chainsaw
parents: 313
diff changeset
620 msgwin = xmms_show_message (PACKAGE_NAME, msg, _("Accept"), TRUE, GTK_SIGNAL_FUNC(dummy), NULL);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
621 gtk_widget_show (msgwin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
622 g_free (msg);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
623 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
624
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
625 /* FIXME Libvisual API must have something for doing this! */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
626 static int is_gl_actor (VisPluginRef *actor)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
627 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
628 VisPluginData *plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
629 VisActorPlugin *actplugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
630
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
631 visual_log_return_val_if_fail (actor != NULL, -1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
632 visual_log_return_val_if_fail (actor->info->plugin != NULL, -1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
633
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
634 plugin = visual_plugin_load (actor);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
635 actplugin = plugin->info->plugin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
636 if (actplugin->depth & VISUAL_VIDEO_DEPTH_GL) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
637 visual_plugin_unload (plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
638 return TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
639 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
640 visual_plugin_unload (plugin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
641 return FALSE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
642 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
643 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
644
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
645 static void actor_plugin_add (VisPluginRef *actor)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
646 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
647 visual_log_return_if_fail (actor != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
648
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
649 if (is_gl_actor (actor))
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
650 actor_plugins_gl = g_slist_append (actor_plugins_gl, actor);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
651 else
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
652 actor_plugins_nongl = g_slist_append (actor_plugins_nongl, actor);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
653 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
654
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
655 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
656 * This function initializes the actor_plugin_(gl/nongl)_items lists.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
657 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
658 static int load_actor_plugin_list ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
659 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
660 VisList *list;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
661 VisListEntry *item;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
662 VisPluginRef *actor;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
663 GtkWidget *msg;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
664
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
665 /* We want to load the lists just once */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
666 visual_log_return_val_if_fail (actor_plugins_gl == NULL, -1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
667 visual_log_return_val_if_fail (actor_plugins_nongl == NULL, -1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
668
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
669 list = visual_actor_get_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
670 if (!list) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
671 visual_log (VISUAL_LOG_WARNING, _("The list of actor plugins is empty."));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
672 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
673 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
674
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
675 item = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
676 /* FIXME update to visual_list_is_empty() when ready */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
677 if (!(actor = (VisPluginRef*) visual_list_next (list, &item))) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
678 msg = xmms_show_message (_(PACKAGE_NAME " error"),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
679 _("There are no actor plugins installed.\n"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
680 PACKAGE_NAME " cannot be initialized.\n"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
681 "Please visit http://libvisual.sf.net to\n"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
682 "to get some nice plugins."),
314
31725d73a697 [svn] Squash the implicit declaration warnings by including the correct util.h
chainsaw
parents: 313
diff changeset
683 _("Accept"), TRUE, GTK_SIGNAL_FUNC(dummy), NULL);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
684 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
685 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
686
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
687 item = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
688 while ((actor = (VisPluginRef*) visual_list_next (list, &item)))
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
689 actor_plugin_add (actor);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
690
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
691 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
692 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
693
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
694 static guint hash_function (gconstpointer key)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
695 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
696 const char *skey;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
697 guint hash_value = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
698 int i;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
699
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
700 if (!key)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
701 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
702
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
703 skey = key;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
704 for (i = 0; i < strlen (skey); i++)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
705 hash_value = (hash_value << 4) + (hash_value ^ (guint) skey[i]);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
706
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
707 return hash_value;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
708 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
709
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
710 static gint hash_compare (gconstpointer s1, gconstpointer s2)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
711 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
712 return (!strcmp ((char*) s1, (char*) s2));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
713 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
714
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
715 static void load_actor_enable_state (gpointer data, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
716 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
717 ConfigFile *config_file;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
718 VisPluginRef *actor;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
719 gboolean enabled, *b;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
720
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
721 actor = data;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
722 config_file = user_data;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
723
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
724 visual_log_return_if_fail (actor != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
725 visual_log_return_if_fail (actor->info != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
726 visual_log_return_if_fail (config_file != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
727
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
728 if (!xmms_cfg_read_boolean (config_file, "libvisual_bmp", actor->info->plugname, &enabled))
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
729 enabled = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
730
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
731 b = g_malloc (sizeof(gboolean));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
732 *b = enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
733 g_hash_table_insert (actor_plugin_enable_table, actor->info->plugname, b);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
734 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
735
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
736 static void load_actor_plugin_enable_table (ConfigFile *f)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
737 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
738 visual_log_return_if_fail (actor_plugins_nongl != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
739 visual_log_return_if_fail (actor_plugins_gl != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
740
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
741 if (!actor_plugin_enable_table)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
742 actor_plugin_enable_table = g_hash_table_new (hash_function, hash_compare);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
743
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
744 g_slist_foreach (actor_plugins_nongl, load_actor_enable_state, f);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
745 g_slist_foreach (actor_plugins_gl, load_actor_enable_state, f);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
746 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
747
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
748 static void remove_boolean (gpointer key, gpointer value, gpointer data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
749 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
750 g_free (value);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
751 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
752
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
753 static void new_actor_item (gpointer data, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
754 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
755 GList *items;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
756 GtkWidget *item/*, *olditem*/;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
757 VisPluginRef *actor;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
758 gchar *name;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
759 const gchar *plugname;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
760 gboolean *enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
761
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
762 actor = data;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
763 items = *(GList**)user_data;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
764
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
765 visual_log_return_if_fail (actor != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
766 visual_log_return_if_fail (actor->info != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
767
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
768 plugname = actor->info->plugname;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
769 enabled = g_hash_table_lookup (actor_plugin_enable_table, plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
770 visual_log_return_if_fail (enabled != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
771
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
772 /* Create the new item */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
773 if (*enabled) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
774 name = g_strconcat (actor->info->name, _(" (enabled)"), 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
775 item = gtk_list_item_new_with_label (name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
776 g_free (name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
777 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
778 item = gtk_list_item_new_with_label (actor->info->name);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
779 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
780
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
781 gtk_widget_show (item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
782 gtk_signal_connect (GTK_OBJECT(item), "select",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
783 GTK_SIGNAL_FUNC(on_actor_plugin_selected),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
784 (gpointer) actor);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
785 items = g_list_append (items, item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
786
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
787 /*olditem = g_hash_table_lookup (actor_plugin_table, plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
788 if (olditem)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
789 gtk_widget_destroy (olditem);*/
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
790
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
791 g_hash_table_remove (actor_plugin_table, plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
792 g_hash_table_insert (actor_plugin_table, plugname, item);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
793
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
794 *(GList**)user_data = items;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
795 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
796
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
797 static void config_win_load_actor_plugin_gl_list ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
798 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
799 GList *items;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
800
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
801 if (!actor_plugin_table)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
802 actor_plugin_table = g_hash_table_new (hash_function, hash_compare);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
803
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
804 items = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
805 g_slist_foreach (actor_plugins_gl, new_actor_item, &items);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
806 gtk_list_append_items (GTK_LIST(config_win->list_vis_plugins), items);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
807 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
808
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
809 static void config_win_load_actor_plugin_nongl_list ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
810 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
811 GList *items;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
812
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
813 if (!actor_plugin_table)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
814 actor_plugin_table = g_hash_table_new (hash_function, hash_compare);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
815
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
816 items = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
817 g_slist_foreach (actor_plugins_nongl, new_actor_item, &items);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
818 gtk_list_append_items (GTK_LIST(config_win->list_vis_plugins), items);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
819 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
820
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
821 static void on_morph_plugin_activate (GtkMenuItem *menuitem, char *name)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
822 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
823 visual_log_return_if_fail (name != NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
824
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
825 morph_plugin = name;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
826 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
827
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
828 static int config_win_load_morph_plugin_list ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
829 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
830 VisList *list;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
831 VisListEntry *item;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
832 VisPluginRef *morph;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
833 GtkWidget *msg;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
834 GtkWidget *menu;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
835 GtkWidget *menuitem;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
836 GSList *group;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
837 gint index;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
838
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
839 /* FIXME use load_morph_plugin_list() */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
840 list = visual_morph_get_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
841 if (!list) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
842 visual_log (VISUAL_LOG_WARNING, _("The list of morph plugins is empty."));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
843 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
844 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
845
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
846 item = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
847 /* FIXME update to visual_list_is_empty() when ready */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
848 if (!(morph = (VisPluginRef*) visual_list_next (list, &item))) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
849 msg = xmms_show_message (PACKAGE_NAME,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
850 _("There are no morph plugins, so switching\n"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
851 "between visualization plugins will be do it\n"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
852 "without any morphing."),
314
31725d73a697 [svn] Squash the implicit declaration warnings by including the correct util.h
chainsaw
parents: 313
diff changeset
853 _("Accept"), TRUE, GTK_SIGNAL_FUNC(dummy), NULL);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
854 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
855 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
856 index = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
857 item = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
858 while ((morph = (VisPluginRef*) visual_list_next (list, &item))) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
859 if (!(morph->info)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
860 visual_log (VISUAL_LOG_WARNING, _("There is no info for this plugin"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
861 continue;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
862 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
863 group = config_win->optionmenu_morph_plugin_group;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
864 menu = gtk_option_menu_get_menu (GTK_OPTION_MENU(config_win->optionmenu_morph_plugin));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
865 menuitem = gtk_radio_menu_item_new_with_label (group, morph->info->plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
866 group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM(menuitem));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
867 gtk_menu_append (GTK_MENU(menu), menuitem);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
868 config_win->optionmenu_morph_plugin_group = group;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
869
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
870 gtk_signal_connect (GTK_OBJECT(menuitem), "activate",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
871 GTK_SIGNAL_FUNC(on_morph_plugin_activate),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
872 (gpointer) morph->info->plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
873
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
874 gtk_widget_show (menuitem);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
875
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
876 if (!strcmp (morph->info->plugname, options.morph_plugin)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
877 gtk_menu_item_activate (GTK_MENU_ITEM(menuitem));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
878 gtk_menu_set_active (GTK_MENU(menu), index);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
879 gtk_option_menu_set_history (GTK_OPTION_MENU(config_win->optionmenu_morph_plugin), index);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
880 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
881 index++;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
882 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
883
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
884 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
885 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
886
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
887 static int load_morph_plugin_list ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
888 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
889 VisList *list;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
890 VisListEntry *item;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
891 VisPluginRef *morph;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
892 GtkWidget *msg;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
893
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
894 list = visual_morph_get_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
895 if (!list) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
896 visual_log (VISUAL_LOG_WARNING, _("The list of morph plugins is empty."));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
897 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
898 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
899
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
900 item = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
901 /* FIXME update to visual_list_is_empty() when ready */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
902 if (!(morph = (VisPluginRef*) visual_list_next (list, &item))) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
903 msg = xmms_show_message (PACKAGE_NAME,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
904 _("There are no morph plugins, so switching\n"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
905 "between visualization plugins will be do it\n"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
906 "without any morphing."),
314
31725d73a697 [svn] Squash the implicit declaration warnings by including the correct util.h
chainsaw
parents: 313
diff changeset
907 _("Accept"), TRUE, GTK_SIGNAL_FUNC(dummy), NULL);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
908 return -1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
909 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
910 item = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
911 while ((morph = (VisPluginRef*) visual_list_next (list, &item))) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
912 if (!(morph->info)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
913 visual_log (VISUAL_LOG_WARNING, _("There is no info for this plugin"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
914 continue;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
915 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
916 morph_plugins_list = g_slist_append (morph_plugins_list, morph->info->plugname);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
917 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
918
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
919 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
920 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
921
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
922 static void on_button_morph_plugin_about_clicked (GtkButton *button, gpointer data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
923 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
924 VisList *list;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
925 VisListEntry *item;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
926 VisPluginRef *morph;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
927 gchar *msg;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
928 GtkWidget *msgwin;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
929
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
930 list = visual_morph_get_list ();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
931 if (!list) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
932 visual_log (VISUAL_LOG_WARNING, _("The list of input plugins is empty."));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
933 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
934 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
935
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
936 item = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
937 while ((morph = (VisPluginRef*) visual_list_next (list, &item))) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
938 if (!(morph->info)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
939 visual_log (VISUAL_LOG_WARNING, _("There is no info for this plugin"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
940 continue;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
941 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
942 if (strcmp (morph->info->plugname, options.morph_plugin) == 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
943 msg = g_strconcat (morph->info->name, "\n",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
944 _("Version: "), morph->info->version, "\n",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
945 morph->info->about, "\n",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
946 _("Author: "), morph->info->author, "\n\n",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
947 morph->info->help, 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
948 msgwin = xmms_show_message (PACKAGE_NAME, msg,
314
31725d73a697 [svn] Squash the implicit declaration warnings by including the correct util.h
chainsaw
parents: 313
diff changeset
949 _("Accept"), TRUE, GTK_SIGNAL_FUNC(dummy), NULL);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
950 gtk_widget_show (msgwin);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
951 g_free (msg);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
952 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
953 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
954 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
955 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
956
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
957 static void on_checkbutton_morph_random_toggled (GtkToggleButton *togglebutton, gpointer user_data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
958 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
959 random_morph = !random_morph;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
960 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
961
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
962 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
963 * This function set the default values on configure dialog for all options,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
964 * except the selected vis and morph plugins.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
965 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
966 static void config_win_set_defaults (void)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
967 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
968 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->checkbutton_fullscreen),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
969 default_options.fullscreen);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
970 gtk_spin_button_set_value (GTK_SPIN_BUTTON(config_win->spinbutton_fps), default_options.fps);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
971 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->radiobutton_onlygl),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
972 default_options.gl_plugins_only);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
973 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->radiobutton_onlynongl),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
974 default_options.non_gl_plugins_only);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
975 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->radiobutton_all_plugins),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
976 default_options.all_plugins_enabled);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
977 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (config_win->checkbutton_morph_random),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
978 default_options.random_morph);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
979 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
980
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
981 static void config_win_connect_callbacks (void)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
982 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
983 gtk_signal_connect (GTK_OBJECT (config_win->checkbutton_vis_plugin), "toggled",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
984 GTK_SIGNAL_FUNC (on_checkbutton_vis_plugin_toggled),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
985 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
986 gtk_signal_connect (GTK_OBJECT (config_win->checkbutton_fullscreen), "toggled",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
987 GTK_SIGNAL_FUNC (on_checkbutton_fullscreen_toggled),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
988 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
989 gtk_signal_connect (GTK_OBJECT (config_win->radiobutton_onlygl), "toggled",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
990 GTK_SIGNAL_FUNC (on_radiobutton_opengl_toggled),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
991 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
992 gtk_signal_connect (GTK_OBJECT (config_win->radiobutton_onlynongl), "toggled",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
993 GTK_SIGNAL_FUNC (on_radiobutton_non_opengl_toggled),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
994 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
995 gtk_signal_connect (GTK_OBJECT (config_win->radiobutton_all_plugins), "toggled",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
996 GTK_SIGNAL_FUNC (on_radiobutton_all_plugins_toggled),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
997 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
998 gtk_signal_connect (GTK_OBJECT (config_win->spinbutton_fps), "changed",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
999 GTK_SIGNAL_FUNC (on_spinbutton_fps_changed),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1000 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1001 gtk_signal_connect (GTK_OBJECT (config_win->button_ok), "clicked",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1002 GTK_SIGNAL_FUNC (on_button_ok_clicked),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1003 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1004 gtk_signal_connect (GTK_OBJECT (config_win->button_apply), "clicked",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1005 GTK_SIGNAL_FUNC (on_button_apply_clicked),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1006 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1007 gtk_signal_connect (GTK_OBJECT (config_win->button_cancel), "clicked",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1008 GTK_SIGNAL_FUNC (on_button_cancel_clicked),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1009 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1010 gtk_signal_connect (GTK_OBJECT (config_win->button_vis_plugin_about), "clicked",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1011 GTK_SIGNAL_FUNC (on_button_vis_plugin_about_clicked),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1012 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1013 gtk_signal_connect (GTK_OBJECT (config_win->button_morph_plugin_about), "clicked",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1014 GTK_SIGNAL_FUNC (on_button_morph_plugin_about_clicked),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1015 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1016 gtk_signal_connect (GTK_OBJECT (config_win->checkbutton_morph_random), "toggled",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1017 GTK_SIGNAL_FUNC (on_checkbutton_morph_random_toggled),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1018 NULL);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1019 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1020
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1021 static void set_defaults (void)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1022 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1023 strcpy (actor_plugin_buffer, CONFIG_DEFAULT_ACTOR_PLUGIN);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1024 options.last_plugin = actor_plugin_buffer;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1025 strcpy (morph_plugin_buffer, CONFIG_DEFAULT_MORPH_PLUGIN);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1026 options.morph_plugin = morph_plugin_buffer;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1027
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1028 options.width = default_options.width;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1029 options.height = default_options.height;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1030 options.depth = default_options.depth;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1031 options.fps = default_options.fps;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1032 options.fullscreen = default_options.fullscreen;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1033 options.gl_plugins_only = default_options.gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1034 options.non_gl_plugins_only = default_options.non_gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1035 options.all_plugins_enabled = default_options.all_plugins_enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1036 options.random_morph = default_options.random_morph;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1037 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1038
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1039 static void config_visual_initialize ()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1040 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1041 int argc;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1042 char **argv;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1043 GtkWidget *msg;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1044
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1045 if (!visual_is_initialized ()) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1046 argv = g_malloc (sizeof(char*));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1047 argv[0] = g_strdup ("BMP plugin");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1048 argc = 1;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1049 if (visual_init (&argc, &argv) < 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1050 msg = xmms_show_message (PACKAGE_NAME,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1051 _("We cannot initialize Libvisual library.\n"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1052 "Libvisual is necessary for this plugin to work."),
314
31725d73a697 [svn] Squash the implicit declaration warnings by including the correct util.h
chainsaw
parents: 313
diff changeset
1053 _("Accept"), TRUE, GTK_SIGNAL_FUNC(dummy), NULL);
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1054 gtk_widget_show (msg);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1055 g_free (argv[0]);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1056 g_free (argv);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1057 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1058 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1059 g_free (argv[0]);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1060 g_free (argv);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1061 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1062 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1063
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1064 static void dummy (GtkWidget *widget, gpointer data)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1065 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1066 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1067
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
1068 static gboolean read_config_file (ConfigFile *f)
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1069 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1070 gchar *enabled_plugins;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1071 gboolean errors = FALSE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1072
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
1073 if (!xmms_cfg_read_string (f, "libvisual_bmp", "last_plugin", &actor_plugin_buffer)
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1074 || (strlen (actor_plugin_buffer) <= 0)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1075 visual_log (VISUAL_LOG_DEBUG, "Error on last_plugin option");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1076 strcpy (actor_plugin_buffer, CONFIG_DEFAULT_ACTOR_PLUGIN);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1077 errors = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1078 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1079 options.last_plugin = actor_plugin_buffer;
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
1080 if (!xmms_cfg_read_string (f, "libvisual_bmp", "morph_plugin", &morph_plugin_buffer)
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1081 || (strlen (morph_plugin_buffer) <= 0)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1082 visual_log (VISUAL_LOG_DEBUG, "Error on morph_plugin option");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1083 strcpy (morph_plugin_buffer, CONFIG_DEFAULT_MORPH_PLUGIN);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1084 errors = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1085 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1086 morph_plugin = morph_plugin_buffer;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1087 options.morph_plugin = morph_plugin;
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
1088 if (!xmms_cfg_read_boolean (f, "libvisual_bmp", "random_morph", &options.random_morph)) {
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1089 visual_log (VISUAL_LOG_DEBUG, "Error on random_morph option");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1090 options.random_morph = default_options.random_morph;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1091 errors = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1092 }
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
1093 if (!xmms_cfg_read_string (f, "libvisual_bmp", "icon", &options.icon_file)
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1094 || (strlen (options.icon_file) <= 0)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1095 visual_log (VISUAL_LOG_DEBUG, "Error on icon option");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1096 errors = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1097 }
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
1098 if (!xmms_cfg_read_int (f, "libvisual_bmp", "width", &options.width) || options.width <= 0) {
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1099 visual_log (VISUAL_LOG_DEBUG, "Error on width option");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1100 options.width = default_options.width;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1101 errors = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1102 }
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
1103 if (!xmms_cfg_read_int (f, "libvisual_bmp", "height", &options.height) || options.height <= 0) {
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1104 visual_log (VISUAL_LOG_DEBUG, "Error on height option");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1105 options.height = default_options.height;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1106 errors = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1107 }
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
1108 if (!xmms_cfg_read_int (f, "libvisual_bmp", "fps", &options.fps) || options.fps <= 0) {
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1109 visual_log (VISUAL_LOG_DEBUG, "Error on fps option");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1110 options.fps = default_options.fps;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1111 errors = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1112 }
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
1113 if (!xmms_cfg_read_int (f, "libvisual_bmp", "color_depth", &options.depth) || options.depth <= 0) {
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1114 visual_log (VISUAL_LOG_DEBUG, "Error on color_depth option");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1115 options.depth = default_options.depth;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1116 errors = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1117 }
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
1118 if (!xmms_cfg_read_boolean (f, "libvisual_bmp", "fullscreen", &options.fullscreen)) {
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1119 visual_log (VISUAL_LOG_DEBUG, "Error on fullscreen option");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1120 options.fullscreen = default_options.fullscreen;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1121 errors = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1122 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1123 enabled_plugins = g_malloc0 (OPTIONS_MAX_NAME_LEN);
313
5a20f229ece6 [svn] Revert changes; this plugin is hard to convert to configdb. Leave it for now.
chainsaw
parents: 312
diff changeset
1124 if (!xmms_cfg_read_string (f, "libvisual_bmp", "enabled_plugins", &enabled_plugins)
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1125 || (strlen (enabled_plugins) <= 0)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1126 visual_log (VISUAL_LOG_DEBUG, "Error on enabled_plugins option: %s", enabled_plugins);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1127 options.gl_plugins_only = default_options.gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1128 options.non_gl_plugins_only = default_options.non_gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1129 options.all_plugins_enabled = default_options.all_plugins_enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1130 errors = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1131 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1132 options.gl_plugins_only = FALSE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1133 options.non_gl_plugins_only = FALSE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1134 options.all_plugins_enabled = FALSE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1135 if (strcmp (enabled_plugins, "gl_only") == 0)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1136 options.gl_plugins_only = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1137 else if (strcmp (enabled_plugins, "non_gl_only") == 0)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1138 options.non_gl_plugins_only = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1139 else if (strcmp (enabled_plugins, "all") == 0)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1140 options.all_plugins_enabled = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1141 else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1142 visual_log (VISUAL_LOG_WARNING, _("Invalid value for 'enabled_plugins' option"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1143 options.gl_plugins_only = default_options.gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1144 options.non_gl_plugins_only = default_options.non_gl_plugins_only;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1145 options.all_plugins_enabled = default_options.all_plugins_enabled;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1146 errors = TRUE;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1147 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1148 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1149 g_free (enabled_plugins);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1150
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1151 return errors;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1152 }