diff --git a/frontends/gnustep/Makefile b/frontends/gnustep/Makefile index cabb9f149..3d1f4e186 100644 --- a/frontends/gnustep/Makefile +++ b/frontends/gnustep/Makefile @@ -92,6 +92,8 @@ R_RESOURCES := \ Bookmarks.gorm \ CreateBookmark.gorm \ Preferences.gorm \ + Languages.plist \ + R_RESOURCES := $(addprefix $(FRONTEND_RESOURCES_DIR)/,$(R_RESOURCES)) diff --git a/frontends/gnustep/Preferences.h b/frontends/gnustep/Preferences.h index fb2fbbd2a..46be295df 100644 --- a/frontends/gnustep/Preferences.h +++ b/frontends/gnustep/Preferences.h @@ -108,5 +108,11 @@ typedef NS_ENUM(NSInteger, PreferenceType) { -(FontType)defaultFont; -(void)setDefaultFont: (FontType)value; +-(NSString*)preferredLanguage; +-(void)setPreferredLanguage: (NSString*)value; + +-(NSUInteger)fontSize; +-(void)setFontSize: (NSUInteger)value; + +(Preferences*)defaultPreferences; @end diff --git a/frontends/gnustep/Preferences.m b/frontends/gnustep/Preferences.m index 95e975a82..20b83ce61 100644 --- a/frontends/gnustep/Preferences.m +++ b/frontends/gnustep/Preferences.m @@ -289,6 +289,29 @@ [self saveNetsurfPrefsFile]; } +-(NSString*)preferredLanguage { + char *lang = nsoption_charp(accept_language); + if (lang == NULL) { + return @"en"; + } else { + return [NSString stringWithCString: lang]; + } +} + +-(void)setPreferredLanguage: (NSString*)value { + NSLog(@"Set to %@", value); + nsoption_set_charp(accept_language, strdup([value cString])); + [self saveNetsurfPrefsFile]; +} + +-(NSUInteger)fontSize { + return (NSUInteger)nsoption_int(font_size); +} + +-(void)setFontSize: (NSUInteger)value { + nsoption_set_int(font_size, (int)value); + [self saveNetsurfPrefsFile]; +} +(Preferences*)defaultPreferences { static Preferences *prefs; diff --git a/frontends/gnustep/PreferencesWindowController.m b/frontends/gnustep/PreferencesWindowController.m index 5f73fc547..628d91b0c 100644 --- a/frontends/gnustep/PreferencesWindowController.m +++ b/frontends/gnustep/PreferencesWindowController.m @@ -274,14 +274,41 @@ ? NSOnState : NSOffState]; FontType fontType = [[Preferences defaultPreferences] defaultFont]; [defaultFontButton selectItemAtIndex: (NSInteger)fontType]; + + NSUInteger selectedIndex = 0; + NSString *preferredLanguage = [[Preferences defaultPreferences] preferredLanguage]; + NSString *languagesPath = [[NSBundle mainBundle] pathForResource: @"Languages" ofType: @"plist"]; + NSArray *languages = [NSArray arrayWithContentsOfFile: languagesPath]; + for (NSUInteger i = 0; i < [languages count]; i++) { + [preferredLanguageButton addItemWithTitle: [languages objectAtIndex: i]]; + if ([[languages objectAtIndex: i] isEqualTo: preferredLanguage]) { + selectedIndex = i; + } + } + [preferredLanguageButton selectItemAtIndex: selectedIndex]; + NSUInteger fontSize = [[Preferences defaultPreferences] fontSize]; + [fontSizeField setStringValue: [NSString stringWithFormat: @"%u", fontSize]]; + [fontSizeStepper setIntegerValue: fontSize]; } -(void)didChangeFontSizeStepper: (id)sender { NSLog(@"didChangeFontSizeStepper"); + NSInteger value = [sender integerValue]; + if (value < 1) { + value = 1; + [sender setIntegerValue: value]; + } + [fontSizeField setStringValue: [NSString stringWithFormat: @"%u", value]]; + [[Preferences defaultPreferences] setFontSize: value]; } -(void)didEnterFontSize: (id)sender { NSLog(@"didEnterFontSize"); + NSInteger value = [[sender stringValue] integerValue]; + if (value < 1) + value = 1; + [fontSizeStepper setIntegerValue: value]; + [[Preferences defaultPreferences] setFontSize: (NSUInteger)value]; } -(void)didPickDefaultFont: (id)sender { @@ -327,6 +354,7 @@ -(void)didPickPreferredLanguage: (id)sender { NSLog(@"didPickPreferredLanguage"); + [[Preferences defaultPreferences] setPreferredLanguage: [sender title]]; } @end diff --git a/frontends/gnustep/res/Languages.plist b/frontends/gnustep/res/Languages.plist new file mode 100644 index 000000000..8729d554b --- /dev/null +++ b/frontends/gnustep/res/Languages.plist @@ -0,0 +1,267 @@ + + + + + aa + ab + ae + af + ak + am + an + ar + ar-ae + ar-bh + ar-dz + ar-eg + ar-iq + ar-jo + ar-kw + ar-lb + ar-ly + ar-ma + ar-om + ar-qa + ar-sa + ar-sy + ar-tn + ar-ye + as + ast + av + az + ba + be + bg + bh + bi + bm + bn + bo + br + bs + ca + ce + ch + co + cr + cs + cu + cv + cy + da + de + de-at + de-ch + de-de + de-li + de-lu + dv + dz + ee + el + en + en-au + en-bz + en-ca + en-gb + en-ie + en-jm + en-nz + en-ph + en-tt + en-us + en-za + en-zw + eo + es + es-ar + es-bo + es-cl + es-co + es-cr + es-do + es-ec + es-es + es-gt + es-hn + es-mx + es-ni + es-pa + es-pe + es-pr + es-py + es-sv + es-uy + es-ve + et + eu + fa + fa-ir + ff + fi + fj + fo + fr + fr-be + fr-ca + fr-ch + fr-fr + fr-lu + fr-mc + fur + fy + ga + gd + gl + gn + gu + gv + ha + he + hi + ho + hsb + hr + ht + hu + hy + hz + ia + id + ie + ig + ii + ik + io + is + it + it-ch + iu + ja + jv + ka + kg + ki + kk + kl + km + kn + ko + ko-kp + ko-kr + kok + kr + ks + ku + kv + kw + ky + la + lb + lg + li + ln + lo + lt + lu + lv + mg + mh + mi + mk + mk-mk + ml + mn + mo + mr + ms + mt + my + na + nb + nd + ne + ng + nl + nl-be + nn + no + nr + nso + nv + ny + oc + oj + om + or + os + pa + pa-in + pa-pk + pi + pl + ps + pt + pt-br + qu + rm + rn + ro + ro-mo + ru + ru-mo + sa + sc + sd + sg + si + sk + sl + so + sq + sr + ss + st + su + sv + sv-fi + sv-se + sw + ta + te + tg + th + ti + tig + tk + tl + tlh + tn + to + tr + ts + tt + tw + ty + ug + uk + ur + uz + ve + vi + vo + wa + wo + xh + yi + yo + za + zh + zh-cn + zh-hk + zh-sg + zh-tw + zu + + \ No newline at end of file