DEADSOFTWARE

i10n: use custom format for translations instead of gettext
[d2df-editor.git] / src / editor / f_options.pas
index 51f2ea698f63a1d6e8f62ebf069195e0fc95923e..588d9c49a8c807e34d42960c4fdf9c762f977ff1 100644 (file)
@@ -82,7 +82,7 @@ type
 
 
     procedure bGridClick(Sender: TObject);
-    procedure FormActivate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
     procedure bOKClick(Sender: TObject);
     procedure bCancelClick(Sender: TObject);
     procedure bBackClick(Sender: TObject);
@@ -104,7 +104,7 @@ procedure RegisterFileType(ext: String; FileName: String);
 implementation
 
 uses
-  LazFileUtils, StrUtils, f_main, StdConvs, CONFIG, g_language, g_resources, g_options;
+  LazFileUtils, f_main, StdConvs, CONFIG, g_language, g_resources, g_options;
 
 {$R *.lfm}
 
@@ -144,8 +144,8 @@ begin
     edD2dExe.Text := FindD2dDialog.FileName;
 end;
 
-procedure TOptionsForm.FormActivate(Sender: TObject);
-  var info: TSearchRec; s: String; i: Integer;
+procedure TOptionsForm.FormShow(Sender: TObject);
+  var list: TStringList;
 begin
   sDotColor.Brush.Color := DotColor;
   cbShowDots.Checked := DotEnable;
@@ -172,17 +172,9 @@ begin
     cbLanguage.Items.BeginUpdate;
     cbLanguage.Items.Clear;
     cbLanguage.Items.Add('Auto');
-    if FindFirst(LangDir + DirectorySeparator + '*.mo', faAnyFile, info) = 0 then
-    begin
-      repeat
-        s := ExtractFileNameWithoutExt(info.Name);
-        // TODO: check encoding part in name (editor.ru_RU.UTF-8.mo)
-        i := Max(RPos('.', s), 1);
-        s := Copy(s, i + 1, Length(s) - i);
-        cbLanguage.Items.Add(s);
-      until FindNext(info) <> 0;
-      FindClose(info);
-    end;
+    list := g_Language_GetList();
+    cbLanguage.Items.AddStrings(list);
+    list.Free();
     cbLanguage.ItemIndex := IfThen(gLanguage = '', 0, cbLanguage.Items.IndexOf(gLanguage));
   finally
     cbLanguage.Items.EndUpdate;
@@ -219,13 +211,16 @@ var
 begin
   // General tab
 
-  if cbLanguage.ItemIndex <= 0 then str := '' else str := cbLanguage.Items[cbLanguage.ItemIndex];
-  if (str = '') or (gLanguage <> str) then
+  if cbLanguage.ItemIndex >= 0 then
   begin
-    gLanguage := str;
-    g_Language_Set(gLanguage);
+    if cbLanguage.ItemIndex = 0 then str := '' else str := cbLanguage.Items[cbLanguage.ItemIndex];
+    if (str = '') or (gLanguage <> str) then
+    begin
+      gLanguage := str;
+      g_Language_Set(gLanguage);
+    end;
   end;
-  
+
   DotColor := sDotColor.Brush.Color;
   DotEnable := cbShowDots.Checked;