AnthonyAxenov
685274a356
Отображение формы настроек переделано. Теперь она создаётся только 1 раз при первом вызове. Добавлен выпадающий списк для выбора локализаций. Кнопка сброса к дефолту изменена. Чтение настроек из abtool.ini (кроме локализаций). Сброс контроллов к актуальным настройкам при каждом показе формы настроек. Считанные настройки хранятся в глобальной переменной внутри uOptions. Таким образом: - исключены циклические ссылки с участием dMain ради доступа к настройкам - теперь можно только вызвать конструктор TOptions, а сам созданный объект нигде не сохранять: объект GlobalOptions уже будет доступен Новая функция dMain.GetLocalesIniFileList для получения списка файлов локализаций. Обновлены ini-файлы. Мелочи по оформлению кода.
133 lines
5.0 KiB
ObjectPascal
133 lines
5.0 KiB
ObjectPascal
unit fOptions;
|
||
|
||
{$mode objfpc}{$H+}
|
||
|
||
interface
|
||
|
||
uses
|
||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||
ComCtrls, ExtCtrls, StdCtrls, Menus, Buttons, uOptions;
|
||
|
||
type
|
||
|
||
{ TfmOptions }
|
||
|
||
TfmOptions = class(TForm)
|
||
btnSave: TButton;
|
||
btnClose: TButton;
|
||
btnCheckUpdates: TButton;
|
||
btnChangelog: TButton;
|
||
btnBugReport: TButton;
|
||
btnOnlineHelp: TButton;
|
||
btnLicense: TButton;
|
||
cbChkExitCodes: TCheckBox;
|
||
cbDntUnChkItems: TCheckBox;
|
||
cbExpandSoft: TCheckBox;
|
||
cbExpandTools: TCheckBox;
|
||
cbShowProgress: TCheckBox;
|
||
cbColorSoftTree: TCheckBox;
|
||
cbOnTop: TCheckBox;
|
||
cbShowPkgDesc: TCheckBox;
|
||
cbQuietREG: TCheckBox;
|
||
cbHideOnTool: TCheckBox;
|
||
cbDrawOutlines: TCheckBox;
|
||
cbScreenSnap: TCheckBox;
|
||
cmbLanguage: TComboBox;
|
||
grpOptMainform: TGroupBox;
|
||
grpOptInstall: TGroupBox;
|
||
grpOptTools: TGroupBox;
|
||
imgLogo: TImage;
|
||
labAboutTitle: TLabel;
|
||
labCopyright: TLabel;
|
||
labDescription: TLabel;
|
||
Label1: TLabel;
|
||
mmLicenseText: TMemo;
|
||
PageControl: TPageControl;
|
||
pnLanguage: TPanel;
|
||
btnSetDefault: TSpeedButton;
|
||
tabCommon: TTabSheet;
|
||
tabPackages: TTabSheet;
|
||
tabAbout: TTabSheet;
|
||
tabLicense: TTabSheet;
|
||
procedure btnSaveClick(Sender: TObject);
|
||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||
procedure FormShow(Sender: TObject);
|
||
private
|
||
procedure ResetControlls;
|
||
public
|
||
|
||
end;
|
||
|
||
var
|
||
fmOptions: TfmOptions;
|
||
|
||
implementation
|
||
|
||
{$R *.lfm}
|
||
|
||
{ TfmOptions }
|
||
|
||
{------------------------------------------------------------------------------
|
||
Процедура: TfmOptions.btnSaveClick()
|
||
Назначение: Закрытие формы настроек и возврат модального результата при клике
|
||
по кнопке "Сохранить"
|
||
Описание: Закрытие формы происходит автоматически благодаря свойству
|
||
ModalResult = mrOK, заданному кнопке в инспекторе объектов.
|
||
------------------------------------------------------------------------------}
|
||
procedure TfmOptions.btnSaveClick(Sender: TObject);
|
||
begin
|
||
//TODO сохранение настроек
|
||
end;
|
||
|
||
{------------------------------------------------------------------------------
|
||
Процедура: TfmOptions.FormClose()
|
||
Назначение: Закрытие формы при её закрытии через кнопку в заголовке и возврат
|
||
модального результата
|
||
------------------------------------------------------------------------------}
|
||
procedure TfmOptions.FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||
begin
|
||
ModalResult := mrClose;
|
||
end;
|
||
|
||
{------------------------------------------------------------------------------
|
||
Процедура: TfmOptions.FormShow()
|
||
Назначение: Показ окна настроек
|
||
Описание: Форма настроек создаётся однажды при её первом вызове. При закрытии
|
||
она не уничтожается. Она может быть закрыта без сохранения настроек. При
|
||
повторном открытии окна контроллы должны принять состояние, соответствущее
|
||
текущим (при запуске или прошлом сохранении) настройкам. В противном случае,
|
||
повторное открытие окна отобразит прошлые несохранённые изменения - это
|
||
введёт пользователя в заблуждение и он примет эти настройки как текущие.
|
||
------------------------------------------------------------------------------}
|
||
procedure TfmOptions.FormShow(Sender: TObject);
|
||
begin
|
||
ResetControlls;
|
||
end;
|
||
|
||
{------------------------------------------------------------------------------
|
||
Процедура: TfmOptions.ResetControlls()
|
||
Назначение: Сброс состояния контроллов в сооответствии с текущими настройками
|
||
------------------------------------------------------------------------------}
|
||
procedure TfmOptions.ResetControlls;
|
||
begin
|
||
cmbLanguage.Items := GlobalOptions.ReadAvailableLocales(false);
|
||
|
||
cbScreenSnap.Checked := GlobalOptions.ScreenSnap;
|
||
cbShowPkgDesc.Checked := GlobalOptions.ShowPkgDesc;
|
||
cbDrawOutlines.Checked := GlobalOptions.DrawOutlines;
|
||
cbOnTop.Checked := GlobalOptions.OnTop;
|
||
|
||
cbChkExitCodes.Checked := GlobalOptions.ChkExitCodes;
|
||
cbDntUnChkItems.Checked := GlobalOptions.DntUnChkItems;
|
||
cbColorSoftTree.Checked := GlobalOptions.ColorSoftTree;
|
||
cbShowProgress.Checked := GlobalOptions.ShowProgress;
|
||
cbQuietREG.Checked := GlobalOptions.QuietREG;
|
||
cbExpandSoft.Checked := GlobalOptions.ExpandSoft;
|
||
|
||
cbHideOnTool.Checked := GlobalOptions.HideOnTool;
|
||
cbExpandTools.Checked := GlobalOptions.ExpandTools;
|
||
end;
|
||
|
||
end.
|
||
|