diff options
Diffstat (limited to 'gtk/src')
-rw-r--r-- | gtk/src/audiohandler.c | 260 | ||||
-rw-r--r-- | gtk/src/callbacks.c | 411 | ||||
-rw-r--r-- | gtk/src/hb-backend.c | 424 | ||||
-rw-r--r-- | gtk/src/hb-backend.h | 3 | ||||
-rw-r--r-- | gtk/src/main.c | 23 | ||||
-rw-r--r-- | gtk/src/presets.c | 301 | ||||
-rw-r--r-- | gtk/src/preview.c | 22 | ||||
-rw-r--r-- | gtk/src/queuehandler.c | 237 | ||||
-rw-r--r-- | gtk/src/settings.c | 145 | ||||
-rw-r--r-- | gtk/src/settings.h | 21 | ||||
-rw-r--r-- | gtk/src/subtitlehandler.c | 222 | ||||
-rw-r--r-- | gtk/src/values.c | 86 | ||||
-rw-r--r-- | gtk/src/values.h | 12 | ||||
-rw-r--r-- | gtk/src/videohandler.c | 69 | ||||
-rw-r--r-- | gtk/src/x264handler.c | 67 |
15 files changed, 1079 insertions, 1224 deletions
diff --git a/gtk/src/audiohandler.c b/gtk/src/audiohandler.c index 5a821b3e9..5ef825bd8 100644 --- a/gtk/src/audiohandler.c +++ b/gtk/src/audiohandler.c @@ -61,12 +61,12 @@ static void audio_deps(signal_user_data_t *ud, GhbValue *asettings, GtkWidget *w gint titleindex; const hb_title_t *title; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (asettings != NULL) { - track = ghb_settings_get_int(asettings, "AudioTrack"); + track = ghb_dict_get_int(asettings, "AudioTrack"); codec = ghb_settings_audio_encoder_codec(asettings, "AudioEncoder"); aconfig = ghb_get_audio_info(title, track); } @@ -151,35 +151,35 @@ int ghb_get_copy_mask(GhbValue *settings) { gint mask = 0; - if (ghb_settings_get_boolean(settings, "AudioAllowMP3Pass")) + if (ghb_dict_get_bool(settings, "AudioAllowMP3Pass")) { mask |= HB_ACODEC_MP3_PASS; } - if (ghb_settings_get_boolean(settings, "AudioAllowAACPass")) + if (ghb_dict_get_bool(settings, "AudioAllowAACPass")) { mask |= HB_ACODEC_AAC_PASS; } - if (ghb_settings_get_boolean(settings, "AudioAllowAC3Pass")) + if (ghb_dict_get_bool(settings, "AudioAllowAC3Pass")) { mask |= HB_ACODEC_AC3_PASS; } - if (ghb_settings_get_boolean(settings, "AudioAllowDTSPass")) + if (ghb_dict_get_bool(settings, "AudioAllowDTSPass")) { mask |= HB_ACODEC_DCA_PASS; } - if (ghb_settings_get_boolean(settings, "AudioAllowDTSHDPass")) + if (ghb_dict_get_bool(settings, "AudioAllowDTSHDPass")) { mask |= HB_ACODEC_DCA_HD_PASS; } - if (ghb_settings_get_boolean(settings, "AudioAllowEAC3Pass")) + if (ghb_dict_get_bool(settings, "AudioAllowEAC3Pass")) { mask |= HB_ACODEC_EAC3_PASS; } - if (ghb_settings_get_boolean(settings, "AudioAllowFLACPass")) + if (ghb_dict_get_bool(settings, "AudioAllowFLACPass")) { mask |= HB_ACODEC_FLAC_PASS; } - if (ghb_settings_get_boolean(settings, "AudioAllowTRUEHDPass")) + if (ghb_dict_get_bool(settings, "AudioAllowTRUEHDPass")) { mask |= HB_ACODEC_TRUEHD_PASS; } @@ -201,7 +201,7 @@ int ghb_select_fallback(GhbValue *settings, int acodec) const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(settings, "FileFormat"); + mux_id = ghb_dict_get_string(settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); fallback = ghb_settings_audio_encoder_codec(settings, @@ -222,13 +222,13 @@ ghb_sanitize_audio_settings(GhbValue *settings, GhbValue *asettings) const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(settings, "FileFormat"); + mux_id = ghb_dict_get_string(settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); - track = ghb_settings_get_int(asettings, "AudioTrack"); + track = ghb_dict_get_int(asettings, "AudioTrack"); acodec = ghb_settings_audio_encoder_codec(asettings, "AudioEncoder"); mix = ghb_settings_mixdown_mix(asettings, "AudioMixdown"); bitrate = ghb_settings_audio_bitrate_rate(asettings, "AudioBitrate"); @@ -257,23 +257,23 @@ ghb_sanitize_audio_settings(GhbValue *settings, GhbValue *asettings) bitrate = 448; } mix = HB_AMIXDOWN_NONE; - ghb_settings_set_string(asettings, "AudioMixdown", + ghb_dict_set_string(asettings, "AudioMixdown", hb_mixdown_get_short_name(mix)); - ghb_settings_set_string(asettings, "AudioSamplerate", + ghb_dict_set_string(asettings, "AudioSamplerate", ghb_audio_samplerate_get_short_name(0)); - ghb_settings_set_double(asettings, "AudioTrackDRCSlider", 0.0); + ghb_dict_set_double(asettings, "AudioTrackDRCSlider", 0.0); } else { if (mix == HB_AMIXDOWN_NONE) mix = ghb_get_best_mix(aconfig, select_acodec, mix); bitrate = hb_audio_bitrate_get_best(select_acodec, bitrate, sr, mix); - ghb_settings_set_string(asettings, "AudioMixdown", + ghb_dict_set_string(asettings, "AudioMixdown", hb_mixdown_get_short_name(mix)); } - ghb_settings_set_string(asettings, "AudioBitrate", + ghb_dict_set_string(asettings, "AudioBitrate", ghb_audio_bitrate_get_short_name(bitrate)); - ghb_settings_set_string(asettings, "AudioEncoder", + ghb_dict_set_string(asettings, "AudioEncoder", hb_audio_encoder_get_short_name(select_acodec)); } @@ -290,9 +290,9 @@ ghb_adjust_audio_rate_combos(signal_user_data_t *ud) hb_audio_config_t *aconfig; gboolean codec_defined_bitrate = FALSE; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, NULL); - track = ghb_settings_get_int(asettings, "AudioTrack"); + track = ghb_dict_get_int(asettings, "AudioTrack"); aconfig = ghb_get_audio_info(title, track); acodec = ghb_settings_audio_encoder_codec(asettings, "AudioEncoder"); @@ -320,15 +320,15 @@ ghb_adjust_audio_rate_combos(signal_user_data_t *ud) ghb_set_bitrate_opts(ud->builder, low, high, -1); } ghb_ui_update(ud, "AudioEncoder", - ghb_settings_get_value(asettings, "AudioEncoder")); + ghb_dict_get_value(asettings, "AudioEncoder")); ghb_ui_update(ud, "AudioBitrate", - ghb_settings_get_value(asettings, "AudioBitrate")); + ghb_dict_get_value(asettings, "AudioBitrate")); ghb_ui_update(ud, "AudioSamplerate", - ghb_settings_get_value(asettings, "AudioSamplerate")); + ghb_dict_get_value(asettings, "AudioSamplerate")); ghb_ui_update(ud, "AudioMixdown", - ghb_settings_get_value(asettings, "AudioMixdown")); + ghb_dict_get_value(asettings, "AudioMixdown")); ghb_ui_update(ud, "AudioTrackDRCSlider", - ghb_settings_get_value(asettings, "AudioTrackDRCSlider")); + ghb_dict_get_value(asettings, "AudioTrackDRCSlider")); ghb_audio_list_refresh_selected(ud); } } @@ -336,7 +336,7 @@ ghb_adjust_audio_rate_combos(signal_user_data_t *ud) void ghb_santiize_audio_tracks(signal_user_data_t *ud) { int ii; - GhbValue *alist = ghb_settings_get_value(ud->settings, "audio_list"); + GhbValue *alist = ghb_dict_get_value(ud->settings, "audio_list"); int count = ghb_array_len(alist); for (ii = 0; ii < count; ii++) @@ -350,15 +350,15 @@ void ghb_santiize_audio_tracks(signal_user_data_t *ud) if (asettings != NULL) { ghb_ui_update(ud, "AudioEncoder", - ghb_settings_get_value(asettings, "AudioEncoder")); + ghb_dict_get_value(asettings, "AudioEncoder")); ghb_ui_update(ud, "AudioBitrate", - ghb_settings_get_value(asettings, "AudioBitrate")); + ghb_dict_get_value(asettings, "AudioBitrate")); ghb_ui_update(ud, "AudioSamplerate", - ghb_settings_get_value(asettings, "AudioSamplerate")); + ghb_dict_get_value(asettings, "AudioSamplerate")); ghb_ui_update(ud, "AudioMixdown", - ghb_settings_get_value(asettings, "AudioMixdown")); + ghb_dict_get_value(asettings, "AudioMixdown")); ghb_ui_update(ud, "AudioTrackDRCSlider", - ghb_settings_get_value(asettings, "AudioTrackDRCSlider")); + ghb_dict_get_value(asettings, "AudioTrackDRCSlider")); } } @@ -407,35 +407,35 @@ audio_update_dialog_widgets(signal_user_data_t *ud, GhbValue *asettings) block_updates = TRUE; ghb_ui_update(ud, "AudioTrack", - ghb_settings_get_value(asettings, "AudioTrack")); + ghb_dict_get_value(asettings, "AudioTrack")); ghb_ui_update(ud, "AudioEncoder", - ghb_settings_get_value(asettings, "AudioEncoder")); + ghb_dict_get_value(asettings, "AudioEncoder")); ghb_ui_update(ud, "AudioBitrate", - ghb_settings_get_value(asettings, "AudioBitrate")); + ghb_dict_get_value(asettings, "AudioBitrate")); ghb_ui_update(ud, "AudioTrackName", - ghb_settings_get_value(asettings, "AudioTrackName")); + ghb_dict_get_value(asettings, "AudioTrackName")); ghb_ui_update(ud, "AudioSamplerate", - ghb_settings_get_value(asettings, "AudioSamplerate")); + ghb_dict_get_value(asettings, "AudioSamplerate")); ghb_ui_update(ud, "AudioMixdown", - ghb_settings_get_value(asettings, "AudioMixdown")); + ghb_dict_get_value(asettings, "AudioMixdown")); ghb_ui_update(ud, "AudioTrackDRCSlider", - ghb_settings_get_value(asettings, "AudioTrackDRCSlider")); - drc = ghb_settings_get_double(asettings, "AudioTrackDRCSlider"); + ghb_dict_get_value(asettings, "AudioTrackDRCSlider")); + drc = ghb_dict_get_double(asettings, "AudioTrackDRCSlider"); s_drc = get_drc_string(drc); ghb_ui_update(ud, "AudioTrackDRCValue", ghb_string_value(s_drc)); ghb_ui_update(ud, "AudioTrackGainSlider", - ghb_settings_get_value(asettings, "AudioTrackGainSlider")); - gain = ghb_settings_get_double(asettings, "AudioTrackGainSlider"); + ghb_dict_get_value(asettings, "AudioTrackGainSlider")); + gain = ghb_dict_get_double(asettings, "AudioTrackGainSlider"); s_gain = get_gain_string(gain); ghb_ui_update(ud, "AudioTrackGainValue", ghb_string_value(s_gain)); ghb_ui_update(ud, "AudioTrackQuality", - ghb_settings_get_value(asettings, "AudioTrackQuality")); - quality = ghb_settings_get_double(asettings, "AudioTrackQuality"); + ghb_dict_get_value(asettings, "AudioTrackQuality")); + quality = ghb_dict_get_double(asettings, "AudioTrackQuality"); s_quality = get_quality_string(asettings, quality); ghb_ui_update(ud, "AudioTrackQualityValue", ghb_string_value(s_quality)); ghb_ui_update(ud, "AudioTrackQualityEnable", - ghb_settings_get_value(asettings, "AudioTrackQualityEnable")); + ghb_dict_get_value(asettings, "AudioTrackQualityEnable")); block_updates = FALSE; } audio_deps(ud, asettings, NULL); @@ -453,11 +453,11 @@ ghb_get_user_audio_lang(GhbValue *settings, const hb_title_t *title, gint track) GhbValue *audio_list, *asettings; const gchar *lang; - audio_list = ghb_settings_get_value(settings, "audio_list"); + audio_list = ghb_dict_get_value(settings, "audio_list"); if (ghb_array_len(audio_list) <= track) return "und"; asettings = ghb_array_get(audio_list, track); - track = ghb_settings_get_int(asettings, "AudioTrack"); + track = ghb_dict_get_int(asettings, "AudioTrack"); lang = ghb_get_source_audio_lang(title, track); return lang; } @@ -500,31 +500,30 @@ audio_add_track( aconfig = ghb_get_audio_info(title, track); asettings = ghb_dict_new(); - ghb_settings_set_int(asettings, "AudioTrack", track); + ghb_dict_set_int(asettings, "AudioTrack", track); - ghb_settings_set_string(asettings, "AudioEncoder", - hb_audio_encoder_get_short_name(encoder)); + ghb_dict_set_string(asettings, "AudioEncoder", + hb_audio_encoder_get_short_name(encoder)); - ghb_settings_set_boolean(asettings, - "AudioTrackQualityEnable", enable_quality); - ghb_settings_set_double(asettings, "AudioTrackQuality", quality); + ghb_dict_set_bool(asettings, "AudioTrackQualityEnable", enable_quality); + ghb_dict_set_double(asettings, "AudioTrackQuality", quality); - ghb_settings_set_string(asettings, "AudioBitrate", + ghb_dict_set_string(asettings, "AudioBitrate", ghb_audio_bitrate_get_short_name(bitrate)); - ghb_settings_set_string(asettings, "AudioSamplerate", + ghb_dict_set_string(asettings, "AudioSamplerate", ghb_audio_samplerate_get_short_name(samplerate)); if (aconfig != NULL) { mix = ghb_get_best_mix(aconfig, encoder, mix); } - ghb_settings_set_string(asettings, "AudioMixdown", - hb_mixdown_get_short_name(mix)); + ghb_dict_set_string(asettings, "AudioMixdown", + hb_mixdown_get_short_name(mix)); - ghb_settings_set_double(asettings, "AudioTrackDRCSlider", drc); + ghb_dict_set_double(asettings, "AudioTrackDRCSlider", drc); - ghb_settings_set_double(asettings, "AudioTrackGainSlider", gain); + ghb_dict_set_double(asettings, "AudioTrackGainSlider", gain); ghb_sanitize_audio_settings(settings, asettings); audio_add_to_settings(settings, asettings); @@ -552,7 +551,7 @@ audio_select_and_add_track( const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(settings, "FileFormat"); + mux_id = ghb_dict_get_string(settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); gint copy_mask = ghb_get_copy_mask(settings); @@ -565,10 +564,10 @@ audio_select_and_add_track( bitrate = ghb_settings_audio_bitrate_rate(audio, "AudioBitrate"); samplerate = ghb_settings_audio_samplerate_rate(audio, "AudioSamplerate"); mix = ghb_settings_mixdown_mix(audio, "AudioMixdown"); - drc = ghb_settings_get_double(audio, "AudioTrackDRCSlider"); - gain = ghb_settings_get_double(audio, "AudioTrackGainSlider"); - enable_quality = ghb_settings_get_boolean(audio, "AudioTrackQualityEnable"); - quality = ghb_settings_get_double(audio, "AudioTrackQuality"); + drc = ghb_dict_get_double(audio, "AudioTrackDRCSlider"); + gain = ghb_dict_get_double(audio, "AudioTrackGainSlider"); + enable_quality = ghb_dict_get_bool(audio, "AudioTrackQualityEnable"); + quality = ghb_dict_get_double(audio, "AudioTrackQuality"); track = ghb_find_audio_track(title, lang, start_track); if (track >= 0) @@ -600,15 +599,15 @@ static void set_pref_audio_with_lang( const GhbValue *pref_audio, *audio_list; int count, ii, track, track_count, audio_count; - audio_list = ghb_settings_get_value(settings, "audio_list"); + audio_list = ghb_dict_get_value(settings, "audio_list"); const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(settings, "FileFormat"); + mux_id = ghb_dict_get_string(settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); - pref_audio = ghb_settings_get_value(settings, "AudioList"); + pref_audio = ghb_dict_get_value(settings, "AudioList"); audio_count = hb_list_count(title->list_audio); count = ghb_array_len(pref_audio); int next_track = 0; @@ -633,11 +632,11 @@ static void set_pref_audio_with_lang( samplerate = ghb_settings_audio_samplerate_rate(audio, "AudioSamplerate"); mix = ghb_settings_mixdown_mix(audio, "AudioMixdown"); - drc = ghb_settings_get_double(audio, "AudioTrackDRCSlider"); - gain = ghb_settings_get_double(audio, "AudioTrackGainSlider"); - enable_quality = ghb_settings_get_boolean(audio, - "AudioTrackQualityEnable"); - quality = ghb_settings_get_double(audio, "AudioTrackQuality"); + drc = ghb_dict_get_double(audio, "AudioTrackDRCSlider"); + gain = ghb_dict_get_double(audio, "AudioTrackGainSlider"); + enable_quality = ghb_dict_get_bool(audio, + "AudioTrackQualityEnable"); + quality = ghb_dict_get_double(audio, "AudioTrackQuality"); // Check to see if: // 1. pref codec is passthru @@ -699,7 +698,7 @@ ghb_set_pref_audio_settings(GhbValue *settings) // Clear the audio list ghb_clear_audio_list_settings(settings); - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (behavior == 0 || title == NULL) { @@ -717,7 +716,7 @@ ghb_set_pref_audio_settings(GhbValue *settings) free_audio_hash_key_value, free_audio_hash_key_value); // Find "best" audio based on audio preset defaults - lang_list = ghb_settings_get_value(settings, "AudioLanguageList"); + lang_list = ghb_dict_get_value(settings, "AudioLanguageList"); lang_count = ghb_array_len(lang_list); for (ii = 0; ii < lang_count; ii++) @@ -726,10 +725,10 @@ ghb_set_pref_audio_settings(GhbValue *settings) gboolean mode; GhbValue *glang = ghb_array_get(lang_list, ii); lang = ghb_value_get_string(glang); - mode = ghb_settings_get_boolean(settings, "AudioSecondaryEncoderMode"); + mode = ghb_dict_get_bool(settings, "AudioSecondaryEncoderMode"); set_pref_audio_with_lang(title, settings, lang, behavior, mode, track_used); } - GhbValue *audio_list = ghb_settings_get_value(settings, "audio_list"); + GhbValue *audio_list = ghb_dict_get_value(settings, "audio_list"); if (audio_list == NULL || ghb_array_len(audio_list) == 0) { // No matching audio tracks found. Add first track matching @@ -764,7 +763,7 @@ audio_get_selected_settings(signal_user_data_t *ud, int *index) // find audio settings if (row < 0) return NULL; - audio_list = ghb_settings_get_value(ud->settings, "audio_list"); + audio_list = ghb_dict_get_value(ud->settings, "audio_list"); if (row >= ghb_array_len(audio_list)) return NULL; @@ -790,8 +789,8 @@ audio_refresh_list_row_ui( info_src_2 = NULL; info_dst_2 = NULL; - const gchar *s_track; - gchar *s_drc, *s_gain, *s_br_quality, *s_sr, *s_track_name; + const gchar *s_track, *s_track_name; + gchar *s_drc, *s_gain, *s_br_quality, *s_sr; gdouble drc, gain; hb_audio_config_t *aconfig; int track, sr; @@ -799,9 +798,9 @@ audio_refresh_list_row_ui( const hb_title_t *title; const hb_encoder_t *encoder; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); - track = ghb_settings_get_int(settings, "AudioTrack"); + track = ghb_dict_get_int(settings, "AudioTrack"); aconfig = ghb_get_audio_info(title, track); if (aconfig == NULL) { @@ -812,8 +811,8 @@ audio_refresh_list_row_ui( s_track = aconfig->lang.description; encoder = ghb_settings_audio_encoder(settings, "AudioEncoder"); - double quality = ghb_settings_get_double(settings, "AudioTrackQuality"); - if (ghb_settings_get_boolean(settings, "AudioTrackQualityEnable") && + double quality = ghb_dict_get_double(settings, "AudioTrackQuality"); + if (ghb_dict_get_bool(settings, "AudioTrackQualityEnable") && quality != HB_INVALID_AUDIO_QUALITY) { s_br_quality = ghb_format_quality(_("Quality: "), encoder->codec, quality); @@ -833,16 +832,16 @@ audio_refresh_list_row_ui( const hb_mixdown_t *mix; mix = ghb_settings_mixdown(settings, "AudioMixdown"); - gain = ghb_settings_get_double(settings, "AudioTrackGainSlider"); + gain = ghb_dict_get_double(settings, "AudioTrackGainSlider"); s_gain = g_strdup_printf(_("%ddB"), (int)gain); - drc = ghb_settings_get_double(settings, "AudioTrackDRCSlider"); + drc = ghb_dict_get_double(settings, "AudioTrackDRCSlider"); if (drc < 1.0) s_drc = g_strdup(_("Off")); else s_drc = g_strdup_printf("%.1f", drc); - s_track_name = ghb_settings_get_string(settings, "AudioTrackName"); + s_track_name = ghb_dict_get_string(settings, "AudioTrackName"); info_src = g_strdup_printf(_("<small>%d - %s (%.4gkHz)</small>"), track + 1, s_track, (double)aconfig->in.samplerate / 1000); @@ -919,7 +918,6 @@ audio_refresh_list_row_ui( g_free(s_drc); g_free(s_gain); g_free(s_br_quality); - g_free(s_track_name); } void @@ -947,7 +945,7 @@ ghb_audio_list_refresh_selected(signal_user_data_t *ud) gtk_tree_path_free(tp); if (row < 0) return; - audio_list = ghb_settings_get_value(ud->settings, "audio_list"); + audio_list = ghb_dict_get_value(ud->settings, "audio_list"); if (row >= ghb_array_len(audio_list)) return; @@ -971,7 +969,7 @@ audio_refresh_list_ui(signal_user_data_t *ud) tm_count = gtk_tree_model_iter_n_children(tm, NULL); - audio_list = ghb_settings_get_value(ud->settings, "audio_list"); + audio_list = ghb_dict_get_value(ud->settings, "audio_list"); count = ghb_array_len(audio_list); if (count != tm_count) { @@ -1038,7 +1036,7 @@ audio_codec_changed_cb(GtkWidget *widget, signal_user_data_t *ud) gint track; gint br, sr, mix; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (asettings != NULL) @@ -1055,7 +1053,7 @@ audio_codec_changed_cb(GtkWidget *widget, signal_user_data_t *ud) mix = HB_AMIXDOWN_NONE; } - track = ghb_settings_get_int(ud->settings, "AudioTrack"); + track = ghb_dict_get_int(ud->settings, "AudioTrack"); if (sr) { sr = ghb_find_closest_audio_samplerate(sr); @@ -1113,16 +1111,16 @@ audio_track_changed_cb(GtkWidget *widget, signal_user_data_t *ud) int track; hb_audio_config_t *aconfig; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); - track = ghb_settings_get_int(ud->settings, "AudioTrack"); + track = ghb_dict_get_int(ud->settings, "AudioTrack"); aconfig = ghb_get_audio_info(title, track); if (aconfig != NULL) { char *desc; desc = g_strdup_printf("%d - %s", track + 1, aconfig->lang.description); - ghb_settings_set_string(asettings, "AudioTrackDescription", desc); + ghb_dict_set_string(asettings, "AudioTrackDescription", desc); g_free(desc); } } @@ -1233,7 +1231,7 @@ quality_widget_changed_cb(GtkWidget *widget, gdouble quality, signal_user_data_t asettings = audio_get_selected_settings(ud, NULL); if (asettings != NULL) { - ghb_settings_set_double(asettings, "AudioTrackQuality", quality); + ghb_dict_set_double(asettings, "AudioTrackQuality", quality); ghb_audio_list_refresh_selected(ud); } ghb_live_reset(ud); @@ -1306,11 +1304,11 @@ ghb_clear_audio_list_settings(GhbValue *settings) GhbValue *audio_list; g_debug("clear_audio_list_settings ()"); - audio_list = ghb_settings_get_value(settings, "audio_list"); + audio_list = ghb_dict_get_value(settings, "audio_list"); if (audio_list == NULL) { audio_list = ghb_array_new(); - ghb_settings_set_value(settings, "audio_list", audio_list); + ghb_dict_set(settings, "audio_list", audio_list); } else ghb_array_reset(audio_list); @@ -1392,7 +1390,7 @@ audio_list_selection_changed_cb(GtkTreeSelection *ts, signal_user_data_t *ud) gtk_tree_path_free(tp); if (row < 0) return; - audio_list = ghb_settings_get_value(ud->settings, "audio_list"); + audio_list = ghb_dict_get_value(ud->settings, "audio_list"); if (row >= 0 && row < ghb_array_len(audio_list)) asettings = ghb_array_get(audio_list, row); } @@ -1408,22 +1406,22 @@ audio_add_to_settings(GhbValue *settings, GhbValue *asettings) gint titleindex; hb_audio_config_t *aconfig; - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); - audio_list = ghb_settings_get_value(settings, "audio_list"); + audio_list = ghb_dict_get_value(settings, "audio_list"); if (audio_list == NULL) { - audio_list = ghb_array_new(8); - ghb_settings_set_value(settings, "audio_list", audio_list); + audio_list = ghb_array_new(); + ghb_dict_set(settings, "audio_list", audio_list); } - int track = ghb_settings_get_int(asettings, "AudioTrack"); + int track = ghb_dict_get_int(asettings, "AudioTrack"); aconfig = ghb_get_audio_info(title, track); if (aconfig != NULL) { char *desc; desc = g_strdup_printf("%d - %s", track + 1, aconfig->lang.description); - ghb_settings_set_string(asettings, "AudioTrackDescription", desc); + ghb_dict_set_string(asettings, "AudioTrackDescription", desc); g_free(desc); } @@ -1431,7 +1429,7 @@ audio_add_to_settings(GhbValue *settings, GhbValue *asettings) aname = ghb_dict_get(asettings, "AudioTrackName"); if (aname == NULL) { - ghb_settings_set_string(asettings, "AudioTrackName", ""); + ghb_dict_set_string(asettings, "AudioTrackName", ""); } ghb_array_append(audio_list, asettings); } @@ -1444,13 +1442,12 @@ audio_add_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) int title_id, titleindex; const hb_title_t *title; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); // Back up settings in case we need to revert. - backup = ghb_value_dup( - ghb_settings_get_value(ud->settings, "audio_list")); - GhbValue *pref_audio = ghb_settings_get_value(ud->settings, "AudioList"); + backup = ghb_value_dup(ghb_dict_get_value(ud->settings, "audio_list")); + GhbValue *pref_audio = ghb_dict_get_value(ud->settings, "AudioList"); asettings = audio_select_and_add_track(title, ud->settings, pref_audio, "und", 0, 0); ghb_add_audio_to_ui(ud, asettings); @@ -1464,7 +1461,7 @@ audio_add_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) gtk_widget_hide(dialog); if (response != GTK_RESPONSE_OK) { - ghb_settings_take_value(ud->settings, "audio_list", backup); + ghb_dict_set(ud->settings, "audio_list", backup); asettings = audio_get_selected_settings(ud, NULL); if (asettings != NULL) { @@ -1489,9 +1486,9 @@ audio_add_all_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) ghb_clear_audio_list_settings(ud->settings); ghb_clear_audio_list_ui(ud->builder); - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); - GhbValue *pref_audio = ghb_settings_get_value(ud->settings, "AudioList"); + GhbValue *pref_audio = ghb_dict_get_value(ud->settings, "AudioList"); int pref_count = ghb_array_len(pref_audio); @@ -1509,7 +1506,7 @@ audio_add_all_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) track); if (asettings != NULL) { - track = ghb_settings_get_int(asettings, "AudioTrack") + 1; + track = ghb_dict_get_int(asettings, "AudioTrack") + 1; } } while (asettings != NULL); } @@ -1537,8 +1534,7 @@ audio_edit_clicked_cb(GtkWidget *widget, gchar *path, signal_user_data_t *ud) gtk_tree_selection_select_iter(ts, &ti); // Back up settings in case we need to revert. - backup = ghb_value_dup( - ghb_settings_get_value(ud->settings, "audio_list")); + backup = ghb_value_dup(ghb_dict_get_value(ud->settings, "audio_list")); // Pop up the edit dialog GtkResponseType response; @@ -1547,7 +1543,7 @@ audio_edit_clicked_cb(GtkWidget *widget, gchar *path, signal_user_data_t *ud) gtk_widget_hide(dialog); if (response != GTK_RESPONSE_OK) { - ghb_settings_take_value(ud->settings, "audio_list", backup); + ghb_dict_set(ud->settings, "audio_list", backup); asettings = audio_get_selected_settings(ud, NULL); if (asettings != NULL) { @@ -1595,7 +1591,7 @@ audio_remove_clicked_cb(GtkWidget *widget, gchar *path, signal_user_data_t *ud) gtk_tree_selection_select_iter(ts, &nextIter); } - audio_list = ghb_settings_get_value(ud->settings, "audio_list"); + audio_list = ghb_dict_get_value(ud->settings, "audio_list"); // Get the row number indices = gtk_tree_path_get_indices (tp); @@ -2049,7 +2045,7 @@ audio_def_setting_update(signal_user_data_t *ud, GtkWidget *widget) GtkListBoxRow *row = audio_settings_get_row(widget); gint index = gtk_list_box_row_get_index(row); - GhbValue *alist = ghb_settings_get_value(ud->settings, "AudioList"); + GhbValue *alist = ghb_dict_get_value(ud->settings, "AudioList"); int count = ghb_array_len(alist); if (!block_updates && index >= 0 && index < count) { @@ -2085,7 +2081,7 @@ audio_add_lang_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) idx = (intptr_t)g_object_get_data(G_OBJECT(label), "lang_idx"); lang = ghb_iso639_lookup_by_int(idx); glang = ghb_string_value_new(lang->iso639_2); - alang_list = ghb_settings_get_value(ud->settings, "AudioLanguageList"); + alang_list = ghb_dict_get_value(ud->settings, "AudioLanguageList"); ghb_array_append(alang_list, glang); ghb_clear_presets_selection(ud); } @@ -2119,7 +2115,7 @@ audio_remove_lang_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) gtk_list_box_insert(avail, label, idx); // Remove from preset language list - alang_list = ghb_settings_get_value(ud->settings, "AudioLanguageList"); + alang_list = ghb_dict_get_value(ud->settings, "AudioLanguageList"); ghb_array_remove(alang_list, index); ghb_clear_presets_selection(ud); } @@ -2156,7 +2152,7 @@ void audio_def_set_limits(signal_user_data_t *ud, GtkWidget *widget, gboolean se GtkListBoxRow *row = audio_settings_get_row(widget); gint index = gtk_list_box_row_get_index(row); - GhbValue *alist = ghb_settings_get_value(ud->settings, "AudioList"); + GhbValue *alist = ghb_dict_get_value(ud->settings, "AudioList"); int count = ghb_array_len(alist); if (index < 0 || index >= count) return; @@ -2166,7 +2162,7 @@ void audio_def_set_limits(signal_user_data_t *ud, GtkWidget *widget, gboolean se int codec = ghb_settings_audio_encoder_codec(adict, "AudioEncoder"); int fallback = ghb_settings_audio_encoder_codec(ud->settings, "AudioEncoderFallback"); - gdouble quality = ghb_settings_get_double(adict, "AudioTrackQuality"); + gdouble quality = ghb_dict_get_double(adict, "AudioTrackQuality"); // Allow quality settings if the current encoder supports quality // or if the encoder is auto-passthru and the fallback encoder @@ -2247,11 +2243,11 @@ audio_def_quality_enable_changed_cb(GtkWidget *widget, signal_user_data_t *ud) GtkListBoxRow *row = audio_settings_get_row(widget); gint index = gtk_list_box_row_get_index(row); - GhbValue *alist = ghb_settings_get_value(ud->settings, "AudioList"); + GhbValue *alist = ghb_dict_get_value(ud->settings, "AudioList"); GhbValue *adict = ghb_array_get(alist, index); audio_def_settings_bitrate_show(GTK_WIDGET(row), - !ghb_settings_get_boolean(adict, "AudioTrackQualityEnable")); + !ghb_dict_get_bool(adict, "AudioTrackQualityEnable")); ghb_clear_presets_selection(ud); } @@ -2265,7 +2261,7 @@ audio_def_quality_changed_cb(GtkWidget *widget, gdouble quality, signal_user_dat "AudioTrackQualityValue"); gint index = gtk_list_box_row_get_index(row); - GhbValue *alist = ghb_settings_get_value(ud->settings, "AudioList"); + GhbValue *alist = ghb_dict_get_value(ud->settings, "AudioList"); GhbValue *adict = ghb_array_get(alist, index); char *s_quality = get_quality_string(adict, quality); ghb_update_widget(quality_label, ghb_string_value(s_quality)); @@ -2306,7 +2302,7 @@ audio_def_setting_add_cb(GtkWidget *widget, signal_user_data_t *ud) GtkListBoxRow *row = audio_settings_get_row(widget); GhbValue *adict; - GhbValue *alist = ghb_settings_get_value(ud->settings, "AudioList"); + GhbValue *alist = ghb_dict_get_value(ud->settings, "AudioList"); int count = ghb_array_len(alist); if (count > 0) { @@ -2338,7 +2334,7 @@ audio_def_setting_remove_cb(GtkWidget *widget, signal_user_data_t *ud) GtkListBoxRow *row = audio_settings_get_row(widget); gint index = gtk_list_box_row_get_index(row); - GhbValue *alist = ghb_settings_get_value(ud->settings, "AudioList"); + GhbValue *alist = ghb_dict_get_value(ud->settings, "AudioList"); int count = ghb_array_len(alist); if (index < 0 || index >= count) { @@ -2417,11 +2413,11 @@ audio_def_lang_list_init(signal_user_data_t *ud) // Clear selected languages. audio_def_selected_lang_list_clear(ud); - lang_list = ghb_settings_get_value(ud->settings, "AudioLanguageList"); + lang_list = ghb_dict_get_value(ud->settings, "AudioLanguageList"); if (lang_list == NULL) { lang_list = ghb_array_new(); - ghb_settings_set_value(ud->settings, "AudioLanguageList", lang_list); + ghb_dict_set(ud->settings, "AudioLanguageList", lang_list); } int ii, count; @@ -2464,11 +2460,11 @@ void ghb_audio_defaults_to_ui(signal_user_data_t *ud) audio_def_lang_list_init(ud); // Init the AudioList settings if necessary - alist = ghb_settings_get_value(ud->settings, "AudioList"); + alist = ghb_dict_get_value(ud->settings, "AudioList"); if (alist == NULL) { alist = ghb_array_new(); - ghb_settings_set_value(ud->settings, "AudioList", alist); + ghb_dict_set(ud->settings, "AudioList", alist); } // Empty the current list diff --git a/gtk/src/callbacks.c b/gtk/src/callbacks.c index f1709dd81..321f823b1 100644 --- a/gtk/src/callbacks.c +++ b/gtk/src/callbacks.c @@ -153,7 +153,7 @@ dep_check(signal_user_data_t *ud, const gchar *name, gboolean *out_hide) if (widget) value = ghb_widget_string(widget); else - value = ghb_settings_get_string(ud->settings, widget_name); + value = ghb_dict_get_string_xform(ud->settings, widget_name); while (values && values[jj]) { if (values[jj][0] == '>') @@ -539,11 +539,11 @@ get_extension(signal_user_data_t *ud, GhbValue *settings) const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(settings, "FileFormat"); + mux_id = ghb_dict_get_string(settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); if ((mux->format & HB_MUX_MASK_MP4) && - ghb_settings_get_boolean(ud->prefs, "UseM4v")) + ghb_dict_get_bool(ud->prefs, "UseM4v")) { return "m4v"; } @@ -553,11 +553,11 @@ get_extension(signal_user_data_t *ud, GhbValue *settings) static gboolean check_name_template(signal_user_data_t *ud, const char *str) { - if (ghb_settings_get_boolean(ud->prefs, "auto_name")) + if (ghb_dict_get_bool(ud->prefs, "auto_name")) { const gchar *template; - template = ghb_settings_get_const_string(ud->prefs, "auto_name_template"); + template = ghb_dict_get_string(ud->prefs, "auto_name_template"); if (strstr(template, str) != NULL) return TRUE; } @@ -573,26 +573,24 @@ set_destination_settings(signal_user_data_t *ud, GhbValue *settings) extension = get_extension(ud, settings); g_debug("set_destination_settings"); - if (ghb_settings_get_boolean(ud->prefs, "auto_name")) + if (ghb_dict_get_bool(ud->prefs, "auto_name")) { GString *str = g_string_new(""); - gchar *p; - gchar *template; + const gchar *p; - p = template = ghb_settings_get_string(ud->prefs, "auto_name_template"); + p = ghb_dict_get_string(ud->prefs, "auto_name_template"); while (*p) { if (!strncmp(p, "{source}", strlen("{source}"))) { - gchar *vol_name; - vol_name = ghb_settings_get_string(settings, "volume_label"); + const gchar *vol_name; + vol_name = ghb_dict_get_string(settings, "volume_label"); g_string_append_printf(str, "%s", vol_name); - g_free(vol_name); p += strlen("{source}"); } else if (!strncmp(p, "{title}", strlen("{title}"))) { - gint title = ghb_settings_get_int(settings, "title"); + gint title = ghb_dict_get_int(settings, "title"); if (title >= 0) g_string_append_printf(str, "%d", title); p += strlen("{title}"); @@ -602,8 +600,8 @@ set_destination_settings(signal_user_data_t *ud, GhbValue *settings) if (ghb_settings_combo_int(settings, "PtoPType") == 0) { gint start, end; - start = ghb_settings_get_int(settings, "start_point"); - end = ghb_settings_get_int(settings, "end_point"); + start = ghb_dict_get_int(settings, "start_point"); + end = ghb_dict_get_int(settings, "end_point"); if (start == end) g_string_append_printf(str, "%d", start); else @@ -635,24 +633,24 @@ set_destination_settings(signal_user_data_t *ud, GhbValue *settings) } else if (!strncmp(p, "{quality}", strlen("{quality}"))) { - if (ghb_settings_get_boolean(settings, "vquality_type_constant")) + if (ghb_dict_get_bool(settings, "vquality_type_constant")) { gint vcodec; const char *vqname; double vquality; vcodec = ghb_settings_video_encoder_codec(settings, "VideoEncoder"); vqname = hb_video_quality_get_name(vcodec); - vquality = ghb_settings_get_double(settings, "VideoQualitySlider"); + vquality = ghb_dict_get_double(settings, "VideoQualitySlider"); g_string_append_printf(str, "%s%.3g", vqname, vquality); } p += strlen("{quality}"); } else if (!strncmp(p, "{bitrate}", strlen("{bitrate}"))) { - if (ghb_settings_get_boolean(settings, "vquality_type_bitrate")) + if (ghb_dict_get_bool(settings, "vquality_type_bitrate")) { int vbitrate; - vbitrate = ghb_settings_get_int(settings, "VideoAvgBitrate"); + vbitrate = ghb_dict_get_int(settings, "VideoAvgBitrate"); g_string_append_printf(str, "%dkbps", vbitrate); } p += strlen("{bitrate}"); @@ -665,8 +663,7 @@ set_destination_settings(signal_user_data_t *ud, GhbValue *settings) } g_string_append_printf(str, ".%s", extension); filename = g_string_free(str, FALSE); - ghb_settings_set_string(settings, "dest_file", filename); - g_free(template); + ghb_dict_set_string(settings, "dest_file", filename); g_free(filename); } } @@ -676,7 +673,7 @@ set_destination(signal_user_data_t *ud) { set_destination_settings(ud, ud->settings); ghb_ui_update(ud, "dest_file", - ghb_settings_get_value(ud->settings, "dest_file")); + ghb_dict_get_value(ud->settings, "dest_file")); } static gchar* @@ -809,14 +806,14 @@ update_source_label(signal_user_data_t *ud, const gchar *source) if (label != NULL) { gtk_label_set_text (GTK_LABEL(widget), label); - ghb_settings_set_string(ud->settings, "volume_label", label); + ghb_dict_set_string(ud->settings, "volume_label", label); g_free(label); } else { label = _("No Title Found"); gtk_label_set_text (GTK_LABEL(widget), label); - ghb_settings_set_string(ud->settings, "volume_label", label); + ghb_dict_set_string(ud->settings, "volume_label", label); return FALSE; } return TRUE; @@ -927,22 +924,22 @@ update_title_duration(signal_user_data_t *ud) int title_id, titleindex; const hb_title_t *title; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); widget = GHB_WIDGET (ud->builder, "title_duration"); if (ghb_settings_combo_int(ud->settings, "PtoPType") == 0) { - start = ghb_settings_get_int(ud->settings, "start_point"); - end = ghb_settings_get_int(ud->settings, "end_point"); + start = ghb_dict_get_int(ud->settings, "start_point"); + end = ghb_dict_get_int(ud->settings, "end_point"); ghb_part_duration(title, start, end, &hh, &mm, &ss); } else if (ghb_settings_combo_int(ud->settings, "PtoPType") == 1) { gint duration; - start = ghb_settings_get_int(ud->settings, "start_point"); - end = ghb_settings_get_int(ud->settings, "end_point"); + start = ghb_dict_get_int(ud->settings, "start_point"); + end = ghb_dict_get_int(ud->settings, "end_point"); duration = end - start; break_duration(duration, &hh, &mm, &ss); } @@ -953,8 +950,8 @@ update_title_duration(signal_user_data_t *ud) gint64 frames; gint duration; - start = ghb_settings_get_int(ud->settings, "start_point"); - end = ghb_settings_get_int(ud->settings, "end_point"); + start = ghb_dict_get_int(ud->settings, "start_point"); + end = ghb_dict_get_int(ud->settings, "end_point"); frames = end - start + 1; duration = frames * title->vrate.den / title->vrate.num; break_duration(duration, &hh, &mm, &ss); @@ -978,7 +975,7 @@ void ghb_show_container_options(signal_user_data_t *ud) const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(ud->settings, "FileFormat"); + mux_id = ghb_dict_get_string(ud->settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); gint enc = ghb_settings_video_encoder_codec(ud->settings, "VideoEncoder"); @@ -1045,7 +1042,7 @@ ghb_set_widget_ranges(signal_user_data_t *ud, GhbValue *settings) const hb_title_t * title; double val; - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); // Reconfigure the UI combo boxes @@ -1061,13 +1058,13 @@ ghb_set_widget_ranges(signal_user_data_t *ud, GhbValue *settings) vbound = title->geometry.height; hbound = title->geometry.width; - val = ghb_settings_get_int(ud->settings, "PictureTopCrop"); + val = ghb_dict_get_int(ud->settings, "PictureTopCrop"); spin_configure(ud, "PictureTopCrop", val, 0, vbound); - val = ghb_settings_get_int(ud->settings, "PictureBottomCrop"); + val = ghb_dict_get_int(ud->settings, "PictureBottomCrop"); spin_configure(ud, "PictureBottomCrop", val, 0, vbound); - val = ghb_settings_get_int(ud->settings, "PictureLeftCrop"); + val = ghb_dict_get_int(ud->settings, "PictureLeftCrop"); spin_configure(ud, "PictureLeftCrop", val, 0, hbound); - val = ghb_settings_get_int(ud->settings, "PictureRightCrop"); + val = ghb_dict_get_int(ud->settings, "PictureRightCrop"); spin_configure(ud, "PictureRightCrop", val, 0, hbound); gint duration = title->duration / 90000; @@ -1076,16 +1073,16 @@ ghb_set_widget_ranges(signal_user_data_t *ud, GhbValue *settings) { gint num_chapters = hb_list_count(title->list_chapter); - val = ghb_settings_get_int(ud->settings, "start_point"); + val = ghb_dict_get_int(ud->settings, "start_point"); spin_configure(ud, "start_point", val, 1, num_chapters); - val = ghb_settings_get_int(ud->settings, "end_point"); + val = ghb_dict_get_int(ud->settings, "end_point"); spin_configure(ud, "end_point", val, 1, num_chapters); } else if (ghb_settings_combo_int(ud->settings, "PtoPType") == 1) { - val = ghb_settings_get_int(ud->settings, "start_point"); + val = ghb_dict_get_int(ud->settings, "start_point"); spin_configure(ud, "start_point", val, 0, duration-1); - val = ghb_settings_get_int(ud->settings, "end_point"); + val = ghb_dict_get_int(ud->settings, "end_point"); spin_configure(ud, "end_point", val, 0, duration); } else if (ghb_settings_combo_int(ud->settings, "PtoPType") == 2) @@ -1094,13 +1091,13 @@ ghb_set_widget_ranges(signal_user_data_t *ud, GhbValue *settings) max_frames = (gdouble)duration * title->vrate.num / title->vrate.den; - val = ghb_settings_get_int(ud->settings, "start_point"); + val = ghb_dict_get_int(ud->settings, "start_point"); spin_configure(ud, "start_point", val, 1, max_frames); - val = ghb_settings_get_int(ud->settings, "end_point"); + val = ghb_dict_get_int(ud->settings, "end_point"); spin_configure(ud, "end_point", val, 1, max_frames); } - val = ghb_settings_get_int(ud->settings, "angle"); + val = ghb_dict_get_int(ud->settings, "angle"); spin_configure(ud, "angle", val, 1, title->angle_count); } @@ -1108,7 +1105,7 @@ ghb_set_widget_ranges(signal_user_data_t *ud, GhbValue *settings) int inverted, digits; ghb_vquality_range(ud, &vqmin, &vqmax, &step, &page, &digits, &inverted); - val = ghb_settings_get_double(ud->settings, "VideoQualitySlider"); + val = ghb_dict_get_double(ud->settings, "VideoQualitySlider"); ghb_scale_configure(ud, "VideoQualitySlider", val, vqmin, vqmax, step, page, digits, inverted); } @@ -1121,8 +1118,8 @@ check_chapter_markers(signal_user_data_t *ud) if (ghb_settings_combo_int(ud->settings, "PtoPType") == 0) { - start = ghb_settings_get_int(ud->settings, "start_point"); - end = ghb_settings_get_int(ud->settings, "end_point"); + start = ghb_dict_get_int(ud->settings, "start_point"); + end = ghb_dict_get_int(ud->settings, "end_point"); widget = GHB_WIDGET (ud->builder, "ChapterMarkers"); gtk_widget_set_sensitive(widget, end > start); } @@ -1157,17 +1154,17 @@ ghb_load_settings(signal_user_data_t * ud) return; busy = TRUE; - preset = ghb_settings_get_value(ud->settings, "preset"); - preset_modified = ghb_settings_get_boolean(ud->settings, "preset_modified"); + preset = ghb_dict_get_value(ud->settings, "preset"); + preset_modified = ghb_dict_get_bool(ud->settings, "preset_modified"); if (preset_modified) { ghb_clear_presets_selection(ud); } else { - ghb_settings_set_boolean(ud->settings, "preset_reload", TRUE); + ghb_dict_set_bool(ud->settings, "preset_reload", TRUE); ghb_select_preset(ud->builder, preset); - ghb_settings_set_boolean(ud->settings, "preset_reload", FALSE); + ghb_dict_set_bool(ud->settings, "preset_reload", FALSE); } ud->dont_clear_presets = TRUE; @@ -1232,16 +1229,15 @@ start_scan( widget = GHB_WIDGET(ud->builder, "source_title_open"); gtk_widget_set_sensitive(widget, FALSE); ghb_backend_scan(path, title_id, preview_count, - 90000L * ghb_settings_get_int64(ud->prefs, "MinTitleDuration")); + 90000L * ghb_dict_get_int(ud->prefs, "MinTitleDuration")); } gboolean ghb_idle_scan(signal_user_data_t *ud) { - gchar *path; - path = ghb_settings_get_string(ud->globals, "scan_source"); + const gchar *path; + path = ghb_dict_get_string(ud->globals, "scan_source"); ghb_do_scan(ud, path, 0, TRUE); - g_free(path); return FALSE; } @@ -1266,7 +1262,7 @@ ghb_do_scan( { if (ghb_queue_edit_settings != NULL) { - title_id = ghb_settings_get_int(ghb_queue_edit_settings, "title"); + title_id = ghb_dict_get_int(ghb_queue_edit_settings, "title"); title = ghb_lookup_title(title_id, &titleindex); ghb_array_replace(ud->settings_array, titleindex, ghb_queue_edit_settings); @@ -1287,19 +1283,18 @@ ghb_do_scan( if (filename != NULL) { last_scan_file = g_strdup(filename); - ghb_settings_set_string(ud->globals, "scan_source", filename); + ghb_dict_set_string(ud->globals, "scan_source", filename); if (update_source_label(ud, filename)) { - gchar *path; + const gchar *path; gint preview_count; show_scan_progress(ud); - path = ghb_settings_get_string(ud->globals, "scan_source"); + path = ghb_dict_get_string(ud->globals, "scan_source"); prune_logs(ud); - preview_count = ghb_settings_get_int(ud->prefs, "preview_count"); + preview_count = ghb_dict_get_int(ud->prefs, "preview_count"); start_scan(ud, path, title_id, preview_count); - g_free(path); } else { @@ -1312,11 +1307,11 @@ static void do_source_dialog(GtkButton *button, gboolean single, signal_user_data_t *ud) { GtkWidget *dialog; - gchar *sourcename; + const gchar *sourcename; gint response; g_debug("source_browse_clicked_cb ()"); - sourcename = ghb_settings_get_string(ud->globals, "scan_source"); + sourcename = ghb_dict_get_string(ud->globals, "scan_source"); GtkWidget *widget; widget = GHB_WIDGET(ud->builder, "single_title_box"); if (single) @@ -1352,20 +1347,19 @@ do_source_dialog(GtkButton *button, gboolean single, signal_user_data_t *ud) gint title_id; if (single) - title_id = ghb_settings_get_int(ud->settings, "single_title"); + title_id = ghb_dict_get_int(ud->settings, "single_title"); else title_id = 0; ghb_do_scan(ud, filename, title_id, TRUE); if (strcmp(sourcename, filename) != 0) { - ghb_settings_set_string(ud->prefs, "default_source", filename); + ghb_dict_set_string(ud->prefs, "default_source", filename); ghb_pref_save(ud->prefs, "default_source"); ghb_dvd_set_current(filename, ud); } g_free(filename); } } - g_free(sourcename); } G_MODULE_EXPORT void @@ -1393,18 +1387,17 @@ G_MODULE_EXPORT void dvd_source_activate_cb(GtkWidget *widget, signal_user_data_t *ud) { const gchar *filename; - gchar *sourcename; + const gchar *sourcename; - sourcename = ghb_settings_get_string(ud->globals, "scan_source"); + sourcename = ghb_dict_get_string(ud->globals, "scan_source"); filename = gtk_buildable_get_name(GTK_BUILDABLE(widget)); ghb_do_scan(ud, filename, 0, TRUE); if (strcmp(sourcename, filename) != 0) { - ghb_settings_set_string(ud->prefs, "default_source", filename); + ghb_dict_set_string(ud->prefs, "default_source", filename); ghb_pref_save(ud->prefs, "default_source"); ghb_dvd_set_current(filename, ud); } - g_free(sourcename); } void @@ -1499,16 +1492,15 @@ static gboolean update_default_destination = FALSE; G_MODULE_EXPORT void dest_dir_set_cb(GtkFileChooserButton *dest_chooser, signal_user_data_t *ud) { - gchar *dest_file, *dest_dir, *dest; + const gchar *dest_file, *dest_dir; + gchar *dest; g_debug("dest_dir_set_cb ()"); ghb_widget_to_setting(ud->settings, (GtkWidget*)dest_chooser); - dest_file = ghb_settings_get_string(ud->settings, "dest_file"); - dest_dir = ghb_settings_get_string(ud->settings, "dest_dir"); + dest_file = ghb_dict_get_string(ud->settings, "dest_file"); + dest_dir = ghb_dict_get_string(ud->settings, "dest_dir"); dest = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", dest_dir, dest_file); - ghb_settings_set_string(ud->settings, "destination", dest); - g_free(dest_file); - g_free(dest_dir); + ghb_dict_set_string(ud->settings, "destination", dest); g_free(dest); update_default_destination = TRUE; } @@ -1516,19 +1508,18 @@ dest_dir_set_cb(GtkFileChooserButton *dest_chooser, signal_user_data_t *ud) G_MODULE_EXPORT void dest_file_changed_cb(GtkEntry *entry, signal_user_data_t *ud) { - gchar *dest_file, *dest_dir, *dest; + const gchar *dest_file, *dest_dir; + gchar *dest; g_debug("dest_file_changed_cb ()"); ghb_update_destination_extension(ud); ghb_widget_to_setting(ud->settings, (GtkWidget*)entry); // This signal goes off with ever keystroke, so I'm putting this // update on the timer. - dest_file = ghb_settings_get_string(ud->settings, "dest_file"); - dest_dir = ghb_settings_get_string(ud->settings, "dest_dir"); + dest_file = ghb_dict_get_string(ud->settings, "dest_file"); + dest_dir = ghb_dict_get_string(ud->settings, "dest_dir"); dest = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", dest_dir, dest_file); - ghb_settings_set_string(ud->settings, "destination", dest); - g_free(dest_file); - g_free(dest_dir); + ghb_dict_set_string(ud->settings, "destination", dest); g_free(dest); update_default_destination = TRUE; } @@ -1538,13 +1529,13 @@ destination_browse_clicked_cb(GtkButton *button, signal_user_data_t *ud) { GtkWidget *dialog; GtkEntry *entry; - gchar *destname; + const gchar *destname; gchar *basename; GtkWindow *hb_window; g_debug("destination_browse_clicked_cb ()"); hb_window = GTK_WINDOW(GHB_WIDGET(ud->builder, "hb_window")); - destname = ghb_settings_get_string(ud->settings, "destination"); + destname = ghb_dict_get_string(ud->settings, "destination"); dialog = gtk_file_chooser_dialog_new("Choose Destination", hb_window, GTK_FILE_CHOOSER_ACTION_SAVE, @@ -1553,7 +1544,6 @@ destination_browse_clicked_cb(GtkButton *button, signal_user_data_t *ud) NULL); gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), destname); basename = g_path_get_basename(destname); - g_free(destname); gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), basename); g_free(basename); if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) @@ -1663,10 +1653,10 @@ update_aspect_info(signal_user_data_t *ud) GtkWidget *widget; gchar *text; - text = ghb_settings_get_boolean(ud->settings, "PictureAutoCrop") ? _("On") : _("Off"); + text = ghb_dict_get_bool(ud->settings, "PictureAutoCrop") ? _("On") : _("Off"); widget = GHB_WIDGET(ud->builder, "crop_auto"); gtk_label_set_text(GTK_LABEL(widget), text); - text = ghb_settings_get_boolean(ud->settings, "autoscale") ? _("On") : _("Off"); + text = ghb_dict_get_bool(ud->settings, "autoscale") ? _("On") : _("Off"); widget = GHB_WIDGET(ud->builder, "scale_auto"); gtk_label_set_text(GTK_LABEL(widget), text); switch (ghb_settings_combo_int(ud->settings, "PicturePAR")) @@ -1700,14 +1690,14 @@ update_crop_info(signal_user_data_t *ud) gint title_id, titleindex; const hb_title_t *title; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title != NULL) { - crop[0] = ghb_settings_get_int(ud->settings, "PictureTopCrop"); - crop[1] = ghb_settings_get_int(ud->settings, "PictureBottomCrop"); - crop[2] = ghb_settings_get_int(ud->settings, "PictureLeftCrop"); - crop[3] = ghb_settings_get_int(ud->settings, "PictureRightCrop"); + crop[0] = ghb_dict_get_int(ud->settings, "PictureTopCrop"); + crop[1] = ghb_dict_get_int(ud->settings, "PictureBottomCrop"); + crop[2] = ghb_dict_get_int(ud->settings, "PictureLeftCrop"); + crop[3] = ghb_dict_get_int(ud->settings, "PictureRightCrop"); width = title->geometry.width - crop[2] - crop[3]; height = title->geometry.height - crop[0] - crop[1]; widget = GHB_WIDGET(ud->builder, "crop_dimensions"); @@ -1729,8 +1719,8 @@ update_scale_info(signal_user_data_t *ud) GtkWidget *widget; gchar *text; - gint width = ghb_settings_get_int(ud->settings, "scale_width"); - gint height = ghb_settings_get_int(ud->settings, "scale_height"); + gint width = ghb_dict_get_int(ud->settings, "scale_width"); + gint height = ghb_dict_get_int(ud->settings, "scale_height"); widget = GHB_WIDGET(ud->builder, "scale_dimensions"); text = g_strdup_printf("%d x %d", width, height); gtk_label_set_text(GTK_LABEL(widget), text); @@ -1746,7 +1736,7 @@ ghb_update_title_info(signal_user_data_t *ud) int title_id, titleindex; const hb_title_t * title; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title == NULL) return; @@ -1794,7 +1784,7 @@ set_title_settings(signal_user_data_t *ud, GhbValue *settings) int title_id, titleindex; const hb_title_t * title; - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); ghb_subtitle_set_pref_lang(settings); @@ -1802,74 +1792,74 @@ set_title_settings(signal_user_data_t *ud, GhbValue *settings) { gint num_chapters = hb_list_count(title->list_chapter); - ghb_settings_set_int(settings, "angle", 1); - ghb_settings_set_int(settings, "PtoPType", 0); - ghb_settings_set_int(settings, "start_point", 1); - ghb_settings_set_int(settings, "end_point", num_chapters); - ghb_settings_set_int(settings, "source_width", title->geometry.width); - ghb_settings_set_int(settings, "source_height", title->geometry.height); - ghb_settings_set_string(settings, "source", title->path); + ghb_dict_set_int(settings, "angle", 1); + ghb_dict_set_int(settings, "PtoPType", 0); + ghb_dict_set_int(settings, "start_point", 1); + ghb_dict_set_int(settings, "end_point", num_chapters); + ghb_dict_set_int(settings, "source_width", title->geometry.width); + ghb_dict_set_int(settings, "source_height", title->geometry.height); + ghb_dict_set_string(settings, "source", title->path); if (title->type == HB_STREAM_TYPE || title->type == HB_FF_STREAM_TYPE) { if (title->name != NULL && title->name[0] != 0) { - ghb_settings_set_string(settings, "volume_label", title->name); + ghb_dict_set_string(settings, "volume_label", title->name); } else { gchar *label = _("No Title Found"); - ghb_settings_set_string(settings, "volume_label", label); + ghb_dict_set_string(settings, "volume_label", label); } } else { - ghb_settings_set_value(settings, "volume_label", - ghb_settings_get_value(ud->settings, "volume_label")); + ghb_dict_set(settings, "volume_label", ghb_value_dup( + ghb_dict_get_value(ud->settings, "volume_label"))); } - ghb_settings_set_int(settings, "scale_width", + ghb_dict_set_int(settings, "scale_width", title->geometry.width - title->crop[2] - title->crop[3]); // If anamorphic or keep_aspect, the hight will // be automatically calculated gboolean keep_aspect; gint pic_par; - keep_aspect = ghb_settings_get_boolean(settings, "PictureKeepRatio"); + keep_aspect = ghb_dict_get_bool(settings, "PictureKeepRatio"); pic_par = ghb_settings_combo_int(settings, "PicturePAR"); if (!(keep_aspect || pic_par) || pic_par == 3) { - ghb_settings_set_int(settings, "scale_height", + ghb_dict_set_int(settings, "scale_height", title->geometry.width - title->crop[0] - title->crop[1]); } ghb_set_scale_settings(settings, GHB_PIC_KEEP_PAR|GHB_PIC_USE_MAX); - ghb_settings_set_int(settings, "angle_count", title->angle_count); + ghb_dict_set_int(settings, "angle_count", title->angle_count); - ghb_settings_set_string(settings, "MetaName", title->name); + ghb_dict_set_string(settings, "MetaName", title->name); if (title->metadata) { if (title->metadata->name) { - ghb_settings_set_string(settings, "MetaName", + ghb_dict_set_string(settings, "MetaName", title->metadata->name); } - ghb_settings_set_string(settings, "MetaArtist", + ghb_dict_set_string(settings, "MetaArtist", title->metadata->artist); - ghb_settings_set_string(settings, "MetaReleaseDate", + ghb_dict_set_string(settings, "MetaReleaseDate", title->metadata->release_date); - ghb_settings_set_string(settings, "MetaComment", + ghb_dict_set_string(settings, "MetaComment", title->metadata->comment); if (!title->metadata->name && title->metadata->album) { - ghb_settings_set_string(settings, "MetaName", + ghb_dict_set_string(settings, "MetaName", title->metadata->album); } - ghb_settings_set_string(settings, "MetaAlbumArtist", + ghb_dict_set_string(settings, "MetaAlbumArtist", title->metadata->album_artist); - ghb_settings_set_string(settings, "MetaGenre", + ghb_dict_set_string(settings, "MetaGenre", title->metadata->genre); - ghb_settings_set_string(settings, "MetaDescription", + ghb_dict_set_string(settings, "MetaDescription", title->metadata->description); - ghb_settings_set_string(settings, "MetaLongDescription", + ghb_dict_set_string(settings, "MetaLongDescription", title->metadata->long_description); } update_chapter_list_settings(settings); @@ -1878,19 +1868,18 @@ set_title_settings(signal_user_data_t *ud, GhbValue *settings) } set_destination_settings(ud, settings); - ghb_settings_set_value(settings, "dest_dir", - ghb_settings_get_value(ud->prefs, "destination_dir")); + ghb_dict_set(settings, "dest_dir", ghb_value_dup( + ghb_dict_get_value(ud->prefs, "destination_dir"))); - char *dest_file, *dest_dir, *dest; - dest_file = ghb_settings_get_string(settings, "dest_file"); - dest_dir = ghb_settings_get_string(settings, "dest_dir"); + const char *dest_file, *dest_dir; + char *dest; + dest_file = ghb_dict_get_string(settings, "dest_file"); + dest_dir = ghb_dict_get_string(settings, "dest_dir"); dest = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", dest_dir, dest_file); - ghb_settings_set_string(settings, "destination", dest); - g_free(dest_file); - g_free(dest_dir); + ghb_dict_set_string(settings, "destination", dest); g_free(dest); - ghb_settings_set_int(settings, "preview_frame", 2); + ghb_dict_set_int(settings, "preview_frame", 2); } void @@ -1927,15 +1916,15 @@ load_all_titles(signal_user_data_t *ud, int titleindex) for (ii = 0; ii < count; ii++) { int index; - GhbValue *settings = ghb_settings_new(); + GhbValue *settings = ghb_dict_new(); title = hb_list_item(list, ii); index = (title != NULL) ? title->index : -1; ghb_settings_init(settings, "Initialization"); ghb_preset_to_settings(settings, preset); - ghb_settings_set_value(settings, "preset", preset_path); - ghb_settings_set_int(settings, "title", index); + ghb_dict_set(settings, "preset", ghb_value_dup(preset_path)); + ghb_dict_set_int(settings, "title", index); set_title_settings(ud, settings); ghb_array_append(settings_array, settings); } @@ -1983,7 +1972,7 @@ title_reset_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) int title_id, titleindex; const hb_title_t *title; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); (void)title; // Silence "unused variable" warning load_all_titles(ud, titleindex); @@ -2002,7 +1991,7 @@ ptop_widget_changed_cb(GtkWidget *widget, signal_user_data_t *ud) ghb_check_dependency(ud, widget, NULL); ghb_live_reset(ud); - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title == NULL) return; @@ -2043,13 +2032,13 @@ framerate_changed_cb(GtkWidget *widget, signal_user_data_t *ud) if (ghb_settings_video_framerate_rate(ud->settings, "VideoFramerate") != 0) { - if (!ghb_settings_get_boolean(ud->settings, "VideoFrameratePFR")) + if (!ghb_dict_get_bool(ud->settings, "VideoFrameratePFR")) { ghb_ui_update(ud, "VideoFramerateCFR", ghb_boolean_value(TRUE)); } } if (ghb_settings_video_framerate_rate(ud->settings, "VideoFramerate") == 0 && - ghb_settings_get_boolean(ud->settings, "VideoFrameratePFR")) + ghb_dict_get_bool(ud->settings, "VideoFrameratePFR")) { ghb_ui_update(ud, "VideoFramerateVFR", ghb_boolean_value(TRUE)); } @@ -2129,7 +2118,7 @@ vquality_changed_cb(GtkWidget *widget, signal_user_data_t *ud) ghb_clear_presets_selection(ud); ghb_live_reset(ud); - double vquality = ghb_settings_get_double(ud->settings, "VideoQualitySlider"); + double vquality = ghb_dict_get_double(ud->settings, "VideoQualitySlider"); if (vquality < 1.0) { ghb_ui_update(ud, "VideoProfile", ghb_string_value("auto")); @@ -2221,8 +2210,8 @@ start_point_changed_cb(GtkWidget *widget, signal_user_data_t *ud) ghb_widget_to_setting(ud->settings, widget); if (ghb_settings_combo_int(ud->settings, "PtoPType") == 0) { - start = ghb_settings_get_int(ud->settings, "start_point"); - end = ghb_settings_get_int(ud->settings, "end_point"); + start = ghb_dict_get_int(ud->settings, "start_point"); + end = ghb_dict_get_int(ud->settings, "end_point"); if (start > end) ghb_ui_update(ud, "end_point", ghb_int_value(start)); ghb_check_dependency(ud, widget, NULL); @@ -2230,14 +2219,14 @@ start_point_changed_cb(GtkWidget *widget, signal_user_data_t *ud) set_destination(ud); widget = GHB_WIDGET (ud->builder, "ChapterMarkers"); // End may have been changed above, get it again - end = ghb_settings_get_int(ud->settings, "end_point"); + end = ghb_dict_get_int(ud->settings, "end_point"); gtk_widget_set_sensitive(widget, end > start); update_title_duration(ud); } else if (ghb_settings_combo_int(ud->settings, "PtoPType") == 1) { - start = ghb_settings_get_int(ud->settings, "start_point"); - end = ghb_settings_get_int(ud->settings, "end_point"); + start = ghb_dict_get_int(ud->settings, "start_point"); + end = ghb_dict_get_int(ud->settings, "end_point"); if (start >= end) ghb_ui_update(ud, "end_point", ghb_int_value(start+1)); ghb_check_dependency(ud, widget, NULL); @@ -2245,8 +2234,8 @@ start_point_changed_cb(GtkWidget *widget, signal_user_data_t *ud) } else if (ghb_settings_combo_int(ud->settings, "PtoPType") == 2) { - start = ghb_settings_get_int(ud->settings, "start_point"); - end = ghb_settings_get_int(ud->settings, "end_point"); + start = ghb_dict_get_int(ud->settings, "start_point"); + end = ghb_dict_get_int(ud->settings, "end_point"); if (start > end) ghb_ui_update(ud, "end_point", ghb_int_value(start)); ghb_check_dependency(ud, widget, NULL); @@ -2262,8 +2251,8 @@ end_point_changed_cb(GtkWidget *widget, signal_user_data_t *ud) ghb_widget_to_setting(ud->settings, widget); if (ghb_settings_combo_int(ud->settings, "PtoPType") == 0) { - start = ghb_settings_get_int(ud->settings, "start_point"); - end = ghb_settings_get_int(ud->settings, "end_point"); + start = ghb_dict_get_int(ud->settings, "start_point"); + end = ghb_dict_get_int(ud->settings, "end_point"); if (start > end) ghb_ui_update(ud, "start_point", ghb_int_value(end)); ghb_check_dependency(ud, widget, NULL); @@ -2271,14 +2260,14 @@ end_point_changed_cb(GtkWidget *widget, signal_user_data_t *ud) set_destination(ud); widget = GHB_WIDGET (ud->builder, "ChapterMarkers"); // Start may have been changed above, get it again - start = ghb_settings_get_int(ud->settings, "start_point"); + start = ghb_dict_get_int(ud->settings, "start_point"); gtk_widget_set_sensitive(widget, end > start); update_title_duration(ud); } else if (ghb_settings_combo_int(ud->settings, "PtoPType") == 1) { - start = ghb_settings_get_int(ud->settings, "start_point"); - end = ghb_settings_get_int(ud->settings, "end_point"); + start = ghb_dict_get_int(ud->settings, "start_point"); + end = ghb_dict_get_int(ud->settings, "end_point"); if (start >= end) ghb_ui_update(ud, "start_point", ghb_int_value(end-1)); ghb_check_dependency(ud, widget, NULL); @@ -2286,8 +2275,8 @@ end_point_changed_cb(GtkWidget *widget, signal_user_data_t *ud) } else if (ghb_settings_combo_int(ud->settings, "PtoPType") == 2) { - start = ghb_settings_get_int(ud->settings, "start_point"); - end = ghb_settings_get_int(ud->settings, "end_point"); + start = ghb_dict_get_int(ud->settings, "start_point"); + end = ghb_dict_get_int(ud->settings, "end_point"); if (start > end) ghb_ui_update(ud, "start_point", ghb_int_value(end)); ghb_check_dependency(ud, widget, NULL); @@ -2687,7 +2676,7 @@ find_queue_job(GhbValue *queue, gint unique_id, GhbValue **job) for (ii = 0; ii < count; ii++) { js = ghb_array_get(queue, ii); - job_unique_id = ghb_settings_get_int(js, "job_unique_id"); + job_unique_id = ghb_dict_get_int(js, "job_unique_id"); if (job_unique_id == unique_id) { *job = js; @@ -2702,13 +2691,14 @@ start_new_log(signal_user_data_t *ud, GhbValue *js) { time_t _now; struct tm *now; - gchar *log_path, *pos, *destname, *basename, *dest_dir; + gchar *log_path, *pos, *basename, *dest_dir; + const gchar *destname; _now = time(NULL); now = localtime(&_now); - destname = ghb_settings_get_string(js, "destination"); + destname = ghb_dict_get_string(js, "destination"); basename = g_path_get_basename(destname); - if (ghb_settings_get_boolean(ud->prefs, "EncodeLogLocation")) + if (ghb_dict_get_bool(ud->prefs, "EncodeLogLocation")) { dest_dir = g_path_get_dirname (destname); } @@ -2716,7 +2706,6 @@ start_new_log(signal_user_data_t *ud, GhbValue *js) { dest_dir = ghb_get_user_config_dir("EncodeLogs"); } - g_free(destname); pos = g_strrstr( basename, "." ); if (pos != NULL) { @@ -2756,16 +2745,16 @@ submit_job(signal_user_data_t *ud, GhbValue *settings) g_debug("submit_job"); if (settings == NULL) return; - preset_modified = ghb_settings_get_boolean(settings, "preset_modified"); - path = ghb_settings_get_value(settings, "preset"); + preset_modified = ghb_dict_get_bool(settings, "preset_modified"); + path = ghb_dict_get_value(settings, "preset"); preset = ghb_preset_path_string(path); type = ghb_preset_is_custom() ? "Custom " : ""; modified = preset_modified ? "Modified " : ""; ghb_log("%s%sPreset: %s", modified, type, preset); g_free(preset); - ghb_settings_set_int(settings, "job_unique_id", unique_id); - ghb_settings_set_int(settings, "job_status", GHB_QUEUE_RUNNING); + ghb_dict_set_int(settings, "job_unique_id", unique_id); + ghb_dict_set_int(settings, "job_status", GHB_QUEUE_RUNNING); start_new_log(ud, settings); ghb_add_job(settings, unique_id); ghb_start_queue(); @@ -2846,7 +2835,7 @@ queue_pending_count(GhbValue *queue) { js = ghb_array_get(queue, ii); - status = ghb_settings_get_int(js, "job_status"); + status = ghb_dict_get_int(js, "job_status"); if (status == GHB_QUEUE_PENDING) { nn++; @@ -2886,7 +2875,7 @@ ghb_start_next_job(signal_user_data_t *ud) { js = ghb_array_get(ud->queue, ii); - status = ghb_settings_get_int(js, "job_status"); + status = ghb_dict_get_int(js, "job_status"); if (status == GHB_QUEUE_PENDING) { ghb_inhibit_gsm(ud); @@ -3057,7 +3046,7 @@ ghb_backend_events(signal_user_data_t *ud) status.queue.state == GHB_STATE_IDLE) { static gboolean prev_dvdnav; - gboolean dvdnav = ghb_settings_get_boolean(ud->prefs, "use_dvdnav"); + gboolean dvdnav = ghb_dict_get_bool(ud->prefs, "use_dvdnav"); if (dvdnav != prev_dvdnav) { hb_dvd_set_dvdnav(dvdnav); @@ -3099,7 +3088,7 @@ ghb_backend_events(signal_user_data_t *ud) } else if (status.scan.state & GHB_STATE_SCANDONE) { - gchar *source; + const gchar *source; GtkProgressBar *scan_prog; GtkLabel *label; @@ -3115,9 +3104,8 @@ ghb_backend_events(signal_user_data_t *ud) widget = GHB_WIDGET(ud->builder, "source_title_open"); gtk_widget_set_sensitive(widget, TRUE); - source = ghb_settings_get_string(ud->globals, "scan_source"); + source = ghb_dict_get_string(ud->globals, "scan_source"); update_source_label(ud, source); - g_free(source); scan_prog = GTK_PROGRESS_BAR(GHB_WIDGET (ud->builder, "scan_prog")); gtk_progress_bar_set_fraction (scan_prog, 1.0); @@ -3148,10 +3136,10 @@ ghb_backend_events(signal_user_data_t *ud) { // Switch to the correct title in the list ghb_ui_update(ud, "title", - ghb_settings_get_value(ghb_queue_edit_settings, "title")); + ghb_dict_get_value(ghb_queue_edit_settings, "title")); // The above should cause the current title index to update - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); ghb_array_replace(ud->settings_array, titleindex, ghb_queue_edit_settings); @@ -3269,8 +3257,8 @@ ghb_backend_events(signal_user_data_t *ud) g_io_channel_unref(ud->job_activity_log); ud->job_activity_log = NULL; if (js) - ghb_settings_set_int(js, "job_status", qstatus); - if (ghb_settings_get_boolean(ud->prefs, "RemoveFinishedJobs") && + ghb_dict_set_int(js, "job_status", qstatus); + if (ghb_dict_get_bool(ud->prefs, "RemoveFinishedJobs") && status.queue.error == GHB_ERROR_NONE) { ghb_queue_remove_row(ud, index); @@ -3330,18 +3318,17 @@ ghb_timer_cb(gpointer data) ghb_backend_events(ud); if (update_default_destination) { - gchar *dest, *dest_dir, *def_dest; - dest = ghb_settings_get_string(ud->settings, "destination"); - dest_dir = g_path_get_dirname (dest); - def_dest = ghb_settings_get_string(ud->prefs, "destination_dir"); + const gchar *dest, *def_dest; + gchar *dest_dir; + dest = ghb_dict_get_string(ud->settings, "destination"); + dest_dir = g_path_get_dirname(dest); + def_dest = ghb_dict_get_string(ud->prefs, "destination_dir"); if (strcmp(dest_dir, def_dest) != 0) { - ghb_settings_set_string (ud->prefs, "destination_dir", dest_dir); + ghb_dict_set_string(ud->prefs, "destination_dir", dest_dir); ghb_pref_save(ud->prefs, "destination_dir"); } - g_free(dest); g_free(dest_dir); - g_free(def_dest); update_default_destination = FALSE; } if (update_preview) @@ -3354,8 +3341,8 @@ ghb_timer_cb(gpointer data) #if !defined(_NO_UPDATE_CHECK) if (!appcast_busy) { - gchar *updates; - updates = ghb_settings_get_string(ud->prefs, "check_updates"); + const gchar *updates; + updates = ghb_dict_get_string(ud->prefs, "check_updates"); gint64 duration = 0; if (strcmp(updates, "daily") == 0) duration = 60 * 60 * 24; @@ -3364,17 +3351,16 @@ ghb_timer_cb(gpointer data) else if (strcmp(updates, "monthly") == 0) duration = 60 * 60 * 24 * 7; - g_free(updates); if (duration != 0) { gint64 last; time_t tt; - last = ghb_settings_get_int64(ud->prefs, "last_update_check"); + last = ghb_dict_get_int(ud->prefs, "last_update_check"); time(&tt); if (last + duration < tt) { - ghb_settings_set_int64(ud->prefs, + ghb_dict_set_int(ud->prefs, "last_update_check", tt); ghb_pref_save(ud->prefs, "last_update_check"); GHB_THREAD_NEW("Update Check", (GThreadFunc)ghb_check_update, ud); @@ -3651,7 +3637,7 @@ show_presets_toggled_cb(GtkWidget *widget, signal_user_data_t *ud) g_debug("show_presets_clicked_cb ()"); frame = GHB_WIDGET (ud->builder, "presets_frame"); ghb_widget_to_setting(ud->prefs, widget); - if (ghb_settings_get_boolean(ud->prefs, "show_presets")) + if (ghb_dict_get_bool(ud->prefs, "show_presets")) { gtk_widget_show_now(frame); } @@ -3724,9 +3710,9 @@ chapter_refresh_list_ui(signal_user_data_t *ud) tm_count = gtk_tree_model_iter_n_children(tm, NULL); - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); - chapter_list = ghb_settings_get_value(ud->settings, "chapter_list"); + chapter_list = ghb_dict_get_value(ud->settings, "chapter_list"); count = ghb_array_len(chapter_list); if (count != tm_count) { @@ -3757,11 +3743,11 @@ update_chapter_list_settings(GhbValue *settings) const hb_title_t *title; g_debug("update_chapter_list_settings ()"); - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); chapters = ghb_get_chapters(title); if (chapters) - ghb_settings_take_value(settings, "chapter_list", chapters); + ghb_dict_set(settings, "chapter_list", chapters); } static gint chapter_edit_key = 0; @@ -3809,7 +3795,7 @@ chapter_edited_cb( const GhbValue *chapters; GhbValue *chapter; - chapters = ghb_settings_get_value(ud->settings, "chapter_list"); + chapters = ghb_dict_get_value(ud->settings, "chapter_list"); chapter = ghb_array_get(chapters, index-1); ghb_string_value_set(chapter, text); if ((chapter_edit_key == GDK_KEY_Return || chapter_edit_key == GDK_KEY_Down) && @@ -3908,7 +3894,7 @@ hbfd_toggled_cb(GtkWidget *widget, signal_user_data_t *ud) { g_debug("hbfd_toggled_cb"); ghb_widget_to_setting(ud->prefs, widget); - gboolean hbfd = ghb_settings_get_boolean(ud->prefs, "hbfd"); + gboolean hbfd = ghb_dict_get_bool(ud->prefs, "hbfd"); ghb_hbfd(ud, hbfd); ghb_pref_save(ud->prefs, "hbfd"); } @@ -3933,7 +3919,7 @@ pref_changed_cb(GtkWidget *widget, signal_user_data_t *ud) ghb_pref_set(ud->prefs, name); gint preview_count; - preview_count = ghb_settings_get_int(ud->prefs, "preview_count"); + preview_count = ghb_dict_get_int(ud->prefs, "preview_count"); widget = GHB_WIDGET(ud->builder, "preview_frame"); gtk_range_set_range(GTK_RANGE(widget), 1, preview_count); } @@ -3963,7 +3949,7 @@ vqual_granularity_changed_cb(GtkWidget *widget, signal_user_data_t *ud) int inverted, digits; ghb_vquality_range(ud, &vqmin, &vqmax, &step, &page, &digits, &inverted); - val = ghb_settings_get_double(ud->settings, "VideoQualitySlider"); + val = ghb_dict_get_double(ud->settings, "VideoQualitySlider"); ghb_scale_configure(ud, "VideoQualitySlider", val, vqmin, vqmax, step, page, digits, inverted); } @@ -3985,11 +3971,11 @@ hbfd_feature_changed_cb(GtkWidget *widget, signal_user_data_t *ud) const gchar *name = ghb_get_setting_key(widget); ghb_pref_set(ud->prefs, name); - gboolean hbfd = ghb_settings_get_boolean(ud->prefs, "hbfd_feature"); + gboolean hbfd = ghb_dict_get_bool(ud->prefs, "hbfd_feature"); if (hbfd) { const GhbValue *val; - val = ghb_settings_get_value(ud->prefs, "hbfd"); + val = ghb_dict_get_value(ud->prefs, "hbfd"); ghb_ui_settings_update(ud, ud->prefs, "hbfd", val); } widget = GHB_WIDGET(ud->builder, "hbfd"); @@ -4181,15 +4167,15 @@ handle_media_change(const gchar *device, gboolean insert, signal_user_data_t *ud { GHB_THREAD_NEW("Cache Volume Names", (GThreadFunc)ghb_cache_volnames, ud); - if (ghb_settings_get_boolean(ud->prefs, "AutoScan") && + if (ghb_dict_get_bool(ud->prefs, "AutoScan") && ud->current_dvd_device != NULL && strcmp(device, ud->current_dvd_device) == 0) { show_scan_progress(ud); update_source_label(ud, device); gint preview_count; - preview_count = ghb_settings_get_int(ud->prefs, "preview_count"); - ghb_settings_set_string(ud->globals, "scan_source", device); + preview_count = ghb_dict_get_int(ud->prefs, "preview_count"); + ghb_dict_set_string(ud->globals, "scan_source", device); start_scan(ud, device, 0, preview_count); } } @@ -4207,7 +4193,7 @@ handle_media_change(const gchar *device, gboolean insert, signal_user_data_t *ud { ghb_hb_cleanup(TRUE); prune_logs(ud); - ghb_settings_set_string(ud->globals, "scan_source", "/dev/null"); + ghb_dict_set_string(ud->globals, "scan_source", "/dev/null"); start_scan(ud, "/dev/null", 0, 1); } } @@ -4288,13 +4274,13 @@ drive_changed_cb(GVolumeMonitor *gvm, GDrive *gd, signal_user_data_t *ud) } if (g_drive_has_media(gd)) { - if (ghb_settings_get_boolean(ud->prefs, "AutoScan")) + if (ghb_dict_get_bool(ud->prefs, "AutoScan")) { show_scan_progress(ud); update_source_label(ud, device); gint preview_count; - preview_count = ghb_settings_get_int(ud->prefs, "preview_count"); - ghb_settings_set_string(ud->globals, "scan_source", device); + preview_count = ghb_dict_get_int(ud->prefs, "preview_count"); + ghb_dict_set_string(ud->globals, "scan_source", device); start_scan(ud, device, 0, preview_count); } } @@ -4302,7 +4288,7 @@ drive_changed_cb(GVolumeMonitor *gvm, GDrive *gd, signal_user_data_t *ud) { ghb_hb_cleanup(TRUE); prune_logs(ud); - ghb_settings_set_string(ud->globals, "scan_source", "/dev/null"); + ghb_dict_set_string(ud->globals, "scan_source", "/dev/null"); start_scan(ud, "/dev/null", 0, 1); } } @@ -4833,13 +4819,13 @@ tweak_setting_cb( gboolean allow_tweaks; g_debug("press %d %d", event->type, event->button); - allow_tweaks = ghb_settings_get_boolean(ud->prefs, "allow_tweaks"); + allow_tweaks = ghb_dict_get_bool(ud->prefs, "allow_tweaks"); if (allow_tweaks && event->type == GDK_BUTTON_PRESS && event->button == 3) { // Its a right mouse click GtkWidget *dialog; GtkEntry *entry; GtkResponseType response; - gchar *tweak = NULL; + const gchar *tweak = NULL; name = ghb_get_setting_key(widget); if (g_str_has_prefix(name, "tweak_")) @@ -4851,14 +4837,13 @@ tweak_setting_cb( tweak_name = g_strdup_printf("tweak_%s", name); } - tweak = ghb_settings_get_string (ud->settings, tweak_name); + tweak = ghb_dict_get_string(ud->settings, tweak_name); dialog = GHB_WIDGET(ud->builder, "tweak_dialog"); gtk_window_set_title(GTK_WINDOW(dialog), tweak_name); entry = GTK_ENTRY(GHB_WIDGET(ud->builder, "tweak_setting")); if (tweak) { gtk_entry_set_text(entry, tweak); - g_free(tweak); } response = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_hide(dialog); @@ -4866,7 +4851,7 @@ tweak_setting_cb( { tweak = (gchar*)gtk_entry_get_text(entry); if (ghb_validate_filter_string(tweak, -1)) - ghb_settings_set_string(ud->settings, tweak_name, tweak); + ghb_dict_set_string(ud->settings, tweak_name, tweak); else { GtkWindow *hb_window; @@ -4976,7 +4961,7 @@ process_appcast(signal_user_data_t *ud) ghb_appcast_parse(ud->appcast, &description, &build, &version); if (build) ibuild = g_strtod(build, NULL); - skip = ghb_settings_get_int(ud->prefs, "update_skip_version"); + skip = ghb_dict_get_int(ud->prefs, "update_skip_version"); if (description == NULL || build == NULL || version == NULL || ibuild <= hb_get_build(NULL) || skip == ibuild) { @@ -5005,7 +4990,7 @@ process_appcast(signal_user_data_t *ud) if (response == GTK_RESPONSE_OK) { // Skip - ghb_settings_set_int(ud->prefs, "update_skip_version", ibuild); + ghb_dict_set_int(ud->prefs, "update_skip_version", ibuild); ghb_pref_save(ud->prefs, "update_skip_version"); } g_free(msg); @@ -5258,13 +5243,13 @@ window_configure_cb( if (gtk_widget_get_visible(widget)) { gint w, h; - w = ghb_settings_get_int(ud->prefs, "window_width"); - h = ghb_settings_get_int(ud->prefs, "window_height"); + w = ghb_dict_get_int(ud->prefs, "window_width"); + h = ghb_dict_get_int(ud->prefs, "window_height"); if ( w != event->width || h != event->height ) { - ghb_settings_set_int(ud->prefs, "window_width", event->width); - ghb_settings_set_int(ud->prefs, "window_height", event->height); + ghb_dict_set_int(ud->prefs, "window_width", event->width); + ghb_dict_set_int(ud->prefs, "window_height", event->height); ghb_pref_set(ud->prefs, "window_width"); ghb_pref_set(ud->prefs, "window_height"); ghb_prefs_store(); diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c index 5a65d20e1..146653932 100644 --- a/gtk/src/hb-backend.c +++ b/gtk/src/hb-backend.c @@ -991,7 +991,7 @@ ghb_subtitle_track_source(GhbValue *settings, gint track) return SRTSUB; if (track < 0) return VOBSUB; - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title == NULL) return VOBSUB; @@ -1010,7 +1010,7 @@ ghb_subtitle_track_lang(GhbValue *settings, gint track) gint title_id, titleindex; const hb_title_t * title; - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title == NULL) // Bad titleindex goto fail; @@ -1100,16 +1100,16 @@ ghb_grey_combo_options(signal_user_data_t *ud) const hb_title_t *title; hb_audio_config_t *aconfig = NULL; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); - track = ghb_settings_get_int(ud->settings, "AudioTrack"); + track = ghb_dict_get_int(ud->settings, "AudioTrack"); aconfig = ghb_get_audio_info(title, track); const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(ud->settings, "FileFormat"); + mux_id = ghb_dict_get_string(ud->settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); grey_builder_combo_box_item(ud->builder, "x264_analyse", 4, TRUE); @@ -1336,15 +1336,21 @@ ghb_lookup_audio_samplerate_rate(const char *name) int ghb_settings_audio_samplerate_rate(const GhbValue *settings, const char *name) { - const char *rate_id = ghb_settings_get_const_string(settings, name); - return ghb_lookup_audio_samplerate_rate(rate_id); + int result; + char *rate_id = ghb_dict_get_string_xform(settings, name); + result = ghb_lookup_audio_samplerate_rate(rate_id); + g_free(rate_id); + return result; } const hb_rate_t* ghb_settings_audio_samplerate(const GhbValue *settings, const char *name) { - const char *rate_id = ghb_settings_get_const_string(settings, name); - return ghb_lookup_audio_samplerate(rate_id); + const hb_rate_t *result; + char *rate_id = ghb_dict_get_string_xform(settings, name); + result = ghb_lookup_audio_samplerate(rate_id); + g_free(rate_id); + return result; } static void @@ -1431,15 +1437,21 @@ ghb_lookup_video_framerate_rate(const char *name) int ghb_settings_video_framerate_rate(const GhbValue *settings, const char *name) { - const char *rate_id = ghb_settings_get_const_string(settings, name); - return ghb_lookup_video_framerate_rate(rate_id); + int result; + char *rate_id = ghb_dict_get_string_xform(settings, name); + result = ghb_lookup_video_framerate_rate(rate_id); + g_free(rate_id); + return result; } const hb_rate_t* ghb_settings_video_framerate(const GhbValue *settings, const char *name) { - const char *rate_id = ghb_settings_get_const_string(settings, name); - return ghb_lookup_video_framerate(rate_id); + const hb_rate_t *result; + char *rate_id = ghb_dict_get_string_xform(settings, name); + result = ghb_lookup_video_framerate(rate_id); + g_free(rate_id); + return result; } static void @@ -1502,14 +1514,14 @@ ghb_lookup_video_encoder_codec(const char *name) int ghb_settings_video_encoder_codec(const GhbValue *settings, const char *name) { - const char *encoder_id = ghb_settings_get_const_string(settings, name); + const char *encoder_id = ghb_dict_get_string(settings, name); return ghb_lookup_video_encoder_codec(encoder_id); } const hb_encoder_t* ghb_settings_video_encoder(const GhbValue *settings, const char *name) { - const char *encoder_id = ghb_settings_get_const_string(settings, name); + const char *encoder_id = ghb_dict_get_string(settings, name); return ghb_lookup_video_encoder(encoder_id); } @@ -1576,14 +1588,14 @@ ghb_lookup_audio_encoder_codec(const char *name) int ghb_settings_audio_encoder_codec(const GhbValue *settings, const char *name) { - const char *encoder_id = ghb_settings_get_const_string(settings, name); + const char *encoder_id = ghb_dict_get_string(settings, name); return ghb_lookup_audio_encoder_codec(encoder_id); } const hb_encoder_t* ghb_settings_audio_encoder(const GhbValue *settings, const char *name) { - const char *encoder_id = ghb_settings_get_const_string(settings, name); + const char *encoder_id = ghb_dict_get_string(settings, name); return ghb_lookup_audio_encoder(encoder_id); } @@ -1701,14 +1713,14 @@ ghb_lookup_mixdown_mix(const char *name) int ghb_settings_mixdown_mix(const GhbValue *settings, const char *name) { - const char *mixdown_id = ghb_settings_get_const_string(settings, name); + const char *mixdown_id = ghb_dict_get_string(settings, name); return ghb_lookup_mixdown_mix(mixdown_id); } const hb_mixdown_t* ghb_settings_mixdown(const GhbValue *settings, const char *name) { - const char *mixdown_id = ghb_settings_get_const_string(settings, name); + const char *mixdown_id = ghb_dict_get_string(settings, name); return ghb_lookup_mixdown(mixdown_id); } @@ -2492,21 +2504,6 @@ ghb_lookup_combo_option(const gchar *name, const GhbValue *gval) return NULL; } -const gchar* -ghb_lookup_combo_string(const gchar *name, const GhbValue *gval) -{ - if (gval == NULL) - return NULL; - else if (strcmp(name, "SrtLanguage") == 0) - return lookup_audio_lang_option(gval); - else - { - return lookup_generic_string(find_combo_table(name), gval); - } - g_warning("ghb_lookup_combo_int() couldn't find %s", name); - return NULL; -} - void ghb_init_lang_list_box(GtkListBox *list_box) { int ii; @@ -2677,7 +2674,7 @@ init_ui_combo_boxes(GtkBuilder *builder) // Construct the advanced options string // The result is allocated, so someone must free it at some point. -gchar* +const gchar* ghb_build_advanced_opts_string(GhbValue *settings) { gint vcodec; @@ -2685,7 +2682,7 @@ ghb_build_advanced_opts_string(GhbValue *settings) switch (vcodec) { case HB_VCODEC_X264: - return ghb_settings_get_string(settings, "x264Option"); + return ghb_dict_get_string(settings, "x264Option"); default: return NULL; @@ -2701,31 +2698,31 @@ void ghb_set_video_encoder_opts(hb_dict_t *dict, GhbValue *js) case HB_VCODEC_X264: { if (vcodec == HB_VCODEC_X264 && - ghb_settings_get_boolean(js, "x264UseAdvancedOptions")) + ghb_dict_get_bool(js, "x264UseAdvancedOptions")) { const char *opts; - opts = ghb_settings_get_const_string(js, "x264Option"); + opts = ghb_dict_get_string(js, "x264Option"); hb_dict_set(dict, "Options", hb_value_string(opts)); } else { const char *preset, *tune, *profile, *level, *opts; GString *str = g_string_new(""); - preset = ghb_settings_get_const_string(js, "VideoPreset"); - tune = ghb_settings_get_const_string(js, "VideoTune"); - profile = ghb_settings_get_const_string(js, "VideoProfile"); - level = ghb_settings_get_const_string(js, "VideoLevel"); - opts = ghb_settings_get_const_string(js, "VideoOptionExtra"); + preset = ghb_dict_get_string(js, "VideoPreset"); + tune = ghb_dict_get_string(js, "VideoTune"); + profile = ghb_dict_get_string(js, "VideoProfile"); + level = ghb_dict_get_string(js, "VideoLevel"); + opts = ghb_dict_get_string(js, "VideoOptionExtra"); char *tunes; g_string_append_printf(str, "%s", tune); if (vcodec == HB_VCODEC_X264) { - if (ghb_settings_get_boolean(js, "x264FastDecode")) + if (ghb_dict_get_bool(js, "x264FastDecode")) { g_string_append_printf(str, "%s%s", str->str[0] ? "," : "", "fastdecode"); } - if (ghb_settings_get_boolean(js, "x264ZeroLatency")) + if (ghb_dict_get_bool(js, "x264ZeroLatency")) { g_string_append_printf(str, "%s%s", str->str[0] ? "," : "", "zerolatency"); } @@ -2752,7 +2749,7 @@ void ghb_set_video_encoder_opts(hb_dict_t *dict, GhbValue *js) case HB_VCODEC_FFMPEG_VP8: { const char *opts; - opts = ghb_settings_get_const_string(js, "VideoOptionExtra"); + opts = ghb_dict_get_string(js, "VideoOptionExtra"); if (opts != NULL && opts[0]) { hb_dict_set(dict, "Options", hb_value_string(opts)); @@ -3104,15 +3101,21 @@ ghb_lookup_audio_bitrate_rate(const char *name) int ghb_settings_audio_bitrate_rate(const GhbValue *settings, const char *name) { - const char *rate_id = ghb_settings_get_const_string(settings, name); - return ghb_lookup_audio_bitrate_rate(rate_id); + int result; + char *rate_id = ghb_dict_get_string_xform(settings, name); + result = ghb_lookup_audio_bitrate_rate(rate_id); + g_free(rate_id); + return result; } const hb_rate_t* ghb_settings_audio_bitrate(const GhbValue *settings, const char *name) { - const char *rate_id = ghb_settings_get_const_string(settings, name); - return ghb_lookup_audio_bitrate(rate_id); + const hb_rate_t *result; + char *rate_id = ghb_dict_get_string_xform(settings, name); + result = ghb_lookup_audio_bitrate(rate_id); + g_free(rate_id); + return result; } static ghb_status_t hb_status; @@ -3390,8 +3393,8 @@ ghb_picture_settings_deps(signal_user_data_t *ud) pic_par = ghb_settings_combo_int(ud->settings, "PicturePAR"); enable_keep_aspect = (pic_par != HB_ANAMORPHIC_STRICT && pic_par != HB_ANAMORPHIC_LOOSE); - keep_aspect = ghb_settings_get_boolean(ud->settings, "PictureKeepRatio"); - autoscale = ghb_settings_get_boolean(ud->settings, "autoscale"); + keep_aspect = ghb_dict_get_bool(ud->settings, "PictureKeepRatio"); + autoscale = ghb_dict_get_bool(ud->settings, "autoscale"); enable_scale_width = enable_scale_height = !autoscale && (pic_par != HB_ANAMORPHIC_STRICT); @@ -3461,19 +3464,19 @@ ghb_set_scale_settings(GhbValue *settings, gint mode) pic_par = ghb_settings_combo_int(settings, "PicturePAR"); if (pic_par == HB_ANAMORPHIC_STRICT) { - ghb_settings_set_boolean(settings, "autoscale", TRUE); - ghb_settings_set_int(settings, "PictureModulus", 2); - ghb_settings_set_boolean(settings, "PictureLooseCrop", TRUE); + ghb_dict_set_bool(settings, "autoscale", TRUE); + ghb_dict_set_int(settings, "PictureModulus", 2); + ghb_dict_set_bool(settings, "PictureLooseCrop", TRUE); } if (pic_par == HB_ANAMORPHIC_STRICT || pic_par == HB_ANAMORPHIC_LOOSE) { - ghb_settings_set_boolean(settings, "PictureKeepRatio", TRUE); + ghb_dict_set_bool(settings, "PictureKeepRatio", TRUE); } int title_id, titleindex; const hb_title_t * title; - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title == NULL) return; @@ -3488,12 +3491,12 @@ ghb_set_scale_settings(GhbValue *settings, gint mode) mod = ghb_settings_combo_int(settings, "PictureModulus"); if (mod <= 0) mod = 16; - keep_aspect = ghb_settings_get_boolean(settings, "PictureKeepRatio"); - autocrop = ghb_settings_get_boolean(settings, "PictureAutoCrop"); - autoscale = ghb_settings_get_boolean(settings, "autoscale"); + keep_aspect = ghb_dict_get_bool(settings, "PictureKeepRatio"); + autocrop = ghb_dict_get_bool(settings, "PictureAutoCrop"); + autoscale = ghb_dict_get_bool(settings, "autoscale"); // "PictureLooseCrop" is a flag that says we prefer to crop extra to // satisfy alignment constraints rather than scaling to satisfy them. - loosecrop = ghb_settings_get_boolean(settings, "PictureLooseCrop"); + loosecrop = ghb_dict_get_bool(settings, "PictureLooseCrop"); // Align dimensions to either 16 or 2 pixels // The scaler crashes if the dimensions are not divisible by 2 // x264 also will not accept dims that are not multiple of 2 @@ -3509,17 +3512,17 @@ ghb_set_scale_settings(GhbValue *settings, gint mode) crop[1] = title->crop[1]; crop[2] = title->crop[2]; crop[3] = title->crop[3]; - ghb_settings_set_int(settings, "PictureTopCrop", crop[0]); - ghb_settings_set_int(settings, "PictureBottomCrop", crop[1]); - ghb_settings_set_int(settings, "PictureLeftCrop", crop[2]); - ghb_settings_set_int(settings, "PictureRightCrop", crop[3]); + ghb_dict_set_int(settings, "PictureTopCrop", crop[0]); + ghb_dict_set_int(settings, "PictureBottomCrop", crop[1]); + ghb_dict_set_int(settings, "PictureLeftCrop", crop[2]); + ghb_dict_set_int(settings, "PictureRightCrop", crop[3]); } else { - crop[0] = ghb_settings_get_int(settings, "PictureTopCrop"); - crop[1] = ghb_settings_get_int(settings, "PictureBottomCrop"); - crop[2] = ghb_settings_get_int(settings, "PictureLeftCrop"); - crop[3] = ghb_settings_get_int(settings, "PictureRightCrop"); + crop[0] = ghb_dict_get_int(settings, "PictureTopCrop"); + crop[1] = ghb_dict_get_int(settings, "PictureBottomCrop"); + crop[2] = ghb_dict_get_int(settings, "PictureLeftCrop"); + crop[3] = ghb_dict_get_int(settings, "PictureRightCrop"); // Prevent manual crop from creating too small an image if (title->geometry.height - crop[0] < crop[1] + 16) { @@ -3548,10 +3551,10 @@ ghb_set_scale_settings(GhbValue *settings, gint mode) need2 = crop_width - width - need1; crop[2] += need1; crop[3] += need2; - ghb_settings_set_int(settings, "PictureTopCrop", crop[0]); - ghb_settings_set_int(settings, "PictureBottomCrop", crop[1]); - ghb_settings_set_int(settings, "PictureLeftCrop", crop[2]); - ghb_settings_set_int(settings, "PictureRightCrop", crop[3]); + ghb_dict_set_int(settings, "PictureTopCrop", crop[0]); + ghb_dict_set_int(settings, "PictureBottomCrop", crop[1]); + ghb_dict_set_int(settings, "PictureLeftCrop", crop[2]); + ghb_dict_set_int(settings, "PictureRightCrop", crop[3]); } uiGeo.crop[0] = crop[0]; uiGeo.crop[1] = crop[1]; @@ -3567,14 +3570,14 @@ ghb_set_scale_settings(GhbValue *settings, gint mode) } else { - width = ghb_settings_get_int(settings, "scale_width"); - height = ghb_settings_get_int(settings, "scale_height"); + width = ghb_dict_get_int(settings, "scale_width"); + height = ghb_dict_get_int(settings, "scale_height"); if (mode & GHB_PIC_USE_MAX) { max_width = MOD_DOWN( - ghb_settings_get_int(settings, "PictureWidth"), mod); + ghb_dict_get_int(settings, "PictureWidth"), mod); max_height = MOD_DOWN( - ghb_settings_get_int(settings, "PictureHeight"), mod); + ghb_dict_get_int(settings, "PictureHeight"), mod); } } g_debug("max_width %d, max_height %d\n", max_width, max_height); @@ -3609,15 +3612,15 @@ ghb_set_scale_settings(GhbValue *settings, gint mode) if (mode & GHB_PIC_KEEP_PAR) { uiGeo.geometry.par.num = - ghb_settings_get_int(settings, "PicturePARWidth"); + ghb_dict_get_int(settings, "PicturePARWidth"); uiGeo.geometry.par.den = - ghb_settings_get_int(settings, "PicturePARHeight"); + ghb_dict_get_int(settings, "PicturePARHeight"); } else if (mode & (GHB_PIC_KEEP_DISPLAY_HEIGHT | GHB_PIC_KEEP_DISPLAY_WIDTH)) { uiGeo.geometry.par.num = - ghb_settings_get_int(settings, "PictureDisplayWidth"); + ghb_dict_get_int(settings, "PictureDisplayWidth"); uiGeo.geometry.par.den = width; } } @@ -3631,18 +3634,18 @@ ghb_set_scale_settings(GhbValue *settings, gint mode) // maxWidth and maxHeight hb_set_anamorphic_size2(&srcGeo, &uiGeo, &resultGeo); - ghb_settings_set_int(settings, "scale_width", resultGeo.width); - ghb_settings_set_int(settings, "scale_height", resultGeo.height); + ghb_dict_set_int(settings, "scale_width", resultGeo.width); + ghb_dict_set_int(settings, "scale_height", resultGeo.height); gint disp_width; disp_width = ((gdouble)resultGeo.par.num / resultGeo.par.den) * resultGeo.width + 0.5; - ghb_settings_set_int(settings, "PicturePARWidth", resultGeo.par.num); - ghb_settings_set_int(settings, "PicturePARHeight", resultGeo.par.den); - ghb_settings_set_int(settings, "PictureDisplayWidth", disp_width); - ghb_settings_set_int(settings, "PictureDisplayHeight", resultGeo.height); + ghb_dict_set_int(settings, "PicturePARWidth", resultGeo.par.num); + ghb_dict_set_int(settings, "PicturePARHeight", resultGeo.par.den); + ghb_dict_set_int(settings, "PictureDisplayWidth", disp_width); + ghb_dict_set_int(settings, "PictureDisplayHeight", resultGeo.height); } void @@ -3651,8 +3654,8 @@ ghb_update_display_aspect_label(signal_user_data_t *ud) gint disp_width, disp_height, dar_width, dar_height; gchar *str; - disp_width = ghb_settings_get_int(ud->settings, "PictureDisplayWidth"); - disp_height = ghb_settings_get_int(ud->settings, "PictureDisplayHeight"); + disp_width = ghb_dict_get_int(ud->settings, "PictureDisplayWidth"); + disp_height = ghb_dict_get_int(ud->settings, "PictureDisplayHeight"); hb_reduce(&dar_width, &dar_height, disp_width, disp_height); gint iaspect = dar_width * 9 / dar_height; if (dar_width > 2 * dar_height) @@ -3695,7 +3698,7 @@ ghb_set_scale(signal_user_data_t *ud, gint mode) // "PictureLooseCrop" is a flag that says we prefer to crop extra to // satisfy alignment constraints rather than scaling to satisfy them. - gboolean loosecrop = ghb_settings_get_boolean(ud->settings, "PictureLooseCrop"); + gboolean loosecrop = ghb_dict_get_bool(ud->settings, "PictureLooseCrop"); if (loosecrop) { widget = GHB_WIDGET (ud->builder, "PictureTopCrop"); @@ -3749,22 +3752,22 @@ get_preview_geometry(signal_user_data_t *ud, const hb_title_t *title, srcGeo->par = title->geometry.par; uiGeo->mode = ghb_settings_combo_int(ud->settings, "PicturePAR"); - uiGeo->keep = ghb_settings_get_boolean(ud->settings, "PictureKeepRatio") || + uiGeo->keep = ghb_dict_get_bool(ud->settings, "PictureKeepRatio") || uiGeo->mode == HB_ANAMORPHIC_STRICT || uiGeo->mode == HB_ANAMORPHIC_LOOSE; uiGeo->itu_par = 0; uiGeo->modulus = ghb_settings_combo_int(ud->settings, "PictureModulus"); - uiGeo->crop[0] = ghb_settings_get_int(ud->settings, "PictureTopCrop"); - uiGeo->crop[1] = ghb_settings_get_int(ud->settings, "PictureBottomCrop"); - uiGeo->crop[2] = ghb_settings_get_int(ud->settings, "PictureLeftCrop"); - uiGeo->crop[3] = ghb_settings_get_int(ud->settings, "PictureRightCrop"); - uiGeo->geometry.width = ghb_settings_get_int(ud->settings, "scale_width"); - uiGeo->geometry.height = ghb_settings_get_int(ud->settings, "scale_height"); - uiGeo->geometry.par.num = ghb_settings_get_int(ud->settings, "PicturePARWidth"); - uiGeo->geometry.par.den = ghb_settings_get_int(ud->settings, "PicturePARHeight"); + uiGeo->crop[0] = ghb_dict_get_int(ud->settings, "PictureTopCrop"); + uiGeo->crop[1] = ghb_dict_get_int(ud->settings, "PictureBottomCrop"); + uiGeo->crop[2] = ghb_dict_get_int(ud->settings, "PictureLeftCrop"); + uiGeo->crop[3] = ghb_dict_get_int(ud->settings, "PictureRightCrop"); + uiGeo->geometry.width = ghb_dict_get_int(ud->settings, "scale_width"); + uiGeo->geometry.height = ghb_dict_get_int(ud->settings, "scale_height"); + uiGeo->geometry.par.num = ghb_dict_get_int(ud->settings, "PicturePARWidth"); + uiGeo->geometry.par.den = ghb_dict_get_int(ud->settings, "PicturePARHeight"); uiGeo->maxWidth = 0; uiGeo->maxHeight = 0; - if (ghb_settings_get_boolean(ud->prefs, "preview_show_crop")) + if (ghb_dict_get_bool(ud->prefs, "preview_show_crop")) { gdouble xscale = (gdouble)uiGeo->geometry.width / (title->geometry.width - uiGeo->crop[2] - uiGeo->crop[3]); @@ -3811,64 +3814,55 @@ ghb_validate_filter_string(const gchar *str, gint max_fields) gboolean ghb_validate_filters(GhbValue *settings, GtkWindow *parent) { - gchar *str; + const gchar *str; gint index; gchar *message; - gboolean decomb_deint = ghb_settings_get_boolean(settings, "PictureDecombDeinterlace"); + gboolean decomb_deint = ghb_dict_get_bool(settings, "PictureDecombDeinterlace"); // deinte index = ghb_settings_combo_int(settings, "PictureDeinterlace"); if (!decomb_deint && index == 1) { - str = ghb_settings_get_string(settings, "PictureDeinterlaceCustom"); + str = ghb_dict_get_string(settings, "PictureDeinterlaceCustom"); if (!ghb_validate_filter_string(str, -1)) { message = g_strdup_printf( - _("Invalid Deinterlace Settings:\n\n%s\n"), - str); + _("Invalid Deinterlace Settings:\n\n%s\n"), str); ghb_message_dialog(parent, GTK_MESSAGE_ERROR, message, _("Cancel"), NULL); g_free(message); - g_free(str); return FALSE; } - g_free(str); } // detel index = ghb_settings_combo_int(settings, "PictureDetelecine"); if (index == 1) { - str = ghb_settings_get_string(settings, "PictureDetelecineCustom"); + str = ghb_dict_get_string(settings, "PictureDetelecineCustom"); if (!ghb_validate_filter_string(str, -1)) { message = g_strdup_printf( - _("Invalid Detelecine Settings:\n\n%s\n"), - str); + _("Invalid Detelecine Settings:\n\n%s\n"), str); ghb_message_dialog(parent, GTK_MESSAGE_ERROR, message, _("Cancel"), NULL); g_free(message); - g_free(str); return FALSE; } - g_free(str); } // decomb index = ghb_settings_combo_int(settings, "PictureDecomb"); if (decomb_deint && index == 1) { - str = ghb_settings_get_string(settings, "PictureDecombCustom"); + str = ghb_dict_get_string(settings, "PictureDecombCustom"); if (!ghb_validate_filter_string(str, -1)) { message = g_strdup_printf( - _("Invalid Decomb Settings:\n\n%s\n"), - str); + _("Invalid Decomb Settings:\n\n%s\n"), str); ghb_message_dialog(parent, GTK_MESSAGE_ERROR, message, _("Cancel"), NULL); g_free(message); - g_free(str); return FALSE; } - g_free(str); } // denoise // TODO @@ -3883,7 +3877,7 @@ ghb_validate_video(GhbValue *settings, GtkWindow *parent) const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(settings, "FileFormat"); + mux_id = ghb_dict_get_string(settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); vcodec = ghb_settings_video_encoder_codec(settings, "VideoEncoder"); @@ -3902,7 +3896,7 @@ ghb_validate_video(GhbValue *settings, GtkWindow *parent) } g_free(message); vcodec = hb_video_encoder_get_default(mux->format); - ghb_settings_set_string(settings, "VideoEncoder", + ghb_dict_set_string(settings, "VideoEncoder", hb_video_encoder_get_short_name(vcodec)); } return TRUE; @@ -3915,7 +3909,7 @@ ghb_validate_subtitles(GhbValue *settings, GtkWindow *parent) const hb_title_t * title; gchar *message; - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title == NULL) { @@ -3928,15 +3922,15 @@ ghb_validate_subtitles(GhbValue *settings, GtkWindow *parent) gint count, ii, source, track; gboolean burned, one_burned = FALSE; - slist = ghb_settings_get_value(settings, "subtitle_list"); + slist = ghb_dict_get_value(settings, "subtitle_list"); count = ghb_array_len(slist); for (ii = 0; ii < count; ii++) { subtitle = ghb_array_get(slist, ii); - track = ghb_settings_get_int(subtitle, "SubtitleTrack"); - source = ghb_settings_get_int(subtitle, "SubtitleSource"); + track = ghb_dict_get_int(subtitle, "SubtitleTrack"); + source = ghb_dict_get_int(subtitle, "SubtitleSource"); burned = track != -1 && - ghb_settings_get_boolean(subtitle, "SubtitleBurned"); + ghb_dict_get_bool(subtitle, "SubtitleBurned"); if (burned && one_burned) { // MP4 can only handle burned vobsubs. make sure there isn't @@ -3960,9 +3954,9 @@ ghb_validate_subtitles(GhbValue *settings, GtkWindow *parent) } if (source == SRTSUB) { - gchar *filename; + const gchar *filename; - filename = ghb_settings_get_string(subtitle, "SrtFile"); + filename = ghb_dict_get_string(subtitle, "SrtFile"); if (!g_file_test(filename, G_FILE_TEST_IS_REGULAR)) { message = g_strdup_printf( @@ -3990,7 +3984,7 @@ ghb_validate_audio(GhbValue *settings, GtkWindow *parent) const hb_title_t * title; gchar *message; - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title == NULL) { @@ -4002,13 +3996,13 @@ ghb_validate_audio(GhbValue *settings, GtkWindow *parent) const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(settings, "FileFormat"); + mux_id = ghb_dict_get_string(settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); const GhbValue *audio_list; gint count, ii; - audio_list = ghb_settings_get_value(settings, "audio_list"); + audio_list = ghb_dict_get_value(settings, "audio_list"); count = ghb_array_len(audio_list); for (ii = 0; ii < count; ii++) { @@ -4017,7 +4011,7 @@ ghb_validate_audio(GhbValue *settings, GtkWindow *parent) int track, codec; asettings = ghb_array_get(audio_list, ii); - track = ghb_settings_get_int(asettings, "AudioTrack"); + track = ghb_dict_get_int(asettings, "AudioTrack"); codec = ghb_settings_audio_encoder_codec(asettings, "AudioEncoder"); if (codec == HB_ACODEC_AUTO_PASS) continue; @@ -4054,7 +4048,7 @@ ghb_validate_audio(GhbValue *settings, GtkWindow *parent) codec = HB_ACODEC_FFAAC; } const char *name = hb_audio_encoder_get_short_name(codec); - ghb_settings_set_string(asettings, "AudioEncoder", name); + ghb_dict_set_string(asettings, "AudioEncoder", name); } gchar *a_unsup = NULL; gchar *mux_s = NULL; @@ -4082,7 +4076,7 @@ ghb_validate_audio(GhbValue *settings, GtkWindow *parent) } g_free(message); const char *name = hb_audio_encoder_get_short_name(codec); - ghb_settings_set_string(asettings, "AudioEncoder", name); + ghb_dict_set_string(asettings, "AudioEncoder", name); } const hb_mixdown_t *mix; @@ -4107,7 +4101,7 @@ ghb_validate_audio(GhbValue *settings, GtkWindow *parent) } g_free(message); int amixdown = ghb_get_best_mix(aconfig, codec, mix->amixdown); - ghb_settings_set_string(asettings, "AudioMixdown", + ghb_dict_set_string(asettings, "AudioMixdown", hb_mixdown_get_short_name(amixdown)); } } @@ -4128,65 +4122,65 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) const hb_container_t *mux; int mux_id; - mux_name = ghb_settings_get_const_string(js, "FileFormat"); + mux_name = ghb_dict_get_string(js, "FileFormat"); mux = ghb_lookup_container_by_name(mux_name); mux_id = mux->format; int p_to_p = -1, seek_points, chapter_markers = 0; int64_t range_start, range_stop; - range_start = ghb_settings_get_int(js, "start_frame") + 1; + range_start = ghb_dict_get_int(js, "start_frame") + 1; if (range_start) { - GhbValue *prefs = ghb_settings_get_value(js, "Preferences"); - seek_points = ghb_settings_get_int(prefs, "preview_count"); - range_stop = ghb_settings_get_int(prefs, "live_duration") * 90000LL; + GhbValue *prefs = ghb_dict_get_value(js, "Preferences"); + seek_points = ghb_dict_get_int(prefs, "preview_count"); + range_stop = ghb_dict_get_int(prefs, "live_duration") * 90000LL; } else { - chapter_markers = ghb_settings_get_boolean(js, "ChapterMarkers"); + chapter_markers = ghb_dict_get_bool(js, "ChapterMarkers"); p_to_p = ghb_settings_combo_int(js, "PtoPType"); switch (p_to_p) { default: case 0: // Chapter range { - range_start = ghb_settings_get_int(js, "start_point"); - range_stop = ghb_settings_get_int(js, "end_point"); + range_start = ghb_dict_get_int(js, "start_point"); + range_stop = ghb_dict_get_int(js, "end_point"); if (range_start == range_stop) chapter_markers = 0; } break; case 1: // PTS range { double start, end; - start = ghb_settings_get_double(js, "start_point"); - end = ghb_settings_get_double(js, "end_point"); + start = ghb_dict_get_double(js, "start_point"); + end = ghb_dict_get_double(js, "end_point"); range_start = (int64_t)start * 90000; range_stop = (int64_t)end * 90000 - range_start; } break; case 2: // Frame range { - range_start = ghb_settings_get_int(js, "start_point") - 1; - range_stop = ghb_settings_get_int(js, "end_point") - 1 - + range_start = ghb_dict_get_int(js, "start_point") - 1; + range_stop = ghb_dict_get_int(js, "end_point") - 1 - range_start; } break; } } - const char *path = ghb_settings_get_const_string(js, "source"); - int title_id = ghb_settings_get_int(js, "title"); + const char *path = ghb_dict_get_string(js, "source"); + int title_id = ghb_dict_get_int(js, "title"); - int angle = ghb_settings_get_int(js, "angle"); + int angle = ghb_dict_get_int(js, "angle"); hb_rational_t par; - par.num = ghb_settings_get_int(js, "PicturePARWidth"); - par.den = ghb_settings_get_int(js, "PicturePARHeight"); + par.num = ghb_dict_get_int(js, "PicturePARWidth"); + par.den = ghb_dict_get_int(js, "PicturePARHeight"); int vcodec, acodec_copy_mask, acodec_fallback, grayscale; vcodec = ghb_settings_video_encoder_codec(js, "VideoEncoder"); acodec_copy_mask = ghb_get_copy_mask(js); acodec_fallback = ghb_settings_audio_encoder_codec(js, "AudioEncoderFallback"); - grayscale = ghb_settings_get_boolean(js, "VideoGrayScale"); + grayscale = ghb_dict_get_bool(js, "VideoGrayScale"); dict = json_pack_ex(&error, 0, "{" @@ -4240,7 +4234,7 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) g_warning("json pack job failure: %s", error.text); return; } - const char *dest = ghb_settings_get_const_string(js, "destination"); + const char *dest = ghb_dict_get_string(js, "destination"); hb_dict_t *dest_dict = hb_dict_get(dict, "Destination"); if (dest != NULL) { @@ -4249,10 +4243,10 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) if (mux_id & HB_MUX_MASK_MP4) { int mp4_optimize, ipod_atom = 0; - mp4_optimize = ghb_settings_get_boolean(js, "Mp4HttpOptimize"); + mp4_optimize = ghb_dict_get_bool(js, "Mp4HttpOptimize"); if (vcodec == HB_VCODEC_X264) { - ipod_atom = ghb_settings_get_boolean(js, "Mp4iPodCompatible"); + ipod_atom = ghb_dict_get_bool(js, "Mp4iPodCompatible"); } hb_dict_t *mp4_dict; mp4_dict = json_pack_ex(&error, 0, "{s:o, s:o}", @@ -4319,17 +4313,17 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) hb_dict_set(source_dict, "Range", range_dict); hb_dict_t *video_dict = hb_dict_get(dict, "Video"); - if (ghb_settings_get_boolean(js, "vquality_type_constant")) + if (ghb_dict_get_bool(js, "vquality_type_constant")) { - double vquality = ghb_settings_get_double(js, "VideoQualitySlider"); + double vquality = ghb_dict_get_double(js, "VideoQualitySlider"); hb_dict_set(video_dict, "Quality", hb_value_double(vquality)); } - else if (ghb_settings_get_boolean(js, "vquality_type_bitrate")) + else if (ghb_dict_get_bool(js, "vquality_type_bitrate")) { int vbitrate, twopass, fastfirstpass; - vbitrate = ghb_settings_get_int(js, "VideoAvgBitrate"); - twopass = ghb_settings_get_boolean(js, "VideoTwoPass"); - fastfirstpass = ghb_settings_get_boolean(js, "VideoTurboTwoPass"); + vbitrate = ghb_dict_get_int(js, "VideoAvgBitrate"); + twopass = ghb_dict_get_bool(js, "VideoTwoPass"); + fastfirstpass = ghb_dict_get_bool(js, "VideoTurboTwoPass"); hb_dict_set(video_dict, "Bitrate", hb_value_int(vbitrate)); hb_dict_set(video_dict, "TwoPass", hb_value_bool(twopass)); hb_dict_set(video_dict, "Turbo", hb_value_bool(fastfirstpass)); @@ -4339,42 +4333,42 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) hb_dict_t *meta_dict = hb_dict_get(dict, "MetaData"); const char * meta; - meta = ghb_settings_get_const_string(js, "MetaName"); + meta = ghb_dict_get_string(js, "MetaName"); if (meta && *meta) { hb_dict_set(meta_dict, "Name", hb_value_string(meta)); } - meta = ghb_settings_get_const_string(js, "MetaArtist"); + meta = ghb_dict_get_string(js, "MetaArtist"); if (meta && *meta) { hb_dict_set(meta_dict, "Artist", hb_value_string(meta)); } - meta = ghb_settings_get_const_string(js, "MetaAlbumArtist"); + meta = ghb_dict_get_string(js, "MetaAlbumArtist"); if (meta && *meta) { hb_dict_set(meta_dict, "AlbumArtist", hb_value_string(meta)); } - meta = ghb_settings_get_const_string(js, "MetaReleaseDate"); + meta = ghb_dict_get_string(js, "MetaReleaseDate"); if (meta && *meta) { hb_dict_set(meta_dict, "ReleaseDate", hb_value_string(meta)); } - meta = ghb_settings_get_const_string(js, "MetaComment"); + meta = ghb_dict_get_string(js, "MetaComment"); if (meta && *meta) { hb_dict_set(meta_dict, "Comment", hb_value_string(meta)); } - meta = ghb_settings_get_const_string(js, "MetaGenre"); + meta = ghb_dict_get_string(js, "MetaGenre"); if (meta && *meta) { hb_dict_set(meta_dict, "Genre", hb_value_string(meta)); } - meta = ghb_settings_get_const_string(js, "MetaDescription"); + meta = ghb_dict_get_string(js, "MetaDescription"); if (meta && *meta) { hb_dict_set(meta_dict, "Description", hb_value_string(meta)); } - meta = ghb_settings_get_const_string(js, "MetaLongDescription"); + meta = ghb_dict_get_string(js, "MetaLongDescription"); if (meta && *meta) { hb_dict_set(meta_dict, "LongDescription", hb_value_string(meta)); @@ -4389,7 +4383,7 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) gint chap; gint count; - chapters = ghb_settings_get_value(js, "chapter_list"); + chapters = ghb_dict_get_value(js, "chapter_list"); count = ghb_array_len(chapters); for(chap = 0; chap < count; chap++) { @@ -4423,13 +4417,13 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) // Crop scale filter int width, height, crop[4]; - width = ghb_settings_get_int(js, "scale_width"); - height = ghb_settings_get_int(js, "scale_height"); + width = ghb_dict_get_int(js, "scale_width"); + height = ghb_dict_get_int(js, "scale_height"); - crop[0] = ghb_settings_get_int(js, "PictureTopCrop"); - crop[1] = ghb_settings_get_int(js, "PictureBottomCrop"); - crop[2] = ghb_settings_get_int(js, "PictureLeftCrop"); - crop[3] = ghb_settings_get_int(js, "PictureRightCrop"); + crop[0] = ghb_dict_get_int(js, "PictureTopCrop"); + crop[1] = ghb_dict_get_int(js, "PictureBottomCrop"); + crop[2] = ghb_dict_get_int(js, "PictureLeftCrop"); + crop[3] = ghb_dict_get_int(js, "PictureRightCrop"); filter_str = g_strdup_printf("%d:%d:%d:%d:%d:%d", width, height, crop[0], crop[1], crop[2], crop[3]); @@ -4456,7 +4450,7 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) } else { - filter_str = ghb_settings_get_const_string(js, "PictureDetelecineCustom"); + filter_str = ghb_dict_get_string(js, "PictureDetelecineCustom"); } filter_dict = json_pack_ex(&error, 0, "{s:o}", "ID", hb_value_int(HB_FILTER_DETELECINE)); @@ -4475,7 +4469,7 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) // Decomb filter gboolean decomb_deint; gint decomb, deint; - decomb_deint = ghb_settings_get_boolean(js, "PictureDecombDeinterlace"); + decomb_deint = ghb_dict_get_bool(js, "PictureDecombDeinterlace"); decomb = ghb_settings_combo_int(js, "PictureDecomb"); deint = ghb_settings_combo_int(js, "PictureDeinterlace"); if (decomb_deint && decomb) @@ -4488,7 +4482,7 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) } else { - filter_str = ghb_settings_get_const_string(js, "PictureDecombCustom"); + filter_str = ghb_dict_get_string(js, "PictureDecombCustom"); } filter_dict = json_pack_ex(&error, 0, "{s:o}", "ID", hb_value_int(HB_FILTER_DECOMB)); @@ -4515,7 +4509,7 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) } else { - filter_str = ghb_settings_get_const_string(js, "PictureDeinterlaceCustom"); + filter_str = ghb_dict_get_string(js, "PictureDeinterlaceCustom"); } filter_dict = json_pack_ex(&error, 0, "{s:o}", "ID", hb_value_int(HB_FILTER_DEINTERLACE)); @@ -4532,16 +4526,16 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) } // Denoise filter - if (strcmp(ghb_settings_get_const_string(js, "PictureDenoiseFilter"), "off")) + if (strcmp(ghb_dict_get_string(js, "PictureDenoiseFilter"), "off")) { int filter_id = HB_FILTER_HQDN3D; - if (!strcmp(ghb_settings_get_const_string(js, "PictureDenoiseFilter"), "nlmeans")) + if (!strcmp(ghb_dict_get_string(js, "PictureDenoiseFilter"), "nlmeans")) filter_id = HB_FILTER_NLMEANS; - if (!strcmp(ghb_settings_get_const_string(js, "PictureDenoisePreset"), "custom")) + if (!strcmp(ghb_dict_get_string(js, "PictureDenoisePreset"), "custom")) { const char *filter_str; - filter_str = ghb_settings_get_const_string(js, "PictureDenoiseCustom"); + filter_str = ghb_dict_get_string(js, "PictureDenoiseCustom"); filter_dict = json_pack_ex(&error, 0, "{s:o, s:o}", "ID", hb_value_int(filter_id), "Settings", hb_value_string(filter_str)); @@ -4555,8 +4549,8 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) else { const char *preset, *tune; - preset = ghb_settings_get_const_string(js, "PictureDenoisePreset"); - tune = ghb_settings_get_const_string(js, "PictureDenoiseTune"); + preset = ghb_dict_get_string(js, "PictureDenoisePreset"); + tune = ghb_dict_get_string(js, "PictureDenoiseTune"); filter_str = hb_generate_filter_settings(filter_id, preset, tune); filter_dict = json_pack_ex(&error, 0, "{s:o, s:o}", "ID", hb_value_int(filter_id), @@ -4572,7 +4566,7 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) } // Deblock filter - gint deblock = ghb_settings_get_int(js, "PictureDeblock"); + gint deblock = ghb_dict_get_int(js, "PictureDeblock"); if( deblock >= 5 ) { filter_str = g_strdup_printf("%d", deblock); @@ -4591,15 +4585,15 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) // VFR filter gint vrate_den = ghb_settings_video_framerate_rate(js, "VideoFramerate"); gint cfr; - if (ghb_settings_get_boolean(js, "VideoFrameratePFR")) + if (ghb_dict_get_bool(js, "VideoFrameratePFR")) cfr = 2; - else if (ghb_settings_get_boolean(js, "VideoFramerateCFR")) + else if (ghb_dict_get_bool(js, "VideoFramerateCFR")) cfr = 1; else cfr = 0; // x264 zero latency requires CFR encode - if (ghb_settings_get_boolean(js, "x264ZeroLatency")) + if (ghb_dict_get_bool(js, "x264ZeroLatency")) { cfr = 1; ghb_log("zerolatency x264 tune selected, forcing constant framerate"); @@ -4629,7 +4623,7 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) hb_value_array_t *json_audio_list = hb_dict_get(audios_dict, "AudioList"); const GhbValue *audio_list; - audio_list = ghb_settings_get_value(js, "audio_list"); + audio_list = ghb_dict_get_value(js, "audio_list"); count = ghb_array_len(audio_list); for (ii = 0; ii < count; ii++) { @@ -4640,8 +4634,8 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) double gain, drc, quality; asettings = ghb_array_get(audio_list, ii); - track = ghb_settings_get_int(asettings, "AudioTrack"); - aname = ghb_settings_get_const_string(asettings, "AudioTrackName"); + track = ghb_dict_get_int(asettings, "AudioTrack"); + aname = ghb_dict_get_string(asettings, "AudioTrackName"); acodec = ghb_settings_audio_encoder_codec(asettings, "AudioEncoder"); audio_dict = json_pack_ex(&error, 0, "{s:o, s:o}", @@ -4660,10 +4654,10 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) // It would be better if this were done in libhb for us, but its not yet. if (!ghb_audio_is_passthru(acodec)) { - gain = ghb_settings_get_double(asettings, "AudioTrackGainSlider"); + gain = ghb_dict_get_double(asettings, "AudioTrackGainSlider"); if (gain > 0) hb_dict_set(audio_dict, "Gain", hb_value_double(gain)); - drc = ghb_settings_get_double(asettings, "AudioTrackDRCSlider"); + drc = ghb_dict_get_double(asettings, "AudioTrackDRCSlider"); if (drc < 1.0) drc = 0.0; if (drc > 0) @@ -4676,8 +4670,8 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) asettings, "AudioSamplerate"); hb_dict_set(audio_dict, "Samplerate", hb_value_int(samplerate)); gboolean qe; - qe = ghb_settings_get_boolean(asettings, "AudioTrackQualityEnable"); - quality = ghb_settings_get_double(asettings, "AudioTrackQuality"); + qe = ghb_dict_get_bool(asettings, "AudioTrackQualityEnable"); + quality = ghb_dict_get_double(asettings, "AudioTrackQuality"); if (qe && quality != HB_INVALID_AUDIO_QUALITY) { hb_dict_set(audio_dict, "Quality", hb_value_double(quality)); @@ -4700,7 +4694,7 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) hb_value_array_t *json_subtitle_list = hb_dict_get(subtitles_dict, "SubtitleList"); const GhbValue *subtitle_list; - subtitle_list = ghb_settings_get_value(js, "subtitle_list"); + subtitle_list = ghb_dict_get_value(js, "subtitle_list"); count = ghb_array_len(subtitle_list); for (ii = 0; ii < count; ii++) { @@ -4712,23 +4706,23 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) ssettings = ghb_array_get(subtitle_list, ii); - force = ghb_settings_get_boolean(ssettings, "SubtitleForced"); - burned = ghb_settings_get_boolean(ssettings, "SubtitleBurned"); - def = ghb_settings_get_boolean(ssettings, "SubtitleDefaultTrack"); - source = ghb_settings_get_int(ssettings, "SubtitleSource"); + force = ghb_dict_get_bool(ssettings, "SubtitleForced"); + burned = ghb_dict_get_bool(ssettings, "SubtitleBurned"); + def = ghb_dict_get_bool(ssettings, "SubtitleDefaultTrack"); + source = ghb_dict_get_int(ssettings, "SubtitleSource"); if (source == SRTSUB) { const gchar *filename, *lang, *code; int offset; - filename = ghb_settings_get_const_string(ssettings, "SrtFile"); + filename = ghb_dict_get_string(ssettings, "SrtFile"); if (!g_file_test(filename, G_FILE_TEST_IS_REGULAR)) { continue; } - offset = ghb_settings_get_int(ssettings, "SrtOffset"); - lang = ghb_settings_get_const_string(ssettings, "SrtLanguage"); - code = ghb_settings_get_const_string(ssettings, "SrtCodeset"); + offset = ghb_dict_get_int(ssettings, "SrtOffset"); + lang = ghb_dict_get_string(ssettings, "SrtLanguage"); + code = ghb_dict_get_string(ssettings, "SrtCodeset"); if (burned && !one_burned && hb_subtitle_can_burn(SRTSUB)) { // Only allow one subtitle to be burned into the video @@ -4755,7 +4749,7 @@ add_job(hb_handle_t *h, GhbValue *js, gint unique_id) hb_value_array_append(json_subtitle_list, subtitle_dict); } - track = ghb_settings_get_int(ssettings, "SubtitleTrack"); + track = ghb_dict_get_int(ssettings, "SubtitleTrack"); if (track == -1) { hb_dict_t *search = hb_dict_get(subtitles_dict, "Search"); @@ -4990,7 +4984,7 @@ ghb_get_preview_image( if( title == NULL ) return NULL; gboolean deinterlace; - if (ghb_settings_get_boolean(ud->settings, "PictureDecombDeinterlace")) + if (ghb_dict_get_bool(ud->settings, "PictureDecombDeinterlace")) { deinterlace = ghb_settings_combo_int(ud->settings, "PictureDecomb") == 0 ? 0 : 1; @@ -5056,15 +5050,15 @@ ghb_get_preview_image( src_line += image->plane[0].stride; dst += stride; } - gint w = ghb_settings_get_int(ud->settings, "scale_width"); - gint h = ghb_settings_get_int(ud->settings, "scale_height"); + gint w = ghb_dict_get_int(ud->settings, "scale_width"); + gint h = ghb_dict_get_int(ud->settings, "scale_height"); ghb_par_scale(ud, &w, &h, resultGeo.par.num, resultGeo.par.den); gint c0, c1, c2, c3; - c0 = ghb_settings_get_int(ud->settings, "PictureTopCrop"); - c1 = ghb_settings_get_int(ud->settings, "PictureBottomCrop"); - c2 = ghb_settings_get_int(ud->settings, "PictureLeftCrop"); - c3 = ghb_settings_get_int(ud->settings, "PictureRightCrop"); + c0 = ghb_dict_get_int(ud->settings, "PictureTopCrop"); + c1 = ghb_dict_get_int(ud->settings, "PictureBottomCrop"); + c2 = ghb_dict_get_int(ud->settings, "PictureLeftCrop"); + c3 = ghb_dict_get_int(ud->settings, "PictureRightCrop"); gdouble xscale = (gdouble)w / (gdouble)(title->geometry.width - c2 - c3); gdouble yscale = (gdouble)h / (gdouble)(title->geometry.height - c0 - c1); @@ -5076,13 +5070,13 @@ ghb_get_preview_image( int previewHeight = image->height; // If the preview is too large to fit the screen, reduce it's size. - if (ghb_settings_get_boolean(ud->prefs, "reduce_hd_preview")) + if (ghb_dict_get_bool(ud->prefs, "reduce_hd_preview")) { GdkScreen *ss; gint s_w, s_h; gint factor = 80; - if (ghb_settings_get_boolean(ud->prefs, "preview_fullscreen")) + if (ghb_dict_get_bool(ud->prefs, "preview_fullscreen")) { factor = 100; } @@ -5117,7 +5111,7 @@ ghb_get_preview_image( preview = scaled_preview; } } - if (ghb_settings_get_boolean(ud->prefs, "preview_show_crop")) + if (ghb_dict_get_bool(ud->prefs, "preview_show_crop")) { c0 *= yscale; c1 *= yscale; diff --git a/gtk/src/hb-backend.h b/gtk/src/hb-backend.h index 53661e38a..6468432e0 100644 --- a/gtk/src/hb-backend.h +++ b/gtk/src/hb-backend.h @@ -139,7 +139,7 @@ void ghb_add_all_subtitles(signal_user_data_t *ud, gint titleindex); gint ghb_find_subtitle_track(const hb_title_t * title, const gchar * lang, int start); gint ghb_pick_subtitle_track(signal_user_data_t *ud); gint ghb_longest_title(void); -gchar* ghb_build_advanced_opts_string(GhbValue *settings); +const gchar* ghb_build_advanced_opts_string(GhbValue *settings); GdkPixbuf* ghb_get_preview_image( const hb_title_t *title, gint index, signal_user_data_t *ud, gint *out_width, gint *out_height); @@ -157,7 +157,6 @@ void ghb_hb_cleanup(gboolean partial); gint ghb_lookup_combo_int(const gchar *name, const GhbValue *gval); gdouble ghb_lookup_combo_double(const gchar *name, const GhbValue *gval); const gchar* ghb_lookup_combo_option(const gchar *name, const GhbValue *gval); -const gchar* ghb_lookup_combo_string(const gchar *name, const GhbValue *gval); gchar* ghb_get_tmp_dir(); gint ghb_find_closest_audio_samplerate(gint rate); diff --git a/gtk/src/main.c b/gtk/src/main.c index 3a9d581b1..5b60252fe 100644 --- a/gtk/src/main.c +++ b/gtk/src/main.c @@ -884,10 +884,10 @@ main(int argc, char *argv[]) g_log_set_handler("Gtk", G_LOG_LEVEL_WARNING, warn_log_handler, ud); //g_log_set_handler("Gtk", G_LOG_LEVEL_CRITICAL, warn_log_handler, ud); - ud->globals = ghb_settings_new(); - ud->prefs = ghb_settings_new(); + ud->globals = ghb_dict_new(); + ud->prefs = ghb_dict_new(); ud->settings_array = ghb_array_new(); - ud->settings = ghb_settings_new(); + ud->settings = ghb_dict_new(); ghb_array_append(ud->settings_array, ud->settings); ud->builder = create_builder_or_die(BUILDER_NAME); @@ -1029,16 +1029,15 @@ main(int argc, char *argv[]) // empty title is initialized. gint logLevel; - logLevel = ghb_settings_get_int(ud->prefs, "LoggingLevel"); + logLevel = ghb_dict_get_int(ud->prefs, "LoggingLevel"); ghb_backend_init(logLevel); - if (ghb_settings_get_boolean(ud->prefs, "hbfd")) + if (ghb_dict_get_bool(ud->prefs, "hbfd")) { ghb_hbfd(ud, TRUE); } - gchar *source = ghb_settings_get_string(ud->prefs, "default_source"); + const gchar *source = ghb_dict_get_string(ud->prefs, "default_source"); ghb_dvd_set_current(source, ud); - g_free(source); // Populate the presets tree view ghb_presets_list_init(ud, NULL, 0); @@ -1063,13 +1062,13 @@ main(int argc, char *argv[]) if (dvd_device != NULL) { // Source overridden from command line option - ghb_settings_set_string(ud->globals, "scan_source", dvd_device); + ghb_dict_set_string(ud->globals, "scan_source", dvd_device); g_idle_add((GSourceFunc)ghb_idle_scan, ud); } else { - GhbValue *gval = ghb_settings_get_value(ud->prefs, "default_source"); - ghb_settings_set_value(ud->globals, "scan_source", gval); + GhbValue *gval = ghb_dict_get_value(ud->prefs, "default_source"); + ghb_dict_set(ud->globals, "scan_source", ghb_value_dup(gval)); } // Reload and check status of the last saved queue g_idle_add((GSourceFunc)ghb_reload_queue, ud); @@ -1091,8 +1090,8 @@ main(int argc, char *argv[]) geo_mask = GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE | GDK_HINT_BASE_SIZE; gtk_window_set_geometry_hints(GTK_WINDOW(ghb_window), ghb_window, &geo, geo_mask); - window_width = ghb_settings_get_int(ud->prefs, "window_width"); - window_height = ghb_settings_get_int(ud->prefs, "window_height"); + window_width = ghb_dict_get_int(ud->prefs, "window_width"); + window_height = ghb_dict_get_int(ud->prefs, "window_height"); /* * Filter objects in GtkBuilder xml diff --git a/gtk/src/presets.c b/gtk/src/presets.c index 099841b51..bdd8afdef 100644 --- a/gtk/src/presets.c +++ b/gtk/src/presets.c @@ -47,7 +47,6 @@ static GhbValue *presetsPlist = NULL; static GhbValue *prefsPlist = NULL; static gboolean prefs_modified = FALSE; -static const GhbValue* preset_dict_get_value(GhbValue *dict, const gchar *key); static void store_presets(void); static void store_prefs(void); @@ -174,7 +173,7 @@ preset_path_from_indices(GhbValue *presets, gint *indices, gint len) name = ghb_dict_get(dict, "PresetName"); if (name) ghb_array_append(path, ghb_value_dup(name)); - folder = ghb_value_get_bool(preset_dict_get_value(dict, "Folder")); + folder = ghb_value_get_bool(ghb_dict_get(dict, "Folder")); if (!folder) break; presets = ghb_dict_get(dict, "ChildrenArray"); @@ -273,7 +272,7 @@ presets_get_dict(GhbValue *presets, gint *indices, gint len) dict = ghb_array_get(presets, indices[ii]); if (ii < len-1) { - folder = ghb_value_get_bool(preset_dict_get_value(dict, "Folder")); + folder = ghb_value_get_bool(ghb_dict_get(dict, "Folder")); if (!folder) return NULL; presets = ghb_dict_get(dict, "ChildrenArray"); @@ -296,7 +295,7 @@ presets_get_folder(GhbValue *presets, gint *indices, gint len) count = ghb_array_len(presets); if (indices[ii] >= count) return NULL; dict = ghb_array_get(presets, indices[ii]); - folder = ghb_value_get_bool(preset_dict_get_value(dict, "Folder")); + folder = ghb_value_get_bool(ghb_dict_get(dict, "Folder")); if (!folder) break; presets = ghb_dict_get(dict, "ChildrenArray"); @@ -316,7 +315,7 @@ plist_get_dict(GhbValue *presets, const gchar *name) static const gchar* preset_get_name(GhbValue *dict) { - return ghb_value_get_string(preset_dict_get_value(dict, "PresetName")); + return ghb_value_get_string(ghb_dict_get(dict, "PresetName")); } static gboolean @@ -324,7 +323,7 @@ preset_folder_is_open(GhbValue *dict) { const GhbValue *gval; - gval = preset_dict_get_value(dict, "FolderOpen"); + gval = ghb_dict_get(dict, "FolderOpen"); if (gval != NULL) return ghb_value_get_bool(gval); return FALSE; @@ -333,13 +332,13 @@ preset_folder_is_open(GhbValue *dict) gboolean ghb_preset_folder(GhbValue *dict) { - return ghb_value_get_int(preset_dict_get_value(dict, "Folder")); + return ghb_value_get_int(ghb_dict_get(dict, "Folder")); } gint ghb_preset_type(GhbValue *dict) { - return ghb_value_get_int(preset_dict_get_value(dict, "Type")); + return ghb_value_get_int(ghb_dict_get(dict, "Type")); } static void @@ -443,7 +442,7 @@ single_find_pos(GhbValue *presets, const gchar *name, gint type) const gchar *str; dict = ghb_array_get(presets, ii); str = preset_get_name(dict); - ptype = ghb_value_get_int(preset_dict_get_value(dict, "Type")); + ptype = ghb_value_get_int(ghb_dict_get(dict, "Type")); if (strcasecmp(name, str) <= 0 && ptype == type) { return ii; @@ -479,7 +478,7 @@ presets_find_pos(const GhbValue *path, gint type, gint *len) return NULL; } dict = ghb_array_get(nested, indices[ii]); - folder = ghb_value_get_bool(preset_dict_get_value(dict, "Folder")); + folder = ghb_value_get_bool(ghb_dict_get(dict, "Folder")); nested = NULL; if (!folder) break; @@ -502,7 +501,7 @@ preset_tree_depth(GhbValue *dict) { gboolean folder; - folder = ghb_value_get_bool(preset_dict_get_value(dict, "Folder")); + folder = ghb_value_get_bool(ghb_dict_get(dict, "Folder")); if (folder) { gint depth = 0; @@ -532,7 +531,7 @@ preset_is_default(GhbValue *dict) { const GhbValue *val; - val = preset_dict_get_value(dict, "Default"); + val = ghb_dict_get(dict, "Default"); return ghb_value_get_bool(val); } @@ -548,7 +547,7 @@ presets_clear_default(GhbValue *presets) gboolean folder; dict = ghb_array_get(presets, ii); - folder = ghb_value_get_bool(preset_dict_get_value(dict, "Folder")); + folder = ghb_value_get_bool(ghb_dict_get(dict, "Folder")); if (folder) { GhbValue *nested; @@ -580,12 +579,12 @@ presets_customize(GhbValue *presets) dict = ghb_array_get(presets, ii); - ptype = ghb_value_get_int(preset_dict_get_value(dict, "Type")); + ptype = ghb_value_get_int(ghb_dict_get(dict, "Type")); if (ptype != PRESETS_CUSTOM) { ghb_dict_set(dict, "Type", ghb_int_value_new(PRESETS_CUSTOM)); } - folder = ghb_value_get_bool(preset_dict_get_value(dict, "Folder")); + folder = ghb_value_get_bool(ghb_dict_get(dict, "Folder")); if (folder) { GhbValue *nested; @@ -609,7 +608,7 @@ presets_find_default2(GhbValue *presets, gint *len) gboolean folder; dict = ghb_array_get(presets, ii); - folder = ghb_value_get_bool(preset_dict_get_value(dict, "Folder")); + folder = ghb_value_get_bool(ghb_dict_get(dict, "Folder")); if (folder) { GhbValue *nested; @@ -680,7 +679,7 @@ ghb_preset_indices_from_path( if (ii < count-1) { dict = ghb_array_get(nested, indices[ii]); - folder = ghb_value_get_bool(preset_dict_get_value(dict, "Folder")); + folder = ghb_value_get_bool(ghb_dict_get(dict, "Folder")); if (!folder) { g_free(indices); @@ -763,47 +762,6 @@ presets_set_folder_open(gboolean open, gint *indices, gint len) } } -// Used for sorting dictionaries. -gint -key_cmp(gconstpointer a, gconstpointer b) -{ - gchar *stra = (gchar*)a; - gchar *strb = (gchar*)b; - - return strcmp(stra, strb); -} - -static const GhbValue* -preset_dict_get_value(GhbValue *dict, const gchar *key) -{ - return ghb_dict_get(dict, key); -} - -static const char * dict_get_string(GhbValue *dict, const char *key) -{ - GhbValue *gval = ghb_dict_get(dict, key); - - if (gval == NULL) - return NULL; - return ghb_value_get_string(gval); -} - -static gboolean dict_get_boolean(GhbValue *dict, const char *key) -{ - GhbValue *gval = ghb_dict_get(dict, key); - - if (gval == NULL) - return FALSE; - return ghb_value_get_bool(gval); -} - -const gchar* -ghb_presets_get_description(GhbValue *pdict) -{ - return dict_get_string(pdict, "PresetDescription"); -} - - static void init_settings_from_dict( GhbValue *dest, GhbValue *template, GhbValue *dict, gboolean filter); @@ -932,7 +890,7 @@ init_settings_from_dict( else new_val = ghb_value_dup(val); } - ghb_settings_take_value(dest, key, new_val); + ghb_dict_set(dest, key, new_val); } if (filter || dict == NULL) @@ -948,7 +906,7 @@ init_settings_from_dict( val = ghb_dict_get(template, key); if (val == NULL) { - ghb_settings_set_value(dest, key, gval); + ghb_dict_set(dest, key, ghb_value_dup(gval)); } } } @@ -1001,7 +959,7 @@ ghb_settings_to_ui(signal_user_data_t *ud, GhbValue *dict) for (ii = 0; widget_priority_list[ii] != NULL; ii++) { key = widget_priority_list[ii]; - gval = ghb_settings_get_value(tmp, key); + gval = ghb_dict_get_value(tmp, key); if (gval != NULL) ghb_ui_settings_update(ud, dict, key, gval); } @@ -1024,7 +982,7 @@ ghb_preset_is_custom() const GhbValue *val; if (current_preset == NULL) return FALSE; - val = preset_dict_get_value(current_preset, "Type"); + val = ghb_dict_get(current_preset, "Type"); return (ghb_value_get_int(val) == 1); } @@ -1056,13 +1014,13 @@ ghb_set_preset_settings_from_indices( gboolean folder; current_preset = dict; - folder = ghb_value_get_bool(preset_dict_get_value(dict, "Folder")); + folder = ghb_value_get_bool(ghb_dict_get(dict, "Folder")); if (folder) ghb_preset_to_settings(ud->settings, NULL); else ghb_preset_to_settings(ud->settings, dict); path = preset_path_from_indices(presetsPlist, indices, len); - ghb_settings_set_value(ud->settings, "preset", path); + ghb_dict_set(ud->settings, "preset", ghb_value_dup(path)); ghb_value_free(&path); } } @@ -1071,7 +1029,7 @@ static const GhbValue* curr_preset_get_value(const gchar *key) { if (current_preset == NULL) return NULL; - return preset_dict_get_value(current_preset, key); + return ghb_dict_get(current_preset, key); } void @@ -1414,7 +1372,7 @@ ghb_prefs_save(GhbValue *settings) iter = ghb_dict_iter_init(dict); while (ghb_dict_iter_next(dict, &iter, &key, NULL)) { - value = ghb_settings_get_value(settings, key); + value = ghb_dict_get_value(settings, key); if (value != NULL) { ghb_dict_set(pref_dict, key, ghb_value_dup(value)); @@ -1429,7 +1387,7 @@ ghb_pref_save(GhbValue *settings, const gchar *key) { const GhbValue *value, *value2; - value = ghb_settings_get_value(settings, key); + value = ghb_dict_get_value(settings, key); if (value != NULL) { GhbValue *dict; @@ -1450,7 +1408,7 @@ ghb_pref_set(GhbValue *settings, const gchar *key) { const GhbValue *value, *value2; - value = ghb_settings_get_value(settings, key); + value = ghb_dict_get_value(settings, key); if (value != NULL) { GhbValue *dict; @@ -1496,7 +1454,7 @@ ghb_settings_init(GhbValue *settings, const char *name) // pointer will break strict-aliasing rules" while (ghb_dict_iter_next(internal, &iter, &key, &gval)) { - ghb_settings_set_value(settings, key, gval); + ghb_dict_set(settings, key, ghb_value_dup(gval)); } } @@ -1698,7 +1656,8 @@ ghb_presets_list_init( more_indices[len] = ii; def = preset_is_default(dict); - description = ghb_presets_get_description(dict); + description = ghb_value_get_string( + ghb_dict_get(dict, "PresetDescription")); gtk_tree_store_append(store, &iter, piter); type = ghb_preset_type(dict); folder = ghb_preset_folder(dict); @@ -1778,7 +1737,7 @@ presets_list_update_item( name = preset_get_name(dict); def = preset_is_default(dict); - description = ghb_presets_get_description(dict); + description = ghb_value_get_string(ghb_dict_get(dict, "PresetDescription")); type = ghb_preset_type(dict); folder = ghb_preset_folder(dict); color = get_preset_color(type, folder); @@ -1842,7 +1801,7 @@ presets_list_insert( preset = preset_get_name(dict); def = preset_is_default(dict); - description = ghb_presets_get_description(dict); + description = ghb_value_get_string(ghb_dict_get(dict, "PresetDescription")); gtk_tree_store_insert(store, &iter, piter, indices[len-1]); type = ghb_preset_type(dict); folder = ghb_preset_folder(dict); @@ -1896,7 +1855,7 @@ remove_std_presets(signal_user_data_t *ud) gint ptype; dict = ghb_array_get(presetsPlist, ii); - ptype = ghb_value_get_int(preset_dict_get_value(dict, "Type")); + ptype = ghb_value_get_int(ghb_dict_get(dict, "Type")); if (ptype == PRESETS_BUILTIN) { if (ghb_presets_remove(presetsPlist, &indices, 1)) @@ -2540,7 +2499,7 @@ import_xlat_preset(GhbValue *user_preset) list = ghb_dict_get(dict, "SubtitleLanguageList"); if (list == NULL) { - list = ghb_array_new(8); + list = ghb_array_new(); ghb_dict_set(dict, "SubtitleLanguageList", list); } if (ghb_array_len(list) == 0) @@ -2576,29 +2535,29 @@ import_xlat_preset(GhbValue *user_preset) import_value_xlat(dict); // Fix up all the internal settings that are derived from preset values. - ghb_settings_set_boolean(dict, "PictureDeinterlaceDecomb", - !ghb_settings_get_boolean(dict, "PictureDecombDeinterlace")); + ghb_dict_set_bool(dict, "PictureDeinterlaceDecomb", + !ghb_dict_get_bool(dict, "PictureDecombDeinterlace")); - ghb_settings_set_value(dict, "scale_height", - ghb_settings_get_value(dict, "PictureHeight")); + ghb_dict_set(dict, "scale_height", ghb_value_dup( + ghb_dict_get_value(dict, "PictureHeight"))); - ghb_settings_set_value(dict, "scale_width", - ghb_settings_get_value(dict, "PictureWidth")); + ghb_dict_set(dict, "scale_width", ghb_value_dup( + ghb_dict_get_value(dict, "PictureWidth"))); gint uses_pic; gint vqtype; - uses_pic = ghb_settings_get_int(dict, "UsesPictureSettings"); - vqtype = ghb_settings_get_int(dict, "VideoQualityType"); + uses_pic = ghb_dict_get_int(dict, "UsesPictureSettings"); + vqtype = ghb_dict_get_int(dict, "VideoQualityType"); // "Use max" or "strict anamorphic" imply autoscale if (uses_pic == 2) { - ghb_settings_set_boolean(dict, "autoscale", TRUE); + ghb_dict_set_bool(dict, "autoscale", TRUE); } else if (uses_pic == 1) { - ghb_settings_set_boolean(dict, "autoscale", FALSE); + ghb_dict_set_bool(dict, "autoscale", FALSE); } // VideoQualityType/0/1/2 - vquality_type_/target/bitrate/constant @@ -2607,55 +2566,55 @@ import_xlat_preset(GhbValue *user_preset) { case 0: { - ghb_settings_set_boolean(dict, "vquality_type_bitrate", TRUE); - ghb_settings_set_boolean(dict, "vquality_type_constant", FALSE); + ghb_dict_set_bool(dict, "vquality_type_bitrate", TRUE); + ghb_dict_set_bool(dict, "vquality_type_constant", FALSE); } break; case 1: { - ghb_settings_set_boolean(dict, "vquality_type_bitrate", TRUE); - ghb_settings_set_boolean(dict, "vquality_type_constant", FALSE); + ghb_dict_set_bool(dict, "vquality_type_bitrate", TRUE); + ghb_dict_set_bool(dict, "vquality_type_constant", FALSE); } break; case 2: { - ghb_settings_set_boolean(dict, "vquality_type_bitrate", FALSE); - ghb_settings_set_boolean(dict, "vquality_type_constant", TRUE); + ghb_dict_set_bool(dict, "vquality_type_bitrate", FALSE); + ghb_dict_set_bool(dict, "vquality_type_constant", TRUE); } break; default: { - ghb_settings_set_boolean(dict, "vquality_type_bitrate", FALSE); - ghb_settings_set_boolean(dict, "vquality_type_constant", TRUE); + ghb_dict_set_bool(dict, "vquality_type_bitrate", FALSE); + ghb_dict_set_bool(dict, "vquality_type_constant", TRUE); } break; } - const gchar *mode = ghb_settings_get_const_string(dict, "VideoFramerateMode"); + const gchar *mode = ghb_dict_get_string(dict, "VideoFramerateMode"); if (strcmp(mode, "cfr") == 0) { - ghb_settings_set_boolean(dict, "VideoFramerateCFR", TRUE); - ghb_settings_set_boolean(dict, "VideoFrameratePFR", FALSE); - ghb_settings_set_boolean(dict, "VideoFramerateVFR", FALSE); + ghb_dict_set_bool(dict, "VideoFramerateCFR", TRUE); + ghb_dict_set_bool(dict, "VideoFrameratePFR", FALSE); + ghb_dict_set_bool(dict, "VideoFramerateVFR", FALSE); } else if (strcmp(mode, "pfr") == 0) { - ghb_settings_set_boolean(dict, "VideoFramerateCFR", FALSE); - ghb_settings_set_boolean(dict, "VideoFrameratePFR", TRUE); - ghb_settings_set_boolean(dict, "VideoFramerateVFR", FALSE); + ghb_dict_set_bool(dict, "VideoFramerateCFR", FALSE); + ghb_dict_set_bool(dict, "VideoFrameratePFR", TRUE); + ghb_dict_set_bool(dict, "VideoFramerateVFR", FALSE); } else { - ghb_settings_set_boolean(dict, "VideoFramerateCFR", FALSE); - ghb_settings_set_boolean(dict, "VideoFrameratePFR", FALSE); - ghb_settings_set_boolean(dict, "VideoFramerateVFR", TRUE); + ghb_dict_set_bool(dict, "VideoFramerateCFR", FALSE); + ghb_dict_set_bool(dict, "VideoFrameratePFR", FALSE); + ghb_dict_set_bool(dict, "VideoFramerateVFR", TRUE); } - if (ghb_settings_get_boolean(dict, "x264UseAdvancedOptions")) + if (ghb_dict_get_bool(dict, "x264UseAdvancedOptions")) { // Force preset/tune/profile/level/opts to conform to option string - ghb_settings_set_string(dict, "VideoPreset", "medium"); - ghb_settings_set_string(dict, "VideoTune", "none"); - ghb_settings_set_string(dict, "VideoProfile", "auto"); - ghb_settings_set_string(dict, "VideoLevel", "auto"); - ghb_settings_set_value(dict, "VideoOptionExtra", - ghb_settings_get_value(dict, "x264Option")); + ghb_dict_set_string(dict, "VideoPreset", "medium"); + ghb_dict_set_string(dict, "VideoTune", "none"); + ghb_dict_set_string(dict, "VideoProfile", "auto"); + ghb_dict_set_string(dict, "VideoLevel", "auto"); + ghb_dict_set(dict, "VideoOptionExtra", ghb_value_dup( + ghb_dict_get_value(dict, "x264Option"))); } else { @@ -2667,40 +2626,40 @@ import_xlat_preset(GhbValue *user_preset) videoPresets = hb_video_encoder_get_presets(encoder); const char *videoPreset; if (ghb_dict_get(user_preset, "x264Preset") != NULL) - videoPreset = ghb_settings_get_const_string(dict, "x264Preset"); + videoPreset = ghb_dict_get_string(dict, "x264Preset"); else - videoPreset = ghb_settings_get_const_string(dict, "VideoPreset"); + videoPreset = ghb_dict_get_string(dict, "VideoPreset"); int ii; for (ii = 0; videoPreset && videoPresets && videoPresets[ii]; ii++) { if (!strcasecmp(videoPreset, videoPresets[ii])) { - ghb_settings_set_int(dict, "VideoPresetSlider", ii); + ghb_dict_set_int(dict, "VideoPresetSlider", ii); break; } } if (videoPreset != NULL) - ghb_settings_set_string(dict, "VideoPreset", videoPreset); + ghb_dict_set_string(dict, "VideoPreset", videoPreset); char *videoTune; if (ghb_dict_get(user_preset, "x264Tune") != NULL) - videoTune = ghb_settings_get_string(dict, "x264Tune"); + videoTune = g_strdup(ghb_dict_get_string(dict, "x264Tune")); else - videoTune = ghb_settings_get_string(dict, "VideoTune"); + videoTune = g_strdup(ghb_dict_get_string(dict, "VideoTune")); char *tune = NULL; char *saveptr; char * tok = strtok_r(videoTune, ",./-+", &saveptr); - ghb_settings_set_boolean(dict, "x264FastDecode", FALSE); - ghb_settings_set_boolean(dict, "x264ZeroLatency", FALSE); + ghb_dict_set_bool(dict, "x264FastDecode", FALSE); + ghb_dict_set_bool(dict, "x264ZeroLatency", FALSE); while (tok != NULL) { if (!strcasecmp(tok, "fastdecode")) { - ghb_settings_set_boolean(dict, "x264FastDecode", TRUE); + ghb_dict_set_bool(dict, "x264FastDecode", TRUE); } else if (!strcasecmp(tok, "zerolatency")) { - ghb_settings_set_boolean(dict, "x264ZeroLatency", TRUE); + ghb_dict_set_bool(dict, "x264ZeroLatency", TRUE); } else if (tune == NULL) { @@ -2715,31 +2674,31 @@ import_xlat_preset(GhbValue *user_preset) g_free(videoTune); if (tune != NULL) { - ghb_settings_set_string(dict, "VideoTune", tune); + ghb_dict_set_string(dict, "VideoTune", tune); g_free(tune); } const char *videoProfile; if (ghb_dict_get(user_preset, "x264Profile") != NULL) - videoProfile = ghb_settings_get_const_string(dict, "x264Profile"); + videoProfile = ghb_dict_get_string(dict, "x264Profile"); else - videoProfile = ghb_settings_get_const_string(dict, "VideoProfile"); + videoProfile = ghb_dict_get_string(dict, "VideoProfile"); if (videoProfile != NULL) - ghb_settings_set_string(dict, "VideoProfile", videoProfile); + ghb_dict_set_string(dict, "VideoProfile", videoProfile); const char *videoLevel; if (ghb_dict_get(user_preset, "x264Level") != NULL) - videoLevel = ghb_settings_get_const_string(dict, "x264Level"); + videoLevel = ghb_dict_get_string(dict, "x264Level"); else - videoLevel = ghb_settings_get_const_string(dict, "VideoLevel"); + videoLevel = ghb_dict_get_string(dict, "VideoLevel"); if (videoLevel != NULL) - ghb_settings_set_string(dict, "VideoLevel", videoLevel); + ghb_dict_set_string(dict, "VideoLevel", videoLevel); if (ghb_dict_get(user_preset, "x264OptionExtra") != NULL) { const char *optionExtra; - optionExtra = ghb_settings_get_const_string(dict, "x264OptionExtra"); - ghb_settings_set_string(dict, "VideoOptionExtra", optionExtra); + optionExtra = ghb_dict_get_string(dict, "x264OptionExtra"); + ghb_dict_set_string(dict, "VideoOptionExtra", optionExtra); } return dict; @@ -2758,7 +2717,7 @@ import_xlat_presets(GhbValue *presets) for (ii = 0; ii < count; ii++) { dict = ghb_array_get(presets, ii); - folder = ghb_value_get_bool(preset_dict_get_value(dict, "Folder")); + folder = ghb_value_get_bool(ghb_dict_get(dict, "Folder")); if (folder) { GhbValue *nested; @@ -2781,11 +2740,11 @@ export_xlat_preset(GhbValue *dict) gboolean autoscale, br, constant; g_debug("export_xlat_prest ()"); - autoscale = ghb_value_get_bool(preset_dict_get_value(dict, "autoscale")); + autoscale = ghb_value_get_bool(ghb_dict_get(dict, "autoscale")); br = ghb_value_get_bool( - preset_dict_get_value(dict, "vquality_type_bitrate")); + ghb_dict_get(dict, "vquality_type_bitrate")); constant = ghb_value_get_bool( - preset_dict_get_value(dict, "vquality_type_constant")); + ghb_dict_get(dict, "vquality_type_constant")); if (autoscale) { @@ -2807,11 +2766,11 @@ export_xlat_preset(GhbValue *dict) ghb_dict_set(dict, "VideoQualityType", ghb_int_value_new(2)); } - if (ghb_value_get_bool(preset_dict_get_value(dict, "VideoFramerateCFR"))) + if (ghb_value_get_bool(ghb_dict_get(dict, "VideoFramerateCFR"))) { ghb_dict_set(dict, "VideoFramerateMode", ghb_string_value_new("cfr")); } - else if (ghb_value_get_bool(preset_dict_get_value(dict, "VideoFrameratePFR"))) + else if (ghb_value_get_bool(ghb_dict_get(dict, "VideoFrameratePFR"))) { ghb_dict_set(dict, "VideoFramerateMode", ghb_string_value_new("pfr")); } @@ -2820,7 +2779,7 @@ export_xlat_preset(GhbValue *dict) ghb_dict_set(dict, "VideoFramerateMode", ghb_string_value_new("vfr")); } - if (ghb_value_get_int(preset_dict_get_value(dict, "PictureDeblock")) < 5) + if (ghb_value_get_int(ghb_dict_get(dict, "PictureDeblock")) < 5) { ghb_dict_set(dict, "PictureDeblock", ghb_int_value_new(0)); } @@ -2836,7 +2795,7 @@ export_xlat_preset(GhbValue *dict) adict = ghb_array_get(alist, ii); drc = ghb_value_get_double( - preset_dict_get_value(adict, "AudioTrackDRCSlider")); + ghb_dict_get(adict, "AudioTrackDRCSlider")); if (drc < 1.0) { ghb_dict_set(adict, "AudioTrackDRCSlider", @@ -2844,7 +2803,7 @@ export_xlat_preset(GhbValue *dict) } } - if (ghb_value_get_bool(preset_dict_get_value(dict, "x264UseAdvancedOptions"))) + if (ghb_value_get_bool(ghb_dict_get(dict, "x264UseAdvancedOptions"))) { ghb_dict_remove(dict, "VideoPreset"); ghb_dict_remove(dict, "VideoTune"); @@ -2852,18 +2811,18 @@ export_xlat_preset(GhbValue *dict) ghb_dict_remove(dict, "VideoLevel"); ghb_dict_remove(dict, "VideoOptionExtra"); } - const char *tune = dict_get_string(dict, "VideoTune"); + const char *tune = ghb_value_get_string(ghb_dict_get(dict, "VideoTune")); if (tune != NULL) { GString *str = g_string_new(""); char *tunes; g_string_append_printf(str, "%s", tune); - if (dict_get_boolean(dict, "x264FastDecode")) + if (ghb_value_get_bool(ghb_dict_get(dict, "x264FastDecode"))) { g_string_append_printf(str, ",%s", "fastdecode"); } - if (dict_get_boolean(dict, "x264ZeroLatency")) + if (ghb_value_get_bool(ghb_dict_get(dict, "x264ZeroLatency"))) { g_string_append_printf(str, ",%s", "zerolatency"); } @@ -2894,7 +2853,7 @@ export_xlat_presets(GhbValue *presets) for (ii = 0; ii < count; ii++) { dict = ghb_array_get(presets, ii); - folder = ghb_value_get_bool(preset_dict_get_value(dict, "Folder")); + folder = ghb_value_get_bool(ghb_dict_get(dict, "Folder")); if (folder) { GhbValue *nested; @@ -3018,7 +2977,7 @@ replace_standard_presets(GhbValue *presetsArray) gint ptype; dict = ghb_array_get(presetsArray, ii); - ptype = ghb_value_get_int(preset_dict_get_value(dict, "Type")); + ptype = ghb_value_get_int(ghb_dict_get(dict, "Type")); if (ptype == PRESETS_BUILTIN) { gint indices = 0; @@ -3174,8 +3133,8 @@ settings_save(signal_user_data_t *ud, const GhbValue *path) } } current_preset = dict; - ghb_settings_set_int64(dict, "Type", PRESETS_CUSTOM); - ghb_settings_set_int64(dict, "PresetBuildNumber", hb_get_build(NULL)); + ghb_dict_set_int(dict, "Type", PRESETS_CUSTOM); + ghb_dict_set_int(dict, "PresetBuildNumber", hb_get_build(NULL)); ghb_dict_set(dict, "PresetName", ghb_string_value_new(name)); if (replace) @@ -3195,18 +3154,18 @@ settings_save(signal_user_data_t *ud, const GhbValue *path) ghb_dict_set(dict, "Default", ghb_bool_value_new(FALSE)); presets_list_insert(ud, indices, len); } - if (!ghb_settings_get_boolean(ud->settings, "PictureWidthEnable")) + if (!ghb_dict_get_bool(ud->settings, "PictureWidthEnable")) { ghb_dict_remove(dict, "PictureWidth"); } - if (!ghb_settings_get_boolean(ud->settings, "PictureHeightEnable")) + if (!ghb_dict_get_bool(ud->settings, "PictureHeightEnable")) { ghb_dict_remove(dict, "PictureHeight"); } ghb_dict_set(dict, "autoscale", ghb_bool_value_new( - !ghb_settings_get_boolean(ud->settings, "PictureWidthEnable") && - !ghb_settings_get_boolean(ud->settings, "PictureHeightEnable") + !ghb_dict_get_bool(ud->settings, "PictureWidthEnable") && + !ghb_dict_get_bool(ud->settings, "PictureHeightEnable") ) ); @@ -3250,7 +3209,7 @@ folder_save(signal_user_data_t *ud, const GhbValue *path) // Already exists, update its description dict = presets_get_dict(presetsPlist, indices, len); ghb_dict_set(dict, "PresetDescription", - ghb_value_dup(preset_dict_get_value( + ghb_value_dup(ghb_dict_get( ud->settings, "PresetDescription"))); presets_list_update_item(ud, indices, len, FALSE); g_free(indices); @@ -3272,7 +3231,7 @@ folder_save(signal_user_data_t *ud, const GhbValue *path) } } ghb_dict_set(dict, "PresetDescription", - ghb_value_dup(preset_dict_get_value( + ghb_value_dup(ghb_dict_get( ud->settings, "PresetDescription"))); ghb_dict_set(dict, "PresetName", ghb_string_value_new(name)); folder = ghb_array_new(); @@ -3352,20 +3311,20 @@ update_subtitle_presets(signal_user_data_t *ud) GhbValue *slist, *dict; gint count, ii, source; - subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list"); + subtitle_list = ghb_dict_get_value(ud->settings, "subtitle_list"); slist = ghb_array_new(); count = ghb_array_len(subtitle_list); for (ii = 0; ii < count; ii++) { subtitle = ghb_array_get(subtitle_list, ii); - source = ghb_settings_get_int(subtitle, "SubtitleSource"); + source = ghb_dict_get_int(subtitle, "SubtitleSource"); if (source != SRTSUB) { dict = ghb_value_dup(subtitle); ghb_array_append(slist, dict); } } - ghb_settings_take_value(ud->settings, "SubtitleList", slist); + ghb_dict_set(ud->settings, "SubtitleList", slist); } G_MODULE_EXPORT void @@ -3396,7 +3355,7 @@ preset_import_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter); gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); - exportDir = ghb_settings_get_const_string(ud->prefs, "ExportDirectory"); + exportDir = ghb_dict_get_string(ud->prefs, "ExportDirectory"); if (exportDir == NULL || exportDir[0] == '\0') { exportDir = "."; @@ -3464,11 +3423,11 @@ preset_import_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) } ghb_value_free(&array); - exportDir = ghb_settings_get_const_string(ud->prefs, "ExportDirectory"); + exportDir = ghb_dict_get_string(ud->prefs, "ExportDirectory"); dir = g_path_get_dirname(filename); if (strcmp(dir, exportDir) != 0) { - ghb_settings_set_string(ud->prefs, "ExportDirectory", dir); + ghb_dict_set_string(ud->prefs, "ExportDirectory", dir); ghb_pref_save(ud->prefs, "ExportDirectory"); } g_free(filename); @@ -3535,7 +3494,7 @@ preset_export_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) GHB_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); - exportDir = ghb_settings_get_const_string(ud->prefs, "ExportDirectory"); + exportDir = ghb_dict_get_string(ud->prefs, "ExportDirectory"); if (exportDir == NULL || exportDir[0] == '\0') { exportDir = "."; @@ -3574,11 +3533,11 @@ preset_export_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) store_plist(filename, array); ghb_value_free(&array); - exportDir = ghb_settings_get_const_string(ud->prefs, "ExportDirectory"); + exportDir = ghb_dict_get_string(ud->prefs, "ExportDirectory"); dir = g_path_get_dirname(filename); if (strcmp(dir, exportDir) != 0) { - ghb_settings_set_string(ud->prefs, "ExportDirectory", dir); + ghb_dict_set_string(ud->prefs, "ExportDirectory", dir); ghb_pref_save(ud->prefs, "ExportDirectory"); } g_free(dir); @@ -3646,7 +3605,7 @@ presets_new_folder_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) } ghb_array_append(dest, ghb_string_value_new(name)); GhbValue *val = ghb_widget_value(GTK_WIDGET(desc)); - ghb_settings_set_value(ud->settings, "PresetDescription", val); + ghb_dict_set(ud->settings, "PresetDescription", ghb_value_dup(val)); folder_save(ud, dest); ghb_value_free(&dest); } @@ -3668,7 +3627,7 @@ presets_save_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) g_debug("presets_save_clicked_cb ()"); preset = get_selected_path(ud); if (preset == NULL) - preset = ghb_value_dup(ghb_settings_get_value(ud->settings, "preset")); + preset = ghb_value_dup(ghb_dict_get_value(ud->settings, "preset")); count = ghb_array_len(preset); if (count > 0) @@ -3677,19 +3636,19 @@ presets_save_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) count = 1; desc = GTK_TEXT_VIEW(GHB_WIDGET(ud->builder, "PresetDescription")); - int width = ghb_settings_get_int(ud->settings, "PictureWidth"); - int height = ghb_settings_get_int(ud->settings, "PictureHeight"); - gboolean autoscale = ghb_settings_get_boolean(ud->settings, "autoscale"); + int width = ghb_dict_get_int(ud->settings, "PictureWidth"); + int height = ghb_dict_get_int(ud->settings, "PictureHeight"); + gboolean autoscale = ghb_dict_get_bool(ud->settings, "autoscale"); ghb_ui_update(ud, "PictureWidthEnable", ghb_boolean_value(!autoscale)); ghb_ui_update(ud, "PictureHeightEnable", ghb_boolean_value(!autoscale)); if (!width) { - width = ghb_settings_get_int(ud->settings, "scale_width"); + width = ghb_dict_get_int(ud->settings, "scale_width"); ghb_ui_update(ud, "PictureWidth", ghb_int_value(width)); } if (!height) { - height = ghb_settings_get_int(ud->settings, "scale_height"); + height = ghb_dict_get_int(ud->settings, "scale_height"); ghb_ui_update(ud, "PictureHeight", ghb_int_value(height)); } dialog = GHB_WIDGET(ud->builder, "preset_save_dialog"); @@ -3743,7 +3702,7 @@ presets_restore_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) ghb_presets_reload(ud); // Updating the presets list shuffles things around // need to make sure the proper preset is selected - preset = ghb_settings_get_value(ud->settings, "preset"); + preset = ghb_dict_get_value(ud->settings, "preset"); ghb_select_preset(ud->builder, preset); } @@ -4194,14 +4153,14 @@ presets_list_selection_changed_cb(GtkTreeSelection *selection, signal_user_data_ len = gtk_tree_path_get_depth(treepath); folder = ghb_presets_get_folder(presetsPlist, indices, len); - if (!folder && !ghb_settings_get_boolean(ud->settings, "preset_reload")) + if (!folder && !ghb_dict_get_bool(ud->settings, "preset_reload")) { ghb_set_preset_settings_from_indices(ud, indices, len); - ghb_settings_set_boolean(ud->settings, "preset_modified", FALSE); + ghb_dict_set_bool(ud->settings, "preset_modified", FALSE); ghb_set_current_title_settings(ud); ghb_load_settings(ud); } - ghb_settings_set_boolean(ud->settings, "preset_reload", FALSE); + ghb_dict_set_bool(ud->settings, "preset_reload", FALSE); gtk_tree_path_free(treepath); gtk_widget_set_sensitive(widget, TRUE); @@ -4224,7 +4183,7 @@ ghb_clear_presets_selection(signal_user_data_t *ud) treeview = GTK_TREE_VIEW(GHB_WIDGET(ud->builder, "presets_list")); selection = gtk_tree_view_get_selection (treeview); gtk_tree_selection_unselect_all (selection); - ghb_settings_set_boolean(ud->settings, "preset_modified", TRUE); + ghb_dict_set_bool(ud->settings, "preset_modified", TRUE); } G_MODULE_EXPORT void diff --git a/gtk/src/preview.c b/gtk/src/preview.c index deb7da868..9f79486bf 100644 --- a/gtk/src/preview.c +++ b/gtk/src/preview.c @@ -307,7 +307,7 @@ caps_set(GstCaps *caps, signal_user_data_t *ud) else height = gst_util_uint64_scale_int(width, den, num); - if (ghb_settings_get_boolean(ud->prefs, "reduce_hd_preview")) + if (ghb_dict_get_bool(ud->prefs, "reduce_hd_preview")) { GdkScreen *ss; gint s_w, s_h; @@ -762,10 +762,10 @@ live_preview_start_cb(GtkWidget *xwidget, signal_user_data_t *ud) ud->preview->encode_frame = frame; js = ghb_value_dup(ud->settings); - ghb_settings_set_string(js, "destination", name); - ghb_settings_set_int(js, "start_frame", ud->preview->frame); + ghb_dict_set_string(js, "destination", name); + ghb_dict_set_int(js, "start_frame", ud->preview->frame); ud->preview->live_id = 0; - ghb_settings_set_value(js, "Preferences", ud->prefs); + ghb_dict_set(js, "Preferences", ghb_value_dup(ud->prefs)); ghb_add_live_job(js, ud->preview->live_id); ghb_start_live_encode(); ghb_value_free(&js); @@ -919,7 +919,7 @@ ghb_set_preview_image(signal_user_data_t *ud) live_preview_stop(ud); - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title == NULL) return; widget = GHB_WIDGET (ud->builder, "preview_frame"); @@ -1153,17 +1153,17 @@ ghb_preview_set_visible(signal_user_data_t *ud) GtkWidget *widget; gboolean active; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); - active = ghb_settings_get_boolean(ud->globals, "show_preview") && + active = ghb_dict_get_bool(ud->globals, "show_preview") && title != NULL; widget = GHB_WIDGET(ud->builder, "preview_window"); gtk_widget_set_visible(widget, active); if (active) { gint x, y; - x = ghb_settings_get_int(ud->prefs, "preview_x"); - y = ghb_settings_get_int(ud->prefs, "preview_y"); + x = ghb_dict_get_int(ud->prefs, "preview_x"); + y = ghb_dict_get_int(ud->prefs, "preview_y"); if (x >= 0 && y >= 0) gtk_window_move(GTK_WINDOW(widget), x, y); } @@ -1433,8 +1433,8 @@ preview_configure_cb( if (gtk_widget_get_visible(widget)) { gtk_window_get_position(GTK_WINDOW(widget), &x, &y); - ghb_settings_set_int(ud->prefs, "preview_x", x); - ghb_settings_set_int(ud->prefs, "preview_y", y); + ghb_dict_set_int(ud->prefs, "preview_x", x); + ghb_dict_set_int(ud->prefs, "preview_y", y); ghb_pref_set(ud->prefs, "preview_x"); ghb_pref_set(ud->prefs, "preview_y"); ghb_prefs_store(); diff --git a/gtk/src/queuehandler.c b/gtk/src/queuehandler.c index f721c03f6..2f48c8bf3 100644 --- a/gtk/src/queuehandler.c +++ b/gtk/src/queuehandler.c @@ -91,17 +91,17 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter // Collect information for first line in the display // Volume (Title X, Chapters Y through Z, N Video Passes) --> Destination - title = ghb_settings_get_int(settings, "title"); - start_point = ghb_settings_get_int(settings, "start_point"); - end_point = ghb_settings_get_int(settings, "end_point"); - vol_name = ghb_settings_get_const_string(settings, "volume_label"); - dest = ghb_settings_get_const_string(settings, "destination"); + title = ghb_dict_get_int(settings, "title"); + start_point = ghb_dict_get_int(settings, "start_point"); + end_point = ghb_dict_get_int(settings, "end_point"); + vol_name = ghb_dict_get_string(settings, "volume_label"); + dest = ghb_dict_get_string(settings, "destination"); basename = g_path_get_basename(dest); escape = g_markup_escape_text(basename, -1); escape2 = g_markup_escape_text(vol_name, -1); - vqtype = ghb_settings_get_boolean(settings, "vquality_type_constant"); - two_pass = ghb_settings_get_boolean(settings, "VideoTwoPass"); + vqtype = ghb_dict_get_bool(settings, "vquality_type_constant"); + two_pass = ghb_dict_get_bool(settings, "VideoTwoPass"); const gchar *points = _("Chapters"); if (ghb_settings_combo_int(settings, "PtoPType") == 0) @@ -141,7 +141,7 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter } // Set the job status icon - status = ghb_settings_get_int(settings, "job_status"); + status = ghb_dict_get_int(settings, "job_status"); const char *status_icon; switch (status) { @@ -176,13 +176,13 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(settings, "FileFormat"); + mux_id = ghb_dict_get_string(settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); - preset_modified = ghb_settings_get_boolean(settings, "preset_modified"); - path = ghb_settings_get_value(settings, "preset"); + preset_modified = ghb_dict_get_bool(settings, "preset_modified"); + path = ghb_dict_get_value(settings, "preset"); preset = ghb_preset_path_string(path); - markers = ghb_settings_get_boolean(settings, "ChapterMarkers"); + markers = ghb_dict_get_bool(settings, "ChapterMarkers"); if (preset_modified) { @@ -203,8 +203,8 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter gboolean ipod = FALSE, http = FALSE; if (mux->format & HB_MUX_MASK_MP4) { - ipod = ghb_settings_get_boolean(settings, "Mp4iPodCompatible"); - http = ghb_settings_get_boolean(settings, "Mp4HttpOptimize"); + ipod = ghb_dict_get_bool(settings, "Mp4iPodCompatible"); + http = ghb_dict_get_bool(settings, "Mp4HttpOptimize"); } if (http || ipod || markers) { @@ -240,14 +240,14 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter int crop[4]; gboolean keep_aspect; - width = ghb_settings_get_int(settings, "scale_width"); - height = ghb_settings_get_int(settings, "scale_height"); - pic_par = ghb_settings_get_int(settings, "PicturePAR"); - keep_aspect = ghb_settings_get_boolean(settings, "PictureKeepRatio"); - crop[0] = ghb_settings_get_int(settings, "PictureTopCrop"); - crop[1] = ghb_settings_get_int(settings, "PictureBottomCrop"); - crop[2] = ghb_settings_get_int(settings, "PictureLeftCrop"); - crop[3] = ghb_settings_get_int(settings, "PictureRightCrop"); + width = ghb_dict_get_int(settings, "scale_width"); + height = ghb_dict_get_int(settings, "scale_height"); + pic_par = ghb_dict_get_int(settings, "PicturePAR"); + keep_aspect = ghb_dict_get_bool(settings, "PictureKeepRatio"); + crop[0] = ghb_dict_get_int(settings, "PictureTopCrop"); + crop[1] = ghb_dict_get_int(settings, "PictureBottomCrop"); + crop[2] = ghb_dict_get_int(settings, "PictureLeftCrop"); + crop[3] = ghb_dict_get_int(settings, "PictureRightCrop"); gchar *aspect_desc; switch (pic_par) @@ -286,8 +286,8 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter } gint source_width, source_height; - source_width = ghb_settings_get_int(settings, "source_width"); - source_height = ghb_settings_get_int(settings, "source_height"); + source_width = ghb_dict_get_int(settings, "source_width"); + source_height = ghb_dict_get_int(settings, "source_height"); XPRINT(_("<b>Picture:</b> <small>")); XPRINT(_("Source: %d x %d, Output %d x %d %s, Crop %d:%d:%d:%d"), source_width, source_height, width, height, aspect_desc, @@ -295,8 +295,8 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter if (pic_par) { int display_width, display_height; - display_width = ghb_settings_get_int(settings, "PictureDisplayWidth"); - display_height = ghb_settings_get_int(settings, "PictureDisplayHeight"); + display_width = ghb_dict_get_int(settings, "PictureDisplayWidth"); + display_height = ghb_dict_get_int(settings, "PictureDisplayHeight"); XPRINT(_(", Display %d x %d"), display_width, display_height); } @@ -312,26 +312,26 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter gboolean grayscale; gboolean filters; - decomb_deint = ghb_settings_get_boolean(settings, "PictureDecombDeinterlace"); + decomb_deint = ghb_dict_get_bool(settings, "PictureDecombDeinterlace"); decomb = ghb_settings_combo_int(settings, "PictureDecomb"); decomb_opt = ghb_settings_combo_option(settings, "PictureDecomb"); - decomb_cust = ghb_settings_get_const_string(settings, + decomb_cust = ghb_dict_get_string(settings, "PictureDecombCustom"); deint = ghb_settings_combo_int(settings, "PictureDeinterlace"); deint_opt = ghb_settings_combo_option(settings, "PictureDeinterlace"); - deint_cust = ghb_settings_get_const_string(settings, + deint_cust = ghb_dict_get_string(settings, "PictureDeinterlaceCustom"); detel = ghb_settings_combo_int(settings, "PictureDetelecine"); - detel_cust = ghb_settings_get_const_string(settings, + detel_cust = ghb_dict_get_string(settings, "PictureDetelecineCustom"); - deblock = ghb_settings_get_int(settings, "PictureDeblock"); + deblock = ghb_dict_get_int(settings, "PictureDeblock"); denoise = ghb_settings_combo_int(settings, "PictureDenoiseFilter"); denoise_opt = ghb_settings_combo_option(settings, "PictureDenoiseFilter"); denoise_preset = ghb_settings_combo_option(settings, "PictureDenoisePreset"); denoise_tune = ghb_settings_combo_option(settings, "PictureDenoiseTune"); - denoise_cust = ghb_settings_get_const_string(settings, + denoise_cust = ghb_dict_get_string(settings, "PictureDenoiseCustom"); - grayscale = ghb_settings_get_boolean(settings, "VideoGrayScale"); + grayscale = ghb_dict_get_bool(settings, "VideoGrayScale"); filters = detel || (decomb_deint && decomb) || (!decomb_deint && deint) || denoise || (deblock >= 5) || grayscale; @@ -416,7 +416,7 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter if (fps->rate == 0) { const char *rate_mode; - if (ghb_settings_get_boolean(settings, "VideoFramerateCFR")) + if (ghb_dict_get_bool(settings, "VideoFramerateCFR")) rate_mode = _("(constant)"); else rate_mode = _("(variable)"); @@ -424,7 +424,7 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter } else { - if (ghb_settings_get_boolean(settings, "VideoFrameratePFR")) + if (ghb_dict_get_bool(settings, "VideoFrameratePFR")) { XPRINT(_(", Framerate: Peak %s (may be lower)"), fps->name); } @@ -439,7 +439,7 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter if (!vqtype) { // Has to be bitrate - vqvalue = ghb_settings_get_int(settings, "VideoAvgBitrate"); + vqvalue = ghb_dict_get_int(settings, "VideoAvgBitrate"); vq_desc = _("Bitrate:"); vq_units = _("kbps"); XPRINT(", %s %d%s", @@ -448,7 +448,7 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter else { // Constant quality - vqvalue = ghb_settings_get_double(settings, "VideoQualitySlider"); + vqvalue = ghb_dict_get_double(settings, "VideoQualitySlider"); vq_desc = _("Constant Quality:"); vq_units = hb_video_quality_get_name(video_encoder->codec); XPRINT(", %s %.4g(%s)", @@ -458,7 +458,7 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter // Next line in the display (Turbo setting) gboolean turbo; - turbo = ghb_settings_get_boolean(settings, "VideoTurboTwoPass"); + turbo = ghb_dict_get_bool(settings, "VideoTurboTwoPass"); if (!vqtype && two_pass && turbo) { XPRINT(_("<b>Turbo 1st Pass:</b> <small>On</small>\n")); @@ -467,7 +467,7 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter // Next line in the display (Video Encoder Options) // Video Options: Preset - Tune - Profile - Level if (video_encoder->codec == HB_VCODEC_X264 && - !ghb_settings_get_boolean(settings, "x264UseAdvancedOptions")) + !ghb_dict_get_bool(settings, "x264UseAdvancedOptions")) { const gchar *extra_opt = NULL; @@ -478,13 +478,13 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter const gchar *profile_opt, *level_opt; gboolean fastdecode, zerolatency; - preset_opt = ghb_settings_get_const_string(settings, "VideoPreset"); - tune_opt = ghb_settings_get_const_string(settings, "VideoTune"); - fastdecode = ghb_settings_get_boolean(settings, "x264FastDecode"); - zerolatency = ghb_settings_get_boolean(settings, "x264ZeroLatency"); - profile_opt = ghb_settings_get_const_string(settings, "VideoProfile"); - level_opt = ghb_settings_get_const_string(settings, "VideoLevel"); - extra_opt = ghb_settings_get_const_string(settings, "VideoOptionExtra"); + preset_opt = ghb_dict_get_string(settings, "VideoPreset"); + tune_opt = ghb_dict_get_string(settings, "VideoTune"); + fastdecode = ghb_dict_get_bool(settings, "x264FastDecode"); + zerolatency = ghb_dict_get_bool(settings, "x264ZeroLatency"); + profile_opt = ghb_dict_get_string(settings, "VideoProfile"); + level_opt = ghb_dict_get_string(settings, "VideoLevel"); + extra_opt = ghb_dict_get_string(settings, "VideoOptionExtra"); XPRINT(_("<b>Video Options:</b> <small>Preset: %s</small>"), preset_opt); if ((tune_opt != NULL && tune_opt[0] != 0) || zerolatency || fastdecode) @@ -533,12 +533,11 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter { // Next line in the display (Video Encoder Options) // Video Advanced Options: detailed settings - gchar *opts = ghb_build_advanced_opts_string(settings); + const gchar *opts = ghb_build_advanced_opts_string(settings); if (opts != NULL && opts[0] != 0) { XPRINT(_("<b>Advanced Options:</b> <small>%s</small>\n"), opts); } - g_free(opts); } // Next line in the display (Audio) @@ -548,7 +547,7 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter gint count, ii; const GhbValue *audio_list; - audio_list = ghb_settings_get_value(settings, "audio_list"); + audio_list = ghb_dict_get_value(settings, "audio_list"); count = ghb_array_len(audio_list); if (count == 1) { @@ -560,15 +559,16 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter } for (ii = 0; ii < count; ii++) { - gchar *quality = NULL, *track; + const gchar *track; + gchar *quality = NULL; GhbValue *asettings; const hb_encoder_t *audio_encoder; asettings = ghb_array_get(audio_list, ii); audio_encoder = ghb_settings_audio_encoder(asettings, "AudioEncoder"); - double q = ghb_settings_get_double(asettings, "AudioTrackQuality"); - if (ghb_settings_get_boolean(asettings, "AudioTrackQualityEnable") && + double q = ghb_dict_get_double(asettings, "AudioTrackQuality"); + if (ghb_dict_get_bool(asettings, "AudioTrackQualityEnable") && q != HB_INVALID_AUDIO_QUALITY) { quality = ghb_format_quality(_("Quality: "), audio_encoder->codec, q); @@ -580,7 +580,7 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter } const hb_rate_t *sr; sr = ghb_settings_audio_samplerate(asettings, "AudioSamplerate"); - track = ghb_settings_get_string(asettings, "AudioTrackDescription"); + track = ghb_dict_get_string(asettings, "AudioTrackDescription"); const hb_mixdown_t *mix; mix = ghb_settings_mixdown(asettings, "AudioMixdown"); if (count > 1) @@ -595,7 +595,6 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter XPRINT(_("%s --> Encoder: %s, Mixdown: %s, SampleRate: %s, %s"), track, audio_encoder->name, mix->name, sr->name, quality); } - g_free(track); g_free(quality); } if (count > 0) @@ -609,7 +608,7 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter // ... const GhbValue *sub_list; - sub_list = ghb_settings_get_value(settings, "subtitle_list"); + sub_list = ghb_dict_get_value(settings, "subtitle_list"); count = ghb_array_len(sub_list); if (count == 1) { @@ -622,16 +621,16 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter for (ii = 0; ii < count; ii++) { GhbValue *settings; - gchar *track; + const gchar *track; gboolean force, burn, def; gint source; settings = ghb_array_get(sub_list, ii); - track = ghb_settings_get_string(settings, "SubtitleTrackDescription"); - source = ghb_settings_get_int(settings, "SubtitleSource"); - force = ghb_settings_get_boolean(settings, "SubtitleForced"); - burn = ghb_settings_get_boolean(settings, "SubtitleBurned"); - def = ghb_settings_get_boolean(settings, "SubtitleDefaultTrack"); + track = ghb_dict_get_string(settings, "SubtitleTrackDescription"); + source = ghb_dict_get_int(settings, "SubtitleSource"); + force = ghb_dict_get_bool(settings, "SubtitleForced"); + burn = ghb_dict_get_bool(settings, "SubtitleBurned"); + def = ghb_dict_get_bool(settings, "SubtitleDefaultTrack"); if (count > 1) XPRINT("\t"); @@ -646,21 +645,19 @@ add_to_queue_list(signal_user_data_t *ud, GhbValue *settings, GtkTreeIter *piter else { gint offset; - gchar *filename, *basename, *code; + const gchar *filename, *code; + gchar *basename; - offset = ghb_settings_get_int(settings, "SrtOffset"); - filename = ghb_settings_get_string(settings, "SrtFile"); + offset = ghb_dict_get_int(settings, "SrtOffset"); + filename = ghb_dict_get_string(settings, "SrtFile"); basename = g_path_get_basename(filename); - code = ghb_settings_get_string(settings, "SrtCodeset"); + code = ghb_dict_get_string(settings, "SrtCodeset"); XPRINT(_("<small> %s (%s), %s, Offset (ms) %d%s</small>\n"), track, code, basename, offset, def ? " (Default)":""); - g_free(filename); g_free(basename); - g_free(code); } - g_free(track); } // Remove the final newline in the string @@ -705,7 +702,7 @@ ghb_update_status(signal_user_data_t *ud, int status, int index) if (settings == NULL) // should never happen return; - if (ghb_settings_get_int(settings, "job_status") == GHB_QUEUE_RUNNING) + if (ghb_dict_get_int(settings, "job_status") == GHB_QUEUE_RUNNING) return; // Never change the status of currently running jobs GtkTreeView *treeview; @@ -721,7 +718,7 @@ ghb_update_status(signal_user_data_t *ud, int status, int index) } g_free(path); - ghb_settings_set_int(settings, "job_status", status); + ghb_dict_set_int(settings, "job_status", status); } void @@ -748,7 +745,7 @@ save_queue_file(signal_user_data_t *ud) GhbValue *settings = ghb_array_get(ud->queue, ii); if (settings == NULL) continue; - ghb_settings_set_int(settings, "job_status", GHB_QUEUE_PENDING); + ghb_dict_set_int(settings, "job_status", GHB_QUEUE_PENDING); } GtkWidget *dialog; @@ -824,8 +821,8 @@ open_queue_file(signal_user_data_t *ud) GhbValue *settings = ghb_array_get(queue, ii); ghb_value_incref(settings); ghb_array_remove(queue, ii); - ghb_settings_set_int(settings, "job_status", GHB_QUEUE_PENDING); - ghb_settings_set_int(settings, "job_unique_id", 0); + ghb_dict_set_int(settings, "job_status", GHB_QUEUE_PENDING); + ghb_dict_set_int(settings, "job_unique_id", 0); if (ud->queue == NULL) ud->queue = ghb_array_new(); @@ -904,10 +901,10 @@ validate_settings(signal_user_data_t *ud, GhbValue *settings, gint batch) hb_window = GTK_WINDOW(GHB_WIDGET(ud->builder, "hb_window")); - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title == NULL) return FALSE; - dest = ghb_settings_get_const_string(settings, "destination"); + dest = ghb_dict_get_string(settings, "destination"); count = ghb_array_len(ud->queue); for (ii = 0; ii < count; ii++) { @@ -915,7 +912,7 @@ validate_settings(signal_user_data_t *ud, GhbValue *settings, gint batch) const gchar *filename; js = ghb_array_get(ud->queue, ii); - filename = ghb_settings_get_const_string(js, "destination"); + filename = ghb_dict_get_string(js, "destination"); if (strcmp(dest, filename) == 0) { message = g_strdup_printf( @@ -1056,11 +1053,11 @@ queue_add(signal_user_data_t *ud, GhbValue *settings, gint batch) // Copy current prefs into settings // The job should run with the preferences that existed // when the job was added to the queue. - ghb_settings_set_value(settings, "Preferences", ud->prefs); + ghb_dict_set(settings, "Preferences", ghb_value_dup(ud->prefs)); // Make a copy of current settings to be used for the new job - ghb_settings_set_int(settings, "job_status", GHB_QUEUE_PENDING); - ghb_settings_set_int(settings, "job_unique_id", 0); + ghb_dict_set_int(settings, "job_status", GHB_QUEUE_PENDING); + ghb_dict_set_int(settings, "job_unique_id", 0); ghb_array_append(ud->queue, settings); add_to_queue_list(ud, settings, NULL); @@ -1090,7 +1087,7 @@ title_multiple_can_select(GhbValue *settings_array, int index) const char *dest; settings = ghb_array_get(settings_array, index); - gdest = ghb_settings_get_value(settings, "destination"); + gdest = ghb_dict_get_value(settings, "destination"); dest = ghb_value_get_string(gdest); if (dest == NULL) return FALSE; @@ -1102,7 +1099,7 @@ title_multiple_can_select(GhbValue *settings_array, int index) const char *tmp; settings = ghb_array_get(settings_array, ii); - gdest = ghb_settings_get_value(settings, "destination"); + gdest = ghb_dict_get_value(settings, "destination"); tmp = ghb_value_get_string(gdest); if (tmp != NULL && !strncmp(dest, tmp, PATH_MAX)) return FALSE; @@ -1251,7 +1248,7 @@ title_add_multiple_check_conflicts(signal_user_data_t *ud) settings = ghb_array_get(ud->settings_array, ii); can_select = title_multiple_can_select(ud->settings_array, ii); - ghb_settings_set_boolean(settings, "title_selected", FALSE); + ghb_dict_set_bool(settings, "title_selected", FALSE); gtk_toggle_button_set_active(selected, FALSE); title_add_multiple_set_sensitive(GTK_WIDGET(row), can_select); are_conflicts |= !can_select; @@ -1294,7 +1291,7 @@ title_add_multiple_select_all_cb(GtkWidget *widget, signal_user_data_t *ud) selected = GTK_TOGGLE_BUTTON(find_widget(row, "title_selected")); settings = ghb_array_get(ud->settings_array, ii); can_select = title_multiple_can_select(ud->settings_array, ii); - ghb_settings_set_boolean(settings, "title_selected", can_select); + ghb_dict_set_bool(settings, "title_selected", can_select); gtk_toggle_button_set_active(selected, TRUE); title_add_multiple_set_sensitive(GTK_WIDGET(row), can_select); } @@ -1332,7 +1329,7 @@ title_add_multiple_clear_all_cb(GtkWidget *widget, signal_user_data_t *ud) row = GTK_WIDGET(gtk_list_box_get_row_at_index(list, ii)); selected = GTK_TOGGLE_BUTTON(find_widget(row, "title_selected")); settings = ghb_array_get(ud->settings_array, ii); - ghb_settings_set_boolean(settings, "title_selected", FALSE); + ghb_dict_set_bool(settings, "title_selected", FALSE); gtk_toggle_button_set_active(selected, FALSE); } clear_select_all_busy = FALSE; @@ -1349,7 +1346,7 @@ add_multiple_titles(signal_user_data_t *ud) GhbValue *settings; settings = ghb_value_dup(ghb_array_get(ud->settings_array, ii)); - if (ghb_settings_get_boolean(settings, "title_selected")) + if (ghb_dict_get_bool(settings, "title_selected")) { queue_add(ud, settings, ii); } @@ -1395,7 +1392,7 @@ title_selected_cb(GtkWidget *widget, signal_user_data_t *ud) selected = ghb_widget_boolean(widget); settings = ghb_array_get(ud->settings_array, index); can_select = title_multiple_can_select(ud->settings_array, index); - ghb_settings_set_boolean(settings, "title_selected", + ghb_dict_set_bool(settings, "title_selected", selected && can_select); } @@ -1403,7 +1400,8 @@ G_MODULE_EXPORT void title_dest_file_cb(GtkWidget *widget, signal_user_data_t *ud) { GhbValue *settings; - gchar *dest_file, *dest_dir, *dest; + const gchar *dest_dir; + gchar *dest_file, *dest; GtkListBoxRow * row = title_get_row(widget); if (row == NULL) return; @@ -1412,21 +1410,20 @@ title_dest_file_cb(GtkWidget *widget, signal_user_data_t *ud) dest_file = ghb_widget_string(widget); settings = ghb_array_get(ud->settings_array, index); - ghb_settings_set_string(settings, "dest_file", dest_file); - dest_dir = ghb_settings_get_string(settings, "dest_dir"); + ghb_dict_set_string(settings, "dest_file", dest_file); + dest_dir = ghb_dict_get_string(settings, "dest_dir"); dest = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", dest_dir, dest_file); - ghb_settings_set_string(settings, "destination", dest); + ghb_dict_set_string(settings, "destination", dest); // Check if changing the destination file name resolves // a file name conflict. Enable selection if so. // Disable selection if it creates a confict!!! gboolean can_select; can_select = title_multiple_can_select(ud->settings_array, index); - ghb_settings_set_boolean(settings, "title_selected", can_select); + ghb_dict_set_bool(settings, "title_selected", can_select); title_add_multiple_set_sensitive(GTK_WIDGET(row), can_select); g_free(dest_file); - g_free(dest_dir); g_free(dest); title_add_multiple_set_conflict_label(ud, @@ -1437,7 +1434,8 @@ G_MODULE_EXPORT void title_dest_dir_cb(GtkWidget *widget, signal_user_data_t *ud) { GhbValue *settings; - gchar *dest_file, *dest_dir, *dest; + const gchar *dest_file; + gchar *dest_dir, *dest; GtkListBoxRow * row = title_get_row(widget); if (row == NULL) return; @@ -1446,20 +1444,19 @@ title_dest_dir_cb(GtkWidget *widget, signal_user_data_t *ud) dest_dir = ghb_widget_string(widget); settings = ghb_array_get(ud->settings_array, index); - ghb_settings_set_string(settings, "dest_dir", dest_dir); - dest_file = ghb_settings_get_string(settings, "dest_file"); + ghb_dict_set_string(settings, "dest_dir", dest_dir); + dest_file = ghb_dict_get_string(settings, "dest_file"); dest = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", dest_dir, dest_file); - ghb_settings_set_string(settings, "destination", dest); + ghb_dict_set_string(settings, "destination", dest); // Check if changing the destination file name resolves // a file name conflict. Enable selection if so. // Disable selection if it creates a confict!!! gboolean can_select; can_select = title_multiple_can_select(ud->settings_array, index); - ghb_settings_set_boolean(settings, "title_selected", can_select); + ghb_dict_set_bool(settings, "title_selected", can_select); title_add_multiple_set_sensitive(GTK_WIDGET(row), can_select); - g_free(dest_file); g_free(dest_dir); g_free(dest); @@ -1550,7 +1547,8 @@ queue_add_multiple_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) GtkLabel *label; GtkEntry *entry; GtkFileChooser *chooser; - gchar *title_label, *dest_dir, *dest_file; + gchar *title_label; + const gchar *dest_dir, *dest_file; int title_id, titleindex; const hb_title_t *title; @@ -1560,7 +1558,7 @@ queue_add_multiple_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) chooser = GTK_FILE_CHOOSER(find_widget(row, "title_dir")); settings = ghb_array_get(ud->settings_array, ii); - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title != NULL) { @@ -1571,16 +1569,14 @@ queue_add_multiple_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) if (len > max_title_len) max_title_len = len; - dest_file = ghb_settings_get_string(settings, "dest_file"); - dest_dir = ghb_settings_get_string(settings, "dest_dir"); + dest_file = ghb_dict_get_string(settings, "dest_file"); + dest_dir = ghb_dict_get_string(settings, "dest_dir"); gtk_label_set_markup(label, title_label); gtk_entry_set_text(entry, dest_file); gtk_file_chooser_set_filename(chooser, dest_dir); g_free(title_label); - g_free(dest_file); - g_free(dest_dir); } gtk_list_box_insert(list, row, -1); @@ -1661,7 +1657,7 @@ queue_remove_clicked_cb(GtkWidget *widget, gchar *path, signal_user_data_t *ud) if (row >= ghb_array_len(ud->queue)) return; settings = ghb_array_get(ud->queue, row); - status = ghb_settings_get_int(settings, "job_status"); + status = ghb_dict_get_int(settings, "job_status"); if (status == GHB_QUEUE_RUNNING) { // Ask if wants to stop encode. @@ -1669,7 +1665,7 @@ queue_remove_clicked_cb(GtkWidget *widget, gchar *path, signal_user_data_t *ud) { return; } - unique_id = ghb_settings_get_int(settings, "job_unique_id"); + unique_id = ghb_dict_get_int(settings, "job_unique_id"); ghb_remove_job(unique_id); } // Remove the selected item @@ -1697,7 +1693,7 @@ find_last_finished(GhbValue *queue) for (ii = 0; ii < count; ii++) { js = ghb_array_get(queue, ii); - status = ghb_settings_get_int(js, "job_status"); + status = ghb_dict_get_int(js, "job_status"); if (status != GHB_QUEUE_DONE && status != GHB_QUEUE_RUNNING) { return ii-1; @@ -1743,7 +1739,7 @@ queue_drag_motion_cb( row = indices[0]; gtk_tree_path_free(path); js = ghb_array_get(ud->queue, row); - status = ghb_settings_get_int(js, "job_status"); + status = ghb_dict_get_int(js, "job_status"); if (status != GHB_QUEUE_PENDING && status != GHB_QUEUE_CANCELED) { gdk_drag_status(ctx, 0, time); @@ -1875,7 +1871,7 @@ queue_drag_cb( break; } // Reset job to pending - ghb_settings_set_int(js, "job_status", GHB_QUEUE_PENDING); + ghb_dict_set_int(js, "job_status", GHB_QUEUE_PENDING); add_to_queue_list(ud, js, &iter); dstpath = gtk_tree_model_get_path (dstmodel, &iter); @@ -1908,7 +1904,7 @@ ghb_queue_buttons_grey(signal_user_data_t *ud) gboolean show_start, show_stop, paused; queue_count = ghb_array_len(ud->queue); - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); queue_state = ghb_get_queue_state(); @@ -2028,7 +2024,7 @@ queue_start_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) for (ii = 0; ii < count; ii++) { js = ghb_array_get(ud->queue, ii); - status = ghb_settings_get_int(js, "job_status"); + status = ghb_dict_get_int(js, "job_status"); if ((status == GHB_QUEUE_RUNNING) || (status == GHB_QUEUE_PENDING)) { @@ -2087,7 +2083,7 @@ find_pid: for (ii = 0; ii < count; ii++) { settings = ghb_array_get(queue, ii); - status = ghb_settings_get_int(settings, "job_status"); + status = ghb_dict_get_int(settings, "job_status"); if (status != GHB_QUEUE_DONE && status != GHB_QUEUE_CANCELED) { unfinished++; @@ -2115,7 +2111,7 @@ find_pid: for (ii = count-1; ii >= 0; ii--) { settings = ghb_array_get(queue, ii); - status = ghb_settings_get_int(settings, "job_status"); + status = ghb_dict_get_int(settings, "job_status"); if (status == GHB_QUEUE_DONE || status == GHB_QUEUE_CANCELED) { ghb_array_remove(queue, ii); @@ -2125,8 +2121,8 @@ find_pid: for (ii = 0; ii < count; ii++) { settings = ghb_array_get(queue, ii); - ghb_settings_set_int(settings, "job_unique_id", 0); - ghb_settings_set_int(settings, "job_status", GHB_QUEUE_PENDING); + ghb_dict_set_int(settings, "job_unique_id", 0); + ghb_dict_set_int(settings, "job_status", GHB_QUEUE_PENDING); add_to_queue_list(ud, settings, NULL); } ghb_queue_buttons_grey(ud); @@ -2204,7 +2200,7 @@ queue_key_press_cb( if (row >= ghb_array_len(ud->queue)) return FALSE; settings = ghb_array_get(ud->queue, row); - status = ghb_settings_get_int(settings, "job_status"); + status = ghb_dict_get_int(settings, "job_status"); if (status == GHB_QUEUE_RUNNING) { // Ask if wants to stop encode. @@ -2212,7 +2208,7 @@ queue_key_press_cb( { return TRUE; } - unique_id = ghb_settings_get_int(settings, "job_unique_id"); + unique_id = ghb_dict_get_int(settings, "job_unique_id"); ghb_remove_job(unique_id); } // Remove the selected item @@ -2258,7 +2254,7 @@ queue_edit_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) if (row >= ghb_array_len(ud->queue)) return; ghb_queue_edit_settings = ghb_array_get(ud->queue, row); - status = ghb_settings_get_int(ghb_queue_edit_settings, "job_status"); + status = ghb_dict_get_int(ghb_queue_edit_settings, "job_status"); if (status == GHB_QUEUE_PENDING) { // Remove the selected item @@ -2271,10 +2267,9 @@ queue_edit_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) { ghb_queue_edit_settings = ghb_value_dup(ghb_queue_edit_settings); } - gchar *source; - source = ghb_settings_get_string(ghb_queue_edit_settings, "source"); + const gchar *source; + source = ghb_dict_get_string(ghb_queue_edit_settings, "source"); ghb_do_scan(ud, source, 0, FALSE); - g_free(source); GtkWidget *widget = GHB_WIDGET(ud->builder, "show_queue"); gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(widget), FALSE); diff --git a/gtk/src/settings.c b/gtk/src/settings.c index 31d66f5f8..9349015a4 100644 --- a/gtk/src/settings.c +++ b/gtk/src/settings.c @@ -31,157 +31,22 @@ debug_get_object(GtkBuilder* b, const gchar *n) return gtk_builder_get_object(b, n); } -GhbValue* -ghb_settings_new() -{ - return ghb_dict_new(); -} - -void -ghb_settings_set_value( - GhbValue *settings, - const gchar *key, - const GhbValue *value) -{ - if (key == NULL || value == NULL) - return; - ghb_dict_set(settings, key, ghb_value_dup(value)); -} - -void -ghb_settings_take_value(GhbValue *settings, const gchar *key, GhbValue *value) -{ - ghb_dict_set(settings, key, value); -} - -void -ghb_settings_set_string( - GhbValue *settings, - const gchar *key, - const gchar *sval) -{ - GhbValue *value; - value = ghb_string_value_new(sval); - ghb_dict_set(settings, key, value); -} - -void -ghb_settings_set_double(GhbValue *settings, const gchar *key, gdouble dval) -{ - GhbValue *value; - value = ghb_double_value_new(dval); - ghb_dict_set(settings, key, value); -} - -void -ghb_settings_set_int64(GhbValue *settings, const gchar *key, gint64 ival) -{ - GhbValue *value; - value = ghb_int_value_new(ival); - ghb_dict_set(settings, key, value); -} - -void -ghb_settings_set_int(GhbValue *settings, const gchar *key, gint ival) -{ - GhbValue *value; - value = ghb_int_value_new((gint64)ival); - ghb_dict_set(settings, key, value); -} - -void -ghb_settings_set_boolean(GhbValue *settings, const gchar *key, gboolean bval) -{ - GhbValue *value; - value = ghb_bool_value_new(bval); - ghb_dict_set(settings, key, value); -} - -GhbValue* -ghb_settings_get_value(const GhbValue *settings, const gchar *key) -{ - GhbValue *value; - value = ghb_dict_get(settings, key); - if (value == NULL) - g_debug("returning null (%s)", key); - return value; -} - -gboolean -ghb_settings_get_boolean(const GhbValue *settings, const gchar *key) -{ - const GhbValue* value; - value = ghb_settings_get_value(settings, key); - if (value == NULL) return FALSE; - return ghb_value_get_bool(value); -} - -gint64 -ghb_settings_get_int64(const GhbValue *settings, const gchar *key) -{ - const GhbValue* value; - value = ghb_settings_get_value(settings, key); - if (value == NULL) return 0; - return ghb_value_get_int(value); -} - -gint -ghb_settings_get_int(const GhbValue *settings, const gchar *key) -{ - const GhbValue* value; - value = ghb_settings_get_value(settings, key); - if (value == NULL) return 0; - return ghb_value_get_int(value); -} - -gdouble -ghb_settings_get_double(const GhbValue *settings, const gchar *key) -{ - const GhbValue* value; - value = ghb_settings_get_value(settings, key); - if (value == NULL) return 0; - return ghb_value_get_double(value); -} - -const gchar* -ghb_settings_get_const_string(const GhbValue *settings, const gchar *key) -{ - const GhbValue* value; - value = ghb_settings_get_value(settings, key); - return ghb_value_get_string(value); -} - -gchar* -ghb_settings_get_string(const GhbValue *settings, const gchar *key) -{ - const GhbValue* value; - value = ghb_settings_get_value(settings, key); - if (value == NULL) return g_strdup(""); - return ghb_value_get_string_xform(value); -} - gint ghb_settings_combo_int(const GhbValue *settings, const gchar *key) { - return ghb_lookup_combo_int(key, ghb_settings_get_value(settings, key)); + return ghb_lookup_combo_int(key, ghb_dict_get_value(settings, key)); } gdouble ghb_settings_combo_double(const GhbValue *settings, const gchar *key) { - return ghb_lookup_combo_double(key, ghb_settings_get_value(settings, key)); + return ghb_lookup_combo_double(key, ghb_dict_get_value(settings, key)); } const gchar* ghb_settings_combo_option(const GhbValue *settings, const gchar *key) { - return ghb_lookup_combo_option(key, ghb_settings_get_value(settings, key)); -} - -const gchar* -ghb_settings_combo_string(const GhbValue *settings, const gchar *key) -{ - return ghb_lookup_combo_string(key, ghb_settings_get_value(settings, key)); + return ghb_lookup_combo_option(key, ghb_dict_get_value(settings, key)); } // Map widget names to setting keys @@ -434,7 +299,7 @@ ghb_widget_to_setting(GhbValue *settings, GtkWidget *widget) value = ghb_widget_value(widget); if (value != NULL) { - ghb_settings_take_value(settings, key, value); + ghb_dict_set(settings, key, value); } else { @@ -632,7 +497,7 @@ ghb_ui_update_from_settings(signal_user_data_t *ud, const gchar *name, const Ghb g_debug("ghb_ui_update_from_settings() %s", name); if (name == NULL) return 0; - value = ghb_settings_get_value(settings, name); + value = ghb_dict_get_value(settings, name); if (value == NULL) return 0; object = GHB_OBJECT(ud->builder, name); diff --git a/gtk/src/settings.h b/gtk/src/settings.h index 895e4fbe6..98e413492 100644 --- a/gtk/src/settings.h +++ b/gtk/src/settings.h @@ -80,32 +80,11 @@ enum GHB_QUEUE_DONE, }; -GhbValue* ghb_settings_new(void); -void ghb_settings_take_value( - GhbValue *settings, const gchar *key, GhbValue *value); -void ghb_settings_set_value( - GhbValue *settings, const gchar *key, const GhbValue *value); -void ghb_settings_set_string( - GhbValue *settings, const gchar *key, const gchar *sval); -void ghb_settings_set_double(GhbValue *settings, const gchar *key, gdouble dval); -void ghb_settings_set_int64(GhbValue *settings, const gchar *key, gint64 ival); -void ghb_settings_set_int(GhbValue *settings, const gchar *key, gint ival); -void ghb_settings_set_boolean( - GhbValue *settings, const gchar *key, gboolean bval); void ghb_settings_copy( GhbValue *settings, const gchar *key, const GhbValue *value); -GhbValue* ghb_settings_get_value(const GhbValue *settings, const gchar *key); -gboolean ghb_settings_get_boolean(const GhbValue *settings, const gchar *key); -gint64 ghb_settings_get_int64(const GhbValue *settings, const gchar *key); -gint ghb_settings_get_int(const GhbValue *settings, const gchar *key); -gdouble ghb_settings_get_double(const GhbValue *settings, const gchar *key); -gchar* ghb_settings_get_string(const GhbValue *settings, const gchar *key); -const gchar* ghb_settings_get_const_string( - const GhbValue *settings, const gchar *key); gint ghb_settings_combo_int(const GhbValue *settings, const gchar *key); gdouble ghb_settings_combo_double(const GhbValue *settings, const gchar *key); const gchar* ghb_settings_combo_option(const GhbValue *settings, const gchar *key); -const gchar* ghb_settings_combo_string(const GhbValue *settings, const gchar *key); GhbValue* ghb_widget_value(GtkWidget *widget); gchar* ghb_widget_string(GtkWidget *widget); diff --git a/gtk/src/subtitlehandler.c b/gtk/src/subtitlehandler.c index 440dbe0a6..b42b482b3 100644 --- a/gtk/src/subtitlehandler.c +++ b/gtk/src/subtitlehandler.c @@ -44,15 +44,15 @@ subtitle_refresh_list_row_ui( info_src_2 = NULL; info_dst_2 = NULL; - forced = ghb_settings_get_boolean(subsettings, "SubtitleForced"); - burned = ghb_settings_get_boolean(subsettings, "SubtitleBurned"); - def = ghb_settings_get_boolean(subsettings, "SubtitleDefaultTrack"); + forced = ghb_dict_get_bool(subsettings, "SubtitleForced"); + burned = ghb_dict_get_bool(subsettings, "SubtitleBurned"); + def = ghb_dict_get_bool(subsettings, "SubtitleDefaultTrack"); info_src = g_strdup_printf("<small>%s</small>", - ghb_settings_get_const_string(subsettings, "SubtitleTrackDescription")); - if (ghb_settings_get_int(subsettings, "SubtitleSource") == SRTSUB) + ghb_dict_get_string(subsettings, "SubtitleTrackDescription")); + if (ghb_dict_get_int(subsettings, "SubtitleSource") == SRTSUB) { gint offset; - offset = ghb_settings_get_int(subsettings, "SrtOffset"); + offset = ghb_dict_get_int(subsettings, "SrtOffset"); if (offset != 0) { info_dst_2 = g_strdup_printf("Offset: %dms", offset); @@ -131,7 +131,7 @@ subtitle_refresh_list_ui_from_settings(signal_user_data_t *ud, GhbValue *setting tm_count = gtk_tree_model_iter_n_children(tm, NULL); - subtitle_list = ghb_settings_get_value(settings, "subtitle_list"); + subtitle_list = ghb_dict_get_value(settings, "subtitle_list"); count = ghb_array_len(subtitle_list); if (count != tm_count) { @@ -163,11 +163,11 @@ ghb_subtitle_exclusive_burn_settings(GhbValue *settings, gint index) GhbValue *subsettings; gint ii, count; - subtitle_list = ghb_settings_get_value(settings, "subtitle_list"); + subtitle_list = ghb_dict_get_value(settings, "subtitle_list"); subsettings = ghb_array_get(subtitle_list, index); if (subsettings != NULL) { - int track = ghb_settings_get_int(subsettings, "SubtitleTrack"); + int track = ghb_dict_get_int(subsettings, "SubtitleTrack"); if (track == -1) { // Allow 2 tracks to be marked burned when one is @@ -183,14 +183,14 @@ ghb_subtitle_exclusive_burn_settings(GhbValue *settings, gint index) if (ii != index) { subsettings = ghb_array_get(subtitle_list, ii); - int track = ghb_settings_get_int(subsettings, "SubtitleTrack"); + int track = ghb_dict_get_int(subsettings, "SubtitleTrack"); if (track != -1) { // Allow 2 tracks to be marked burned when one is // foreign audio search. Extra burned track will be // sanitized away if foreign audio search actually finds // something. - ghb_settings_set_boolean(subsettings, "SubtitleBurned", FALSE); + ghb_dict_set_bool(subsettings, "SubtitleBurned", FALSE); } } } @@ -210,14 +210,14 @@ ghb_subtitle_exclusive_default_settings(GhbValue *settings, gint index) GhbValue *subtitle; gint ii, count; - subtitle_list = ghb_settings_get_value(settings, "subtitle_list"); + subtitle_list = ghb_dict_get_value(settings, "subtitle_list"); count = ghb_array_len(subtitle_list); for (ii = 0; ii < count; ii++) { if (ii != index) { subtitle = ghb_array_get(subtitle_list, ii); - ghb_settings_set_boolean(subtitle, "SubtitleDefaultTrack", FALSE); + ghb_dict_set_bool(subtitle, "SubtitleDefaultTrack", FALSE); } } } @@ -249,39 +249,39 @@ subtitle_add_to_settings(GhbValue *settings, GhbValue *subsettings) gboolean burned, forced, def; gint source; - subtitle_list = ghb_settings_get_value(settings, "subtitle_list"); + subtitle_list = ghb_dict_get_value(settings, "subtitle_list"); if (subtitle_list == NULL) { subtitle_list = ghb_array_new(); - ghb_settings_set_value(settings, "subtitle_list", subtitle_list); + ghb_dict_set(settings, "subtitle_list", subtitle_list); } // Validate some settings const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(settings, "FileFormat"); + mux_id = ghb_dict_get_string(settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); - source = ghb_settings_get_int(subsettings, "SubtitleSource"); - burned = ghb_settings_get_boolean(subsettings, "SubtitleBurned"); + source = ghb_dict_get_int(subsettings, "SubtitleSource"); + burned = ghb_dict_get_bool(subsettings, "SubtitleBurned"); if (burned && !hb_subtitle_can_burn(source)) { burned = FALSE; - ghb_settings_set_boolean(subsettings, "SubtitleBurned", burned); + ghb_dict_set_bool(subsettings, "SubtitleBurned", burned); } if (!burned && !hb_subtitle_can_pass(source, mux->format)) { burned = TRUE; - ghb_settings_set_boolean(subsettings, "SubtitleBurned", burned); - ghb_settings_set_boolean(subsettings, "SubtitleDefaultTrack", FALSE); + ghb_dict_set_bool(subsettings, "SubtitleBurned", burned); + ghb_dict_set_bool(subsettings, "SubtitleDefaultTrack", FALSE); } - def = ghb_settings_get_boolean(subsettings, "SubtitleDefaultTrack"); - forced = ghb_settings_get_boolean(subsettings, "SubtitleForced"); + def = ghb_dict_get_bool(subsettings, "SubtitleDefaultTrack"); + forced = ghb_dict_get_bool(subsettings, "SubtitleForced"); if (forced && !hb_subtitle_can_force(source)) { forced = FALSE; - ghb_settings_set_boolean(subsettings, "SubtitleForced", forced); + ghb_dict_set_bool(subsettings, "SubtitleForced", forced); } ghb_array_append(subtitle_list, subsettings); @@ -299,15 +299,15 @@ subtitle_set_track_description(GhbValue *settings, GhbValue *subsettings) { char *desc = NULL; - if (ghb_settings_get_int(subsettings, "SubtitleSource") == SRTSUB) + if (ghb_dict_get_int(subsettings, "SubtitleSource") == SRTSUB) { - gchar *filename, *code; + const gchar *filename, *code; const gchar *lang; lang = ghb_settings_combo_option(subsettings, "SrtLanguage"); - code = ghb_settings_get_string(subsettings, "SrtCodeset"); + code = ghb_dict_get_string(subsettings, "SrtCodeset"); - filename = ghb_settings_get_string(subsettings, "SrtFile"); + filename = ghb_dict_get_string(subsettings, "SrtFile"); if (g_file_test(filename, G_FILE_TEST_IS_REGULAR)) { gchar *basename; @@ -320,7 +320,6 @@ subtitle_set_track_description(GhbValue *settings, GhbValue *subsettings) { desc = g_strdup_printf("%s (%s)(SRT)", lang, code); } - g_free(code); } else { @@ -329,9 +328,9 @@ subtitle_set_track_description(GhbValue *settings, GhbValue *subsettings) int track; hb_subtitle_t *subtitle; - title_id = ghb_settings_get_int(settings, "title"); + title_id = ghb_dict_get_int(settings, "title"); title = ghb_lookup_title(title_id, &titleindex); - track = ghb_settings_get_int(subsettings, "SubtitleTrack"); + track = ghb_dict_get_int(subsettings, "SubtitleTrack"); if (track < 0) { desc = g_strdup(_("Foreign Audio Search")); @@ -350,12 +349,12 @@ subtitle_set_track_description(GhbValue *settings, GhbValue *subsettings) if (desc != NULL) { - ghb_settings_set_string( + ghb_dict_set_string( subsettings, "SubtitleTrackDescription", desc); } else { - ghb_settings_set_string( + ghb_dict_set_string( subsettings, "SubtitleTrackDescription", "Error!"); } @@ -394,31 +393,30 @@ static GhbValue* subtitle_add_track( } GhbValue *subsettings = ghb_dict_new(); - ghb_settings_set_int(subsettings, "SubtitleTrack", track); - ghb_settings_set_int(subsettings, "SubtitleSource", source); + ghb_dict_set_int(subsettings, "SubtitleTrack", track); + ghb_dict_set_int(subsettings, "SubtitleSource", source); // Set default SRT settings - gchar *pref_lang, *dir, *filename; + const gchar *pref_lang, *dir; + gchar *filename; - pref_lang = ghb_settings_get_string(settings, "PreferredLanguage"); - ghb_settings_set_string(subsettings, "SrtLanguage", pref_lang); - g_free(pref_lang); + pref_lang = ghb_dict_get_string(settings, "PreferredLanguage"); + ghb_dict_set_string(subsettings, "SrtLanguage", pref_lang); - ghb_settings_set_string(subsettings, "SrtCodeset", "UTF-8"); + ghb_dict_set_string(subsettings, "SrtCodeset", "UTF-8"); - dir = ghb_settings_get_string(ud->prefs, "SrtDir"); + dir = ghb_dict_get_string(ud->prefs, "SrtDir"); filename = g_strdup_printf("%s/none", dir); - ghb_settings_set_string(subsettings, "SrtFile", filename); - g_free(dir); + ghb_dict_set_string(subsettings, "SrtFile", filename); g_free(filename); - ghb_settings_set_int(subsettings, "SrtOffset", 0); + ghb_dict_set_int(subsettings, "SrtOffset", 0); subtitle_set_track_description(settings, subsettings); if (burn) { - ghb_settings_set_boolean(subsettings, "SubtitleBurned", TRUE); + ghb_dict_set_bool(subsettings, "SubtitleBurned", TRUE); if (track != -1) { // Allow 2 tracks to be marked burned when one is @@ -430,24 +428,24 @@ static GhbValue* subtitle_add_track( } else { - ghb_settings_set_boolean(subsettings, "SubtitleBurned", FALSE); + ghb_dict_set_bool(subsettings, "SubtitleBurned", FALSE); } if (track == -1) { // Foreign audio search "track" - ghb_settings_set_boolean(subsettings, "SubtitleForced", TRUE); + ghb_dict_set_bool(subsettings, "SubtitleForced", TRUE); } else { - ghb_settings_set_boolean(subsettings, "SubtitleForced", FALSE); + ghb_dict_set_bool(subsettings, "SubtitleForced", FALSE); } if (default_track) { - ghb_settings_set_boolean(subsettings, "SubtitleDefaultTrack", TRUE); + ghb_dict_set_bool(subsettings, "SubtitleDefaultTrack", TRUE); } else { - ghb_settings_set_boolean(subsettings, "SubtitleDefaultTrack", FALSE); + ghb_dict_set_bool(subsettings, "SubtitleDefaultTrack", FALSE); } subtitle_add_to_settings(settings, subsettings); @@ -465,7 +463,7 @@ ghb_subtitle_title_change(signal_user_data_t *ud, gboolean show) gtk_widget_set_sensitive(w, show); int title_id, titleindex; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); const hb_title_t *title = ghb_lookup_title(title_id, &titleindex); if (title != NULL) { @@ -508,7 +506,7 @@ ghb_set_pref_subtitle_settings(signal_user_data_t *ud, const hb_title_t *title, const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(settings, "FileFormat"); + mux_id = ghb_dict_get_string(settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); // Check to see if we need to add a subtitle track for foreign audio @@ -518,11 +516,11 @@ ghb_set_pref_subtitle_settings(signal_user_data_t *ud, const hb_title_t *title, // chosen Preferred Language AND the Preferred Language is NOT Any (und). // audio_lang = ghb_get_user_audio_lang(settings, title, 0); - foreign_audio_search = ghb_settings_get_boolean( + foreign_audio_search = ghb_dict_get_bool( settings, "SubtitleAddForeignAudioSearch"); - foreign_audio_subs = ghb_settings_get_boolean( + foreign_audio_subs = ghb_dict_get_bool( settings, "SubtitleAddForeignAudioSubtitle"); - lang_list = ghb_settings_get_value(settings, "SubtitleLanguageList"); + lang_list = ghb_dict_get_value(settings, "SubtitleLanguageList"); lang_count = ghb_array_len(lang_list); if (lang_count > 0) { @@ -542,8 +540,8 @@ ghb_set_pref_subtitle_settings(signal_user_data_t *ud, const hb_title_t *title, burn_behavior = ghb_settings_combo_int(settings, "SubtitleBurnBehavior"); burn_foreign = burn_behavior == 1 || burn_behavior == 3; burn_first = burn_behavior == 2 || burn_behavior == 3; - burn_dvd = ghb_settings_get_boolean(settings, "SubtitleBurnDVDSub"); - burn_bd = ghb_settings_get_boolean(settings, "SubtitleBurnBDSub"); + burn_dvd = ghb_dict_get_bool(settings, "SubtitleBurnDVDSub"); + burn_bd = ghb_dict_get_bool(settings, "SubtitleBurnBDSub"); if (foreign_audio_subs && (audio_lang == NULL || strncmp(audio_lang, pref_lang, 4))) @@ -615,7 +613,7 @@ ghb_set_pref_subtitle_settings(signal_user_data_t *ud, const hb_title_t *title, } } - if (ghb_settings_get_boolean(settings, "SubtitleAddCC")) + if (ghb_dict_get_bool(settings, "SubtitleAddCC")) { for (track = 0; track < sub_count; track++) { @@ -713,7 +711,7 @@ subtitle_get_selected_settings(signal_user_data_t *ud, int *index) gtk_tree_path_free(tp); if (row < 0) return NULL; - subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list"); + subtitle_list = ghb_dict_get_value(ud->settings, "subtitle_list"); if (row >= ghb_array_len(subtitle_list)) return NULL; @@ -737,10 +735,10 @@ subtitle_update_dialog_widgets(signal_user_data_t *ud, GhbValue *subsettings) const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(ud->settings, "FileFormat"); + mux_id = ghb_dict_get_string(ud->settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); - int source = ghb_settings_get_int(subsettings, "SubtitleSource"); + int source = ghb_dict_get_int(subsettings, "SubtitleSource"); ghb_ui_update_from_settings(ud, "SubtitleTrack", subsettings); ghb_ui_update_from_settings(ud, "SrtLanguage", subsettings); @@ -766,9 +764,9 @@ subtitle_update_dialog_widgets(signal_user_data_t *ud, GhbValue *subsettings) gtk_widget_set_sensitive(widget, hb_subtitle_can_pass(source, mux->format)); - burn = ghb_settings_get_int(subsettings, "SubtitleBurned"); - force = ghb_settings_get_int(subsettings, "SubtitleForced"); - def = ghb_settings_get_int(subsettings, "SubtitleDefaultTrack"); + burn = ghb_dict_get_int(subsettings, "SubtitleBurned"); + force = ghb_dict_get_int(subsettings, "SubtitleForced"); + def = ghb_dict_get_int(subsettings, "SubtitleDefaultTrack"); if (!hb_subtitle_can_burn(source)) { @@ -783,11 +781,11 @@ subtitle_update_dialog_widgets(signal_user_data_t *ud, GhbValue *subsettings) def = FALSE; burn = TRUE; } - ghb_settings_set_boolean(subsettings, "SubtitleBurned", burn); + ghb_dict_set_bool(subsettings, "SubtitleBurned", burn); ghb_ui_update(ud, "SubtitleBurned", ghb_boolean_value(burn)); - ghb_settings_set_boolean(subsettings, "SubtitleForced", force); + ghb_dict_set_bool(subsettings, "SubtitleForced", force); ghb_ui_update(ud, "SubtitleForced", ghb_boolean_value(force)); - ghb_settings_set_boolean(subsettings, "SubtitleDefaultTrack", def); + ghb_dict_set_bool(subsettings, "SubtitleDefaultTrack", def); ghb_ui_update(ud, "SubtitleDefaultTrack", ghb_boolean_value(def)); // Hide regular subtitle widgets @@ -839,9 +837,9 @@ subtitle_track_changed_cb(GtkWidget *widget, signal_user_data_t *ud) gint track, source; ghb_widget_to_setting(subsettings, widget); - track = ghb_settings_get_int(subsettings, "SubtitleTrack"); + track = ghb_dict_get_int(subsettings, "SubtitleTrack"); source = ghb_subtitle_track_source(ud->settings, track); - ghb_settings_set_int(subsettings, "SubtitleSource", source); + ghb_dict_set_int(subsettings, "SubtitleSource", source); subtitle_set_track_description(ud->settings, subsettings); subtitle_update_dialog_widgets(ud, subsettings); ghb_subtitle_list_refresh_selected(ud); @@ -866,7 +864,7 @@ subtitle_burned_toggled_cb(GtkWidget *widget, signal_user_data_t *ud) if (subsettings != NULL) { ghb_widget_to_setting(subsettings, widget); - if (ghb_settings_get_boolean(subsettings, "SubtitleBurned")) + if (ghb_dict_get_bool(subsettings, "SubtitleBurned")) { ghb_ui_update(ud, "SubtitleDefaultTrack", ghb_boolean_value(FALSE)); ghb_subtitle_exclusive_burn(ud, index); @@ -887,7 +885,7 @@ subtitle_default_toggled_cb(GtkWidget *widget, signal_user_data_t *ud) if (subsettings != NULL) { ghb_widget_to_setting(subsettings, widget); - if (ghb_settings_get_boolean(subsettings, "SubtitleDefaultTrack")) + if (ghb_dict_get_bool(subsettings, "SubtitleDefaultTrack")) { ghb_ui_update(ud, "SubtitleBurned", ghb_boolean_value(FALSE)); ghb_subtitle_exclusive_default(ud, index); @@ -906,17 +904,17 @@ subtitle_srt_radio_toggled_cb(GtkWidget *widget, signal_user_data_t *ud) subsettings = subtitle_get_selected_settings(ud, NULL); if (subsettings != NULL) { - if (ghb_settings_get_boolean(ud->settings, "SubtitleSrtEnable")) + if (ghb_dict_get_bool(ud->settings, "SubtitleSrtEnable")) { - ghb_settings_set_int(subsettings, "SubtitleSource", SRTSUB); + ghb_dict_set_int(subsettings, "SubtitleSource", SRTSUB); } else { int track, source; - track = ghb_settings_get_int(subsettings, "SubtitleTrack"); + track = ghb_dict_get_int(subsettings, "SubtitleTrack"); source = ghb_subtitle_track_source(ud->settings, track); - ghb_settings_set_int(subsettings, "SubtitleSource", source); + ghb_dict_set_int(subsettings, "SubtitleSource", source); } subtitle_set_track_description(ud->settings, subsettings); subtitle_update_dialog_widgets(ud, subsettings); @@ -950,7 +948,7 @@ ghb_subtitle_list_refresh_selected(signal_user_data_t *ud) gtk_tree_path_free(tp); if (row < 0) return; - subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list"); + subtitle_list = ghb_dict_get_value(ud->settings, "subtitle_list"); if (row >= ghb_array_len(subtitle_list)) return; @@ -994,7 +992,8 @@ srt_file_changed_cb(GtkWidget *widget, signal_user_data_t *ud) subsettings = subtitle_get_selected_settings(ud, NULL); if (subsettings != NULL) { - gchar *filename, *dirname; + const gchar *filename; + gchar *dirname; ghb_widget_to_setting(subsettings, widget); subtitle_set_track_description(ud->settings, subsettings); @@ -1002,19 +1001,18 @@ srt_file_changed_cb(GtkWidget *widget, signal_user_data_t *ud) ghb_live_reset(ud); // Update SrtDir preference - filename = ghb_settings_get_string(subsettings, "SrtFile"); + filename = ghb_dict_get_string(subsettings, "SrtFile"); if (g_file_test(filename, G_FILE_TEST_IS_DIR)) { - ghb_settings_set_string(ud->prefs, "SrtDir", filename); + ghb_dict_set_string(ud->prefs, "SrtDir", filename); } else { dirname = g_path_get_dirname(filename); - ghb_settings_set_string(ud->prefs, "SrtDir", dirname); + ghb_dict_set_string(ud->prefs, "SrtDir", dirname); g_free(dirname); } ghb_pref_save(ud->prefs, "SrtDir"); - g_free(filename); } } @@ -1041,11 +1039,11 @@ ghb_clear_subtitle_list_settings(GhbValue *settings) { GhbValue *subtitle_list; - subtitle_list = ghb_settings_get_value(settings, "subtitle_list"); + subtitle_list = ghb_dict_get_value(settings, "subtitle_list"); if (subtitle_list == NULL) { subtitle_list = ghb_array_new(); - ghb_settings_set_value(settings, "subtitle_list", subtitle_list); + ghb_dict_set(settings, "subtitle_list", subtitle_list); } else ghb_array_reset(subtitle_list); @@ -1121,14 +1119,14 @@ subtitle_list_selection_changed_cb(GtkTreeSelection *ts, signal_user_data_t *ud) row = indices[0]; gtk_tree_path_free(tp); - subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list"); + subtitle_list = ghb_dict_get_value(ud->settings, "subtitle_list"); if (row >= 0 && row < ghb_array_len(subtitle_list)) subsettings = ghb_array_get(subtitle_list, row); } subtitle_update_dialog_widgets(ud, subsettings); if (subsettings) { - if (ghb_settings_get_boolean(subsettings, "SubtitleBurned")) + if (ghb_dict_get_bool(subsettings, "SubtitleBurned")) { ghb_subtitle_exclusive_burn(ud, row); } @@ -1140,7 +1138,7 @@ static gboolean subtitle_is_one_burned(GhbValue *settings) GhbValue *subtitle_list, *subsettings; int count, ii; - subtitle_list = ghb_settings_get_value(settings, "subtitle_list"); + subtitle_list = ghb_dict_get_value(settings, "subtitle_list"); if (subtitle_list == NULL) return FALSE; @@ -1148,7 +1146,7 @@ static gboolean subtitle_is_one_burned(GhbValue *settings) for (ii = 0; ii < count; ii++) { subsettings = ghb_array_get(subtitle_list, ii); - if (ghb_settings_get_boolean(subsettings, "SubtitleBurned")) + if (ghb_dict_get_bool(subsettings, "SubtitleBurned")) { return TRUE; } @@ -1167,7 +1165,7 @@ subtitle_add_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) int title_id, titleindex; const hb_title_t *title; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title == NULL) { @@ -1176,14 +1174,14 @@ subtitle_add_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) // Back up settings in case we need to revert. backup = ghb_value_dup( - ghb_settings_get_value(ud->settings, "subtitle_list")); + ghb_dict_get_value(ud->settings, "subtitle_list")); one_burned = subtitle_is_one_burned(ud->settings); const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(ud->settings, "FileFormat"); + mux_id = ghb_dict_get_string(ud->settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); int count = hb_list_count(title->list_subtitle); @@ -1209,7 +1207,7 @@ subtitle_add_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) gtk_widget_hide(dialog); if (response != GTK_RESPONSE_OK) { - ghb_settings_take_value(ud->settings, "subtitle_list", backup); + ghb_dict_set(ud->settings, "subtitle_list", backup); subsettings = subtitle_get_selected_settings(ud, NULL); if (subsettings != NULL) { @@ -1233,7 +1231,7 @@ subtitle_add_all_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) const hb_title_t *title; int title_id, titleindex; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title == NULL) { @@ -1246,7 +1244,7 @@ subtitle_add_all_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(ud->settings, "FileFormat"); + mux_id = ghb_dict_get_string(ud->settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); int count = hb_list_count(title->list_subtitle); @@ -1265,7 +1263,7 @@ subtitle_reset_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) int title_id, titleindex; const hb_title_t *title; - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); ghb_set_pref_subtitle(title, ud); } @@ -1278,14 +1276,14 @@ ghb_subtitle_prune(signal_user_data_t *ud) gint ii; gboolean one_burned = FALSE; - subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list"); + subtitle_list = ghb_dict_get_value(ud->settings, "subtitle_list"); if (subtitle_list == NULL) return; const char *mux_id; const hb_container_t *mux; - mux_id = ghb_settings_get_const_string(ud->settings, "FileFormat"); + mux_id = ghb_dict_get_string(ud->settings, "FileFormat"); mux = ghb_lookup_container_by_name(mux_id); for (ii = 0; ii < ghb_array_len(subtitle_list); ) @@ -1294,8 +1292,8 @@ ghb_subtitle_prune(signal_user_data_t *ud) int source; subsettings = ghb_array_get(subtitle_list, ii); - burned = ghb_settings_get_boolean(subsettings, "SubtitleBurned"); - source = ghb_settings_get_boolean(subsettings, "SubtitleSource"); + burned = ghb_dict_get_bool(subsettings, "SubtitleBurned"); + source = ghb_dict_get_bool(subsettings, "SubtitleSource"); burned = burned || !hb_subtitle_can_pass(source, mux->format); if (burned && one_burned) { @@ -1303,7 +1301,7 @@ ghb_subtitle_prune(signal_user_data_t *ud) continue; } one_burned = one_burned || burned; - ghb_settings_set_boolean(subsettings, "SubtitleBurned", burned); + ghb_dict_set_bool(subsettings, "SubtitleBurned", burned); ii++; } subsettings = subtitle_get_selected_settings(ud, NULL); @@ -1325,12 +1323,12 @@ ghb_reset_subtitles(signal_user_data_t *ud, GhbValue *settings) g_debug("ghb_reset_subtitles"); ghb_clear_subtitle_list_settings(ud->settings); ghb_clear_subtitle_list_ui(ud->builder); - title_id = ghb_settings_get_int(ud->settings, "title"); + title_id = ghb_dict_get_int(ud->settings, "title"); title = ghb_lookup_title(title_id, &titleindex); if (title == NULL) return; - slist = ghb_settings_get_value(settings, "subtitle_list"); + slist = ghb_dict_get_value(settings, "subtitle_list"); count = ghb_array_len(slist); for (ii = 0; ii < count; ii++) { @@ -1371,7 +1369,7 @@ subtitle_update_pref_lang(signal_user_data_t *ud, const iso639_lang_t *lang) gtk_label_set_text(label, str); g_free(str); - ghb_settings_set_string(ud->settings, "PreferredLanguage", code); + ghb_dict_set_string(ud->settings, "PreferredLanguage", code); button = GTK_BUTTON(GHB_WIDGET(ud->builder, "SubtitleAddForeignAudioSubtitle")); @@ -1394,20 +1392,20 @@ ghb_subtitle_set_pref_lang(GhbValue *settings) { GhbValue *lang_list; gboolean set = FALSE; - lang_list = ghb_settings_get_value(settings, "SubtitleLanguageList"); + lang_list = ghb_dict_get_value(settings, "SubtitleLanguageList"); if (ghb_array_len(lang_list) > 0) { GhbValue *glang = ghb_array_get(lang_list, 0); if (glang != NULL) { - ghb_settings_set_string(settings, "PreferredLanguage", + ghb_dict_set_string(settings, "PreferredLanguage", ghb_value_get_string(glang)); set = TRUE; } } if (!set) { - ghb_settings_set_string(settings, "PreferredLanguage", "und"); + ghb_dict_set_string(settings, "PreferredLanguage", "und"); } } @@ -1438,7 +1436,7 @@ subtitle_add_lang_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) idx = (intptr_t)g_object_get_data(G_OBJECT(label), "lang_idx"); lang = ghb_iso639_lookup_by_int(idx); glang = ghb_string_value_new(lang->iso639_2); - lang_list = ghb_settings_get_value(ud->settings, "SubtitleLanguageList"); + lang_list = ghb_dict_get_value(ud->settings, "SubtitleLanguageList"); if (ghb_array_len(lang_list) == 0) { subtitle_update_pref_lang(ud, lang); @@ -1476,7 +1474,7 @@ subtitle_remove_lang_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) gtk_list_box_insert(avail, label, idx); // Remove from preset language list - lang_list = ghb_settings_get_value(ud->settings, "SubtitleLanguageList"); + lang_list = ghb_dict_get_value(ud->settings, "SubtitleLanguageList"); ghb_array_remove(lang_list, index); ghb_clear_presets_selection(ud); @@ -1522,11 +1520,11 @@ static void subtitle_def_lang_list_init(signal_user_data_t *ud) // Clear selected languages. subtitle_def_selected_lang_list_clear(ud); - lang_list = ghb_settings_get_value(ud->settings, "SubtitleLanguageList"); + lang_list = ghb_dict_get_value(ud->settings, "SubtitleLanguageList"); if (lang_list == NULL) { lang_list = ghb_array_new(); - ghb_settings_set_value(ud->settings, "SubtitleLanguageList", lang_list); + ghb_dict_set(ud->settings, "SubtitleLanguageList", lang_list); } int ii, count; @@ -1605,7 +1603,7 @@ subtitle_edit_clicked_cb(GtkWidget *widget, gchar *path, signal_user_data_t *ud) // Back up settings in case we need to revert. backup = ghb_value_dup( - ghb_settings_get_value(ud->settings, "subtitle_list")); + ghb_dict_get_value(ud->settings, "subtitle_list")); // Pop up the edit dialog GtkResponseType response; @@ -1614,7 +1612,7 @@ subtitle_edit_clicked_cb(GtkWidget *widget, gchar *path, signal_user_data_t *ud) gtk_widget_hide(dialog); if (response != GTK_RESPONSE_OK) { - ghb_settings_take_value(ud->settings, "subtitle_list", backup); + ghb_dict_set(ud->settings, "subtitle_list", backup); subsettings = subtitle_get_selected_settings(ud, NULL); if (subsettings != NULL) { @@ -1662,7 +1660,7 @@ subtitle_remove_clicked_cb(GtkWidget *widget, gchar *path, signal_user_data_t *u gtk_tree_selection_select_iter(ts, &nextIter); } - subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list"); + subtitle_list = ghb_dict_get_value(ud->settings, "subtitle_list"); // Get the row number indices = gtk_tree_path_get_indices (tp); diff --git a/gtk/src/values.c b/gtk/src/values.c index 3985e6490..b413250cc 100644 --- a/gtk/src/values.c +++ b/gtk/src/values.c @@ -138,3 +138,89 @@ ghb_string_value_set(GhbValue *gval, const gchar *str) json_string_set(gval, str); } +void +ghb_dict_set_string(GhbValue *dict, const gchar *key, const gchar *sval) +{ + GhbValue *value; + value = ghb_string_value_new(sval); + ghb_dict_set(dict, key, value); +} + +void +ghb_dict_set_double(GhbValue *dict, const gchar *key, gdouble dval) +{ + GhbValue *value; + value = ghb_double_value_new(dval); + ghb_dict_set(dict, key, value); +} + +void +ghb_dict_set_int(GhbValue *dict, const gchar *key, gint64 ival) +{ + GhbValue *value; + value = ghb_int_value_new(ival); + ghb_dict_set(dict, key, value); +} + +void +ghb_dict_set_bool(GhbValue *dict, const gchar *key, gboolean bval) +{ + GhbValue *value; + value = ghb_bool_value_new(bval); + ghb_dict_set(dict, key, value); +} + +GhbValue* +ghb_dict_get_value(const GhbValue *dict, const gchar *key) +{ + GhbValue *value; + value = ghb_dict_get(dict, key); + if (value == NULL) + g_debug("returning null (%s)", key); + return value; +} + +gboolean +ghb_dict_get_bool(const GhbValue *dict, const gchar *key) +{ + const GhbValue* value; + value = ghb_dict_get_value(dict, key); + if (value == NULL) return FALSE; + return ghb_value_get_bool(value); +} + +gint64 +ghb_dict_get_int(const GhbValue *dict, const gchar *key) +{ + const GhbValue* value; + value = ghb_dict_get_value(dict, key); + if (value == NULL) return 0; + return ghb_value_get_int(value); +} + +gdouble +ghb_dict_get_double(const GhbValue *dict, const gchar *key) +{ + const GhbValue* value; + value = ghb_dict_get_value(dict, key); + if (value == NULL) return 0; + return ghb_value_get_double(value); +} + +const gchar* +ghb_dict_get_string(const GhbValue *dict, const gchar *key) +{ + const GhbValue* value; + value = ghb_dict_get_value(dict, key); + return ghb_value_get_string(value); +} + +gchar* +ghb_dict_get_string_xform(const GhbValue *dict, const gchar *key) +{ + const GhbValue* value; + value = ghb_dict_get_value(dict, key); + if (value == NULL) return g_strdup(""); + return ghb_value_get_string_xform(value); +} + diff --git a/gtk/src/values.h b/gtk/src/values.h index 9c2072710..87f7010cc 100644 --- a/gtk/src/values.h +++ b/gtk/src/values.h @@ -84,4 +84,16 @@ GhbValue* ghb_boolean_value(gboolean bval); void debug_show_value(GhbValue *gval); void debug_show_type(GhbType tp); +void ghb_dict_set_string(GhbValue *dict, const gchar *key, const gchar *sval); +void ghb_dict_set_double(GhbValue *dict, const gchar *key, gdouble dval); +void ghb_dict_set_int(GhbValue *dict, const gchar *key, gint64 ival); +void ghb_dict_set_bool(GhbValue *dict, const gchar *key, gboolean bval); + +GhbValue* ghb_dict_get_value(const GhbValue *dict, const gchar *key); +gboolean ghb_dict_get_bool(const GhbValue *dict, const gchar *key); +gint64 ghb_dict_get_int(const GhbValue *dict, const gchar *key); +gdouble ghb_dict_get_double(const GhbValue *dict, const gchar *key); +gchar* ghb_dict_get_string_xform(const GhbValue *dict, const gchar *key); +const gchar* ghb_dict_get_string(const GhbValue *dict, const gchar *key); + #endif // _GHB_VALUES_H_ diff --git a/gtk/src/videohandler.c b/gtk/src/videohandler.c index 94845442d..5bf706677 100644 --- a/gtk/src/videohandler.c +++ b/gtk/src/videohandler.c @@ -25,7 +25,7 @@ int ghb_get_video_encoder(GhbValue *settings) { const char *encoder; - encoder = ghb_settings_get_const_string(settings, "VideoEncoder"); + encoder = ghb_dict_get_string(settings, "VideoEncoder"); return hb_video_encoder_get_from_name(encoder); } @@ -86,42 +86,42 @@ ghb_video_setting_changed(GtkWidget *widget, signal_user_data_t *ud) ghb_widget_to_setting(ud->settings, widget); int encoder = ghb_get_video_encoder(ud->settings); - int presetIndex = ghb_settings_get_int(ud->settings, "VideoPresetSlider"); + int presetIndex = ghb_dict_get_int(ud->settings, "VideoPresetSlider"); const char * const *video_presets; const char *preset; video_presets = hb_video_encoder_get_presets(encoder); if (video_presets != NULL) { preset = video_presets[presetIndex]; - ghb_settings_set_string(ud->settings, "VideoPreset", preset); + ghb_dict_set_string(ud->settings, "VideoPreset", preset); } - if (!ghb_settings_get_boolean(ud->settings, "x264UseAdvancedOptions") && + if (!ghb_dict_get_bool(ud->settings, "x264UseAdvancedOptions") && encoder == HB_VCODEC_X264) { GString *str = g_string_new(""); - char *preset; - char *tune; - char *profile; - char *level; - char *opts; + const char *preset; + const char *tune; + const char *profile; + const char *level; + const char *opts; char *tunes; - preset = ghb_settings_get_string(ud->settings, "VideoPreset"); - tune = ghb_settings_get_string(ud->settings, "VideoTune"); - profile = ghb_settings_get_string(ud->settings, "VideoProfile"); - level = ghb_settings_get_string(ud->settings, "VideoLevel"); - opts = ghb_settings_get_string(ud->settings, "VideoOptionExtra"); + preset = ghb_dict_get_string(ud->settings, "VideoPreset"); + tune = ghb_dict_get_string(ud->settings, "VideoTune"); + profile = ghb_dict_get_string(ud->settings, "VideoProfile"); + level = ghb_dict_get_string(ud->settings, "VideoLevel"); + opts = ghb_dict_get_string(ud->settings, "VideoOptionExtra"); if (tune[0] && strcmp(tune, "none")) { g_string_append_printf(str, "%s", tune); } - if (ghb_settings_get_boolean(ud->settings, "x264FastDecode")) + if (ghb_dict_get_bool(ud->settings, "x264FastDecode")) { g_string_append_printf(str, "%s%s", str->str[0] ? "," : "", "fastdecode"); } - if (ghb_settings_get_boolean(ud->settings, "x264ZeroLatency")) + if (ghb_dict_get_bool(ud->settings, "x264ZeroLatency")) { g_string_append_printf(str, "%s%s", str->str[0] ? "," : "", "zerolatency"); } @@ -129,15 +129,15 @@ ghb_video_setting_changed(GtkWidget *widget, signal_user_data_t *ud) char * new_opts; - int w = ghb_settings_get_int(ud->settings, "scale_width"); - int h = ghb_settings_get_int(ud->settings, "scale_height"); + int w = ghb_dict_get_int(ud->settings, "scale_width"); + int h = ghb_dict_get_int(ud->settings, "scale_height"); if (w == 0 || h == 0) { - if (!ghb_settings_get_boolean(ud->settings, "autoscale")) + if (!ghb_dict_get_bool(ud->settings, "autoscale")) { - w = ghb_settings_get_int(ud->settings, "PictureWidth"); - h = ghb_settings_get_int(ud->settings, "PictureHeight"); + w = ghb_dict_get_int(ud->settings, "PictureWidth"); + h = ghb_dict_get_int(ud->settings, "PictureHeight"); if (h == 0 && w != 0) { @@ -157,11 +157,11 @@ ghb_video_setting_changed(GtkWidget *widget, signal_user_data_t *ud) if (!strcasecmp(profile, "auto")) { - profile[0] = 0; + profile = ""; } if (!strcasecmp(level, "auto")) { - level[0] = 0; + level = ""; } new_opts = hb_x264_param_unparse( preset, tunes, opts, profile, level, w, h); @@ -182,27 +182,21 @@ ghb_video_setting_changed(GtkWidget *widget, signal_user_data_t *ud) g_free(new_tt); g_free(new_opts); - g_free(preset); - g_free(tune); - g_free(profile); - g_free(level); - g_free(opts); g_free(tunes); } - else if (ghb_settings_get_boolean(ud->settings, "x264UseAdvancedOptions")) + else if (ghb_dict_get_bool(ud->settings, "x264UseAdvancedOptions")) { - char *opts = ghb_settings_get_string(ud->settings, "x264Option"); + const char *opts = ghb_dict_get_string(ud->settings, "x264Option"); GtkWidget *eo = GTK_WIDGET(GHB_WIDGET(ud->builder, "VideoOptionExtra")); char * new_tt; if (opts) - new_tt = g_strdup_printf(_("%s\n\nExpanded Options:\n\"%s\""), tt, opts); + new_tt = g_strdup_printf(_("%s\n\nExpanded Options:\n\"%s\""), + tt, opts); else new_tt = g_strdup_printf(_("%s\n\nExpanded Options:\n\"\""), tt); gtk_widget_set_tooltip_text(eo, new_tt); g_free(new_tt); - - g_free(opts); } ghb_check_dependency(ud, widget, NULL); @@ -220,23 +214,22 @@ x264_use_advanced_options_changed_cb(GtkWidget *widget, signal_user_data_t *ud) { ghb_widget_to_setting(ud->settings, widget); - if (ghb_settings_get_boolean(ud->prefs, "HideAdvancedVideoSettings") && - ghb_settings_get_boolean(ud->settings, "x264UseAdvancedOptions")) + if (ghb_dict_get_bool(ud->prefs, "HideAdvancedVideoSettings") && + ghb_dict_get_bool(ud->settings, "x264UseAdvancedOptions")) { ghb_ui_update(ud, "x264UseAdvancedOptions", ghb_boolean_value(FALSE)); return; } - if (ghb_settings_get_boolean(ud->settings, "x264UseAdvancedOptions")) + if (ghb_dict_get_bool(ud->settings, "x264UseAdvancedOptions")) { ghb_ui_update(ud, "VideoPresetSlider", ghb_int_value(5)); ghb_ui_update(ud, "VideoTune", ghb_string_value("none")); ghb_ui_update(ud, "VideoProfile", ghb_string_value("auto")); ghb_ui_update(ud, "VideoLevel", ghb_string_value("auto")); - char *options = ghb_settings_get_string(ud->settings, "x264Option"); + const char *options = ghb_dict_get_string(ud->settings, "x264Option"); ghb_ui_update(ud, "VideoOptionExtra", ghb_string_value(options)); - g_free(options); } ghb_check_dependency(ud, widget, NULL); diff --git a/gtk/src/x264handler.c b/gtk/src/x264handler.c index e8e2f3f2b..fb041a709 100644 --- a/gtk/src/x264handler.c +++ b/gtk/src/x264handler.c @@ -33,7 +33,7 @@ void ghb_show_hide_advanced_video( signal_user_data_t *ud ) { gboolean hide; - hide = ghb_settings_get_boolean(ud->prefs, "HideAdvancedVideoSettings"); + hide = ghb_dict_get_bool(ud->prefs, "HideAdvancedVideoSettings"); if (hide) { ghb_ui_update(ud, "x264UseAdvancedOptions", ghb_boolean_value(FALSE)); @@ -137,11 +137,11 @@ x264_entry_changed_cb(GtkWidget *widget, signal_user_data_t *ud) if (!ignore_options_update) { GtkWidget *textview; - gchar *options; + const gchar *options; textview = GTK_WIDGET(GHB_WIDGET(ud->builder, "x264Option")); ghb_widget_to_setting(ud->settings, textview); - options = ghb_settings_get_string(ud->settings, "x264Option"); + options = ghb_dict_get_string(ud->settings, "x264Option"); ignore_options_update = TRUE; ghb_x264_parse_options(ud, options); @@ -162,10 +162,8 @@ x264_entry_changed_cb(GtkWidget *widget, signal_user_data_t *ud) gtk_widget_set_tooltip_text(eo, new_tt); g_free(new_tt); - g_free(options); - options = sopts; + g_free(sopts); } - g_free(options); ignore_options_update = FALSE; } } @@ -174,10 +172,11 @@ G_MODULE_EXPORT gboolean x264_focus_out_cb(GtkWidget *widget, GdkEventFocus *event, signal_user_data_t *ud) { - gchar *options, *sopts; + const gchar *options; + gchar *sopts; ghb_widget_to_setting(ud->settings, widget); - options = ghb_settings_get_string(ud->settings, "x264Option"); + options = ghb_dict_get_string(ud->settings, "x264Option"); sopts = sanitize_x264opts(ud, options); ignore_options_update = TRUE; if (sopts != NULL && strcmp(sopts, options) != 0) @@ -185,7 +184,6 @@ x264_focus_out_cb(GtkWidget *widget, GdkEventFocus *event, ghb_ui_update(ud, "x264Option", ghb_string_value(sopts)); ghb_x264_parse_options(ud, sopts); } - g_free(options); g_free(sopts); ignore_options_update = FALSE; return FALSE; @@ -346,7 +344,7 @@ x264_update_double(signal_user_data_t *ud, const gchar *name, const gchar *val) if (val == NULL) return; dval = g_strtod (val, NULL); - ghb_settings_set_double(ud->x264_priv, name, dval); + ghb_dict_set_double(ud->x264_priv, name, dval); } static void @@ -356,7 +354,7 @@ x264_update_int(signal_user_data_t *ud, const gchar *name, const gchar *val) if (val == NULL) return; ival = g_strtod (val, NULL); - ghb_settings_set_int(ud->x264_priv, name, ival); + ghb_dict_set_int(ud->x264_priv, name, ival); } static void @@ -366,7 +364,7 @@ x264_update_int_setting(signal_user_data_t *ud, const gchar *name, const gchar * if (val == NULL) return; ival = g_strtod (val, NULL); - ghb_settings_set_value(ud->x264_priv, name, ghb_int_value(ival)); + ghb_dict_set(ud->x264_priv, name, ghb_int_value_new(ival)); ghb_check_dependency(ud, NULL, name); } @@ -394,18 +392,18 @@ static void x264_update_bool(signal_user_data_t *ud, const gchar *name, const gchar *val) { if (val == NULL) - ghb_settings_set_boolean(ud->x264_priv, name, TRUE); + ghb_dict_set_bool(ud->x264_priv, name, TRUE); else - ghb_settings_set_boolean(ud->x264_priv, name, str_is_true(val)); + ghb_dict_set_bool(ud->x264_priv, name, str_is_true(val)); } static void x264_update_bool_setting(signal_user_data_t *ud, const gchar *name, const gchar *val) { if (val == NULL) - ghb_settings_set_boolean(ud->x264_priv, name, TRUE); + ghb_dict_set_bool(ud->x264_priv, name, TRUE); else - ghb_settings_set_boolean(ud->x264_priv, name, str_is_true(val)); + ghb_dict_set_bool(ud->x264_priv, name, str_is_true(val)); ghb_check_dependency(ud, NULL, name); } @@ -413,7 +411,7 @@ x264_update_bool_setting(signal_user_data_t *ud, const gchar *name, const gchar static void x264_update_combo(signal_user_data_t *ud, const gchar *name, const gchar *val) { - ghb_settings_set_string(ud->x264_priv, name, val); + ghb_dict_set_string(ud->x264_priv, name, val); } static void @@ -442,8 +440,8 @@ x264_update_deblock(signal_user_data_t *ud, const gchar *xval) } } g_free(val); - ghb_settings_set_int(ud->x264_priv, "x264_deblock_alpha", avalue); - ghb_settings_set_int(ud->x264_priv, "x264_deblock_beta", bvalue); + ghb_dict_set_int(ud->x264_priv, "x264_deblock_alpha", avalue); + ghb_dict_set_int(ud->x264_priv, "x264_deblock_beta", bvalue); } static void @@ -465,8 +463,8 @@ x264_update_psy(signal_user_data_t *ud, const gchar *xval) if (xval == NULL) return; x264_parse_psy(xval, &rd_value, &trell_value); - ghb_settings_set_double(ud->x264_priv, "x264_psy_rd", rd_value); - ghb_settings_set_double(ud->x264_priv, "x264_psy_trell", trell_value); + ghb_dict_set_double(ud->x264_priv, "x264_psy_rd", rd_value); + ghb_dict_set_double(ud->x264_priv, "x264_psy_trell", trell_value); } static void do_update(signal_user_data_t *ud, char *name, gint type, char *val) @@ -630,13 +628,11 @@ ghb_x264_parse_options(signal_user_data_t *ud, const gchar *options) gchar* get_deblock_val(signal_user_data_t *ud) { - gchar *alpha, *beta; + int alpha, beta; gchar *result; - alpha = ghb_settings_get_string(ud->x264_priv, "x264_deblock_alpha"); - beta = ghb_settings_get_string(ud->x264_priv, "x264_deblock_beta"); - result = g_strdup_printf("%s,%s", alpha, beta); - g_free(alpha); - g_free(beta); + alpha = ghb_dict_get_int(ud->x264_priv, "x264_deblock_alpha"); + beta = ghb_dict_get_int(ud->x264_priv, "x264_deblock_beta"); + result = g_strdup_printf("%d,%d", alpha, beta); return result; } @@ -645,8 +641,8 @@ get_psy_val(signal_user_data_t *ud) { gdouble rd, trell; gchar *result; - rd = ghb_settings_get_double(ud->x264_priv, "x264_psy_rd"); - trell = ghb_settings_get_double(ud->x264_priv, "x264_psy_trell"); + rd = ghb_dict_get_double(ud->x264_priv, "x264_psy_rd"); + trell = ghb_dict_get_double(ud->x264_priv, "x264_psy_trell"); result = g_strdup_printf("%g|%g", rd, trell); return result; } @@ -676,16 +672,15 @@ x264_opt_update(signal_user_data_t *ud, GtkWidget *widget) if (opt_syns != NULL) { GString *x264opts = g_string_new(""); - gchar *options; + const gchar *options; gchar **split = NULL; gint ii; gboolean foundit = FALSE; - options = ghb_settings_get_string(ud->settings, "x264Option"); + options = ghb_dict_get_string(ud->settings, "x264Option"); if (options) { split = g_strsplit(options, ":", -1); - g_free(options); } for (ii = 0; split && split[ii] != NULL; ii++) { @@ -1006,7 +1001,7 @@ sanitize_x264opts(signal_user_data_t *ud, const gchar *options) split[psy] = g_strdup_printf("psy-rd=%g|0", psy_rd); } } - gint bframes = ghb_settings_get_int(ud->x264_priv, "x264_bframes"); + gint bframes = ghb_dict_get_int(ud->x264_priv, "x264_bframes"); if (bframes == 0) { x264_remove_opt(split, x264_direct_syns); @@ -1058,14 +1053,14 @@ sanitize_x264opts(signal_user_data_t *ud, const gchar *options) void ghb_x264_init(signal_user_data_t *ud) { - ud->x264_priv = ghb_settings_new(); + ud->x264_priv = ghb_dict_new(); } gboolean ghb_background_refresh_x264Option(signal_user_data_t *ud) { const char *opt; - opt = ghb_settings_get_const_string(ud->settings, "x264Option"); + opt = ghb_dict_get_string(ud->settings, "x264Option"); GtkWidget *widget; GtkTextBuffer *buffer; @@ -1093,6 +1088,6 @@ ghb_background_refresh_x264Option(signal_user_data_t *ud) void ghb_update_x264Option(signal_user_data_t *ud, const char *opt) { - ghb_settings_set_string(ud->settings, "x264Option", opt); + ghb_dict_set_string(ud->settings, "x264Option", opt); g_idle_add((GSourceFunc)ghb_background_refresh_x264Option, ud); } |