fGLOptions.pas 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. unit fGLOptions;
  2. interface
  3. uses
  4. Winapi.Windows,
  5. Winapi.Messages,
  6. System.SysUtils,
  7. System.UITypes,
  8. System.Variants,
  9. System.Classes,
  10. System.IniFiles,
  11. Vcl.Graphics,
  12. Vcl.Controls,
  13. Vcl.Forms,
  14. Vcl.Dialogs,
  15. Vcl.StdCtrls,
  16. Vcl.ExtCtrls,
  17. //
  18. dImages,
  19. dDialogs,
  20. fGLForm,
  21. fGLDialog;
  22. type
  23. TGLOptions = class(TGLDialog)
  24. CheckBoxAxis: TCheckBox;
  25. Label1: TLabel;
  26. PanelBackground: TPanel;
  27. RadioGroupLanguage: TRadioGroup;
  28. procedure FormCreate(Sender: TObject);
  29. procedure FormClose(Sender: TObject; var Action: TCloseAction);
  30. procedure RadioGroupLanguageClick(Sender: TObject);
  31. procedure ButtonOKClick(Sender: TObject);
  32. procedure PanelBackgroundClick(Sender: TObject);
  33. procedure CheckBoxAxisClick(Sender: TObject);
  34. private
  35. public
  36. CurLangID : Word;
  37. procedure ReadIniFile; override;
  38. procedure WriteIniFile; override;
  39. end;
  40. var
  41. GLOptions: TGLOptions;
  42. //---------------------------------------------------------------------------
  43. implementation
  44. {$R *.dfm}
  45. uses
  46. GnuGettext,
  47. fGLSViewer;
  48. procedure TGLOptions.FormCreate(Sender: TObject);
  49. begin
  50. inherited;
  51. ReadIniFile;
  52. end;
  53. procedure TGLOptions.FormClose(Sender: TObject; var Action: TCloseAction);
  54. begin
  55. WriteIniFile;
  56. inherited;
  57. end;
  58. procedure TGLOptions.ReadIniFile;
  59. begin
  60. inherited;
  61. IniFile := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
  62. with IniFile do
  63. try
  64. CheckBoxAxis.Checked := ReadBool(Name, CheckBoxAxis.Name, True);
  65. PanelBackground.Color := ReadInteger(Name, PanelBackground.Name, 0);
  66. LangID := ReadInteger(Name, RadioGroupLanguage.Name, 0);
  67. case LangID of
  68. LANG_ENGLISH : RadioGroupLanguage.ItemIndex := 0;
  69. LANG_RUSSIAN : RadioGroupLanguage.ItemIndex := 1;
  70. LANG_SPANISH : RadioGroupLanguage.ItemIndex := 2;
  71. LANG_FRENCH : RadioGroupLanguage.ItemIndex := 3;
  72. LANG_GERMAN : RadioGroupLanguage.ItemIndex := 4;
  73. LANG_ITALIAN : RadioGroupLanguage.ItemIndex := 5;
  74. else
  75. RadioGroupLanguage.ItemIndex := 0;
  76. end;
  77. finally
  78. IniFile.Free;
  79. end;
  80. end;
  81. procedure TGLOptions.RadioGroupLanguageClick(Sender: TObject);
  82. begin
  83. case RadioGroupLanguage.ItemIndex of
  84. 0: CurLangID := LANG_ENGLISH;
  85. 1: CurLangID := LANG_RUSSIAN;
  86. 2: CurLangID := LANG_SPANISH;
  87. 3: CurLangID := LANG_FRENCH;
  88. 4: CurLangID := LANG_GERMAN;
  89. 5: CurLangID := LANG_ITALIAN;
  90. else
  91. CurLangID := LANG_ENGLISH;
  92. end;
  93. end;
  94. procedure TGLOptions.WriteIniFile;
  95. begin
  96. IniFile := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
  97. with IniFile do
  98. try
  99. WriteBool(Name, CheckBoxAxis.Name, CheckBoxAxis.Checked);
  100. WriteInteger(Name, RadioGroupLanguage.Name, CurLangID);
  101. WriteInteger(Name, PanelBackground.Name, PanelBackground.Color);
  102. finally
  103. IniFile.Free;
  104. end;
  105. inherited;
  106. end;
  107. procedure TGLOptions.CheckBoxAxisClick(Sender: TObject);
  108. begin
  109. if CheckBoxAxis.Checked then
  110. FormGLSViewer.DCAxis.Visible := True
  111. else
  112. FormGLSViewer.DCAxis.Visible := False;
  113. end;
  114. procedure TGLOptions.PanelBackgroundClick(Sender: TObject);
  115. begin
  116. dmDialogs.ColorDialog.Color := PanelBackground.Color;
  117. if dmDialogs.ColorDialog.Execute then
  118. begin
  119. PanelBackground.Color := dmDialogs.ColorDialog.Color;
  120. FormGLSViewer.ApplyBgColor;
  121. end;
  122. end;
  123. procedure TGLOptions.ButtonOKClick(Sender: TObject);
  124. var
  125. FileName: TFileName;
  126. begin
  127. if CurLangID <> LangID then
  128. begin
  129. MessageDlg(_('Reload to change language'),
  130. mtInformation, [mbOK], 0);
  131. FileName := ChangeFileExt(ParamStr(0), '.ini');
  132. if FileExists(UpperCase(FileName)) then
  133. DeleteFile(UpperCase(FileName)); //to exclude dublicated sections for each language
  134. end;
  135. end;
  136. end.