# HG changeset patch # User Matti Hamalainen # Date 1352427888 -7200 # Node ID d183ac29b879fd6e55aa07808929c687779594f0 # Parent a2eb84ed5280d502e74d47a02c5323e3759e7187 Add ROM image path configuration. diff -r a2eb84ed5280 -r d183ac29b879 src/xs_config.c --- a/src/xs_config.c Fri Nov 09 04:01:03 2012 +0200 +++ b/src/xs_config.c Fri Nov 09 04:24:48 2012 +0200 @@ -65,6 +65,7 @@ *xs_sldb_fileselector = NULL, *xs_stil_fileselector = NULL, *xs_hvsc_selector = NULL, + *xs_rom_selector = NULL, *xs_filt_importselector = NULL, *xs_filt_exportselector = NULL; @@ -120,6 +121,8 @@ { CTYPE_STR, &xs_cfg.stilDBPath, "stilDBPath" }, { CTYPE_STR, &xs_cfg.hvscPath, "hvscPath" }, +{ CTYPE_STR, &xs_cfg.romPath, "romPath" }, + #ifndef AUDACIOUS_PLUGIN { CTYPE_INT, &xs_cfg.subsongControl, "subsongControl" }, { CTYPE_BOOL, &xs_cfg.detectMagic, "detectMagic" }, @@ -163,6 +166,8 @@ { WTYPE_BGROUP, CTYPE_INT, "cfg_emu_sp2_resid", &xs_cfg.sid2Builder, XS_BLD_RESID }, { WTYPE_BGROUP, CTYPE_INT, "cfg_emu_sp2_hardsid", &xs_cfg.sid2Builder, XS_BLD_HARDSID }, +{ WTYPE_TEXT, CTYPE_STR, "cfg_rom_path", &xs_cfg.hvscPath, 0 }, + { WTYPE_BUTTON, CTYPE_BOOL, "cfg_emu_filters", &xs_cfg.emulateFilters, 0 }, { WTYPE_SCALE, CTYPE_FLOAT, "cfg_sp1_filter_fs", &xs_cfg.sid1Filter.fs, 0 }, { WTYPE_SCALE, CTYPE_FLOAT, "cfg_sp1_filter_fm", &xs_cfg.sid1Filter.fm, 0 }, @@ -1073,6 +1078,46 @@ XS_DEF_WINDOW_DELETE(hvsc_fs, hvsc_selector) +/* C64 ROM path selector response-functions + */ +void xs_cfg_rom_browse(GtkButton * button, gpointer user_data) +{ + (void) button; + (void) user_data; + + if (xs_rom_selector != NULL) + { + XS_WINDOW_PRESENT(xs_rom_selector); + return; + } + + xs_hvsc_selector = create_xs_rom_fs(); + XS_MUTEX_LOCK(xs_cfg); + gtk_file_selection_set_filename(GTK_FILE_SELECTION(xs_rom_selector), xs_cfg.romPath); + XS_MUTEX_UNLOCK(xs_cfg); + gtk_widget_show(xs_rom_selector); +} + + +void xs_rom_fs_ok(GtkButton *button, gpointer user_data) +{ + (void) button; + (void) user_data; + + /* Selection was accepted! */ + gtk_entry_set_text(GTK_ENTRY(LUW("cfg_rom_path")), + gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_rom_selector))); + + /* Close file selector window */ + gtk_widget_destroy(xs_rom_selector); + xs_rom_selector = NULL; +} + + +XS_DEF_WINDOW_CLOSE(rom_fs_cancel, rom_selector) +XS_DEF_WINDOW_DELETE(rom_fs, rom_selector) + + /* Filter handling */ void xs_cfg_sp1_filter_reset(GtkButton * button, gpointer user_data) diff -r a2eb84ed5280 -r d183ac29b879 src/xs_config.h --- a/src/xs_config.h Fri Nov 09 04:01:03 2012 +0200 +++ b/src/xs_config.h Fri Nov 09 04:24:48 2012 +0200 @@ -144,6 +144,8 @@ gboolean subAutoEnable, subAutoMinOnly; gint subAutoMinTime; + + gchar *romPath; } xs_cfg; XS_MUTEX_H(xs_cfg); diff -r a2eb84ed5280 -r d183ac29b879 src/xs_genui.c --- a/src/xs_genui.c Fri Nov 09 04:01:03 2012 +0200 +++ b/src/xs_genui.c Fri Nov 09 04:24:48 2012 +0200 @@ -25,5 +25,3 @@ return FALSE; } - - diff -r a2eb84ed5280 -r d183ac29b879 src/xs_genui.h --- a/src/xs_genui.h Fri Nov 09 04:01:03 2012 +0200 +++ b/src/xs_genui.h Fri Nov 09 04:24:48 2012 +0200 @@ -194,3 +194,12 @@ GdkEvent *event, gpointer user_data); + +void +xs_cfg_rom_browse (GtkButton *button, + gpointer user_data); + +gboolean +xs_rom_fs_delete (GtkWidget *widget, + GdkEvent *event, + gpointer user_data); diff -r a2eb84ed5280 -r d183ac29b879 src/xs_interface.c --- a/src/xs_interface.c Fri Nov 09 04:01:03 2012 +0200 +++ b/src/xs_interface.c Fri Nov 09 04:24:48 2012 +0200 @@ -87,6 +87,11 @@ GtkWidget *cfg_emu_resid_int; GtkWidget *cfg_emu_resid_res_fast; GtkWidget *cfg_emu_resid_res_int; + GtkWidget *cfg_rom_frame; + GtkWidget *w_rom_hbox; + GtkWidget *cfg_rom_label1; + GtkWidget *cfg_rom_path; + GtkWidget *cfg_rom_browse; GtkWidget *w_label48; GtkWidget *w_vbox25; GtkWidget *cfg_emu_filters; @@ -712,6 +717,48 @@ gtk_widget_show (cfg_emu_resid_res_int); gtk_box_pack_start (GTK_BOX (w_vbox37), cfg_emu_resid_res_int, FALSE, FALSE, 0); + cfg_rom_frame = gtk_frame_new (_("C64 Kernal/Basic/Chargen ROMs:")); + gtk_widget_set_name (cfg_rom_frame, "cfg_rom_frame"); + gtk_widget_ref (cfg_rom_frame); + gtk_object_set_data_full (GTK_OBJECT (xs_configwin), "cfg_rom_frame", cfg_rom_frame, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (cfg_rom_frame); + gtk_box_pack_start (GTK_BOX (w_vbox29), cfg_rom_frame, FALSE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (cfg_rom_frame), 4); + + w_rom_hbox = gtk_hbox_new (FALSE, 4); + gtk_widget_set_name (w_rom_hbox, "w_rom_hbox"); + gtk_widget_ref (w_rom_hbox); + gtk_object_set_data_full (GTK_OBJECT (xs_configwin), "w_rom_hbox", w_rom_hbox, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (w_rom_hbox); + gtk_container_add (GTK_CONTAINER (cfg_rom_frame), w_rom_hbox); + gtk_container_set_border_width (GTK_CONTAINER (w_rom_hbox), 2); + + cfg_rom_label1 = gtk_label_new (_("Path:")); + gtk_widget_set_name (cfg_rom_label1, "cfg_rom_label1"); + gtk_widget_ref (cfg_rom_label1); + gtk_object_set_data_full (GTK_OBJECT (xs_configwin), "cfg_rom_label1", cfg_rom_label1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (cfg_rom_label1); + gtk_box_pack_start (GTK_BOX (w_rom_hbox), cfg_rom_label1, FALSE, FALSE, 0); + + cfg_rom_path = gtk_entry_new (); + gtk_widget_set_name (cfg_rom_path, "cfg_rom_path"); + gtk_widget_ref (cfg_rom_path); + gtk_object_set_data_full (GTK_OBJECT (xs_configwin), "cfg_rom_path", cfg_rom_path, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (cfg_rom_path); + gtk_box_pack_start (GTK_BOX (w_rom_hbox), cfg_rom_path, TRUE, TRUE, 0); + + cfg_rom_browse = gtk_button_new_with_label (_("Browse")); + gtk_widget_set_name (cfg_rom_browse, "cfg_rom_browse"); + gtk_widget_ref (cfg_rom_browse); + gtk_object_set_data_full (GTK_OBJECT (xs_configwin), "cfg_rom_browse", cfg_rom_browse, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (cfg_rom_browse); + gtk_box_pack_start (GTK_BOX (w_rom_hbox), cfg_rom_browse, FALSE, FALSE, 0); + w_label48 = gtk_label_new (_("Emu#2")); gtk_widget_set_name (w_label48, "w_label48"); gtk_widget_ref (w_label48); @@ -1150,6 +1197,7 @@ (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (cfg_sld_box); gtk_box_pack_start (GTK_BOX (w_vbox18), cfg_sld_box, FALSE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (cfg_sld_box), 2); cfg_sld_label1 = gtk_label_new (_("DB-file:")); gtk_widget_set_name (cfg_sld_label1, "cfg_sld_label1"); @@ -1617,6 +1665,9 @@ gtk_signal_connect (GTK_OBJECT (cfg_emu_sidplayfp), "toggled", GTK_SIGNAL_FUNC (xs_cfg_emu_sidplay2_toggled), NULL); + gtk_signal_connect (GTK_OBJECT (cfg_rom_browse), "clicked", + GTK_SIGNAL_FUNC (xs_cfg_rom_browse), + NULL); gtk_signal_connect (GTK_OBJECT (cfg_emu_filters), "toggled", GTK_SIGNAL_FUNC (xs_cfg_emu_filters_toggled), NULL); @@ -2459,3 +2510,36 @@ return xs_filter_newwin; } +GtkWidget* +create_xs_rom_fs (void) +{ + GtkWidget *xs_rom_fs; + GtkWidget *ok_button65; + GtkWidget *cancel_button65; + + xs_rom_fs = gtk_file_selection_new (_("Select path to C64 ROM images")); + gtk_widget_set_name (xs_rom_fs, "xs_rom_fs"); + gtk_object_set_data (GTK_OBJECT (xs_rom_fs), "xs_rom_fs", xs_rom_fs); + gtk_container_set_border_width (GTK_CONTAINER (xs_rom_fs), 10); + gtk_window_set_modal (GTK_WINDOW (xs_rom_fs), TRUE); + gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (xs_rom_fs)); + + ok_button65 = GTK_FILE_SELECTION (xs_rom_fs)->ok_button; + gtk_widget_set_name (ok_button65, "ok_button65"); + gtk_object_set_data (GTK_OBJECT (xs_rom_fs), "ok_button65", ok_button65); + gtk_widget_show (ok_button65); + GTK_WIDGET_SET_FLAGS (ok_button65, GTK_CAN_DEFAULT); + + cancel_button65 = GTK_FILE_SELECTION (xs_rom_fs)->cancel_button; + gtk_widget_set_name (cancel_button65, "cancel_button65"); + gtk_object_set_data (GTK_OBJECT (xs_rom_fs), "cancel_button65", cancel_button65); + gtk_widget_show (cancel_button65); + GTK_WIDGET_SET_FLAGS (cancel_button65, GTK_CAN_DEFAULT); + + gtk_signal_connect (GTK_OBJECT (xs_rom_fs), "delete_event", + GTK_SIGNAL_FUNC (xs_rom_fs_delete), + NULL); + + return xs_rom_fs; +} + diff -r a2eb84ed5280 -r d183ac29b879 src/xs_interface.h --- a/src/xs_interface.h Fri Nov 09 04:01:03 2012 +0200 +++ b/src/xs_interface.h Fri Nov 09 04:24:48 2012 +0200 @@ -11,3 +11,4 @@ GtkWidget* create_xs_filter_export_fs (void); GtkWidget* create_xs_confirmwin (void); GtkWidget* create_xs_filter_newwin (void); +GtkWidget* create_xs_rom_fs (void); diff -r a2eb84ed5280 -r d183ac29b879 xmms-sid.glade --- a/xmms-sid.glade Fri Nov 09 04:01:03 2012 +0200 +++ b/xmms-sid.glade Fri Nov 09 04:24:48 2012 +0200 @@ -805,6 +805,78 @@ + + + GtkFrame + cfg_rom_frame + 4 + + 0 + GTK_SHADOW_ETCHED_IN + + 0 + False + True + + + + GtkHBox + w_rom_hbox + 2 + False + 4 + + + GtkLabel + cfg_rom_label1 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + 0 + False + False + + + + + GtkEntry + cfg_rom_path + True + True + True + 0 + + + 0 + True + True + + + + + GtkButton + cfg_rom_browse + True + + clicked + xs_cfg_rom_browse + Fri, 09 Nov 2012 02:14:12 GMT + + + GTK_RELIEF_NORMAL + + 0 + False + False + + + + @@ -1588,6 +1660,7 @@ GtkHBox cfg_sld_box + 2 False 4 @@ -3475,4 +3548,43 @@ + + GtkFileSelection + xs_rom_fs + 10 + + delete_event + xs_rom_fs_delete + Fri, 09 Nov 2012 02:20:19 GMT + + Select path to C64 ROM images + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + True + False + True + False + False + + + GtkButton + FileSel:ok_button + ok_button65 + True + True + + GTK_RELIEF_NORMAL + + + + GtkButton + FileSel:cancel_button + cancel_button65 + True + True + + GTK_RELIEF_NORMAL + + +