summaryrefslogtreecommitdiffstats
path: root/gtk/src/settings.h
blob: 25b9d6310d5bbd912f0af037636640caf1248202 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Library General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301,  USA
 */
#if !defined(_SETTINGS_H_)
#define _SETTINGS_H_

#include <gtk/gtk.h>

#define PRESET_CUSTOM	1
#define PRESET_DEFAULT	2

#define GHB_WIDGET(b,n)	GTK_WIDGET(gtk_builder_get_object ((b), (n)))
//#define GHB_WIDGET(b,n)	GTK_WIDGET(debug_get_object((b), (n)))
#define GHB_ACTION(b,n)	GTK_ACTION(gtk_builder_get_object ((b), (n)))
#define GHB_OBJECT(b,n)	gtk_builder_get_object ((b), (n))

GObject* debug_get_object(GtkBuilder *b, const gchar *n);

enum
{
	GHB_STATE_IDLE 		= 0x00,
	GHB_STATE_SCANNING 	= 0x02,
	GHB_STATE_SCANDONE 	= 0x04,
	GHB_STATE_WORKING 	= 0x08,
	GHB_STATE_WORKDONE 	= 0x10,
	GHB_STATE_PAUSED 	= 0x20,
	GHB_STATE_MUXING 	= 0x40,
};

typedef struct
{
	gchar *current_dvd_device;
	gboolean debug;
	gboolean dont_clear_presets;
	GtkBuilder *builder;
	GHashTable *settings;
	GSList *audio_settings;
	gchar **chapter_list;
	GSList *queue;
	GIOChannel *activity_log;
} signal_user_data_t;

enum
{
	GHB_QUEUE_PENDING,
	GHB_QUEUE_RUNNING,
	GHB_QUEUE_CANCELED,
	GHB_QUEUE_DONE,
};

typedef struct
{
	gint unique_id;
	gint status;
	GHashTable *settings;
	GSList *audio_settings;
	gchar **chapter_list;
} job_settings_t;

typedef struct
{
	gint index;
	gchar *option;
	gchar *shortOpt;
	gint ivalue;
	gdouble dvalue;
	gchar *svalue;
} setting_value_t;

GHashTable* ghb_settings_new();
void ghb_settings_set(GHashTable *settings, const gchar *key, 
					  setting_value_t *value);
void ghb_settings_set_string(GHashTable *settings, const gchar *key, const gchar *str);
void ghb_settings_set_dbl(GHashTable *settings, const gchar *key, gdouble dvalue);
void ghb_settings_copy(GHashTable *settings, const gchar *key, const setting_value_t *value);
const setting_value_t* ghb_settings_get(GHashTable *settings, const gchar *key);
gboolean ghb_settings_get_bool(GHashTable *settings, const gchar *key);
gint ghb_settings_get_index(GHashTable *settings, const gchar *key);
gint ghb_settings_get_int(GHashTable *settings, const gchar *key);
gdouble ghb_settings_get_dbl(GHashTable *settings, const gchar *key);
setting_value_t* ghb_widget_value(GtkWidget *widget);
gchar* ghb_widget_short_opt(GtkWidget *widget);
gchar* ghb_widget_option(GtkWidget *widget);
gchar* ghb_widget_string(GtkWidget *widget);
gint ghb_widget_int(GtkWidget *widget);
gdouble ghb_widget_dbl(GtkWidget *widget);
gint ghb_widget_index(GtkWidget *widget);

const gchar* ghb_settings_get_string(GHashTable *settings, const gchar *key);
const gchar* ghb_settings_get_option(GHashTable *settings, const gchar *name);
const gchar* ghb_settings_get_short_opt(GHashTable *settings, const gchar *key);
GHashTable* ghb_settings_dup(GHashTable *settings);
void ghb_widget_to_setting(GHashTable *settings, GtkWidget *widget);
int ghb_ui_update(signal_user_data_t *ud, const gchar *key, const gchar *value);
int ghb_ui_update_int(signal_user_data_t *ud, const gchar *key, gint ivalue);
void ghb_settings_save(signal_user_data_t *ud, const gchar *name);
void ghb_presets_load(signal_user_data_t *ud);
void ghb_presets_reload(signal_user_data_t *ud);
void ghb_set_preset(signal_user_data_t *ud, const gchar *name);
void ghb_update_from_preset( signal_user_data_t *ud, 
							const gchar *name, const gchar *key);
gchar** ghb_presets_get_names();
gchar** ghb_presets_get_descriptions();
const gchar* ghb_presets_get_name(gint index);
gboolean ghb_presets_remove(GHashTable *settings, const gchar *name);
void ghb_presets_revert(signal_user_data_t *ud, const gchar *name);
GdkColor* ghb_presets_color(gboolean modified);
const gchar* ghb_presets_current_name();
gint ghb_presets_list_index(const gchar *name);
gint ghb_preset_flags(const gchar *name, gint *index);
void ghb_prefs_load(signal_user_data_t *ud);
void ghb_prefs_to_ui(signal_user_data_t *ud);
void ghb_prefs_save(GHashTable *settings);
void ghb_pref_save(GHashTable *settings, const gchar *key);
void ghb_set_preset_default(GHashTable *settings);
void ghb_x264_parse_options(signal_user_data_t *ud, const gchar *options);
void ghb_x264_opt_update(signal_user_data_t *ud, GtkWidget *widget);
gchar* ghb_sanitize_x264opts(signal_user_data_t *ud, const gchar *options);
gint ghb_pref_acount();
gint ghb_pref_acodec(gint index);
gint ghb_pref_bitrate(gint index);
gint ghb_pref_rate(gint index);
gint ghb_pref_mix(gint index);
gdouble ghb_pref_drc(gint index);

#endif // _SETTINGS_H_