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"];
36 appDefaults = [NSDictionary dictionaryWithObject:@"NO"
37 forKey:@"DefaultAutoNaming"];
38 [defaults registerDefaults: appDefaults];
40 /* fUpdateCheck Check or uncheck according to the preferences */
41 [fUpdateCheck setState: [defaults boolForKey:@"CheckForUpdates"] ?
42 NSOnState : NSOffState];
44 // Fill the languages combobox
45 [fdefaultlanguage removeAllItems];
46 [fdefaultlanguage addItemWithObjectValue: @"Afar"];
47 [fdefaultlanguage addItemWithObjectValue: @"Abkhazian"];
48 [fdefaultlanguage addItemWithObjectValue: @"Afrikaans"];
49 [fdefaultlanguage addItemWithObjectValue: @"Albanian"];
50 [fdefaultlanguage addItemWithObjectValue: @"Amharic"];
51 [fdefaultlanguage addItemWithObjectValue: @"Arabic"];
52 [fdefaultlanguage addItemWithObjectValue: @"Armenian"];
53 [fdefaultlanguage addItemWithObjectValue: @"Assamese"];
54 [fdefaultlanguage addItemWithObjectValue: @"Avestan"];
55 [fdefaultlanguage addItemWithObjectValue: @"Aymara"];
56 [fdefaultlanguage addItemWithObjectValue: @"Azerbaijani"];
57 [fdefaultlanguage addItemWithObjectValue: @"Bashkir"];
58 [fdefaultlanguage addItemWithObjectValue: @"Basque"];
59 [fdefaultlanguage addItemWithObjectValue: @"Belarusian"];
60 [fdefaultlanguage addItemWithObjectValue: @"Bengali"];
61 [fdefaultlanguage addItemWithObjectValue: @"Bihari"];
62 [fdefaultlanguage addItemWithObjectValue: @"Bislama"];
63 [fdefaultlanguage addItemWithObjectValue: @"Bosnian"];
64 [fdefaultlanguage addItemWithObjectValue: @"Breton"];
65 [fdefaultlanguage addItemWithObjectValue: @"Bulgarian"];
66 [fdefaultlanguage addItemWithObjectValue: @"Burmese"];
67 [fdefaultlanguage addItemWithObjectValue: @"Catalan"];
68 [fdefaultlanguage addItemWithObjectValue: @"Chamorro"];
69 [fdefaultlanguage addItemWithObjectValue: @"Chechen"];
70 [fdefaultlanguage addItemWithObjectValue: @"Chichewa; Nyanja"];
71 [fdefaultlanguage addItemWithObjectValue: @"Chinese"];
72 [fdefaultlanguage addItemWithObjectValue: @"Church Slavic"];
73 [fdefaultlanguage addItemWithObjectValue: @"Chuvash"];
74 [fdefaultlanguage addItemWithObjectValue: @"Cornish"];
75 [fdefaultlanguage addItemWithObjectValue: @"Corsican"];
76 [fdefaultlanguage addItemWithObjectValue: @"Croatian"];
77 [fdefaultlanguage addItemWithObjectValue: @"Czech"];
78 [fdefaultlanguage addItemWithObjectValue: @"Dansk"];
79 [fdefaultlanguage addItemWithObjectValue: @"Deutsch"];
80 [fdefaultlanguage addItemWithObjectValue: @"Dzongkha"];
81 [fdefaultlanguage addItemWithObjectValue: @"English"];
82 [fdefaultlanguage addItemWithObjectValue: @"Espanol"];
83 [fdefaultlanguage addItemWithObjectValue: @"Esperanto"];
84 [fdefaultlanguage addItemWithObjectValue: @"Estonian"];
85 [fdefaultlanguage addItemWithObjectValue: @"Faroese"];
86 [fdefaultlanguage addItemWithObjectValue: @"Fijian"];
87 [fdefaultlanguage addItemWithObjectValue: @"Francais"];
88 [fdefaultlanguage addItemWithObjectValue: @"Frisian"];
89 [fdefaultlanguage addItemWithObjectValue: @"Georgian"];
90 [fdefaultlanguage addItemWithObjectValue: @"Gaelic (Scots)"];
91 [fdefaultlanguage addItemWithObjectValue: @"Gallegan"];
92 [fdefaultlanguage addItemWithObjectValue: @"Greek, Modern ()"];
93 [fdefaultlanguage addItemWithObjectValue: @"Guarani"];
94 [fdefaultlanguage addItemWithObjectValue: @"Gujarati"];
95 [fdefaultlanguage addItemWithObjectValue: @"Hebrew"];
96 [fdefaultlanguage addItemWithObjectValue: @"Herero"];
97 [fdefaultlanguage addItemWithObjectValue: @"Hindi"];
98 [fdefaultlanguage addItemWithObjectValue: @"Hiri Motu"];
99 [fdefaultlanguage addItemWithObjectValue: @"Inuktitut"];
100 [fdefaultlanguage addItemWithObjectValue: @"Interlingue"];
101 [fdefaultlanguage addItemWithObjectValue: @"Interlingua"];
102 [fdefaultlanguage addItemWithObjectValue: @"Indonesian"];
103 [fdefaultlanguage addItemWithObjectValue: @"Inupiaq"];
104 [fdefaultlanguage addItemWithObjectValue: @"Irish"];
105 [fdefaultlanguage addItemWithObjectValue: @"Islenska"];
106 [fdefaultlanguage addItemWithObjectValue: @"Italian"];
107 [fdefaultlanguage addItemWithObjectValue: @"Javanese"];
108 [fdefaultlanguage addItemWithObjectValue: @"Japanese"];
109 [fdefaultlanguage addItemWithObjectValue: @"Kalaallisut (Greenlandic)"];
110 [fdefaultlanguage addItemWithObjectValue: @"Kannada"];
111 [fdefaultlanguage addItemWithObjectValue: @"Kashmiri"];
112 [fdefaultlanguage addItemWithObjectValue: @"Kazakh"];
113 [fdefaultlanguage addItemWithObjectValue: @"Khmer"];
114 [fdefaultlanguage addItemWithObjectValue: @"Kikuyu"];
115 [fdefaultlanguage addItemWithObjectValue: @"Kinyarwanda"];
116 [fdefaultlanguage addItemWithObjectValue: @"Kirghiz"];
117 [fdefaultlanguage addItemWithObjectValue: @"Komi"];
118 [fdefaultlanguage addItemWithObjectValue: @"Korean"];
119 [fdefaultlanguage addItemWithObjectValue: @"Kuanyama"];
120 [fdefaultlanguage addItemWithObjectValue: @"Kurdish"];
121 [fdefaultlanguage addItemWithObjectValue: @"Lao"];
122 [fdefaultlanguage addItemWithObjectValue: @"Latin"];
123 [fdefaultlanguage addItemWithObjectValue: @"Latvian"];
124 [fdefaultlanguage addItemWithObjectValue: @"Lingala"];
125 [fdefaultlanguage addItemWithObjectValue: @"Lithuanian"];
126 [fdefaultlanguage addItemWithObjectValue: @"Letzeburgesch"];
127 [fdefaultlanguage addItemWithObjectValue: @"Macedonian"];
128 [fdefaultlanguage addItemWithObjectValue: @"Magyar"];
129 [fdefaultlanguage addItemWithObjectValue: @"Malay"];
130 [fdefaultlanguage addItemWithObjectValue: @"Malayalam"];
131 [fdefaultlanguage addItemWithObjectValue: @"Malagasy"];
132 [fdefaultlanguage addItemWithObjectValue: @"Maltese"];
133 [fdefaultlanguage addItemWithObjectValue: @"Manx"];
134 [fdefaultlanguage addItemWithObjectValue: @"Maori"];
135 [fdefaultlanguage addItemWithObjectValue: @"Marathi"];
136 [fdefaultlanguage addItemWithObjectValue: @"Marshall"];
137 [fdefaultlanguage addItemWithObjectValue: @"Moldavian"];
138 [fdefaultlanguage addItemWithObjectValue: @"Mongolian"];
139 [fdefaultlanguage addItemWithObjectValue: @"Nauru"];
140 [fdefaultlanguage addItemWithObjectValue: @"Navajo"];
141 [fdefaultlanguage addItemWithObjectValue: @"Ndebele, South"];
142 [fdefaultlanguage addItemWithObjectValue: @"Ndebele, North"];
143 [fdefaultlanguage addItemWithObjectValue: @"Ndonga"];
144 [fdefaultlanguage addItemWithObjectValue: @"Nederlands"];
145 [fdefaultlanguage addItemWithObjectValue: @"Nepali"];
146 [fdefaultlanguage addItemWithObjectValue: @"Northern Sami"];
147 [fdefaultlanguage addItemWithObjectValue: @"Norwegian"];
148 [fdefaultlanguage addItemWithObjectValue: @"Norwegian Bokmal"];
149 [fdefaultlanguage addItemWithObjectValue: @"Norwegian Nynorsk"];
150 [fdefaultlanguage addItemWithObjectValue: @"Occitan (post 1500); Provencal"];
151 [fdefaultlanguage addItemWithObjectValue: @"Oriya"];
152 [fdefaultlanguage addItemWithObjectValue: @"Oromo"];
153 [fdefaultlanguage addItemWithObjectValue: @"Ossetian; Ossetic"];
154 [fdefaultlanguage addItemWithObjectValue: @"Panjabi"];
155 [fdefaultlanguage addItemWithObjectValue: @"Persian"];
156 [fdefaultlanguage addItemWithObjectValue: @"Pali"];
157 [fdefaultlanguage addItemWithObjectValue: @"Polish"];
158 [fdefaultlanguage addItemWithObjectValue: @"Portugues"];
159 [fdefaultlanguage addItemWithObjectValue: @"Pushto"];
160 [fdefaultlanguage addItemWithObjectValue: @"Quechua"];
161 [fdefaultlanguage addItemWithObjectValue: @"Raeto-Romance"];
162 [fdefaultlanguage addItemWithObjectValue: @"Romanian"];
163 [fdefaultlanguage addItemWithObjectValue: @"Rundi"];
164 [fdefaultlanguage addItemWithObjectValue: @"Russian"];
165 [fdefaultlanguage addItemWithObjectValue: @"Sango"];
166 [fdefaultlanguage addItemWithObjectValue: @"Sanskrit"];
167 [fdefaultlanguage addItemWithObjectValue: @"Sardinian"];
168 [fdefaultlanguage addItemWithObjectValue: @"Serbian"];
169 [fdefaultlanguage addItemWithObjectValue: @"Sinhalese"];
170 [fdefaultlanguage addItemWithObjectValue: @"Slovak"];
171 [fdefaultlanguage addItemWithObjectValue: @"Slovenian"];
172 [fdefaultlanguage addItemWithObjectValue: @"Samoan"];
173 [fdefaultlanguage addItemWithObjectValue: @"Shona"];
174 [fdefaultlanguage addItemWithObjectValue: @"Sindhi"];
175 [fdefaultlanguage addItemWithObjectValue: @"Somali"];
176 [fdefaultlanguage addItemWithObjectValue: @"Sotho, Southern"];
177 [fdefaultlanguage addItemWithObjectValue: @"Sundanese"];
178 [fdefaultlanguage addItemWithObjectValue: @"Suomi"];
179 [fdefaultlanguage addItemWithObjectValue: @"Svenska"];
180 [fdefaultlanguage addItemWithObjectValue: @"Swahili"];
181 [fdefaultlanguage addItemWithObjectValue: @"Swati"];
182 [fdefaultlanguage addItemWithObjectValue: @"Tahitian"];
183 [fdefaultlanguage addItemWithObjectValue: @"Tamil"];
184 [fdefaultlanguage addItemWithObjectValue: @"Tatar"];
185 [fdefaultlanguage addItemWithObjectValue: @"Telugu"];
186 [fdefaultlanguage addItemWithObjectValue: @"Tajik"];
187 [fdefaultlanguage addItemWithObjectValue: @"Tagalog"];
188 [fdefaultlanguage addItemWithObjectValue: @"Thai"];
189 [fdefaultlanguage addItemWithObjectValue: @"Tibetan"];
190 [fdefaultlanguage addItemWithObjectValue: @"Tigrinya"];
191 [fdefaultlanguage addItemWithObjectValue: @"Tonga (Tonga Islands)"];
192 [fdefaultlanguage addItemWithObjectValue: @"Tswana"];
193 [fdefaultlanguage addItemWithObjectValue: @"Tsonga"];
194 [fdefaultlanguage addItemWithObjectValue: @"Turkish"];
195 [fdefaultlanguage addItemWithObjectValue: @"Turkmen"];
196 [fdefaultlanguage addItemWithObjectValue: @"Twi"];
197 [fdefaultlanguage addItemWithObjectValue: @"Uighur"];
198 [fdefaultlanguage addItemWithObjectValue: @"Ukrainian"];
199 [fdefaultlanguage addItemWithObjectValue: @"Urdu"];
200 [fdefaultlanguage addItemWithObjectValue: @"Uzbek"];
201 [fdefaultlanguage addItemWithObjectValue: @"Vietnamese"];
202 [fdefaultlanguage addItemWithObjectValue: @"Volapk"];
203 [fdefaultlanguage addItemWithObjectValue: @"Welsh"];
204 [fdefaultlanguage addItemWithObjectValue: @"Wolof"];
205 [fdefaultlanguage addItemWithObjectValue: @"Xhosa"];
206 [fdefaultlanguage addItemWithObjectValue: @"Yiddish"];
207 [fdefaultlanguage addItemWithObjectValue: @"Yoruba"];
208 [fdefaultlanguage addItemWithObjectValue: @"Zhuang"];
209 [fdefaultlanguage addItemWithObjectValue: @"Zulu"];
210 [fdefaultlanguage setStringValue:@"English"];
212 /* If a Default Language is selected then write it otherwise let English as default */
214 if ([defaults stringForKey:@"DefaultLanguage"]!=NULL)
216 [fdefaultlanguage setStringValue:[defaults stringForKey:@"DefaultLanguage"]];
218 [fdefaultlanguage selectItemWithObjectValue:[defaults stringForKey:@"DefaultLanguage"]];
223 /* fFileExtItunes Check or uncheck according to the preferences */
224 [fFileExtItunes setState: [defaults boolForKey:@"DefaultMpegName"] ?
225 NSOnState : NSOffState];
227 /* fDefCrf Check or uncheck according to the preferences*/
228 [fDefCrf setState: [defaults boolForKey:@"DefaultCrf"] ?
229 NSOnState : NSOffState];
231 /* fDefDeinterlace Check or uncheck according to the preferences*/
232 [fDefDeinterlace setState: [defaults boolForKey:@"DefaultDeinterlaceOn"] ?
233 NSOnState : NSOffState];
235 /* fDefPicSizeAutoSetipod Check or uncheck according to the preferences*/
236 [fDefPicSizeAutoSetipod setState: [defaults boolForKey:@"DefaultPicSizeAutoiPod"] ?
237 NSOnState : NSOffState];
239 [fDefPixelRatio setState: [defaults boolForKey:@"PixelRatio"] ?
240 NSOnState : NSOffState];
242 /* fDefAudioSurround Check or uncheck according to the preferences */
243 [fDefAudioSurround setState: [defaults boolForKey:@"DefaultSurroundSound"] ?
244 NSOnState : NSOffState];
246 /* Insert default DefAdvanced x264 Flag here */
247 if ([defaults stringForKey:@"DefAdvancedx264Flags"]!=NULL)
249 [fDefAdvancedx264FlagsView setString:[defaults stringForKey:@"DefAdvancedx264Flags"]];
252 /* fDefPresetDrawerShow Check or uncheck according to the preferences*/
253 [fDefPresetDrawerShow setState: [defaults boolForKey:@"DefaultPresetsDrawerShow"] ?
254 NSOnState : NSOffState];
255 /* fDefAutoNaming Check or uncheck according to the preferences*/
256 [fDefAutoNaming setState: [defaults boolForKey:@"DefaultAutoNaming"] ?
257 NSOnState : NSOffState];
261 - (IBAction) OpenPanel: (id) sender;
263 [NSApp runModalForWindow: fPanel];
266 - (IBAction) ClosePanel: (id) sender;
268 [self CheckChanged: sender];
270 [fPanel orderOut: sender];
273 - (IBAction) CheckChanged: (id) sender
275 NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
277 /* Check Update CheckForUpdates Set */
278 if( [fUpdateCheck state] == NSOnState )
280 [defaults setObject:@"YES" forKey:@"CheckForUpdates"];
284 [defaults setObject:@"NO" forKey:@"CheckForUpdates"];
287 /* Preferred Language Combobox Set */
289 [defaults setObject:[fdefaultlanguage objectValueOfSelectedItem] forKey:@"DefaultLanguage"];
292 /* File Extension Itunes Set */
294 if( [fFileExtItunes state] == NSOnState )
296 [defaults setObject:@"YES" forKey:@"DefaultMpegName"];
300 [defaults setObject:@"NO" forKey:@"DefaultMpegName"];
303 /* Use CRF for constant mode */
305 if( [fDefCrf state] == NSOnState )
307 [defaults setObject:@"YES" forKey:@"DefaultCrf"];
311 [defaults setObject:@"NO" forKey:@"DefaultCrf"];
314 /* Use Deinterlace on as a default*/
316 if( [fDefDeinterlace state] == NSOnState )
318 [defaults setObject:@"YES" forKey:@"DefaultDeinterlaceOn"];
322 [defaults setObject:@"NO" forKey:@"DefaultDeinterlaceOn"];
325 /* Use Picture size set to 640 upon x264 (iPod) Selection as a default*/
327 if( [fDefPicSizeAutoSetipod state] == NSOnState )
329 [defaults setObject:@"YES" forKey:@"DefaultPicSizeAutoiPod"];
333 [defaults setObject:@"NO" forKey:@"DefaultPicSizeAutoiPod"];
338 if( [fDefPixelRatio state] == NSOnState )
340 [defaults setObject:@"YES" forKey:@"PixelRatio"];
344 [defaults setObject:@"NO" forKey:@"PixelRatio"];
348 /* Use Surround Sound if available*/
350 if( [fDefAudioSurround state] == NSOnState )
352 [defaults setObject:@"YES" forKey:@"DefaultSurroundSound"];
356 [defaults setObject:@"NO" forKey:@"DefaultSurroundSound"];
360 /*Advanced x264 Flag string into */
361 [defaults setObject:[fDefAdvancedx264FlagsView string] forKey:@"DefAdvancedx264Flags"];
363 /* Show Presets Drawer upon launch*/
365 if( [fDefPresetDrawerShow state] == NSOnState )
367 [defaults setObject:@"YES" forKey:@"DefaultPresetsDrawerShow"];
371 [defaults setObject:@"NO" forKey:@"DefaultPresetsDrawerShow"];
374 /* Use Auto Naming */
376 if( [fDefAutoNaming state] == NSOnState )
378 [defaults setObject:@"YES" forKey:@"DefaultAutoNaming"];
382 [defaults setObject:@"NO" forKey:@"DefaultAutoNaming"];