index a663bb20d5fc1200c972a87c0cb26eaec9636122..51f2ea698f63a1d6e8f62ebf069195e0fc95923e 100644 (file)
--- a/src/editor/f_options.pas
+++ b/src/editor/f_options.pas
uses
LCLIntf, LCLType, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls,
- ExtCtrls, ComCtrls, Registry, Math, Types;
+ ExtCtrls, ComCtrls, ActnList, Registry, Math, Types;
type
cbCheckerboard: TCheckBox;
cbCompress: TCheckBox;
cbBackup: TCheckBox;
+ cbLanguage: TComboBox;
PageControl: TPageControl;
TabGeneral: TTabSheet;
TabFiles: TTabSheet;
eRecent: TEdit;
UpDown3: TUpDown;
LabelLanguage: TLabel;
- rbRussian: TRadioButton;
- rbEnglish: TRadioButton;
LabelGridSize: TLabel;
cbDotSize: TComboBox;
// Map testing:
implementation
uses
- f_main, StdConvs, CONFIG, g_language, g_resources, g_options;
+ LazFileUtils, StrUtils, f_main, StdConvs, CONFIG, g_language, g_resources, g_options;
{$R *.lfm}
end;
procedure TOptionsForm.FormActivate(Sender: TObject);
+ var info: TSearchRec; s: String; i: Integer;
begin
sDotColor.Brush.Color := DotColor;
cbShowDots.Checked := DotEnable;
cbDotSize.ItemIndex := 0;
eRecent.Text := IntToStr(RecentCount);
-// Язык:
- if gLanguage = LANGUAGE_RUSSIAN then
+ try
+ cbLanguage.Items.BeginUpdate;
+ cbLanguage.Items.Clear;
+ cbLanguage.Items.Add('Auto');
+ if FindFirst(LangDir + DirectorySeparator + '*.mo', faAnyFile, info) = 0 then
begin
- rbRussian.Checked := True;
- rbEnglish.Checked := False;
- end
- else
- begin
- rbRussian.Checked := False;
- rbEnglish.Checked := True;
+ 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;
+ cbLanguage.ItemIndex := IfThen(gLanguage = '', 0, cbLanguage.Items.IndexOf(gLanguage));
+ finally
+ cbLanguage.Items.EndUpdate;
+ end;
if TestGameMode = 'TDM' then
rbTDM.Checked := True
begin
// General tab
- if rbRussian.Checked then
- str := LANGUAGE_RUSSIAN
- else
- str := LANGUAGE_ENGLISH;
-
-// Нужно сменить язык:
- if gLanguage <> str then
+ if cbLanguage.ItemIndex <= 0 then str := '' else str := cbLanguage.Items[cbLanguage.ItemIndex];
+ if (str = '') or (gLanguage <> str) then
begin
gLanguage := str;
- //e_WriteLog('Read language file', MSG_NOTIFY);
- //g_Language_Load(EditorDir+'\data\'+gLanguage+LANGUAGE_FILE_NAME);
g_Language_Set(gLanguage);
end;