GUIHelper.pas
上传用户:yj_qiu
上传日期:2022-08-08
资源大小:23636k
文件大小:4k
源码类别:

游戏引擎

开发平台:

Delphi

  1. (*
  2.  @Abstract(GUI helper unit)
  3.  (C) 2006 George "Mirage" Bakhtadze <br>
  4.  The source code may be used under either MPL 1.1 or LGPL 2.1 license. See included license.txt file <br>
  5.  Unit contains abstract (independent of GUI library used) helper classes for GUI applications
  6. *)
  7. {$Include GDefines.inc}
  8. unit GUIHelper;
  9. interface
  10. uses
  11.   TextFile,
  12.   SysUtils,
  13.   BaseMsg,
  14.   Props, BaseClasses;
  15. const
  16.   TotalImmediateApplyControls = 3;
  17.   ImmediateApplyControls: array[0..TotalImmediateApplyControls-1] of string =
  18.    ('Gamma', 'Contrast', 'Brightness');
  19.   TotalNotifyingApplyControls = 1;
  20.   NotifyingApplyControls: array[0..TotalNotifyingApplyControls-1] of string =
  21.    ('UserName');
  22.   FormNamesCapacityStep = 1;
  23.   // On click predefined actions
  24.   TotalActions = 9;
  25.   aShow = 0; aShowSolely = 1; aToggle = 2; aClose = 3; aOK = 4; aApply = 5; aCancel = 6; aReset = 7; aBack = 8;
  26.   ActionStr: array[0..TotalActions-1] of string = ('Show', 'Invoke', 'Toggle', 'Close', 'OK', 'Apply', 'Cancel', 'Reset', 'Back');
  27. type
  28.   TGUIHelper = class
  29.   protected
  30.     procedure ControlToConfig(const FormName, OptionName: string; AConfig: Props.TProperties); virtual; abstract;
  31.     procedure ConfigToControl(const FormName, OptionName: string; AConfig: Props.TProperties); virtual; abstract;
  32.   public
  33.     DefaultConfig: Props.TProperties;                                      // Default config used for resetting
  34.     procedure HandleMessage(const Msg: TMessage); virtual; abstract;
  35.     // Items manipulation
  36.     function ControlExists(const Name: string): Boolean; virtual; abstract;
  37.     function IsControlVisible(const Name: string; CheckHierarchy: Boolean): Boolean; virtual; abstract;
  38.     procedure ShowControl(const Name: string); virtual; abstract;
  39.     procedure HideControl(const Name: string); virtual; abstract;
  40.     procedure ToggleControl(const Name: string); virtual; abstract;  // Toggles item's visibility
  41.     procedure EnableControl(const Name: string); virtual; abstract;
  42.     procedure DisableControl(const Name: string); virtual; abstract;
  43.     procedure SetControlText(const Name, Text: string); virtual; abstract;
  44.     function GetControlText(const Name: string): string; virtual; abstract;
  45.     function GetControlFormName(const Name: string): string; virtual; abstract;
  46.     // Properties filling
  47.     procedure ConfigToForm(const FormName: string; AConfig: Props.TProperties); virtual;
  48.     procedure FormToConfig(const FormName: string; AConfig: Props.TProperties); virtual;
  49.     procedure ItemToForm(const FormName: string; AItem: TItem);
  50.     procedure FormToItem(const FormName: string; AItem: TItem);
  51.     procedure ResetConfig(const FormName: string; ADefaultConfig: Props.TProperties); virtual;
  52.     // Returns True if a user input is in process in some edit control
  53.     function IsInputInProcess(): Boolean; virtual; abstract;
  54.   end;
  55. implementation
  56. { TGUIHelper }
  57. procedure TGUIHelper.ConfigToForm(const FormName: string; AConfig: Props.TProperties);
  58. var i: Integer;
  59. begin
  60.   for i := 0 to AConfig.TotalProperties-1 do ConfigToControl(FormName, AConfig.GetNameByIndex(i), AConfig);
  61. end;
  62. procedure TGUIHelper.FormToConfig(const FormName: string; AConfig: Props.TProperties);
  63. var i: Integer;
  64. begin
  65.   for i := 0 to AConfig.TotalProperties-1 do ControlToConfig(FormName, AConfig.GetNameByIndex(i), AConfig);
  66. end;
  67. procedure TGUIHelper.ItemToForm(const FormName: string; AItem: TItem);
  68. var Props: TProperties;
  69. begin
  70.   Props := TProperties.Create;
  71.   AItem.GetProperties(Props);
  72.   ConfigToForm(FormName, Props);
  73.   Props.Free;
  74. end;
  75. procedure TGUIHelper.FormToItem(const FormName: string; AItem: TItem);
  76. var Props: TProperties;
  77. begin
  78.   Props := TProperties.Create;
  79.   AItem.GetProperties(Props);
  80.   FormToConfig(FormName, Props);
  81.   AItem.SetProperties(Props);
  82.   Props.Free;
  83. end;
  84. procedure TGUIHelper.ResetConfig(const FormName: string; ADefaultConfig: Props.TProperties);
  85. begin
  86.   if (ADefaultConfig = nil) or not ControlExists(FormName) then Exit;
  87.   ConfigToForm(FormName, ADefaultConfig);
  88. end;
  89. end.