OSDN Git Service

929ddb2c07849419f55ebedcb87ba640c96fca93
[handbrake-jp/handbrake-jp-git.git] / gtk / src / widgetdeps.c
1 #include <glib.h>
2 #include <glib-object.h>
3 #include <glib/gstdio.h>
4 #include <string.h>
5 #include "values.h"
6 #include "plist.h"
7
8 typedef struct
9 {
10         const gchar *widget_name;
11         const gchar *dep_name;
12         const gchar *enable_value;
13         const gboolean disable_if_equal;
14         const gboolean hide;
15 } dependency_t;
16
17 static dependency_t dep_map[] =
18 {
19         {"title", "queue_add", "none", TRUE, FALSE},
20         {"title", "queue_add_menu", "none", TRUE, FALSE},
21         {"title", "show_picture", "none", TRUE, FALSE},
22         {"title", "show_preview_menu", "none", TRUE, FALSE},
23         {"title", "preview_frame", "none", TRUE, FALSE},
24         {"title", "picture_label", "none", TRUE, FALSE},
25         {"title", "picture_tab", "none", TRUE, FALSE},
26         {"title", "chapters_label", "none", TRUE, FALSE},
27         {"title", "chapters_tab", "none", TRUE, FALSE},
28         {"title", "start_chapter", "none", TRUE, FALSE},
29         {"title", "end_chapter", "none", TRUE, FALSE},
30         {"title", "angle", "none", TRUE, FALSE},
31         {"use_dvdnav", "angle", "FALSE", TRUE, TRUE},
32         {"use_dvdnav", "angle_label", "FALSE", TRUE, TRUE},
33         {"vquality_type_bitrate", "VideoAvgBitrate", "TRUE", FALSE, FALSE},
34         {"vquality_type_target", "VideoTargetSize", "TRUE", FALSE, FALSE},
35         {"vquality_type_constant", "VideoQualitySlider", "TRUE", FALSE, FALSE},
36         {"vquality_type_constant", "constant_rate_factor", "TRUE", FALSE, FALSE},
37         {"vquality_type_constant", "VideoTwoPass", "TRUE", TRUE, FALSE},
38         {"vquality_type_constant", "VideoTurboTwoPass", "TRUE", TRUE, FALSE},
39         {"VideoTwoPass", "VideoTurboTwoPass", "TRUE", FALSE, FALSE},
40         {"FileFormat", "Mp4LargeFile", "mp4", FALSE, TRUE},
41         {"FileFormat", "Mp4HttpOptimize", "mp4", FALSE, TRUE},
42         {"FileFormat", "Mp4iPodCompatible", "mp4", FALSE, TRUE},
43         {"PictureDecombDeinterlace", "PictureDeinterlace", "TRUE", TRUE, TRUE},
44         {"PictureDecombDeinterlace", "PictureDeinterlaceCustom", "TRUE", TRUE, TRUE},
45         {"PictureDecombDeinterlace", "PictureDeinterlaceLabel", "TRUE", TRUE, TRUE},
46         {"PictureDecombDeinterlace", "PictureDecomb", "FALSE", TRUE, TRUE},
47         {"PictureDecombDeinterlace", "PictureDecombCustom", "FALSE", TRUE, TRUE},
48         {"PictureDecombDeinterlace", "PictureDecombLabel", "FALSE", TRUE, TRUE},
49         {"PictureDeinterlace", "PictureDeinterlaceCustom", "custom", FALSE, TRUE},
50         {"PictureDenoise", "PictureDenoiseCustom", "custom", FALSE, TRUE},
51         {"PictureDecomb", "PictureDecombCustom", "custom", FALSE, TRUE},
52         {"PictureDetelecine", "PictureDetelecineCustom", "custom", FALSE, TRUE},
53         {"PictureAutoCrop", "PictureTopCrop", "FALSE", FALSE, FALSE},
54         {"PictureAutoCrop", "PictureBottomCrop", "FALSE", FALSE, FALSE},
55         {"PictureAutoCrop", "PictureLeftCrop", "FALSE", FALSE, FALSE},
56         {"PictureAutoCrop", "PictureRightCrop", "FALSE", FALSE, FALSE},
57         {"VideoEncoder", "x264_tab", "x264", FALSE, FALSE},
58         {"VideoEncoder", "x264_tab_label", "x264", FALSE, FALSE},
59         {"VideoEncoder", "Mp4iPodCompatible", "x264", FALSE, FALSE},
60         {"AudioEncoder", "AudioBitrate", "ac3|dts|auto", TRUE, FALSE},
61         {"AudioEncoder", "AudioSamplerate", "ac3|dts|auto", TRUE, FALSE},
62         {"AudioEncoder", "AudioMixdown", "ac3|dts|auto", TRUE, FALSE},
63         {"AudioEncoder", "AudioTrackDRCSlider", "ac3|dts|auto", TRUE, FALSE},
64         {"AudioEncoder", "drc_label", "ac3|dts|auto", TRUE, FALSE},
65         {"x264_bframes", "x264_weighted_bframes", "0", TRUE, FALSE},
66         {"x264_bframes", "x264_bpyramid", "<2", TRUE, FALSE},
67         {"x264_bframes", "x264_direct", "0", TRUE, FALSE},
68         {"x264_bframes", "x264_b_adapt", "0", TRUE, FALSE},
69         {"x264_refs", "x264_mixed_refs", "<2", TRUE, FALSE},
70         {"x264_cabac", "x264_trellis", "TRUE", FALSE, FALSE},
71         {"x264_subme", "x264_psy_rd", "<6", TRUE, FALSE},
72         {"x264_subme", "x264_psy_trell", "<6", TRUE, FALSE},
73         {"x264_cabac", "x264_psy_trell", "TRUE", FALSE, FALSE},
74         {"x264_trellis", "x264_psy_trell", "0", TRUE, FALSE},
75         {"x264_mbtree", "x264_bpyramid", "TRUE", TRUE, FALSE},
76         {"ChapterMarkers", "chapters_list", "TRUE", FALSE, FALSE},
77         {"use_source_name", "chapters_in_destination", "TRUE", FALSE, FALSE},
78         {"use_source_name", "title_no_in_destination", "TRUE", FALSE, FALSE},
79 };
80
81 int
82 main(gint argc, gchar *argv[])
83 {
84         gint ii, jj;
85         GValue *top;
86         gint count = sizeof(dep_map) / sizeof(dependency_t);
87
88         g_type_init();
89
90         top = ghb_dict_value_new();
91         for (ii = 0; ii < count; ii++)
92         {
93                 const gchar *name;
94                 GValue *array;
95
96                 name = dep_map[ii].widget_name;
97                 if (ghb_dict_lookup(top, name))
98                         continue;
99                 array = ghb_array_value_new(8);
100                 for (jj = 0; jj < count; jj++)
101                 {
102                         if (strcmp(name, dep_map[jj].widget_name) == 0)
103                         {
104                                 ghb_array_append(array,
105                                         ghb_value_dup(ghb_string_value(dep_map[jj].dep_name)));
106                         }
107                 }
108                 ghb_dict_insert(top, g_strdup(name), array);
109         }
110         ghb_plist_write_file("widget.deps", top);
111
112         // reverse map
113         top = ghb_dict_value_new();
114         for (ii = 0; ii < count; ii++)
115         {
116                 const gchar *name;
117                 GValue *array;
118
119                 name = dep_map[ii].dep_name;
120                 if (ghb_dict_lookup(top, name))
121                         continue;
122                 array = ghb_array_value_new(8);
123                 for (jj = 0; jj < count; jj++)
124                 {
125                         if (strcmp(name, dep_map[jj].dep_name) == 0)
126                         {
127                                 GValue *data;
128                                 data = ghb_array_value_new(3);
129                                 ghb_array_append(data, ghb_value_dup(
130                                         ghb_string_value(dep_map[jj].widget_name)));
131                                 ghb_array_append(data, ghb_value_dup(
132                                         ghb_string_value(dep_map[jj].enable_value)));
133                                 ghb_array_append(data, ghb_value_dup(
134                                         ghb_boolean_value(dep_map[jj].disable_if_equal)));
135                                 ghb_array_append(data, ghb_value_dup(
136                                         ghb_boolean_value(dep_map[jj].hide)));
137                                 ghb_array_append(array, data);
138                         }
139                 }
140                 ghb_dict_insert(top, g_strdup(name), array);
141         }
142         ghb_plist_write_file("widget_reverse.deps", top);
143         return 0;
144 }
145