Mercurial > audlegacy
comparison src/audacious/ui_preferences.c @ 4751:b87f8c707b7f
branch merge
author | Andrew O. Shadoura <bugzilla@tut.by> |
---|---|
date | Wed, 06 Aug 2008 22:33:27 +0300 |
parents | 1a13d88b72f3 |
children | 0ea6dd6bfb5a |
comparison
equal
deleted
inserted
replaced
4750:74134c731db6 | 4751:b87f8c707b7f |
---|---|
44 #include "general.h" | 44 #include "general.h" |
45 #include "output.h" | 45 #include "output.h" |
46 #include "visualization.h" | 46 #include "visualization.h" |
47 #include "playlist.h" | 47 #include "playlist.h" |
48 | 48 |
49 #include "ui_skinned_textbox.h" | |
50 #include "strings.h" | 49 #include "strings.h" |
51 #include "util.h" | 50 #include "util.h" |
52 #include "dnd.h" | 51 #include "dnd.h" |
53 #include "configdb.h" | 52 #include "configdb.h" |
54 #include "preferences.h" | 53 #include "preferences.h" |
55 | 54 |
56 #include "ui_main.h" | |
57 #include "ui_playlist.h" | |
58 #include "ui_skinselector.h" | |
59 #include "ui_preferences.h" | 55 #include "ui_preferences.h" |
60 #include "ui_equalizer.h" | |
61 #include "ui_skinned_playlist.h" | |
62 #include "ui_skinned_window.h" | |
63 | 56 |
64 #include "build_stamp.h" | 57 #include "build_stamp.h" |
65 | 58 |
66 #define TITLESTRING_UPDATE_TIMEOUT 3 | 59 #define TITLESTRING_UPDATE_TIMEOUT 3 |
67 | 60 |
103 gint y; | 96 gint y; |
104 } MenuPos; | 97 } MenuPos; |
105 | 98 |
106 static GtkWidget *prefswin = NULL; | 99 static GtkWidget *prefswin = NULL; |
107 static GtkWidget *filepopup_settings = NULL; | 100 static GtkWidget *filepopup_settings = NULL; |
108 static GtkWidget *colorize_settings = NULL; | |
109 static GtkWidget *category_treeview = NULL; | 101 static GtkWidget *category_treeview = NULL; |
110 static GtkWidget *category_notebook = NULL; | 102 static GtkWidget *category_notebook = NULL; |
111 GtkWidget *filepopupbutton = NULL; | 103 GtkWidget *filepopupbutton = NULL; |
112 | 104 |
113 /* colorize settings scales */ | 105 /* colorize settings scales */ |
125 GtkWidget *filepopup_settings_showprogressbar; | 117 GtkWidget *filepopup_settings_showprogressbar; |
126 GtkWidget *filepopup_settings_delay; | 118 GtkWidget *filepopup_settings_delay; |
127 | 119 |
128 /* prefswin widgets */ | 120 /* prefswin widgets */ |
129 GtkWidget *titlestring_entry; | 121 GtkWidget *titlestring_entry; |
130 GtkWidget *skin_view; | |
131 GtkWidget *skin_refresh_button; | |
132 GtkWidget *filepopup_for_tuple_settings_button; | 122 GtkWidget *filepopup_for_tuple_settings_button; |
133 GtkTooltips *tooltips; | 123 GtkTooltips *tooltips; |
134 static gint titlestring_timeout_counter = 0; | 124 static gint titlestring_timeout_counter = 0; |
135 | 125 |
136 static Category categories[] = { | 126 static Category categories[] = { |
137 {DATA_DIR "/images/appearance.png", N_("Appearance")}, | |
138 {DATA_DIR "/images/audio.png", N_("Audio")}, | 127 {DATA_DIR "/images/audio.png", N_("Audio")}, |
139 {DATA_DIR "/images/replay_gain.png", N_("Replay Gain")}, | 128 {DATA_DIR "/images/replay_gain.png", N_("Replay Gain")}, |
140 {DATA_DIR "/images/connectivity.png", N_("Connectivity")}, | 129 {DATA_DIR "/images/connectivity.png", N_("Connectivity")}, |
141 {DATA_DIR "/images/mouse.png", N_("Mouse")}, | 130 {DATA_DIR "/images/mouse.png", N_("Mouse")}, |
142 {DATA_DIR "/images/playback.png", N_("Playback")}, | 131 {DATA_DIR "/images/playback.png", N_("Playback")}, |
188 char *img_url; | 177 char *img_url; |
189 } CategoryQueueEntry; | 178 } CategoryQueueEntry; |
190 | 179 |
191 CategoryQueueEntry *category_queue = NULL; | 180 CategoryQueueEntry *category_queue = NULL; |
192 | 181 |
193 static void playlist_show_pl_separator_numbers_cb(); | |
194 static void show_wm_decorations_cb(); | |
195 static void bitmap_fonts_cb(); | |
196 static void mainwin_font_set_cb(); | |
197 static void playlist_font_set_cb(); | |
198 GtkWidget *ui_preferences_chardet_table_populate(void); | 182 GtkWidget *ui_preferences_chardet_table_populate(void); |
199 static GtkWidget *ui_preferences_bit_depth(void); | 183 static GtkWidget *ui_preferences_bit_depth(void); |
200 static GtkWidget *ui_preferences_rg_params(void); | 184 static GtkWidget *ui_preferences_rg_params(void); |
201 | |
202 static PreferencesWidget appearance_misc_widgets[] = { | |
203 {WIDGET_LABEL, N_("<b>_Fonts</b>"), NULL, NULL, NULL, FALSE}, | |
204 {WIDGET_FONT_BTN, N_("_Player:"), &cfg.mainwin_font, G_CALLBACK(mainwin_font_set_cb), N_("Select main player window font:"), FALSE}, | |
205 {WIDGET_FONT_BTN, N_("_Playlist:"), &cfg.playlist_font, G_CALLBACK(playlist_font_set_cb), N_("Select playlist font:"), FALSE}, | |
206 {WIDGET_CHK_BTN, N_("Use Bitmap fonts if available"), &cfg.mainwin_use_bitmapfont, G_CALLBACK(bitmap_fonts_cb), N_("Use bitmap fonts if they are available. Bitmap fonts do not support Unicode strings."), FALSE}, | |
207 {WIDGET_LABEL, N_("<b>_Miscellaneous</b>"), NULL, NULL, NULL, FALSE}, | |
208 {WIDGET_CHK_BTN, N_("Show track numbers in playlist"), &cfg.show_numbers_in_pl, | |
209 G_CALLBACK(playlist_show_pl_separator_numbers_cb), NULL, FALSE}, | |
210 {WIDGET_CHK_BTN, N_("Show separators in playlist"), &cfg.show_separator_in_pl, | |
211 G_CALLBACK(playlist_show_pl_separator_numbers_cb), NULL, FALSE}, | |
212 {WIDGET_CHK_BTN, N_("Show window manager decoration"), &cfg.show_wm_decorations, G_CALLBACK(show_wm_decorations_cb), | |
213 N_("This enables the window manager to show decorations for windows."), FALSE}, | |
214 {WIDGET_CHK_BTN, N_("Use XMMS-style file selector instead of the default selector"), &cfg.use_xmms_style_fileselector, NULL, | |
215 N_("This enables the XMMS/GTK1-style file selection dialogs. This selector is provided by Audacious itself and is faster than the default GTK2 selector (but sadly not as user-friendly)."), FALSE}, | |
216 {WIDGET_CHK_BTN, N_("Use two-way text scroller"), &cfg.twoway_scroll, NULL, | |
217 N_("If selected, the file information text in the main window will scroll back and forth. If not selected, the text will only scroll in one direction."), FALSE}, | |
218 {WIDGET_CHK_BTN, N_("Disable inline gtk theme"), &cfg.disable_inline_gtk, NULL, NULL, FALSE}, | |
219 {WIDGET_CHK_BTN, N_("Allow loading incomplete skins"), &cfg.allow_broken_skins, NULL, | |
220 N_("If selected, audacious won't refuse loading broken skins. Use only if your favourite skin doesn't work"), FALSE}, | |
221 }; | |
222 | 185 |
223 static PreferencesWidget audio_page_widgets[] = { | 186 static PreferencesWidget audio_page_widgets[] = { |
224 {WIDGET_LABEL, N_("<b>Format Detection</b>"), NULL, NULL, NULL, FALSE}, | 187 {WIDGET_LABEL, N_("<b>Format Detection</b>"), NULL, NULL, NULL, FALSE}, |
225 {WIDGET_CHK_BTN, N_("Detect file formats on demand, instead of immediately."), &cfg.playlist_detect, NULL, | 188 {WIDGET_CHK_BTN, N_("Detect file formats on demand, instead of immediately."), &cfg.playlist_detect, NULL, |
226 N_("When checked, Audacious will detect file formats on demand. This can result in a messier playlist, but delivers a major speed benefit."), FALSE}, | 189 N_("When checked, Audacious will detect file formats on demand. This can result in a messier playlist, but delivers a major speed benefit."), FALSE}, |
283 {WIDGET_LABEL, N_("<b>Mouse wheel</b>"), NULL, NULL, NULL, FALSE}, | 246 {WIDGET_LABEL, N_("<b>Mouse wheel</b>"), NULL, NULL, NULL, FALSE}, |
284 {WIDGET_SPIN_BTN, N_("Changes volume by"), &cfg.mouse_change, NULL, N_("percent"), FALSE}, | 247 {WIDGET_SPIN_BTN, N_("Changes volume by"), &cfg.mouse_change, NULL, N_("percent"), FALSE}, |
285 {WIDGET_SPIN_BTN, N_("Scrolls playlist by"), &cfg.scroll_pl_by, NULL, N_("lines"), FALSE}, | 248 {WIDGET_SPIN_BTN, N_("Scrolls playlist by"), &cfg.scroll_pl_by, NULL, N_("lines"), FALSE}, |
286 }; | 249 }; |
287 | 250 |
288 static void create_colorize_settings(void); | |
289 static void prefswin_page_queue_destroy(CategoryQueueEntry *ent); | 251 static void prefswin_page_queue_destroy(CategoryQueueEntry *ent); |
290 | 252 |
291 static void | 253 static void |
292 change_category(GtkNotebook * notebook, | 254 change_category(GtkNotebook * notebook, |
293 GtkTreeSelection * selection) | 255 GtkTreeSelection * selection) |
682 AUDDBG("Returned font name: \"%s\"\n", *cfg); | 644 AUDDBG("Returned font name: \"%s\"\n", *cfg); |
683 void (*callback) (void) = g_object_get_data(G_OBJECT(button), "callback"); | 645 void (*callback) (void) = g_object_get_data(G_OBJECT(button), "callback"); |
684 if (callback) callback(); | 646 if (callback) callback(); |
685 } | 647 } |
686 | 648 |
687 static void | |
688 mainwin_font_set_cb() | |
689 { | |
690 ui_skinned_textbox_set_xfont(mainwin_info, !cfg.mainwin_use_bitmapfont, cfg.mainwin_font); | |
691 } | |
692 | |
693 static void | |
694 playlist_font_set_cb() | |
695 { | |
696 AUDDBG("Attempt to set font \"%s\"\n", cfg.playlist_font); | |
697 ui_skinned_playlist_set_font(cfg.playlist_font); | |
698 playlistwin_set_sinfo_font(cfg.playlist_font); /* propagate font setting to playlistwin_sinfo */ | |
699 playlistwin_update_list(playlist_get_active()); | |
700 } | |
701 | |
702 static void | |
703 playlist_show_pl_separator_numbers_cb() | |
704 { | |
705 playlistwin_update_list(playlist_get_active()); | |
706 } | |
707 | |
708 /* proxy */ | 649 /* proxy */ |
709 static void | 650 static void |
710 on_proxy_button_realize(GtkToggleButton *button, gchar *cfg) | 651 on_proxy_button_realize(GtkToggleButton *button, gchar *cfg) |
711 { | 652 { |
712 g_return_if_fail(cfg != NULL); | 653 g_return_if_fail(cfg != NULL); |
953 | 894 |
954 static void | 895 static void |
955 on_spin_btn_changed(GtkSpinButton *button, gboolean *cfg) | 896 on_spin_btn_changed(GtkSpinButton *button, gboolean *cfg) |
956 { | 897 { |
957 *cfg = gtk_spin_button_get_value_as_int(button); | 898 *cfg = gtk_spin_button_get_value_as_int(button); |
958 } | |
959 | |
960 static void | |
961 on_skin_refresh_button_clicked(GtkButton * button, | |
962 gpointer data) | |
963 { | |
964 const mode_t mode755 = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; | |
965 | |
966 del_directory(aud_paths[BMP_PATH_SKIN_THUMB_DIR]); | |
967 make_directory(aud_paths[BMP_PATH_SKIN_THUMB_DIR], mode755); | |
968 | |
969 skin_view_update(GTK_TREE_VIEW(skin_view), GTK_WIDGET(skin_refresh_button)); | |
970 } | |
971 | |
972 static gboolean | |
973 on_skin_view_realize(GtkTreeView * treeview, | |
974 gpointer data) | |
975 { | |
976 skin_view_realize(treeview); | |
977 | |
978 return TRUE; | |
979 } | 899 } |
980 | 900 |
981 static void | 901 static void |
982 on_category_treeview_realize(GtkTreeView * treeview, | 902 on_category_treeview_realize(GtkTreeView * treeview, |
983 GtkNotebook * notebook) | 903 GtkNotebook * notebook) |
1039 prefswin_page_new(ent->container, ent->pg_name, ent->img_url); | 959 prefswin_page_new(ent->container, ent->pg_name, ent->img_url); |
1040 prefswin_page_queue_destroy(ent); | 960 prefswin_page_queue_destroy(ent); |
1041 } | 961 } |
1042 } | 962 } |
1043 | 963 |
1044 void | |
1045 on_skin_view_drag_data_received(GtkWidget * widget, | |
1046 GdkDragContext * context, | |
1047 gint x, gint y, | |
1048 GtkSelectionData * selection_data, | |
1049 guint info, guint time, | |
1050 gpointer user_data) | |
1051 { | |
1052 mcs_handle_t *db; | |
1053 gchar *path; | |
1054 | |
1055 if (!selection_data->data) { | |
1056 g_warning("DND data string is NULL"); | |
1057 return; | |
1058 } | |
1059 | |
1060 path = (gchar *) selection_data->data; | |
1061 | |
1062 /* FIXME: use a real URL validator/parser */ | |
1063 | |
1064 if (str_has_prefix_nocase(path, "file:///")) { | |
1065 path[strlen(path) - 2] = 0; /* Why the hell a CR&LF? */ | |
1066 path += 7; | |
1067 } | |
1068 else if (str_has_prefix_nocase(path, "file:")) { | |
1069 path += 5; | |
1070 } | |
1071 | |
1072 if (file_is_archive(path)) { | |
1073 if (!aud_active_skin_load(path)) | |
1074 return; | |
1075 skin_install_skin(path); | |
1076 skin_view_update(GTK_TREE_VIEW(widget), | |
1077 GTK_WIDGET(skin_refresh_button)); | |
1078 | |
1079 /* Change skin name in the config file */ | |
1080 db = cfg_db_open(); | |
1081 cfg_db_set_string(db, NULL, "skin", path); | |
1082 cfg_db_close(db); | |
1083 } | |
1084 } | |
1085 | |
1086 static void | 964 static void |
1087 on_chardet_detector_cbox_changed(GtkComboBox * combobox, gpointer data) | 965 on_chardet_detector_cbox_changed(GtkComboBox * combobox, gpointer data) |
1088 { | 966 { |
1089 mcs_handle_t *db; | 967 mcs_handle_t *db; |
1090 gint position = 0; | 968 gint position = 0; |
1209 gtk_widget_set_sensitive(GTK_WIDGET(data), | 1087 gtk_widget_set_sensitive(GTK_WIDGET(data), |
1210 gtk_toggle_button_get_active(button)); | 1088 gtk_toggle_button_get_active(button)); |
1211 } | 1089 } |
1212 | 1090 |
1213 static void | 1091 static void |
1214 on_colorize_button_clicked(GtkButton *button, gpointer data) | |
1215 { | |
1216 if (colorize_settings) | |
1217 gtk_window_present(GTK_WINDOW(colorize_settings)); | |
1218 else | |
1219 create_colorize_settings(); | |
1220 } | |
1221 | |
1222 static void | |
1223 reload_skin() | |
1224 { | |
1225 /* reload the skin to apply the change */ | |
1226 skin_reload_forced(); | |
1227 ui_skinned_window_draw_all(mainwin); | |
1228 ui_skinned_window_draw_all(equalizerwin); | |
1229 ui_skinned_window_draw_all(playlistwin); | |
1230 } | |
1231 | |
1232 static void | |
1233 on_red_scale_value_changed(GtkHScale *scale, gpointer data) | |
1234 { | |
1235 cfg.colorize_r = gtk_range_get_value(GTK_RANGE(scale)); | |
1236 reload_skin(); | |
1237 } | |
1238 | |
1239 static void | |
1240 on_green_scale_value_changed(GtkHScale *scale, gpointer data) | |
1241 { | |
1242 cfg.colorize_g = gtk_range_get_value(GTK_RANGE(scale)); | |
1243 reload_skin(); | |
1244 } | |
1245 | |
1246 static void | |
1247 on_blue_scale_value_changed(GtkHScale *scale, gpointer data) | |
1248 { | |
1249 cfg.colorize_b = gtk_range_get_value(GTK_RANGE(scale)); | |
1250 reload_skin(); | |
1251 } | |
1252 | |
1253 static void | |
1254 on_colorize_close_clicked(GtkButton *button, gpointer data) | |
1255 { | |
1256 gtk_widget_destroy(colorize_settings); | |
1257 colorize_settings = NULL; | |
1258 } | |
1259 | |
1260 static void | |
1261 on_filepopup_for_tuple_settings_clicked(GtkButton *button, gpointer data) | 1092 on_filepopup_for_tuple_settings_clicked(GtkButton *button, gpointer data) |
1262 { | 1093 { |
1263 gtk_entry_set_text(GTK_ENTRY(filepopup_settings_cover_name_include), cfg.cover_name_include); | 1094 gtk_entry_set_text(GTK_ENTRY(filepopup_settings_cover_name_include), cfg.cover_name_include); |
1264 gtk_entry_set_text(GTK_ENTRY(filepopup_settings_cover_name_exclude), cfg.cover_name_exclude); | 1095 gtk_entry_set_text(GTK_ENTRY(filepopup_settings_cover_name_exclude), cfg.cover_name_exclude); |
1265 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filepopup_settings_recurse_for_cover), cfg.recurse_for_cover); | 1096 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filepopup_settings_recurse_for_cover), cfg.recurse_for_cover); |
1310 on_toggle_button_realize(GtkToggleButton * button, gboolean *cfg) | 1141 on_toggle_button_realize(GtkToggleButton * button, gboolean *cfg) |
1311 { | 1142 { |
1312 gtk_toggle_button_set_active(button, *cfg); | 1143 gtk_toggle_button_set_active(button, *cfg); |
1313 GtkWidget *child = g_object_get_data(G_OBJECT(button), "child"); | 1144 GtkWidget *child = g_object_get_data(G_OBJECT(button), "child"); |
1314 if (child) gtk_widget_set_sensitive(GTK_WIDGET(child), *cfg); | 1145 if (child) gtk_widget_set_sensitive(GTK_WIDGET(child), *cfg); |
1315 } | |
1316 | |
1317 static void | |
1318 bitmap_fonts_cb() | |
1319 { | |
1320 ui_skinned_textbox_set_xfont(mainwin_info, !cfg.mainwin_use_bitmapfont, cfg.mainwin_font); | |
1321 playlistwin_set_sinfo_font(cfg.playlist_font); | |
1322 | |
1323 if (cfg.playlist_shaded) { | |
1324 playlistwin_update_list(playlist_get_active()); | |
1325 ui_skinned_window_draw_all(playlistwin); | |
1326 } | |
1327 } | |
1328 | |
1329 static void | |
1330 show_wm_decorations_cb() | |
1331 { | |
1332 gtk_window_set_decorated(GTK_WINDOW(mainwin), cfg.show_wm_decorations); | |
1333 gtk_window_set_decorated(GTK_WINDOW(playlistwin), cfg.show_wm_decorations); | |
1334 gtk_window_set_decorated(GTK_WINDOW(equalizerwin), cfg.show_wm_decorations); | |
1335 } | |
1336 | |
1337 void | |
1338 create_colorize_settings(void) | |
1339 { | |
1340 GtkWidget *vbox; | |
1341 GtkWidget *label; | |
1342 GtkWidget *table; | |
1343 GtkWidget *hbuttonbox; | |
1344 GtkWidget *colorize_close; | |
1345 | |
1346 GtkWidget *green_label; | |
1347 GtkWidget *red_label; | |
1348 GtkWidget *blue_label; | |
1349 | |
1350 colorize_settings = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
1351 gtk_container_set_border_width(GTK_CONTAINER(colorize_settings), 12); | |
1352 gtk_window_set_title(GTK_WINDOW(colorize_settings), _("Color Adjustment")); | |
1353 gtk_window_set_type_hint(GTK_WINDOW(colorize_settings), GDK_WINDOW_TYPE_HINT_DIALOG); | |
1354 gtk_window_set_transient_for(GTK_WINDOW(colorize_settings), GTK_WINDOW(prefswin)); | |
1355 | |
1356 vbox = gtk_vbox_new(FALSE, 12); | |
1357 gtk_container_add(GTK_CONTAINER(colorize_settings), vbox); | |
1358 | |
1359 label = gtk_label_new(_("Audacious allows you to alter the color balance of the skinned UI. The sliders below will allow you to do this.")); | |
1360 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
1361 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
1362 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
1363 | |
1364 table = gtk_table_new(3, 2, FALSE); | |
1365 gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0); | |
1366 gtk_table_set_row_spacings(GTK_TABLE(table), 6); | |
1367 gtk_table_set_col_spacings(GTK_TABLE(table), 12); | |
1368 | |
1369 blue_label = gtk_label_new(_("Blue")); | |
1370 gtk_table_attach(GTK_TABLE(table), blue_label, 0, 1, 2, 3, | |
1371 (GtkAttachOptions) (0), | |
1372 (GtkAttachOptions) (0), 0, 0); | |
1373 gtk_label_set_justify(GTK_LABEL(blue_label), GTK_JUSTIFY_RIGHT); | |
1374 gtk_misc_set_alignment(GTK_MISC(blue_label), 1, 0.5); | |
1375 | |
1376 green_label = gtk_label_new(_("Green")); | |
1377 gtk_table_attach(GTK_TABLE(table), green_label, 0, 1, 1, 2, | |
1378 (GtkAttachOptions) (0), | |
1379 (GtkAttachOptions) (0), 0, 0); | |
1380 gtk_label_set_justify(GTK_LABEL(green_label), GTK_JUSTIFY_RIGHT); | |
1381 gtk_misc_set_alignment(GTK_MISC(green_label), 1, 0.5); | |
1382 | |
1383 red_label = gtk_label_new(_("Red")); | |
1384 gtk_table_attach(GTK_TABLE(table), red_label, 0, 1, 0, 1, | |
1385 (GtkAttachOptions) (0), | |
1386 (GtkAttachOptions) (0), 0, 0); | |
1387 gtk_label_set_justify(GTK_LABEL(red_label), GTK_JUSTIFY_RIGHT); | |
1388 gtk_misc_set_alignment(GTK_MISC(red_label), 1, 0.5); | |
1389 | |
1390 red_scale = gtk_hscale_new(GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 255, 0, 0, 0))); | |
1391 gtk_table_attach(GTK_TABLE(table), red_scale, 1, 2, 0, 1, | |
1392 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), | |
1393 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); | |
1394 gtk_scale_set_draw_value(GTK_SCALE(red_scale), FALSE); | |
1395 gtk_scale_set_digits(GTK_SCALE(red_scale), 3); | |
1396 | |
1397 green_scale = gtk_hscale_new(GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 255, 0, 0, 0))); | |
1398 gtk_table_attach(GTK_TABLE(table), green_scale, 1, 2, 1, 2, | |
1399 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), | |
1400 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); | |
1401 gtk_scale_set_draw_value(GTK_SCALE(green_scale), FALSE); | |
1402 gtk_scale_set_digits(GTK_SCALE(green_scale), 3); | |
1403 | |
1404 blue_scale = gtk_hscale_new(GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 255, 0, 0, 0))); | |
1405 gtk_table_attach(GTK_TABLE(table), blue_scale, 1, 2, 2, 3, | |
1406 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), | |
1407 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); | |
1408 gtk_scale_set_draw_value(GTK_SCALE(blue_scale), FALSE); | |
1409 gtk_scale_set_digits(GTK_SCALE(blue_scale), 3); | |
1410 | |
1411 hbuttonbox = gtk_hbutton_box_new(); | |
1412 gtk_box_pack_start(GTK_BOX(vbox), hbuttonbox, FALSE, FALSE, 0); | |
1413 gtk_button_box_set_layout(GTK_BUTTON_BOX(hbuttonbox), GTK_BUTTONBOX_END); | |
1414 gtk_box_set_spacing(GTK_BOX(hbuttonbox), 6); | |
1415 | |
1416 colorize_close = gtk_button_new_from_stock("gtk-close"); | |
1417 gtk_container_add(GTK_CONTAINER(hbuttonbox), colorize_close); | |
1418 GTK_WIDGET_SET_FLAGS(colorize_close, GTK_CAN_DEFAULT); | |
1419 | |
1420 g_signal_connect((gpointer) red_scale, "value_changed", | |
1421 G_CALLBACK(on_red_scale_value_changed), | |
1422 NULL); | |
1423 g_signal_connect((gpointer) green_scale, "value_changed", | |
1424 G_CALLBACK(on_green_scale_value_changed), | |
1425 NULL); | |
1426 g_signal_connect((gpointer) blue_scale, "value_changed", | |
1427 G_CALLBACK(on_blue_scale_value_changed), | |
1428 NULL); | |
1429 g_signal_connect((gpointer) colorize_close, "clicked", | |
1430 G_CALLBACK(on_colorize_close_clicked), | |
1431 NULL); | |
1432 | |
1433 gtk_range_set_value(GTK_RANGE(red_scale), cfg.colorize_r); | |
1434 gtk_range_set_value(GTK_RANGE(green_scale), cfg.colorize_g); | |
1435 gtk_range_set_value(GTK_RANGE(blue_scale), cfg.colorize_b); | |
1436 | |
1437 gtk_widget_grab_default(colorize_close); | |
1438 gtk_widget_show_all(colorize_settings); | |
1439 } | 1146 } |
1440 | 1147 |
1441 void | 1148 void |
1442 create_filepopup_settings(void) | 1149 create_filepopup_settings(void) |
1443 { | 1150 { |
1933 GINT_TO_POINTER(i)); | 1640 GINT_TO_POINTER(i)); |
1934 }; | 1641 }; |
1935 gtk_widget_show_all(titlestring_tag_menu); | 1642 gtk_widget_show_all(titlestring_tag_menu); |
1936 | 1643 |
1937 return titlestring_tag_menu; | 1644 return titlestring_tag_menu; |
1938 } | |
1939 | |
1940 static void | |
1941 create_appearence_category(void) | |
1942 { | |
1943 GtkWidget *appearance_page_vbox; | |
1944 GtkWidget *vbox37; | |
1945 GtkWidget *vbox38; | |
1946 GtkWidget *hbox12; | |
1947 GtkWidget *alignment94; | |
1948 GtkWidget *hbox13; | |
1949 GtkWidget *label103; | |
1950 GtkWidget *colorspace_button; | |
1951 GtkWidget *image11; | |
1952 GtkWidget *image12; | |
1953 GtkWidget *alignment95; | |
1954 GtkWidget *skin_view_scrolled_window; | |
1955 | |
1956 appearance_page_vbox = gtk_vbox_new (FALSE, 0); | |
1957 gtk_container_add (GTK_CONTAINER (category_notebook), appearance_page_vbox); | |
1958 | |
1959 vbox37 = gtk_vbox_new (FALSE, 0); | |
1960 gtk_box_pack_start (GTK_BOX (appearance_page_vbox), vbox37, TRUE, TRUE, 0); | |
1961 | |
1962 vbox38 = gtk_vbox_new (FALSE, 0); | |
1963 gtk_box_pack_start (GTK_BOX (vbox37), vbox38, FALSE, TRUE, 0); | |
1964 | |
1965 hbox12 = gtk_hbox_new (FALSE, 0); | |
1966 gtk_box_pack_start (GTK_BOX (vbox38), hbox12, TRUE, TRUE, 0); | |
1967 | |
1968 alignment94 = gtk_alignment_new (0.5, 0.5, 1, 1); | |
1969 gtk_box_pack_start (GTK_BOX (hbox12), alignment94, TRUE, TRUE, 0); | |
1970 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment94), 0, 4, 0, 0); | |
1971 | |
1972 hbox13 = gtk_hbox_new (FALSE, 0); | |
1973 gtk_container_add (GTK_CONTAINER (alignment94), hbox13); | |
1974 | |
1975 label103 = gtk_label_new_with_mnemonic (_("<b>_Skin</b>")); | |
1976 gtk_box_pack_start (GTK_BOX (hbox13), label103, TRUE, TRUE, 0); | |
1977 gtk_label_set_use_markup (GTK_LABEL (label103), TRUE); | |
1978 gtk_misc_set_alignment (GTK_MISC (label103), 0, 0); | |
1979 | |
1980 colorspace_button = gtk_button_new (); | |
1981 gtk_box_pack_start (GTK_BOX (hbox13), colorspace_button, FALSE, FALSE, 0); | |
1982 | |
1983 image11 = gtk_image_new_from_stock ("gtk-properties", GTK_ICON_SIZE_BUTTON); | |
1984 gtk_container_add (GTK_CONTAINER (colorspace_button), image11); | |
1985 | |
1986 skin_refresh_button = gtk_button_new (); | |
1987 gtk_box_pack_start (GTK_BOX (hbox13), skin_refresh_button, FALSE, FALSE, 0); | |
1988 GTK_WIDGET_UNSET_FLAGS (skin_refresh_button, GTK_CAN_FOCUS); | |
1989 gtk_tooltips_set_tip (tooltips, skin_refresh_button, _("Refresh skin list"), NULL); | |
1990 gtk_button_set_relief (GTK_BUTTON (skin_refresh_button), GTK_RELIEF_HALF); | |
1991 gtk_button_set_focus_on_click (GTK_BUTTON (skin_refresh_button), FALSE); | |
1992 | |
1993 image12 = gtk_image_new_from_stock ("gtk-refresh", GTK_ICON_SIZE_BUTTON); | |
1994 gtk_container_add (GTK_CONTAINER (skin_refresh_button), image12); | |
1995 | |
1996 alignment95 = gtk_alignment_new (0.5, 0.5, 1, 1); | |
1997 gtk_box_pack_start (GTK_BOX (vbox38), alignment95, TRUE, TRUE, 0); | |
1998 gtk_widget_set_size_request (alignment95, -1, 172); | |
1999 gtk_alignment_set_padding (GTK_ALIGNMENT (alignment95), 0, 0, 12, 0); | |
2000 | |
2001 skin_view_scrolled_window = gtk_scrolled_window_new (NULL, NULL); | |
2002 gtk_container_add (GTK_CONTAINER (alignment95), skin_view_scrolled_window); | |
2003 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (skin_view_scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); | |
2004 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (skin_view_scrolled_window), GTK_SHADOW_IN); | |
2005 | |
2006 skin_view = gtk_tree_view_new (); | |
2007 gtk_container_add (GTK_CONTAINER (skin_view_scrolled_window), skin_view); | |
2008 gtk_widget_set_size_request (skin_view, -1, 100); | |
2009 | |
2010 create_widgets(GTK_BOX(vbox37), appearance_misc_widgets, G_N_ELEMENTS(appearance_misc_widgets)); | |
2011 | |
2012 | |
2013 | |
2014 gtk_label_set_mnemonic_widget (GTK_LABEL (label103), category_notebook); | |
2015 | |
2016 g_signal_connect(G_OBJECT(colorspace_button), "clicked", | |
2017 G_CALLBACK(on_colorize_button_clicked), | |
2018 NULL); | |
2019 | |
2020 g_signal_connect(skin_view, "drag-data-received", | |
2021 G_CALLBACK(on_skin_view_drag_data_received), | |
2022 NULL); | |
2023 aud_drag_dest_set(skin_view); | |
2024 | |
2025 g_signal_connect(mainwin, "drag-data-received", | |
2026 G_CALLBACK(mainwin_drag_data_received), | |
2027 skin_view); | |
2028 | |
2029 g_signal_connect(skin_refresh_button, "clicked", | |
2030 G_CALLBACK(on_skin_refresh_button_clicked), | |
2031 NULL); | |
2032 } | 1645 } |
2033 | 1646 |
2034 static void | 1647 static void |
2035 create_mouse_category(void) | 1648 create_mouse_category(void) |
2036 { | 1649 { |
3060 gtk_notebook_set_show_border (GTK_NOTEBOOK (category_notebook), FALSE); | 2673 gtk_notebook_set_show_border (GTK_NOTEBOOK (category_notebook), FALSE); |
3061 gtk_notebook_set_scrollable (GTK_NOTEBOOK (category_notebook), TRUE); | 2674 gtk_notebook_set_scrollable (GTK_NOTEBOOK (category_notebook), TRUE); |
3062 | 2675 |
3063 | 2676 |
3064 | 2677 |
3065 | |
3066 create_appearence_category(); | |
3067 create_audio_category(); | 2678 create_audio_category(); |
3068 create_replay_gain_category(); | 2679 create_replay_gain_category(); |
3069 create_connectivity_category(); | 2680 create_connectivity_category(); |
3070 create_mouse_category(); | 2681 create_mouse_category(); |
3071 create_playback_category(); | 2682 create_playback_category(); |
3107 | 2718 |
3108 /* connect signals */ | 2719 /* connect signals */ |
3109 g_signal_connect(G_OBJECT(prefswin), "delete_event", | 2720 g_signal_connect(G_OBJECT(prefswin), "delete_event", |
3110 G_CALLBACK(gtk_widget_hide_on_delete), | 2721 G_CALLBACK(gtk_widget_hide_on_delete), |
3111 NULL); | 2722 NULL); |
3112 g_signal_connect_swapped(G_OBJECT(skin_refresh_button), "clicked", | |
3113 G_CALLBACK(on_skin_refresh_button_clicked), | |
3114 prefswin); | |
3115 g_signal_connect_after(G_OBJECT(skin_view), "realize", | |
3116 G_CALLBACK(on_skin_view_realize), | |
3117 NULL); | |
3118 g_signal_connect_swapped(G_OBJECT(close), "clicked", | 2723 g_signal_connect_swapped(G_OBJECT(close), "clicked", |
3119 G_CALLBACK(gtk_widget_hide), | 2724 G_CALLBACK(gtk_widget_hide), |
3120 GTK_OBJECT (prefswin)); | 2725 GTK_OBJECT (prefswin)); |
3121 | 2726 |
3122 /* create category view */ | 2727 /* create category view */ |
3138 } | 2743 } |
3139 | 2744 |
3140 void | 2745 void |
3141 show_prefs_window(void) | 2746 show_prefs_window(void) |
3142 { | 2747 { |
3143 static gboolean skinlist_filled = FALSE; | |
3144 | |
3145 gtk_window_present(GTK_WINDOW(prefswin)); /* show or raise prefs window */ | 2748 gtk_window_present(GTK_WINDOW(prefswin)); /* show or raise prefs window */ |
3146 | |
3147 if ( !skinlist_filled ) | |
3148 { | |
3149 skin_view_update(GTK_TREE_VIEW(skin_view), GTK_WIDGET(skin_refresh_button)); | |
3150 skinlist_filled = TRUE; | |
3151 } | |
3152 } | 2749 } |
3153 | 2750 |
3154 void | 2751 void |
3155 hide_prefs_window(void) | 2752 hide_prefs_window(void) |
3156 { | 2753 { |