НАСТРОЙКИ
Отображение формы настроек переделано. Теперь она создаётся только 1 раз при первом вызове. Добавлен выпадающий списк для выбора локализаций. Кнопка сброса к дефолту изменена. Чтение настроек из abtool.ini (кроме локализаций). Сброс контроллов к актуальным настройкам при каждом показе формы настроек. Считанные настройки хранятся в глобальной переменной внутри uOptions. Таким образом: - исключены циклические ссылки с участием dMain ради доступа к настройкам - теперь можно только вызвать конструктор TOptions, а сам созданный объект нигде не сохранять: объект GlobalOptions уже будет доступен Новая функция dMain.GetLocalesIniFileList для получения списка файлов локализаций. Обновлены ini-файлы. Мелочи по оформлению кода.
This commit is contained in:
+62
-15
@@ -5,15 +5,14 @@ unit fOptions;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel,
|
||||
ComCtrls, ExtCtrls, StdCtrls, Menus, Types;
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||
ComCtrls, ExtCtrls, StdCtrls, Menus, Buttons, uOptions;
|
||||
|
||||
type
|
||||
|
||||
{ TfmOptions }
|
||||
|
||||
TfmOptions = class(TForm)
|
||||
btnSetDefault: TButton;
|
||||
btnSave: TButton;
|
||||
btnClose: TButton;
|
||||
btnCheckUpdates: TButton;
|
||||
@@ -33,6 +32,7 @@ type
|
||||
cbHideOnTool: TCheckBox;
|
||||
cbDrawOutlines: TCheckBox;
|
||||
cbScreenSnap: TCheckBox;
|
||||
cmbLanguage: TComboBox;
|
||||
grpOptMainform: TGroupBox;
|
||||
grpOptInstall: TGroupBox;
|
||||
grpOptTools: TGroupBox;
|
||||
@@ -40,18 +40,20 @@ type
|
||||
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 btnCloseClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure tabAboutContextPopup(Sender: TObject; MousePos: TPoint;
|
||||
var Handled: Boolean);
|
||||
procedure btnSaveClick(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormShow(Sender: TObject);
|
||||
private
|
||||
|
||||
procedure ResetControlls;
|
||||
public
|
||||
|
||||
end;
|
||||
@@ -65,20 +67,65 @@ implementation
|
||||
|
||||
{ TfmOptions }
|
||||
|
||||
procedure TfmOptions.FormCreate(Sender: TObject);
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: TfmOptions.btnSaveClick()
|
||||
Назначение: Закрытие формы настроек и возврат модального результата при клике
|
||||
по кнопке "Сохранить"
|
||||
Описание: Закрытие формы происходит автоматически благодаря свойству
|
||||
ModalResult = mrOK, заданному кнопке в инспекторе объектов.
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TfmOptions.btnSaveClick(Sender: TObject);
|
||||
begin
|
||||
|
||||
//TODO сохранение настроек
|
||||
end;
|
||||
|
||||
procedure TfmOptions.btnCloseClick(Sender: TObject);
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: TfmOptions.FormClose()
|
||||
Назначение: Закрытие формы при её закрытии через кнопку в заголовке и возврат
|
||||
модального результата
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TfmOptions.FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
begin
|
||||
Self.Destroy;
|
||||
ModalResult := mrClose;
|
||||
end;
|
||||
|
||||
procedure TfmOptions.tabAboutContextPopup(Sender: TObject; MousePos: TPoint;
|
||||
var Handled: Boolean);
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: 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.
|
||||
|
||||
Reference in New Issue
Block a user