129 lines
4.7 KiB
ObjectPascal
129 lines
4.7 KiB
ObjectPascal
unit uGUIBase;
|
|
|
|
interface
|
|
|
|
uses
|
|
Forms, Controls, Contnrs, Classes;
|
|
|
|
type
|
|
TOnGetModifiedEvent = procedure (Sender: TObject; var Modified: Boolean) of object;
|
|
TOnViewModifiedEvent = procedure (Sender: TObject) of object;
|
|
|
|
IEmbeddedable = interface(IInterface)
|
|
['{A1668B17-B355-4688-A78A-B30AE3C8C81E}']
|
|
procedure Release;
|
|
procedure ShowEmbedded; overload;
|
|
procedure ShowEmbedded(const AParent : TWinControl); overload;
|
|
end;
|
|
|
|
IModificable = interface(IEmbeddedable)
|
|
['{7F75A327-4ACC-4E4A-8B3D-21C1241DAFBF}']
|
|
function GetModified: Boolean;
|
|
procedure SetModified(const Value : Boolean);
|
|
property Modified: Boolean read GetModified write SetModified;
|
|
|
|
function GetOnGetModified: TOnGetModifiedEvent;
|
|
procedure SetOnGetModified(const Value : TOnGetModifiedEvent);
|
|
property OnGetModified: TOnGetModifiedEvent read GetOnGetModified write
|
|
SetOnGetModified;
|
|
|
|
function GetOnViewModified: TOnViewModifiedEvent;
|
|
procedure SetOnViewModified(const Value : TOnViewModifiedEvent);
|
|
property OnViewModified: TOnViewModifiedEvent read GetOnViewModified write
|
|
SetOnViewModified;
|
|
end;
|
|
|
|
IReadOnly = interface(IModificable)
|
|
['{2549ECF9-270F-4F3C-9852-E488C518F590}']
|
|
function GetReadOnly: Boolean;
|
|
procedure SetReadOnly(Value: Boolean);
|
|
property ReadOnly: Boolean read GetReadOnly write SetReadOnly;
|
|
end;
|
|
|
|
IValidable = interface(IReadOnly)
|
|
['{A2562A5E-E3B2-4C1B-B8FE-13A410D8B3DB}']
|
|
function GetValid: Boolean;
|
|
property Valid: Boolean read GetValid;
|
|
end;
|
|
|
|
IInstanceAware = interface(IValidable)
|
|
['{B6B2676A-1D8E-4597-ADDB-43734508E6F5}']
|
|
function GetInstance: TObject;
|
|
function GetInstanceID: Integer;
|
|
procedure SetInstanceID(Value: Integer);
|
|
property InstanceID: Integer read GetInstanceID write SetInstanceID;
|
|
end;
|
|
|
|
ICustomEditor = interface(IInstanceAware)
|
|
['{07A3AB52-B2B0-4DE3-B470-379834BBE7DB}']
|
|
end;
|
|
|
|
ICustomView = interface(IValidable)
|
|
['{98192DE2-19C5-4DA5-B4F4-F2B3782DB6E2}']
|
|
function CanFocus: Boolean;
|
|
function Focused: Boolean;
|
|
procedure SetFocus;
|
|
procedure Update;
|
|
end;
|
|
|
|
|
|
IHostForm = interface(IInterface)
|
|
['{2091401E-1F9C-4F05-8574-E9E0532780D1}']
|
|
function GetWorkPanel: TWinControl;
|
|
property WorkPanel: TWinControl read GetWorkPanel;
|
|
procedure OnWorkPanelChanged(AEditor : ICustomEditor);
|
|
procedure ShowEmbedded(AEditor : ICustomEditor);
|
|
end;
|
|
|
|
|
|
IGUIManager = interface(IInterface)
|
|
['{D0A5D2CC-36E1-4C61-8D3B-B6D00EBA3278}']
|
|
function FindInstance(const IID: TGUID): ICustomEditor;
|
|
function GetActiveInstance: ICustomEditor;
|
|
function GetActiveInstanceIndex: Integer;
|
|
function GetInstance(Index : Integer): ICustomEditor;
|
|
function GetWorkPanel: TWinControl;
|
|
function RegisterInstance(AInstance : ICustomEditor): Boolean;
|
|
procedure ReleaseInstance(AnInstance : ICustomEditor);
|
|
procedure SetActiveInstance(Value: ICustomEditor);
|
|
procedure SetActiveInstanceIndex(Value: Integer);
|
|
procedure SetWorkPanel(const Value: TWinControl);
|
|
property ActiveInstance: ICustomEditor read GetActiveInstance write
|
|
SetActiveInstance;
|
|
property ActiveInstanceIndex: Integer read GetActiveInstanceIndex write
|
|
SetActiveInstanceIndex;
|
|
property Instances[Index : Integer]: ICustomEditor read GetInstance;
|
|
property WorkPanel: TWinControl read GetWorkPanel write SetWorkPanel;
|
|
end;
|
|
|
|
IObservable = interface;
|
|
TObserverEvent = procedure (AObject : IObservable) of object;
|
|
IObserver = interface(IInterface)
|
|
['{79175C66-8435-4F2F-A3E0-A53A24554A0E}']
|
|
function GetOnNotifyObserver: TObserverEvent;
|
|
function GetOnObserverAttached: TObserverEvent;
|
|
function GetOnObserverDettached: TObserverEvent;
|
|
procedure NotifyObserver(const AObject: IObservable);
|
|
procedure ObserverAttached(AObject : IObservable);
|
|
procedure ObserverDettached(AObject : IObservable);
|
|
procedure SetOnNotifyObserver(AValue: TObserverEvent);
|
|
procedure SetOnObserverAttached(AValue: TObserverEvent);
|
|
procedure SetOnObserverDettached(AValue: TObserverEvent);
|
|
property OnNotifyObserver: TObserverEvent read GetOnNotifyObserver write
|
|
SetOnNotifyObserver;
|
|
property OnObserverAttached: TObserverEvent read GetOnObserverAttached
|
|
write SetOnObserverAttached;
|
|
property OnObserverDettached: TObserverEvent read GetOnObserverDettached
|
|
write SetOnObserverDettached;
|
|
end;
|
|
|
|
IObservable = interface(IInterface)
|
|
['{1FF0F081-CBBA-4728-8689-D6F506652E80}']
|
|
procedure AddObserver(const AObserver: IObserver);
|
|
procedure RemoveObserver(const AObserver: IObserver);
|
|
end;
|
|
|
|
implementation
|
|
|
|
end.
|