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