1 #import "PrefsController.h"
3 @implementation PrefsController
7 NSUserDefaults * defaults;
8 NSDictionary * appDefaults;
10 /* Unless the user specified otherwise, default is to check
11 for update DefAdvancedx264Flags*/
12 defaults = [NSUserDefaults standardUserDefaults];
13 appDefaults = [NSDictionary dictionaryWithObject:@"YES"
14 forKey:@"CheckForUpdates"];
15 appDefaults = [NSDictionary dictionaryWithObject:@"English"
16 forKey:@"DefaultLanguage"];
17 appDefaults = [NSDictionary dictionaryWithObject:@"NO"
18 forKey:@"DefaultMpegName"];
19 appDefaults = [NSDictionary dictionaryWithObject:@"NO"
20 forKey:@"DefaultCrf"];
21 appDefaults = [NSDictionary dictionaryWithObject:@"NO"
22 forKey:@"DefaultDeinterlaceOn"];
23 appDefaults = [NSDictionary dictionaryWithObject:@"YES"
24 forKey:@"DefaultPicSizeAutoiPod"];
25 appDefaults = [NSDictionary dictionaryWithObject:@"NO"
26 forKey:@"PixelRatio"];
27 appDefaults = [NSDictionary dictionaryWithObject:@"NO"
28 forKey:@"DefaultSurroundSound"];
29 appDefaults = [NSDictionary dictionaryWithObject:@""
30 forKey:@"DefAdvancedx264Flags"];
31 appDefaults = [NSDictionary dictionaryWithObject:@"YES"
32 forKey:@"DefaultPresetsDrawerShow"];
33 NSString *defDestDirectory = @"~/Desktop";
34 defDestDirectory = [defDestDirectory stringByExpandingTildeInPath];
35 appDefaults = [NSDictionary dictionaryWithObject:defDestDirectory forKey:@"LastDestinationDirectory"];
37 NSString *defSrcDirectory = @"~/Desktop";
38 defSrcDirectory = [defSrcDirectory stringByExpandingTildeInPath];
39 appDefaults = [NSDictionary dictionaryWithObject:defSrcDirectory forKey:@"LastSourceDirectory"];
41 appDefaults = [NSDictionary dictionaryWithObject:@"NO"
42 forKey:@"DefaultAutoNaming"];
43 appDefaults = [NSDictionary dictionaryWithObject:@"NO"
44 forKey:@"DefaultChapterMarkers"];
45 [defaults registerDefaults: appDefaults];
47 /* fUpdateCheck Check or uncheck according to the preferences */
48 [fUpdateCheck setState: [defaults boolForKey:@"CheckForUpdates"] ?
49 NSOnState : NSOffState];
51 // Fill the languages combobox
52 [fdefaultlanguage removeAllItems];
53 [fdefaultlanguage addItemWithObjectValue: @"Afar"];
54 [fdefaultlanguage addItemWithObjectValue: @"Abkhazian"];
55 [fdefaultlanguage addItemWithObjectValue: @"Afrikaans"];
56 [fdefaultlanguage addItemWithObjectValue: @"Albanian"];
57 [fdefaultlanguage addItemWithObjectValue: @"Amharic"];
58 [fdefaultlanguage addItemWithObjectValue: @"Arabic"];
59 [fdefaultlanguage addItemWithObjectValue: @"Armenian"];
60 [fdefaultlanguage addItemWithObjectValue: @"Assamese"];
61 [fdefaultlanguage addItemWithObjectValue: @"Avestan"];
62 [fdefaultlanguage addItemWithObjectValue: @"Aymara"];
63 [fdefaultlanguage addItemWithObjectValue: @"Azerbaijani"];
64 [fdefaultlanguage addItemWithObjectValue: @"Bashkir"];
65 [fdefaultlanguage addItemWithObjectValue: @"Basque"];
66 [fdefaultlanguage addItemWithObjectValue: @"Belarusian"];
67 [fdefaultlanguage addItemWithObjectValue: @"Bengali"];
68 [fdefaultlanguage addItemWithObjectValue: @"Bihari"];
69 [fdefaultlanguage addItemWithObjectValue: @"Bislama"];
70 [fdefaultlanguage addItemWithObjectValue: @"Bosnian"];
71 [fdefaultlanguage addItemWithObjectValue: @"Breton"];
72 [fdefaultlanguage addItemWithObjectValue: @"Bulgarian"];
73 [fdefaultlanguage addItemWithObjectValue: @"Burmese"];
74 [fdefaultlanguage addItemWithObjectValue: @"Catalan"];
75 [fdefaultlanguage addItemWithObjectValue: @"Chamorro"];
76 [fdefaultlanguage addItemWithObjectValue: @"Chechen"];
77 [fdefaultlanguage addItemWithObjectValue: @"Chichewa; Nyanja"];
78 [fdefaultlanguage addItemWithObjectValue: @"Chinese"];
79 [fdefaultlanguage addItemWithObjectValue: @"Church Slavic"];
80 [fdefaultlanguage addItemWithObjectValue: @"Chuvash"];
81 [fdefaultlanguage addItemWithObjectValue: @"Cornish"];
82 [fdefaultlanguage addItemWithObjectValue: @"Corsican"];
83 [fdefaultlanguage addItemWithObjectValue: @"Croatian"];
84 [fdefaultlanguage addItemWithObjectValue: @"Czech"];
85 [fdefaultlanguage addItemWithObjectValue: @"Dansk"];
86 [fdefaultlanguage addItemWithObjectValue: @"Deutsch"];
87 [fdefaultlanguage addItemWithObjectValue: @"Dzongkha"];
88 [fdefaultlanguage addItemWithObjectValue: @"English"];
89 [fdefaultlanguage addItemWithObjectValue: @"Espanol"];
90 [fdefaultlanguage addItemWithObjectValue: @"Esperanto"];
91 [fdefaultlanguage addItemWithObjectValue: @"Estonian"];
92 [fdefaultlanguage addItemWithObjectValue: @"Faroese"];
93 [fdefaultlanguage addItemWithObjectValue: @"Fijian"];
94 [fdefaultlanguage addItemWithObjectValue: @"Francais"];
95 [fdefaultlanguage addItemWithObjectValue: @"Frisian"];
96 [fdefaultlanguage addItemWithObjectValue: @"Georgian"];
97 [fdefaultlanguage addItemWithObjectValue: @"Gaelic (Scots)"];
98 [fdefaultlanguage addItemWithObjectValue: @"Gallegan"];
99 [fdefaultlanguage addItemWithObjectValue: @"Greek, Modern ()"];
100 [fdefaultlanguage addItemWithObjectValue: @"Guarani"];
101 [fdefaultlanguage addItemWithObjectValue: @"Gujarati"];
102 [fdefaultlanguage addItemWithObjectValue: @"Hebrew"];
103 [fdefaultlanguage addItemWithObjectValue: @"Herero"];
104 [fdefaultlanguage addItemWithObjectValue: @"Hindi"];
105 [fdefaultlanguage addItemWithObjectValue: @"Hiri Motu"];
106 [fdefaultlanguage addItemWithObjectValue: @"Inuktitut"];
107 [fdefaultlanguage addItemWithObjectValue: @"Interlingue"];
108 [fdefaultlanguage addItemWithObjectValue: @"Interlingua"];
109 [fdefaultlanguage addItemWithObjectValue: @"Indonesian"];
110 [fdefaultlanguage addItemWithObjectValue: @"Inupiaq"];
111 [fdefaultlanguage addItemWithObjectValue: @"Irish"];
112 [fdefaultlanguage addItemWithObjectValue: @"Islenska"];
113 [fdefaultlanguage addItemWithObjectValue: @"Italian"];
114 [fdefaultlanguage addItemWithObjectValue: @"Javanese"];
115 [fdefaultlanguage addItemWithObjectValue: @"Japanese"];
116 [fdefaultlanguage addItemWithObjectValue: @"Kalaallisut (Greenlandic)"];
117 [fdefaultlanguage addItemWithObjectValue: @"Kannada"];
118 [fdefaultlanguage addItemWithObjectValue: @"Kashmiri"];
119 [fdefaultlanguage addItemWithObjectValue: @"Kazakh"];
120 [fdefaultlanguage addItemWithObjectValue: @"Khmer"];
121 [fdefaultlanguage addItemWithObjectValue: @"Kikuyu"];
122 [fdefaultlanguage addItemWithObjectValue: @"Kinyarwanda"];
123 [fdefaultlanguage addItemWithObjectValue: @"Kirghiz"];
124 [fdefaultlanguage addItemWithObjectValue: @"Komi"];
125 [fdefaultlanguage addItemWithObjectValue: @"Korean"];
126 [fdefaultlanguage addItemWithObjectValue: @"Kuanyama"];
127 [fdefaultlanguage addItemWithObjectValue: @"Kurdish"];
128 [fdefaultlanguage addItemWithObjectValue: @"Lao"];
129 [fdefaultlanguage addItemWithObjectValue: @"Latin"];
130 [fdefaultlanguage addItemWithObjectValue: @"Latvian"];
131 [fdefaultlanguage addItemWithObjectValue: @"Lingala"];
132 [fdefaultlanguage addItemWithObjectValue: @"Lithuanian"];
133 [fdefaultlanguage addItemWithObjectValue: @"Letzeburgesch"];
134 [fdefaultlanguage addItemWithObjectValue: @"Macedonian"];
135 [fdefaultlanguage addItemWithObjectValue: @"Magyar"];
136 [fdefaultlanguage addItemWithObjectValue: @"Malay"];
137 [fdefaultlanguage addItemWithObjectValue: @"Malayalam"];
138 [fdefaultlanguage addItemWithObjectValue: @"Malagasy"];
139 [fdefaultlanguage addItemWithObjectValue: @"Maltese"];
140 [fdefaultlanguage addItemWithObjectValue: @"Manx"];
141 [fdefaultlanguage addItemWithObjectValue: @"Maori"];
142 [fdefaultlanguage addItemWithObjectValue: @"Marathi"];
143 [fdefaultlanguage addItemWithObjectValue: @"Marshall"];
144 [fdefaultlanguage addItemWithObjectValue: @"Moldavian"];
145 [fdefaultlanguage addItemWithObjectValue: @"Mongolian"];
146 [fdefaultlanguage addItemWithObjectValue: @"Nauru"];
147 [fdefaultlanguage addItemWithObjectValue: @"Navajo"];
148 [fdefaultlanguage addItemWithObjectValue: @"Ndebele, South"];
149 [fdefaultlanguage addItemWithObjectValue: @"Ndebele, North"];
150 [fdefaultlanguage addItemWithObjectValue: @"Ndonga"];
151 [fdefaultlanguage addItemWithObjectValue: @"Nederlands"];
152 [fdefaultlanguage addItemWithObjectValue: @"Nepali"];
153 [fdefaultlanguage addItemWithObjectValue: @"Northern Sami"];
154 [fdefaultlanguage addItemWithObjectValue: @"Norwegian"];
155 [fdefaultlanguage addItemWithObjectValue: @"Norwegian Bokmal"];
156 [fdefaultlanguage addItemWithObjectValue: @"Norwegian Nynorsk"];
157 [fdefaultlanguage addItemWithObjectValue: @"Occitan (post 1500); Provencal"];
158 [fdefaultlanguage addItemWithObjectValue: @"Oriya"];
159 [fdefaultlanguage addItemWithObjectValue: @"Oromo"];
160 [fdefaultlanguage addItemWithObjectValue: @"Ossetian; Ossetic"];
161 [fdefaultlanguage addItemWithObjectValue: @"Panjabi"];
162 [fdefaultlanguage addItemWithObjectValue: @"Persian"];
163 [fdefaultlanguage addItemWithObjectValue: @"Pali"];
164 [fdefaultlanguage addItemWithObjectValue: @"Polish"];
165 [fdefaultlanguage addItemWithObjectValue: @"Portugues"];
166 [fdefaultlanguage addItemWithObjectValue: @"Pushto"];
167 [fdefaultlanguage addItemWithObjectValue: @"Quechua"];
168 [fdefaultlanguage addItemWithObjectValue: @"Raeto-Romance"];
169 [fdefaultlanguage addItemWithObjectValue: @"Romanian"];
170 [fdefaultlanguage addItemWithObjectValue: @"Rundi"];
171 [fdefaultlanguage addItemWithObjectValue: @"Russian"];
172 [fdefaultlanguage addItemWithObjectValue: @"Sango"];
173 [fdefaultlanguage addItemWithObjectValue: @"Sanskrit"];
174 [fdefaultlanguage addItemWithObjectValue: @"Sardinian"];
175 [fdefaultlanguage addItemWithObjectValue: @"Serbian"];
176 [fdefaultlanguage addItemWithObjectValue: @"Sinhalese"];
177 [fdefaultlanguage addItemWithObjectValue: @"Slovak"];
178 [fdefaultlanguage addItemWithObjectValue: @"Slovenian"];
179 [fdefaultlanguage addItemWithObjectValue: @"Samoan"];
180 [fdefaultlanguage addItemWithObjectValue: @"Shona"];
181 [fdefaultlanguage addItemWithObjectValue: @"Sindhi"];
182 [fdefaultlanguage addItemWithObjectValue: @"Somali"];
183 [fdefaultlanguage addItemWithObjectValue: @"Sotho, Southern"];
184 [fdefaultlanguage addItemWithObjectValue: @"Sundanese"];
185 [fdefaultlanguage addItemWithObjectValue: @"Suomi"];
186 [fdefaultlanguage addItemWithObjectValue: @"Svenska"];
187 [fdefaultlanguage addItemWithObjectValue: @"Swahili"];
188 [fdefaultlanguage addItemWithObjectValue: @"Swati"];
189 [fdefaultlanguage addItemWithObjectValue: @"Tahitian"];
190 [fdefaultlanguage addItemWithObjectValue: @"Tamil"];
191 [fdefaultlanguage addItemWithObjectValue: @"Tatar"];
192 [fdefaultlanguage addItemWithObjectValue: @"Telugu"];
193 [fdefaultlanguage addItemWithObjectValue: @"Tajik"];
194 [fdefaultlanguage addItemWithObjectValue: @"Tagalog"];
195 [fdefaultlanguage addItemWithObjectValue: @"Thai"];
196 [fdefaultlanguage addItemWithObjectValue: @"Tibetan"];
197 [fdefaultlanguage addItemWithObjectValue: @"Tigrinya"];
198 [fdefaultlanguage addItemWithObjectValue: @"Tonga (Tonga Islands)"];
199 [fdefaultlanguage addItemWithObjectValue: @"Tswana"];
200 [fdefaultlanguage addItemWithObjectValue: @"Tsonga"];
201 [fdefaultlanguage addItemWithObjectValue: @"Turkish"];
202 [fdefaultlanguage addItemWithObjectValue: @"Turkmen"];
203 [fdefaultlanguage addItemWithObjectValue: @"Twi"];
204 [fdefaultlanguage addItemWithObjectValue: @"Uighur"];
205 [fdefaultlanguage addItemWithObjectValue: @"Ukrainian"];
206 [fdefaultlanguage addItemWithObjectValue: @"Urdu"];
207 [fdefaultlanguage addItemWithObjectValue: @"Uzbek"];
208 [fdefaultlanguage addItemWithObjectValue: @"Vietnamese"];
209 [fdefaultlanguage addItemWithObjectValue: @"Volapk"];
210 [fdefaultlanguage addItemWithObjectValue: @"Welsh"];
211 [fdefaultlanguage addItemWithObjectValue: @"Wolof"];
212 [fdefaultlanguage addItemWithObjectValue: @"Xhosa"];
213 [fdefaultlanguage addItemWithObjectValue: @"Yiddish"];
214 [fdefaultlanguage addItemWithObjectValue: @"Yoruba"];
215 [fdefaultlanguage addItemWithObjectValue: @"Zhuang"];
216 [fdefaultlanguage addItemWithObjectValue: @"Zulu"];
217 [fdefaultlanguage setStringValue:@"English"];
219 /* If a Default Language is selected then write it otherwise let English as default */
221 if ([defaults stringForKey:@"DefaultLanguage"]!=NULL)
223 [fdefaultlanguage setStringValue:[defaults stringForKey:@"DefaultLanguage"]];
225 [fdefaultlanguage selectItemWithObjectValue:[defaults stringForKey:@"DefaultLanguage"]];
230 /* fFileExtItunes Check or uncheck according to the preferences */
231 [fFileExtItunes setState: [defaults boolForKey:@"DefaultMpegName"] ?
232 NSOnState : NSOffState];
234 /* fDefCrf Check or uncheck according to the preferences*/
235 [fDefCrf setState: [defaults boolForKey:@"DefaultCrf"] ?
236 NSOnState : NSOffState];
238 /* fDefDeinterlace Check or uncheck according to the preferences*/
239 [fDefDeinterlace setState: [defaults boolForKey:@"DefaultDeinterlaceOn"] ?
240 NSOnState : NSOffState];
242 /* fDefPicSizeAutoSetipod Check or uncheck according to the preferences*/
243 [fDefPicSizeAutoSetipod setState: [defaults boolForKey:@"DefaultPicSizeAutoiPod"] ?
244 NSOnState : NSOffState];
246 [fDefPixelRatio setState: [defaults boolForKey:@"PixelRatio"] ?
247 NSOnState : NSOffState];
249 /* fDefAudioSurround Check or uncheck according to the preferences */
250 [fDefAudioSurround setState: [defaults boolForKey:@"DefaultSurroundSound"] ?
251 NSOnState : NSOffState];
253 /* Insert default DefAdvanced x264 Flag here */
254 if ([defaults stringForKey:@"DefAdvancedx264Flags"]!=NULL)
256 [fDefAdvancedx264FlagsView setString:[defaults stringForKey:@"DefAdvancedx264Flags"]];
259 /* fDefPresetDrawerShow Check or uncheck according to the preferences*/
260 [fDefPresetDrawerShow setState: [defaults boolForKey:@"DefaultPresetsDrawerShow"] ?
261 NSOnState : NSOffState];
262 /* fDefAutoNaming Check or uncheck according to the preferences*/
263 [fDefAutoNaming setState: [defaults boolForKey:@"DefaultAutoNaming"] ?
264 NSOnState : NSOffState];
265 /* fDefChapterMarkers Check or uncheck according to the preferences*/
266 [fDefChapterMarkers setState: [defaults boolForKey:@"DefaultChapterMarkers"] ?
267 NSOnState : NSOffState];
271 - (IBAction) OpenPanel: (id) sender;
273 [NSApp runModalForWindow: fPanel];
276 - (IBAction) ClosePanel: (id) sender;
278 [self CheckChanged: sender];
280 [fPanel orderOut: sender];
283 - (IBAction) CheckChanged: (id) sender
285 NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
287 /* Check Update CheckForUpdates Set */
288 if( [fUpdateCheck state] == NSOnState )
290 [defaults setObject:@"YES" forKey:@"CheckForUpdates"];
294 [defaults setObject:@"NO" forKey:@"CheckForUpdates"];
297 /* Preferred Language Combobox Set */
299 [defaults setObject:[fdefaultlanguage objectValueOfSelectedItem] forKey:@"DefaultLanguage"];
302 /* File Extension Itunes Set */
304 if( [fFileExtItunes state] == NSOnState )
306 [defaults setObject:@"YES" forKey:@"DefaultMpegName"];
310 [defaults setObject:@"NO" forKey:@"DefaultMpegName"];
313 /* Use CRF for constant mode */
315 if( [fDefCrf state] == NSOnState )
317 [defaults setObject:@"YES" forKey:@"DefaultCrf"];
321 [defaults setObject:@"NO" forKey:@"DefaultCrf"];
324 /* Use Deinterlace on as a default*/
326 if( [fDefDeinterlace state] == NSOnState )
328 [defaults setObject:@"YES" forKey:@"DefaultDeinterlaceOn"];
332 [defaults setObject:@"NO" forKey:@"DefaultDeinterlaceOn"];
335 /* Use Picture size set to 640 upon x264 (iPod) Selection as a default*/
337 if( [fDefPicSizeAutoSetipod state] == NSOnState )
339 [defaults setObject:@"YES" forKey:@"DefaultPicSizeAutoiPod"];
343 [defaults setObject:@"NO" forKey:@"DefaultPicSizeAutoiPod"];
348 if( [fDefPixelRatio state] == NSOnState )
350 [defaults setObject:@"YES" forKey:@"PixelRatio"];
354 [defaults setObject:@"NO" forKey:@"PixelRatio"];
358 /* Use Surround Sound if available*/
360 if( [fDefAudioSurround state] == NSOnState )
362 [defaults setObject:@"YES" forKey:@"DefaultSurroundSound"];
366 [defaults setObject:@"NO" forKey:@"DefaultSurroundSound"];
370 /*Advanced x264 Flag string into */
371 [defaults setObject:[fDefAdvancedx264FlagsView string] forKey:@"DefAdvancedx264Flags"];
373 /* Show Presets Drawer upon launch*/
375 if( [fDefPresetDrawerShow state] == NSOnState )
377 [defaults setObject:@"YES" forKey:@"DefaultPresetsDrawerShow"];
381 [defaults setObject:@"NO" forKey:@"DefaultPresetsDrawerShow"];
384 /* Use Auto Naming */
386 if( [fDefAutoNaming state] == NSOnState )
388 [defaults setObject:@"YES" forKey:@"DefaultAutoNaming"];
392 [defaults setObject:@"NO" forKey:@"DefaultAutoNaming"];
394 /* Chapter Markers */
395 if( [fDefChapterMarkers state] == NSOnState )
397 [defaults setObject:@"YES" forKey:@"DefaultChapterMarkers"];
401 [defaults setObject:@"NO" forKey:@"DefaultChapterMarkers"];