diff --git a/components/anchordocking/anchordockstr.pas b/components/anchordocking/anchordockstr.pas index cc854cfa88..c1ee36d4b4 100644 --- a/components/anchordocking/anchordockstr.pas +++ b/components/anchordocking/anchordockstr.pas @@ -89,6 +89,15 @@ resourcestring adrsFloatingWindowsOnTopHint = 'Show floating windows on top of main form'; adrsFlatHeadersButtons = 'Flat header buttons'; adrsFlatHeadersButtonsHint = 'Flat buttons in headers of docked controls'; + setupMultiWindowIDEDisplayIndi = 'Multi Window IDE: Display individual separate Windows' + +' in the IDE'; + setupSingleWindowIDEDisplayASi = 'Single Window IDE: Display a single Window holding ' + +'all parts of the IDE (Docked)'; + setupSingleWindowModeAllowsYou = 'Single Window mode allows you to undock individual ' + +'Windows and have several group of Windows. The IDE will show additional "Dock-Handles" in ' + +'each Window, which will allow you to change layout, but also require additional space.'; + SDisable = 'Disabled (requires restart)'; + SIDELayout = 'IDE Layout'; implementation diff --git a/components/anchordocking/design/anchordesktopoptions.pas b/components/anchordocking/design/anchordesktopoptions.pas index 61fbcf1a1f..ac40e49ad2 100644 --- a/components/anchordocking/design/anchordesktopoptions.pas +++ b/components/anchordocking/design/anchordesktopoptions.pas @@ -51,6 +51,29 @@ type procedure Assign(Source: TAbstractDesktopDockingOpt); override; end; + { TAnchorDockGlobalOptions } + + TAnchorDockGlobalOptions = class + private + FDoneAskUserEnableAnchorDock: boolean; + FEnableAnchorDock: boolean; + public + constructor Create; + procedure SaveSafe; + procedure LoadSafe; + procedure SaveToFile(AFilename: String); + procedure LoadFromFile(AFilename: String); + public + property EnableAnchorDock: boolean read FEnableAnchorDock write FEnableAnchorDock default False; + property DoneAskUserEnableAnchorDock: boolean read FDoneAskUserEnableAnchorDock write FDoneAskUserEnableAnchorDock default False; + end; + +const + AnchorDockedGlobalOptionsFileName = 'anchordockingoptions.xml'; + +var + AnchorDockGlobalOptions: TAnchorDockGlobalOptions = nil; + implementation { TAnchorDesktopOpt } @@ -297,6 +320,59 @@ begin Result := DockMaster.FullRestoreLayout(FTree,True); end; +{ TAnchorDockGlobalOptions } + +constructor TAnchorDockGlobalOptions.Create; +begin +// +end; + +procedure TAnchorDockGlobalOptions.SaveSafe; +begin + try + SaveToFile(AnchorDockedGlobalOptionsFileName); + except + on E: Exception do + LazLoggerBase.DebugLn(['Error: (lazarus) [TAnchorDockGlobalOptions.SaveSafe] ', E.Message]); + end; +end; + +procedure TAnchorDockGlobalOptions.LoadSafe; +begin + try + LoadFromFile(AnchorDockedGlobalOptionsFileName); + except + on E: Exception do + LazLoggerBase.DebugLn(['Error: (lazarus) [TAnchorDockGlobalOptions.LoadSafe] ', E.Message]); + end; +end; + +procedure TAnchorDockGlobalOptions.SaveToFile(AFilename: String); +var + Cfg: TConfigStorage; +begin + Cfg := GetIDEConfigStorage(AFilename, False); + try + Cfg.SetDeleteValue('EnableAnchorDock/Value', EnableAnchorDock, False); + Cfg.SetDeleteValue('DoneAskUserEnableAnchorDock/Value', DoneAskUserEnableAnchorDock, False); + finally + Cfg.Free; + end; +end; + +procedure TAnchorDockGlobalOptions.LoadFromFile(AFilename: String); +var + Cfg: TConfigStorage; +begin + Cfg := GetIDEConfigStorage(AFilename, True); + try + EnableAnchorDock := Cfg.GetValue('EnableAnchorDock/Value', False); + DoneAskUserEnableAnchorDock := Cfg.GetValue('DoneAskUserEnableAnchorDock/Value', False); + finally + Cfg.Free; + end; +end; + initialization {$I ADLayoutDefault.lrs} diff --git a/components/anchordocking/design/anchordockdsgninitialsetupframe.lfm b/components/anchordocking/design/anchordockdsgninitialsetupframe.lfm new file mode 100644 index 0000000000..5ffd49fe4d --- /dev/null +++ b/components/anchordocking/design/anchordockdsgninitialsetupframe.lfm @@ -0,0 +1,68 @@ +object AnchorDockSetupFrame: TAnchorDockSetupFrame + Left = 0 + Height = 240 + Top = 0 + Width = 320 + ChildSizing.LeftRightSpacing = 5 + ChildSizing.TopBottomSpacing = 5 + ChildSizing.HorizontalSpacing = 2 + ChildSizing.VerticalSpacing = 5 + ChildSizing.EnlargeHorizontal = crsHomogenousChildResize + ChildSizing.ShrinkHorizontal = crsHomogenousChildResize + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 2 + ClientHeight = 240 + ClientWidth = 320 + TabOrder = 0 + DesignLeft = 342 + DesignTop = 289 + object rbMulti: TRadioButton + Left = 5 + Height = 17 + Top = 5 + Width = 25 + Constraints.MaxWidth = 25 + TabOrder = 0 + OnChange = rbMultiChange + end + object lbMulti: TLabel + Left = 32 + Height = 17 + Top = 5 + Width = 283 + Caption = 'lbMulti' + WordWrap = True + OnClick = lbMultiClick + end + object rbSingle: TRadioButton + Left = 5 + Height = 17 + Top = 27 + Width = 25 + TabOrder = 1 + OnChange = rbMultiChange + end + object lbSingle: TLabel + Left = 32 + Height = 17 + Top = 27 + Width = 283 + Caption = 'lbSingle' + WordWrap = True + OnClick = lbSingleClick + end + object Label1: TLabel + Left = 5 + Height = 15 + Top = 49 + Width = 25 + end + object lbInfo: TLabel + Left = 32 + Height = 15 + Top = 49 + Width = 283 + Caption = 'lbInfo' + WordWrap = True + end +end diff --git a/components/anchordocking/design/anchordockdsgninitialsetupframe.pas b/components/anchordocking/design/anchordockdsgninitialsetupframe.pas new file mode 100644 index 0000000000..56311b858d --- /dev/null +++ b/components/anchordocking/design/anchordockdsgninitialsetupframe.pas @@ -0,0 +1,198 @@ +unit AnchorDockDsgnInitialSetupFrame; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, StdCtrls, LazarusPackageIntf, AnchorDockStr, IDEWindowIntf, + AnchorDesktopOptions; + +type + + TAnchorDockDsgnSetup = class; + + { TAnchorDockSetupFrame } + + TAnchorDockSetupFrame = class(TFrame) + Label1: TLabel; + lbInfo: TLabel; + lbMulti: TLabel; + lbSingle: TLabel; + rbMulti: TRadioButton; + rbSingle: TRadioButton; + procedure lbMultiClick(Sender: TObject); + procedure lbSingleClick(Sender: TObject); + procedure rbMultiChange(Sender: TObject); + private + FDialog: ISetupDlgProvider; + FSetup: TAnchorDockDsgnSetup; + FChanged: Boolean; + public + procedure Init; + end; + + { TAnchorDockDsgnSetup } + + TAnchorDockDsgnSetup = class(TObject, ISetupDlgFrame) + private + FTheFrame: TAnchorDockSetupFrame; + FInitDone: Boolean; + public + destructor Destroy; override; + function RequireSetup: boolean; + procedure AddToDialog(AnOwner, AParent: TComponent; // AParent: TWinControl that will hold the frame + ADialog: ISetupDlgProvider + ); + procedure Init; + procedure Done; + function Caption: String; + function SortOrder: Integer; + function UniqueId: String; + function GroupId: String; + procedure PageSelected(AnUserActivated: Boolean); + procedure UpdateState; + procedure ApplySelection; // Called when the IDE gets started + function Internal: TObject; + end; + +implementation + +var + Registration: TAnchorDockDsgnSetup; + +{$R *.lfm} + +{ TAnchorDockSetupFrame } + +procedure TAnchorDockSetupFrame.lbMultiClick(Sender: TObject); +begin + rbMulti.Checked := True; +end; + +procedure TAnchorDockSetupFrame.lbSingleClick(Sender: TObject); +begin + rbSingle.Checked := True; +end; + +procedure TAnchorDockSetupFrame.rbMultiChange(Sender: TObject); +begin + FChanged := True; + FDialog.FrameStateChanged(FSetup, issOk, isaReady); +end; + +procedure TAnchorDockSetupFrame.Init; +begin + lbMulti.Caption := setupMultiWindowIDEDisplayIndi; + lbSingle.Caption := setupSingleWindowIDEDisplayASi; + lbInfo.Caption := setupSingleWindowModeAllowsYou; +end; + +{ TAnchorDockDsgnSetup } + +destructor TAnchorDockDsgnSetup.Destroy; +begin + FreeAndNil(FTheFrame); + inherited Destroy; +end; + +function TAnchorDockDsgnSetup.RequireSetup: boolean; +begin + if AnchorDockGlobalOptions = nil then exit(False); + AnchorDockGlobalOptions.LoadSafe; + Result := not AnchorDockGlobalOptions.DoneAskUserEnableAnchorDock; +end; + +procedure TAnchorDockDsgnSetup.AddToDialog(AnOwner, AParent: TComponent; ADialog: ISetupDlgProvider + ); +begin + FTheFrame := TAnchorDockSetupFrame.Create(AnOwner); + FTheFrame.Parent := AParent as TWinControl; + FTheFrame.Align := alClient; + FTheFrame.FDialog := ADialog; + FTheFrame.FSetup := Self; + FTheFrame.Init; + + ADialog.SetGroupCaption(GroupId, SIDELayout); +end; + +procedure TAnchorDockDsgnSetup.Init; +begin + if AnchorDockGlobalOptions = nil then exit; + AnchorDockGlobalOptions.LoadSafe; +end; + +procedure TAnchorDockDsgnSetup.Done; +begin + FTheFrame := nil; +end; + +function TAnchorDockDsgnSetup.Caption: String; +begin + Result := 'Single/Multi Window'; +end; + +function TAnchorDockDsgnSetup.SortOrder: Integer; +begin + Result := -2; +end; + +function TAnchorDockDsgnSetup.UniqueId: String; +begin + Result := '{56782628-36B2-4082-9F9B-C4A1CABC7A98}'; +end; + +function TAnchorDockDsgnSetup.GroupId: String; +begin + Result := '{62435B06-4C68-4D77-A4BC-2496E35DF59C}'; +end; + +procedure TAnchorDockDsgnSetup.PageSelected(AnUserActivated: Boolean); +begin + if AnUserActivated then begin + FTheFrame.FChanged := True; + FTheFrame.FDialog.FrameStateChanged(Self, issOk, isaReady); + end; +end; + +procedure TAnchorDockDsgnSetup.UpdateState; +begin + if not FInitDone then begin + FTheFrame.rbSingle.Checked := AnchorDockGlobalOptions.EnableAnchorDock; + FTheFrame.rbMulti.Checked := not AnchorDockGlobalOptions.EnableAnchorDock; + FTheFrame.FChanged := AnchorDockGlobalOptions.DoneAskUserEnableAnchorDock; + end; + FInitDone := True; + + if (not FTheFrame.FChanged) then + FTheFrame.FDialog.FrameStateChanged(Self, issInfo, isaReady) + else + FTheFrame.FDialog.FrameStateChanged(Self, issOk, isaReady); + +end; + +procedure TAnchorDockDsgnSetup.ApplySelection; +begin + if AnchorDockGlobalOptions = nil then exit; + AnchorDockGlobalOptions.DoneAskUserEnableAnchorDock := True; + AnchorDockGlobalOptions.EnableAnchorDock := FTheFrame.rbSingle.Checked; + AnchorDockGlobalOptions.SaveSafe; + + if not AnchorDockGlobalOptions.EnableAnchorDock then + OnIDEDockMasterNeeded := nil; +end; + +function TAnchorDockDsgnSetup.Internal: TObject; +begin + Result := nil; +end; + +initialization + Registration := TAnchorDockDsgnSetup.Create; + SetupDlgFrameList.Add(Registration); + +finalization + FreeAndNil(Registration); + +end. + diff --git a/components/anchordocking/design/anchordockingdsgn.lpk b/components/anchordocking/design/anchordockingdsgn.lpk index 7c362811c6..f49949490a 100644 --- a/components/anchordocking/design/anchordockingdsgn.lpk +++ b/components/anchordocking/design/anchordockingdsgn.lpk @@ -1,6 +1,6 @@ - + @@ -19,7 +19,7 @@ - + @@ -33,7 +33,12 @@ + + + + + diff --git a/components/anchordocking/design/anchordockingdsgn.pas b/components/anchordocking/design/anchordockingdsgn.pas index 2e2cdbade3..2c774e951a 100644 --- a/components/anchordocking/design/anchordockingdsgn.pas +++ b/components/anchordocking/design/anchordockingdsgn.pas @@ -8,7 +8,7 @@ unit AnchorDockingDsgn; interface uses - RegisterAnchorDocking, AnchorDesktopOptions, LazarusPackageIntf; + RegisterAnchorDocking, AnchorDesktopOptions, AnchorDockDsgnInitialSetupFrame, LazarusPackageIntf; implementation diff --git a/components/anchordocking/design/registeranchordocking.lfm b/components/anchordocking/design/registeranchordocking.lfm index 645bff376c..ce45cf2a99 100644 --- a/components/anchordocking/design/registeranchordocking.lfm +++ b/components/anchordocking/design/registeranchordocking.lfm @@ -11,11 +11,22 @@ object AnchorDockIDEFrame: TAnchorDockIDEFrame object NoteLabel: TLabel Left = 6 Height = 15 - Top = 6 + Top = 31 Width = 483 Align = alTop BorderSpacing.Around = 6 Caption = 'NoteLabel' ParentColor = False end + object cbDisable: TCheckBox + Left = 6 + Height = 19 + Top = 6 + Width = 483 + Align = alTop + BorderSpacing.Around = 6 + Caption = 'cbDisable' + TabOrder = 0 + OnChange = cbDisableChange + end end diff --git a/components/anchordocking/design/registeranchordocking.pas b/components/anchordocking/design/registeranchordocking.pas index da15bc1585..d895d77db5 100644 --- a/components/anchordocking/design/registeranchordocking.pas +++ b/components/anchordocking/design/registeranchordocking.pas @@ -89,9 +89,12 @@ type { TAnchorDockIDEFrame } TAnchorDockIDEFrame = class(TAbstractIDEOptionsEditor) + cbDisable: TCheckBox; NoteLabel: TLabel; + procedure cbDisableChange(Sender: TObject); private FSettings: TAnchorDockSettings; + FDisabledChanged: boolean; public OptionsFrame: TAnchorDockOptionsFrame; constructor Create(TheOwner: TComponent); override; @@ -103,11 +106,15 @@ type class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; end; + TAnchorDockIDEDisabledFrame = class(TAnchorDockIDEFrame) + end; + var IDEAnchorDockMaster: TIDEAnchorDockMaster = nil; AnchorDockOptionsID: integer = 1000; procedure Register; +procedure ProvideIDEDockMaster; implementation @@ -115,7 +122,16 @@ implementation procedure Register; begin - if not (IDEDockMaster is TIDEAnchorDockMaster) then exit; + AnchorDockGlobalOptions.LoadSafe; + if not AnchorDockGlobalOptions.EnableAnchorDock then begin + AnchorDockOptionsID:=RegisterIDEOptionsEditor(GroupEnvironment,TAnchorDockIDEDisabledFrame, + AnchorDockOptionsID)^.Index; + exit; + end; + + // Calling IDEDockMaster will create it, if it hasn't already been created. + if not (IDEDockMaster is TIDEAnchorDockMaster) then + exit; // add options frame AnchorDockOptionsID:=RegisterIDEOptionsEditor(GroupEnvironment,TAnchorDockIDEFrame, @@ -418,6 +434,11 @@ end; { TAnchorDockIDEFrame } +procedure TAnchorDockIDEFrame.cbDisableChange(Sender: TObject); +begin + FDisabledChanged := True; +end; + constructor TAnchorDockIDEFrame.Create(TheOwner: TComponent); begin inherited Create(TheOwner); @@ -442,6 +463,11 @@ end; procedure TAnchorDockIDEFrame.Setup(ADialog: TAbstractOptionsEditorDialog); begin + cbDisable.Caption := SDisable; + if self is TAnchorDockIDEDisabledFrame then begin + NoteLabel.Visible := False; + exit; + end; if ADialog=nil then ; if IDEDockMaster=IDEAnchorDockMaster then begin NoteLabel.Visible:=false; @@ -460,6 +486,10 @@ end; procedure TAnchorDockIDEFrame.ReadSettings(AOptions: TAbstractIDEOptions); begin + cbDisable.Checked := not AnchorDockGlobalOptions.EnableAnchorDock; + FDisabledChanged := False; + if self is TAnchorDockIDEDisabledFrame then exit; + if not (AOptions is SupportedOptionsClass) then exit; DockMaster.SaveSettings(FSettings); OptionsFrame.LoadFromSettings(FSettings); @@ -467,6 +497,13 @@ end; procedure TAnchorDockIDEFrame.WriteSettings(AOptions: TAbstractIDEOptions); begin + AnchorDockGlobalOptions.EnableAnchorDock := not cbDisable.Checked; + if FDisabledChanged then + AnchorDockGlobalOptions.DoneAskUserEnableAnchorDock := True; + AnchorDockGlobalOptions.SaveSafe; + + if self is TAnchorDockIDEDisabledFrame then exit; + if not (AOptions is SupportedOptionsClass) then exit; OptionsFrame.SaveToSettings(FSettings); if (not DockMaster.SettingsAreEqual(FSettings)) @@ -481,17 +518,23 @@ begin Result:=IDEEditorGroups.GetByIndex(GroupEnvironment)^.GroupClass; end; -initialization - // create the dockmaster in the initialization section, so that it is ready - // when the Register procedures of the packages are called. - if IDEDockMaster<>nil then begin - debugln('WARNING: there is already another IDEDockMaster installed: ',DbgSName(IDEDockMaster)); - TIDEAnchorDockMaster.Create; - end else +procedure ProvideIDEDockMaster; +begin + OnIDEDockMasterNeeded := nil; + + AnchorDockGlobalOptions.LoadSafe; + if AnchorDockGlobalOptions.EnableAnchorDock then IDEDockMaster:=TIDEAnchorDockMaster.Create; +end; + +initialization + AnchorDockGlobalOptions := TAnchorDockGlobalOptions.Create; + + if OnIDEDockMasterNeeded = nil then OnIDEDockMasterNeeded := @ProvideIDEDockMaster; finalization FreeAndNil(IDEAnchorDockMaster); + FreeAndNil(AnchorDockGlobalOptions); end. diff --git a/components/anchordocking/languages/anchordockstr.cs.po b/components/anchordocking/languages/anchordockstr.cs.po index c5804dde7c..7b09fc48fa 100644 --- a/components/anchordocking/languages/anchordockstr.cs.po +++ b/components/anchordocking/languages/anchordockstr.cs.po @@ -300,3 +300,23 @@ msgstr "K použití anchordicking musíte nejdříve odinstalovat %s" msgid "Undock" msgstr "Uvolnit" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.de.po b/components/anchordocking/languages/anchordockstr.de.po index 725c40e833..0d75926ac0 100644 --- a/components/anchordocking/languages/anchordockstr.de.po +++ b/components/anchordocking/languages/anchordockstr.de.po @@ -295,3 +295,23 @@ msgstr "" msgid "Undock" msgstr "" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.es.po b/components/anchordocking/languages/anchordockstr.es.po index 2d92f19406..6b78486396 100644 --- a/components/anchordocking/languages/anchordockstr.es.po +++ b/components/anchordocking/languages/anchordockstr.es.po @@ -295,3 +295,23 @@ msgstr "Para utilizar anchordocking primero debe desinstalar %s" msgid "Undock" msgstr "Desacoplar" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.fr.po b/components/anchordocking/languages/anchordockstr.fr.po index 6df3cb1749..3ce3ed0d12 100644 --- a/components/anchordocking/languages/anchordockstr.fr.po +++ b/components/anchordocking/languages/anchordockstr.fr.po @@ -297,3 +297,23 @@ msgstr "Pour utiliser l'amarrage par ancres vous devez tout d'abord désinstalle msgid "Undock" msgstr "Désamarrer" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.hu.po b/components/anchordocking/languages/anchordockstr.hu.po index ffcd594b25..b60866d173 100644 --- a/components/anchordocking/languages/anchordockstr.hu.po +++ b/components/anchordocking/languages/anchordockstr.hu.po @@ -297,3 +297,23 @@ msgstr "Az ablakok rögzítésének használatához először el kell távolíta msgid "Undock" msgstr "Rögzítés feloldása" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.it.po b/components/anchordocking/languages/anchordockstr.it.po index 42359b3f3e..efdd9c8448 100644 --- a/components/anchordocking/languages/anchordockstr.it.po +++ b/components/anchordocking/languages/anchordockstr.it.po @@ -299,3 +299,23 @@ msgstr "Per usare l'anchordocking dovete prima disinstallare %s" msgid "Undock" msgstr "Libera" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.lt.po b/components/anchordocking/languages/anchordockstr.lt.po index b0f95a5278..6dd7333d8c 100644 --- a/components/anchordocking/languages/anchordockstr.lt.po +++ b/components/anchordocking/languages/anchordockstr.lt.po @@ -299,3 +299,23 @@ msgstr "Norint naudoti prieraišų pritvirtinimą, būtina išdiegti „%s“" msgid "Undock" msgstr "Naikinti pritvirtinimą" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.pl.po b/components/anchordocking/languages/anchordockstr.pl.po index a7f99fe0d0..0b9cc236c6 100644 --- a/components/anchordocking/languages/anchordockstr.pl.po +++ b/components/anchordocking/languages/anchordockstr.pl.po @@ -298,3 +298,23 @@ msgstr "Aby używać anchordocking musisz najpierw odinstalować %s" msgid "Undock" msgstr "Oddokuj" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.pot b/components/anchordocking/languages/anchordockstr.pot index 292ba068ed..3f9146dafe 100644 --- a/components/anchordocking/languages/anchordockstr.pot +++ b/components/anchordocking/languages/anchordockstr.pot @@ -287,3 +287,23 @@ msgstr "" msgid "Undock" msgstr "" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.pt_BR.po b/components/anchordocking/languages/anchordockstr.pt_BR.po index 2f1ae27e7b..411b338c98 100644 --- a/components/anchordocking/languages/anchordockstr.pt_BR.po +++ b/components/anchordocking/languages/anchordockstr.pt_BR.po @@ -297,3 +297,23 @@ msgstr "Para usar a ancoragem, deve-se primeiro desinstalar %s" msgid "Undock" msgstr "Desancorar" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.ru.po b/components/anchordocking/languages/anchordockstr.ru.po index 7e4aaae978..301b28775d 100644 --- a/components/anchordocking/languages/anchordockstr.ru.po +++ b/components/anchordocking/languages/anchordockstr.ru.po @@ -297,3 +297,23 @@ msgstr "Для использования anchordocking сначала удал msgid "Undock" msgstr "Расстыковать" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.tr.po b/components/anchordocking/languages/anchordockstr.tr.po index 0e93e610ea..9997b72c2c 100644 --- a/components/anchordocking/languages/anchordockstr.tr.po +++ b/components/anchordocking/languages/anchordockstr.tr.po @@ -299,3 +299,23 @@ msgstr "Bağlantıyı kullanmak için önce %s öğesini kaldırmanız gerekir" msgid "Undock" msgstr "Yuvadan ayır" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.uk.po b/components/anchordocking/languages/anchordockstr.uk.po index d5860e06ca..9fc62051a6 100644 --- a/components/anchordocking/languages/anchordockstr.uk.po +++ b/components/anchordocking/languages/anchordockstr.uk.po @@ -300,3 +300,23 @@ msgstr "Щоб використовувати якірне стикування, msgid "Undock" msgstr "Відстикувати" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/anchordocking/languages/anchordockstr.zh_CN.po b/components/anchordocking/languages/anchordockstr.zh_CN.po index 3f14ac8303..98ef1a09b6 100644 --- a/components/anchordocking/languages/anchordockstr.zh_CN.po +++ b/components/anchordocking/languages/anchordockstr.zh_CN.po @@ -298,3 +298,23 @@ msgstr "要使用 anchordocking,您必须先卸载 %s" msgid "Undock" msgstr "取消停靠" +#: anchordockstr.sdisable +msgid "Disabled (requires restart)" +msgstr "" + +#: anchordockstr.setupmultiwindowidedisplayindi +msgid "Multi Window IDE: Display individual separate Windows in the IDE" +msgstr "" + +#: anchordockstr.setupsinglewindowidedisplayasi +msgid "Single Window IDE: Display a single Window holding all parts of the IDE (Docked)" +msgstr "" + +#: anchordockstr.setupsinglewindowmodeallowsyou +msgid "Single Window mode allows you to undock individual Windows and have several group of Windows. The IDE will show additional \"Dock-Handles\" in each Window, which will allow you to change layout, but also require additional space." +msgstr "" + +#: anchordockstr.sidelayout +msgid "IDE Layout" +msgstr "" + diff --git a/components/dockedformeditor/dockedformeditor.lpk b/components/dockedformeditor/dockedformeditor.lpk index 77d395bfd9..7fc6725ff2 100644 --- a/components/dockedformeditor/dockedformeditor.lpk +++ b/components/dockedformeditor/dockedformeditor.lpk @@ -22,7 +22,7 @@ - + @@ -93,22 +93,29 @@ + + + + - + - + - + - + + + + diff --git a/components/dockedformeditor/dockedformeditor.pas b/components/dockedformeditor/dockedformeditor.pas index 1feb64c3e3..040c424b49 100644 --- a/components/dockedformeditor/dockedformeditor.pas +++ b/components/dockedformeditor/dockedformeditor.pas @@ -8,11 +8,10 @@ unit DockedFormEditor; interface uses - DockedRegister, DockedStrConsts, DockedFormAccesses, DockedMainIDE, - DockedResizer, DockedOptionsIDE, DockedOptionsFrame, DockedTools, - DockedDesignForm, DockedSourcePageControl, DockedSourceWindow, - DockedAnchorDesigner, DockedBasicAnchorDesigner, DockedAnchorControl, - DockedGrip, DockedResizeControl, LazarusPackageIntf; + DockedRegister, DockedStrConsts, DockedFormAccesses, DockedMainIDE, DockedResizer, + DockedOptionsIDE, DockedOptionsFrame, DockedTools, DockedDesignForm, DockedSourcePageControl, + DockedSourceWindow, DockedAnchorDesigner, DockedBasicAnchorDesigner, DockedAnchorControl, + DockedGrip, DockedResizeControl, DockedFormInitialSetupFrame, LazarusPackageIntf; implementation diff --git a/components/dockedformeditor/dockedforminitialsetupframe.lfm b/components/dockedformeditor/dockedforminitialsetupframe.lfm new file mode 100644 index 0000000000..7fa8dc0807 --- /dev/null +++ b/components/dockedformeditor/dockedforminitialsetupframe.lfm @@ -0,0 +1,68 @@ +object DockedFormEditSetupFrame: TDockedFormEditSetupFrame + Left = 0 + Height = 240 + Top = 0 + Width = 320 + ChildSizing.LeftRightSpacing = 5 + ChildSizing.TopBottomSpacing = 5 + ChildSizing.HorizontalSpacing = 2 + ChildSizing.VerticalSpacing = 5 + ChildSizing.EnlargeHorizontal = crsHomogenousChildResize + ChildSizing.ShrinkHorizontal = crsHomogenousChildResize + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 2 + ClientHeight = 240 + ClientWidth = 320 + TabOrder = 0 + DesignLeft = 348 + DesignTop = 3 + object rbFloat: TRadioButton + Left = 5 + Height = 17 + Top = 5 + Width = 25 + Constraints.MaxWidth = 25 + TabOrder = 0 + OnChange = rbDockedChange + end + object lbFloat: TLabel + Left = 32 + Height = 17 + Top = 5 + Width = 283 + Caption = 'lbFloat' + WordWrap = True + OnClick = lbFloatClick + end + object rbDocked: TRadioButton + Left = 5 + Height = 17 + Top = 27 + Width = 25 + TabOrder = 1 + OnChange = rbDockedChange + end + object lbDocked: TLabel + Left = 32 + Height = 17 + Top = 27 + Width = 283 + Caption = 'lbDocked' + WordWrap = True + OnClick = lbDockedClick + end + object Label1: TLabel + Left = 5 + Height = 15 + Top = 49 + Width = 25 + end + object lbInfo: TLabel + Left = 32 + Height = 15 + Top = 49 + Width = 283 + Caption = 'lbInfo' + WordWrap = True + end +end diff --git a/components/dockedformeditor/dockedforminitialsetupframe.pas b/components/dockedformeditor/dockedforminitialsetupframe.pas new file mode 100644 index 0000000000..a538ecfe15 --- /dev/null +++ b/components/dockedformeditor/dockedforminitialsetupframe.pas @@ -0,0 +1,192 @@ +unit DockedFormInitialSetupFrame; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, StdCtrls, ExtCtrls, LazarusPackageIntf, + DockedStrConsts, DockedOptionsIDE; + +type + + TDockedFormEditSetup = class; + + { TDockedFormEditSetupFrame } + + TDockedFormEditSetupFrame = class(TFrame) + Label1: TLabel; + lbInfo: TLabel; + lbFloat: TLabel; + lbDocked: TLabel; + rbFloat: TRadioButton; + rbDocked: TRadioButton; + procedure lbDockedClick(Sender: TObject); + procedure lbFloatClick(Sender: TObject); + procedure rbDockedChange(Sender: TObject); + private + FDialog: ISetupDlgProvider; + FSetup: TDockedFormEditSetup; + FChanged: Boolean; + public + procedure Init; + end; + + TDockedFormEditSetup = class(TObject, ISetupDlgFrame) + private + FTheFrame: TDockedFormEditSetupFrame; + FInitDone: boolean; + + public + destructor Destroy; override; + function RequireSetup: boolean; + procedure AddToDialog(AnOwner, AParent: TComponent; // AParent: TWinControl that will hold the frame + ADialog: ISetupDlgProvider + ); + procedure Init; + procedure Done; + function Caption: String; + function SortOrder: Integer; + function UniqueId: String; + function GroupId: String; + procedure PageSelected(AnUserActivated: Boolean); + procedure UpdateState; + procedure ApplySelection; // Called when the IDE gets started + function Internal: TObject; + end; + +implementation + +var + Registration: TDockedFormEditSetup; + +{$R *.lfm} + +{ TDockedFormEditSetupFrame } + +procedure TDockedFormEditSetupFrame.lbFloatClick(Sender: TObject); +begin + rbFloat.Checked := True; +end; + +procedure TDockedFormEditSetupFrame.rbDockedChange(Sender: TObject); +begin + FChanged := True; + FDialog.FrameStateChanged(FSetup, issOk, isaReady); +end; + +procedure TDockedFormEditSetupFrame.lbDockedClick(Sender: TObject); +begin + rbDocked.Checked:= True; +end; + +procedure TDockedFormEditSetupFrame.Init; +begin + lbFloat.Caption := setupDisplayTheFormEditorDesig; + lbDocked.Caption := setupDisplayDockTheFormEditorA; + lbInfo.Caption := setupWithTheDockedDesignerYouW; +end; + +{ TDockedFormEditSetup } + +destructor TDockedFormEditSetup.Destroy; +begin + FreeAndNil(FTheFrame); + inherited Destroy; +end; + +function TDockedFormEditSetup.RequireSetup: boolean; +begin + if DockedOptions = nil then exit(False); + DockedOptions.LoadSafe; + Result := not DockedOptions.DoneAskUserEnableDockedDesigner; +end; + +procedure TDockedFormEditSetup.AddToDialog(AnOwner, AParent: TComponent; ADialog: ISetupDlgProvider); +begin + FTheFrame := TDockedFormEditSetupFrame.Create(AnOwner); + FTheFrame.Parent := AParent as TWinControl; + FTheFrame.Align := alClient; + FTheFrame.FDialog := ADialog; + FTheFrame.FSetup := Self; + FTheFrame.Init; + + ADialog.SetGroupCaption(GroupId, SIDELayout); +end; + +procedure TDockedFormEditSetup.Init; +begin + if DockedOptions = nil then exit; + DockedOptions.LoadSafe; +end; + +procedure TDockedFormEditSetup.Done; +begin + FTheFrame := nil; // destroyed by parent +end; + +function TDockedFormEditSetup.Caption: String; +begin + Result := 'Embed form editor'; +end; + +function TDockedFormEditSetup.SortOrder: Integer; +begin + Result := -1; +end; + +procedure TDockedFormEditSetup.UpdateState; +begin + if not FInitDone then begin + FTheFrame.rbDocked.Checked := DockedOptions.EnableDockedDesigner; + FTheFrame.rbFloat.Checked := not DockedOptions.EnableDockedDesigner; + FTheFrame.FChanged := DockedOptions.DoneAskUserEnableDockedDesigner; + end; + FInitDone := True; + + if (not FTheFrame.FChanged) then + FTheFrame.FDialog.FrameStateChanged(Self, issInfo, isaReady) + else + FTheFrame.FDialog.FrameStateChanged(Self, issOk, isaReady); +end; + +procedure TDockedFormEditSetup.ApplySelection; +begin + if DockedOptions = nil then exit; + DockedOptions.DoneAskUserEnableDockedDesigner := True; + DockedOptions.EnableDockedDesigner := FTheFrame.rbDocked.Checked; + DockedOptions.SaveSafe; +end; + +function TDockedFormEditSetup.Internal: TObject; +begin + Result := nil; +end; + +function TDockedFormEditSetup.UniqueId: String; +begin + Result := '{234D6036-1AD5-4A9D-91FD-AE783B2E3A5D}'; +end; + +function TDockedFormEditSetup.GroupId: String; +begin + Result := '{62435B06-4C68-4D77-A4BC-2496E35DF59C}'; +end; + +procedure TDockedFormEditSetup.PageSelected(AnUserActivated: Boolean); +begin + if AnUserActivated then begin + FTheFrame.FChanged := True; + FTheFrame.FDialog.FrameStateChanged(Self, issOk, isaReady); + end; +end; + +initialization + Registration := TDockedFormEditSetup.Create; + SetupDlgFrameList.Add(Registration); + +finalization + FreeAndNil(Registration); + +end. + diff --git a/components/dockedformeditor/dockedstrconsts.pas b/components/dockedformeditor/dockedstrconsts.pas index e543162303..47e99fcf16 100644 --- a/components/dockedformeditor/dockedstrconsts.pas +++ b/components/dockedformeditor/dockedstrconsts.pas @@ -54,6 +54,15 @@ resourceString STabPositionRight = 'Right'; SArgumentOutOfRange = 'Argument out of range.'; + setupDisplayTheFormEditorDesig = 'Display the form editor (Designer) as a separate ' + +'floating form.'; + setupDisplayDockTheFormEditorA = 'Display/Dock the form editor as part of the source-' + +'editors.'; + setupWithTheDockedDesignerYouW = 'With the docked designer you will have a tab to ' + +'toggle the source and the design view. You can open a 2nd source-edit window to see both at' + +' the same time.'; + SDisableRequiresRestart = 'Disabled (requires restart)'; + SIDELayout = 'IDE Layout'; const STabPosition: array [Low(TTabPosition)..High(TTabPosition)] of String = ( diff --git a/components/dockedformeditor/languages/dockedstrconsts.fr.po b/components/dockedformeditor/languages/dockedstrconsts.fr.po index ba95b9f1b2..f7f3a4e99b 100644 --- a/components/dockedformeditor/languages/dockedstrconsts.fr.po +++ b/components/dockedformeditor/languages/dockedstrconsts.fr.po @@ -119,6 +119,22 @@ msgstr "Détacher les côtés du contrôle" msgid "Detach Control Side" msgstr "Détacher le côté du contrôle" +#: dockedstrconsts.sdisablerequiresrestart +msgid "Disabled (requires restart)" +msgstr "" + +#: dockedstrconsts.setupdisplaydocktheformeditora +msgid "Display/Dock the form editor as part of the source-editors." +msgstr "" + +#: dockedstrconsts.setupdisplaytheformeditordesig +msgid "Display the form editor (Designer) as a separate floating form." +msgstr "" + +#: dockedstrconsts.setupwiththedockeddesigneryouw +msgid "With the docked designer you will have a tab to toggle the source and the design view. You can open a 2nd source-edit window to see both at the same time." +msgstr "" + #: dockedstrconsts.sforcerefreshingcaption msgid "Force Refreshing At Sizing" msgstr "Forcer le rafraîchissement lors du redimensionnement" @@ -127,6 +143,10 @@ msgstr "Forcer le rafraîchissement lors du redimensionnement" msgid "Force refreshing form when user is sizing it" msgstr "Forcer l'actualisation de la fiche lorsque l'utilisateur la dimensionne" +#: dockedstrconsts.sidelayout +msgid "IDE Layout" +msgstr "" + #: dockedstrconsts.smouseborderfactorcaption msgid "Mouse cursor factor for BorderSpacing property" msgstr "Facteur de curseur de souris pour la propriété BorderSpacing" diff --git a/components/dockedformeditor/languages/dockedstrconsts.hu.po b/components/dockedformeditor/languages/dockedstrconsts.hu.po index dcfec87986..e70b18c5e3 100644 --- a/components/dockedformeditor/languages/dockedstrconsts.hu.po +++ b/components/dockedformeditor/languages/dockedstrconsts.hu.po @@ -121,6 +121,22 @@ msgstr "" msgid "Detach Control Side" msgstr "" +#: dockedstrconsts.sdisablerequiresrestart +msgid "Disabled (requires restart)" +msgstr "" + +#: dockedstrconsts.setupdisplaydocktheformeditora +msgid "Display/Dock the form editor as part of the source-editors." +msgstr "" + +#: dockedstrconsts.setupdisplaytheformeditordesig +msgid "Display the form editor (Designer) as a separate floating form." +msgstr "" + +#: dockedstrconsts.setupwiththedockeddesigneryouw +msgid "With the docked designer you will have a tab to toggle the source and the design view. You can open a 2nd source-edit window to see both at the same time." +msgstr "" + #: dockedstrconsts.sforcerefreshingcaption msgid "Force Refreshing At Sizing" msgstr "" @@ -129,6 +145,10 @@ msgstr "" msgid "Force refreshing form when user is sizing it" msgstr "" +#: dockedstrconsts.sidelayout +msgid "IDE Layout" +msgstr "" + #: dockedstrconsts.smouseborderfactorcaption msgid "Mouse cursor factor for BorderSpacing property" msgstr "" diff --git a/components/dockedformeditor/languages/dockedstrconsts.lt.po b/components/dockedformeditor/languages/dockedstrconsts.lt.po index 5a9a16d51f..3c3d110e06 100644 --- a/components/dockedformeditor/languages/dockedstrconsts.lt.po +++ b/components/dockedformeditor/languages/dockedstrconsts.lt.po @@ -122,6 +122,22 @@ msgstr "" msgid "Detach Control Side" msgstr "" +#: dockedstrconsts.sdisablerequiresrestart +msgid "Disabled (requires restart)" +msgstr "" + +#: dockedstrconsts.setupdisplaydocktheformeditora +msgid "Display/Dock the form editor as part of the source-editors." +msgstr "" + +#: dockedstrconsts.setupdisplaytheformeditordesig +msgid "Display the form editor (Designer) as a separate floating form." +msgstr "" + +#: dockedstrconsts.setupwiththedockeddesigneryouw +msgid "With the docked designer you will have a tab to toggle the source and the design view. You can open a 2nd source-edit window to see both at the same time." +msgstr "" + #: dockedstrconsts.sforcerefreshingcaption msgid "Force Refreshing At Sizing" msgstr "" @@ -130,6 +146,10 @@ msgstr "" msgid "Force refreshing form when user is sizing it" msgstr "" +#: dockedstrconsts.sidelayout +msgid "IDE Layout" +msgstr "" + #: dockedstrconsts.smouseborderfactorcaption msgid "Mouse cursor factor for BorderSpacing property" msgstr "" diff --git a/components/dockedformeditor/languages/dockedstrconsts.pot b/components/dockedformeditor/languages/dockedstrconsts.pot index fd8a579b71..ffca9d3f4a 100644 --- a/components/dockedformeditor/languages/dockedstrconsts.pot +++ b/components/dockedformeditor/languages/dockedstrconsts.pot @@ -108,6 +108,22 @@ msgstr "" msgid "Detach Control Side" msgstr "" +#: dockedstrconsts.sdisablerequiresrestart +msgid "Disabled (requires restart)" +msgstr "" + +#: dockedstrconsts.setupdisplaydocktheformeditora +msgid "Display/Dock the form editor as part of the source-editors." +msgstr "" + +#: dockedstrconsts.setupdisplaytheformeditordesig +msgid "Display the form editor (Designer) as a separate floating form." +msgstr "" + +#: dockedstrconsts.setupwiththedockeddesigneryouw +msgid "With the docked designer you will have a tab to toggle the source and the design view. You can open a 2nd source-edit window to see both at the same time." +msgstr "" + #: dockedstrconsts.sforcerefreshingcaption msgid "Force Refreshing At Sizing" msgstr "" @@ -116,6 +132,10 @@ msgstr "" msgid "Force refreshing form when user is sizing it" msgstr "" +#: dockedstrconsts.sidelayout +msgid "IDE Layout" +msgstr "" + #: dockedstrconsts.smouseborderfactorcaption msgid "Mouse cursor factor for BorderSpacing property" msgstr "" diff --git a/components/dockedformeditor/languages/dockedstrconsts.pt_BR.po b/components/dockedformeditor/languages/dockedstrconsts.pt_BR.po index 891205ee02..5e0bd19040 100644 --- a/components/dockedformeditor/languages/dockedstrconsts.pt_BR.po +++ b/components/dockedformeditor/languages/dockedstrconsts.pt_BR.po @@ -118,6 +118,22 @@ msgstr "Desanexar lados do controle" msgid "Detach Control Side" msgstr "Desanexar lado do controle" +#: dockedstrconsts.sdisablerequiresrestart +msgid "Disabled (requires restart)" +msgstr "" + +#: dockedstrconsts.setupdisplaydocktheformeditora +msgid "Display/Dock the form editor as part of the source-editors." +msgstr "" + +#: dockedstrconsts.setupdisplaytheformeditordesig +msgid "Display the form editor (Designer) as a separate floating form." +msgstr "" + +#: dockedstrconsts.setupwiththedockeddesigneryouw +msgid "With the docked designer you will have a tab to toggle the source and the design view. You can open a 2nd source-edit window to see both at the same time." +msgstr "" + #: dockedstrconsts.sforcerefreshingcaption msgid "Force Refreshing At Sizing" msgstr "Forçar atualização ao redimensionar" @@ -126,6 +142,10 @@ msgstr "Forçar atualização ao redimensionar" msgid "Force refreshing form when user is sizing it" msgstr "Forçar atualização do formulário quando o usuário o estiver redimensionando" +#: dockedstrconsts.sidelayout +msgid "IDE Layout" +msgstr "" + #: dockedstrconsts.smouseborderfactorcaption msgid "Mouse cursor factor for BorderSpacing property" msgstr "Fator do cursor do mouse para a propriedade BorderSpacing" diff --git a/components/dockedformeditor/languages/dockedstrconsts.ru.po b/components/dockedformeditor/languages/dockedstrconsts.ru.po index 9f2dbde5d3..3bc213ff6f 100644 --- a/components/dockedformeditor/languages/dockedstrconsts.ru.po +++ b/components/dockedformeditor/languages/dockedstrconsts.ru.po @@ -118,6 +118,22 @@ msgstr "Отвязать стороны компонента" msgid "Detach Control Side" msgstr "Отвязать сторону компонента" +#: dockedstrconsts.sdisablerequiresrestart +msgid "Disabled (requires restart)" +msgstr "" + +#: dockedstrconsts.setupdisplaydocktheformeditora +msgid "Display/Dock the form editor as part of the source-editors." +msgstr "" + +#: dockedstrconsts.setupdisplaytheformeditordesig +msgid "Display the form editor (Designer) as a separate floating form." +msgstr "" + +#: dockedstrconsts.setupwiththedockeddesigneryouw +msgid "With the docked designer you will have a tab to toggle the source and the design view. You can open a 2nd source-edit window to see both at the same time." +msgstr "" + #: dockedstrconsts.sforcerefreshingcaption msgid "Force Refreshing At Sizing" msgstr "Принудительно обновлять при изменении размера" @@ -126,6 +142,10 @@ msgstr "Принудительно обновлять при изменении msgid "Force refreshing form when user is sizing it" msgstr "Принудительно обновлять форму при изменении её размера" +#: dockedstrconsts.sidelayout +msgid "IDE Layout" +msgstr "" + #: dockedstrconsts.smouseborderfactorcaption msgid "Mouse cursor factor for BorderSpacing property" msgstr "Масштаб движения курсора мыши для свойства BorderSpacing" diff --git a/components/dockedformeditor/languages/dockedstrconsts.tr.po b/components/dockedformeditor/languages/dockedstrconsts.tr.po index 9bb36e78e9..2d500482a3 100644 --- a/components/dockedformeditor/languages/dockedstrconsts.tr.po +++ b/components/dockedformeditor/languages/dockedstrconsts.tr.po @@ -118,6 +118,22 @@ msgstr "Kontrol Taraflarını Ayırın" msgid "Detach Control Side" msgstr "Kontrol Tarafını Ayırın" +#: dockedstrconsts.sdisablerequiresrestart +msgid "Disabled (requires restart)" +msgstr "" + +#: dockedstrconsts.setupdisplaydocktheformeditora +msgid "Display/Dock the form editor as part of the source-editors." +msgstr "" + +#: dockedstrconsts.setupdisplaytheformeditordesig +msgid "Display the form editor (Designer) as a separate floating form." +msgstr "" + +#: dockedstrconsts.setupwiththedockeddesigneryouw +msgid "With the docked designer you will have a tab to toggle the source and the design view. You can open a 2nd source-edit window to see both at the same time." +msgstr "" + #: dockedstrconsts.sforcerefreshingcaption msgid "Force Refreshing At Sizing" msgstr "İndirme ve çıkartma için her zaman zorla" @@ -126,6 +142,10 @@ msgstr "İndirme ve çıkartma için her zaman zorla" msgid "Force refreshing form when user is sizing it" msgstr "Kullanıcı boyutlandırırken formu yenilemeye zorla" +#: dockedstrconsts.sidelayout +msgid "IDE Layout" +msgstr "" + #: dockedstrconsts.smouseborderfactorcaption msgid "Mouse cursor factor for BorderSpacing property" msgstr "BorderSpacing özelliği için fare imleci faktörü" diff --git a/components/dockedformeditor/languages/dockedstrconsts.uk.po b/components/dockedformeditor/languages/dockedstrconsts.uk.po index 2f83c64148..1a04f3a596 100644 --- a/components/dockedformeditor/languages/dockedstrconsts.uk.po +++ b/components/dockedformeditor/languages/dockedstrconsts.uk.po @@ -120,6 +120,22 @@ msgstr "Від'єднати боки елемента керування" msgid "Detach Control Side" msgstr "Від'єднати бік елемента керування" +#: dockedstrconsts.sdisablerequiresrestart +msgid "Disabled (requires restart)" +msgstr "" + +#: dockedstrconsts.setupdisplaydocktheformeditora +msgid "Display/Dock the form editor as part of the source-editors." +msgstr "" + +#: dockedstrconsts.setupdisplaytheformeditordesig +msgid "Display the form editor (Designer) as a separate floating form." +msgstr "" + +#: dockedstrconsts.setupwiththedockeddesigneryouw +msgid "With the docked designer you will have a tab to toggle the source and the design view. You can open a 2nd source-edit window to see both at the same time." +msgstr "" + #: dockedstrconsts.sforcerefreshingcaption msgid "Force Refreshing At Sizing" msgstr "Примусове оновлення при зміні розміру" @@ -128,6 +144,10 @@ msgstr "Примусове оновлення при зміні розміру" msgid "Force refreshing form when user is sizing it" msgstr "Примусове оновлення форми, коли користувач змінює її розміри" +#: dockedstrconsts.sidelayout +msgid "IDE Layout" +msgstr "" + #: dockedstrconsts.smouseborderfactorcaption msgid "Mouse cursor factor for BorderSpacing property" msgstr "Коефіцієнт вказівника миші для властивості BorderSpacing" diff --git a/components/dockedformeditor/languages/dockedstrconsts.zh_CN.po b/components/dockedformeditor/languages/dockedstrconsts.zh_CN.po index ed52d5fa40..4231bec083 100644 --- a/components/dockedformeditor/languages/dockedstrconsts.zh_CN.po +++ b/components/dockedformeditor/languages/dockedstrconsts.zh_CN.po @@ -119,6 +119,22 @@ msgstr "分离控制面板" msgid "Detach Control Side" msgstr "分离控制面板" +#: dockedstrconsts.sdisablerequiresrestart +msgid "Disabled (requires restart)" +msgstr "" + +#: dockedstrconsts.setupdisplaydocktheformeditora +msgid "Display/Dock the form editor as part of the source-editors." +msgstr "" + +#: dockedstrconsts.setupdisplaytheformeditordesig +msgid "Display the form editor (Designer) as a separate floating form." +msgstr "" + +#: dockedstrconsts.setupwiththedockeddesigneryouw +msgid "With the docked designer you will have a tab to toggle the source and the design view. You can open a 2nd source-edit window to see both at the same time." +msgstr "" + #: dockedstrconsts.sforcerefreshingcaption msgid "Force Refreshing At Sizing" msgstr "强制刷新大小" @@ -127,6 +143,10 @@ msgstr "强制刷新大小" msgid "Force refreshing form when user is sizing it" msgstr "用户调整大小时强制刷新窗体" +#: dockedstrconsts.sidelayout +msgid "IDE Layout" +msgstr "" + #: dockedstrconsts.smouseborderfactorcaption msgid "Mouse cursor factor for BorderSpacing property" msgstr "BorderSpacing 属性的鼠标指针系数" diff --git a/components/dockedformeditor/source/dockedoptionsframe.lfm b/components/dockedformeditor/source/dockedoptionsframe.lfm index 986f6bfc4f..f10ce9d980 100644 --- a/components/dockedformeditor/source/dockedoptionsframe.lfm +++ b/components/dockedformeditor/source/dockedoptionsframe.lfm @@ -6,257 +6,303 @@ object FrameDockedOptions: TFrameDockedOptions ClientHeight = 489 ClientWidth = 571 TabOrder = 0 - DesignLeft = 229 - DesignTop = 262 - object LabelTabPosition: TLabel - AnchorSideLeft.Control = Owner + DesignLeft = 336 + DesignTop = 249 + object cbDisableDockFormEd: TCheckBox + AnchorSideLeft.Control = LabelTabPosition AnchorSideTop.Control = Owner Left = 6 - Height = 13 + Height = 19 Top = 0 - Width = 58 + Width = 137 BorderSpacing.Left = 6 - Caption = 'Tab Position' - ParentColor = False + Caption = 'cbDisableDockFormEd' + TabOrder = 0 + OnChange = cbDisableDockFormEdChange end - object ComboBoxTabPosition: TComboBox + object Panel1: TPanel AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = LabelTabPosition + AnchorSideTop.Control = cbDisableDockFormEd AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 6 - Height = 21 - Top = 13 - Width = 559 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Right = 6 - ItemHeight = 13 - ParentShowHint = False - ReadOnly = True - ShowHint = True - Style = csDropDownList - TabOrder = 0 - end - object LabelResizerColor: TLabel - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = ComboBoxTabPosition - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 13 - Top = 40 - Width = 63 - BorderSpacing.Top = 6 - Caption = 'Resizer Color' - ParentColor = False - end - object ColorBoxResizer: TColorBox - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = LabelResizerColor - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = ComboBoxTabPosition - AnchorSideRight.Side = asrBottom - Left = 6 - Height = 22 - Top = 53 - Width = 559 - Style = [cbStandardColors, cbExtendedColors, cbSystemColors, cbIncludeDefault, cbCustomColor] - Anchors = [akTop, akLeft, akRight] - ItemHeight = 16 - ParentShowHint = False - ShowHint = True - TabOrder = 1 - end - object DividerBevelAnchors: TDividerBevel - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = CheckBoxForceRefreshing - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = ComboBoxTabPosition - AnchorSideRight.Side = asrBottom - Left = 6 - Height = 13 - Top = 104 - Width = 559 - Caption = 'Anchors' - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Top = 6 - Font.Style = [fsBold] - ParentFont = False - end - object CheckBoxAnchorTabVisible: TCheckBox - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = DividerBevelAnchors - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 17 - Top = 123 - Width = 109 - BorderSpacing.Top = 6 - Caption = 'Show Anchors Tab' - OnChange = CheckBoxAnchorTabVisibleChange - ParentShowHint = False - ShowHint = True - TabOrder = 2 - end - object LabelCaptureDistance: TLabel - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = CheckBoxAnchorTabVisible - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 13 - Top = 146 - Width = 83 - BorderSpacing.Top = 6 - Caption = 'Capture Distance' - ParentColor = False - end - object SpinEditCaptureDistance: TSpinEdit - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = LabelCaptureDistance - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = ComboBoxTabPosition - AnchorSideRight.Side = asrBottom - Left = 6 - Height = 21 - Top = 159 - Width = 559 - Anchors = [akTop, akLeft, akRight] - ParentShowHint = False - ShowHint = True - TabOrder = 3 - end - object LabelMouseBorderFactor: TLabel - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = SpinEditCaptureDistance - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 13 - Top = 186 - Width = 114 - BorderSpacing.Top = 6 - Caption = 'Mouse Bordering Factor' - ParentColor = False - end - object SpinEditMouseBorderFactor: TSpinEdit - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = LabelMouseBorderFactor - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = ComboBoxTabPosition - AnchorSideRight.Side = asrBottom - Left = 6 - Height = 21 - Top = 199 - Width = 559 - Anchors = [akTop, akLeft, akRight] - MaxValue = 10 - MinValue = 1 - ParentShowHint = False - ShowHint = True - TabOrder = 4 - Value = 1 - end - object CheckBoxTreatAlign: TCheckBox - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = SpinEditMouseBorderFactor - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 17 - Top = 226 - Width = 128 - BorderSpacing.Top = 6 - Caption = 'Automatic Treat Aligns' - ParentShowHint = False - ShowHint = True - TabOrder = 5 - end - object LabelColors: TLabel - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = CheckBoxAllowSizing - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 13 - Top = 295 - Width = 30 - BorderSpacing.Top = 6 - Caption = 'Colors' - ParentColor = False - end - object CheckBoxForceRefreshing: TCheckBox - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = ColorBoxResizer - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 17 - Top = 81 - Width = 146 - BorderSpacing.Top = 6 - Caption = 'Force Refreshing At Sizing' - OnChange = CheckBoxAnchorTabVisibleChange - ParentShowHint = False - ShowHint = True - TabOrder = 6 - end - object AnchorsColorBox: TColorBox - AnchorSideLeft.Control = ComboBoxTabPosition - AnchorSideTop.Control = AnchorsColorListBox - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = ComboBoxTabPosition - AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom Left = 6 - Height = 26 - Top = 430 - Width = 559 - Style = [cbStandardColors, cbExtendedColors, cbSystemColors, cbIncludeNone, cbIncludeDefault, cbCustomColor, cbPrettyNames, cbCustomColors] - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Top = 2 - ItemHeight = 20 - OnChange = AnchorsColorBoxChange - TabOrder = 7 - end - object AnchorsColorListBox: TColorListBox - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = LabelColors - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = ComboBoxTabPosition - AnchorSideRight.Side = asrBottom - Left = 6 - Height = 143 - Top = 308 - Width = 559 - Style = [cbCustomColors] - OnGetColors = AnchorsColorListBoxGetColors - Anchors = [akTop, akLeft, akRight] - ItemHeight = 0 - OnSelectionChange = AnchorsColorListBoxSelectionChange - TabOrder = 8 - end - object CheckBoxTreatBorder: TCheckBox - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = CheckBoxTreatAlign - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 17 - Top = 249 - Width = 170 - BorderSpacing.Top = 6 - Caption = 'Automatic Treat Around Border' - ParentShowHint = False - ShowHint = True - TabOrder = 9 - end - object CheckBoxAllowSizing: TCheckBox - AnchorSideLeft.Control = LabelTabPosition - AnchorSideTop.Control = CheckBoxTreatBorder - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 17 - Top = 272 - Width = 170 - BorderSpacing.Top = 6 - Caption = 'Allow Sizing' - ParentShowHint = False - ShowHint = True - TabOrder = 10 + Height = 470 + Top = 19 + Width = 565 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Left = 6 + BevelOuter = bvNone + Caption = 'Panel1' + ClientHeight = 470 + ClientWidth = 565 + TabOrder = 1 + object ComboBoxTabPosition: TComboBox + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = LabelTabPosition + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = Owner + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 23 + Top = 33 + Width = 565 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Right = 6 + ItemHeight = 15 + ParentShowHint = False + ReadOnly = True + ShowHint = True + Style = csDropDownList + TabOrder = 0 + end + object LabelResizerColor: TLabel + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = ComboBoxTabPosition + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 15 + Top = 62 + Width = 68 + BorderSpacing.Top = 6 + Caption = 'Resizer Color' + ParentColor = False + end + object ColorBoxResizer: TColorBox + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = LabelResizerColor + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = ComboBoxTabPosition + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 22 + Top = 77 + Width = 565 + Style = [cbStandardColors, cbExtendedColors, cbSystemColors, cbIncludeDefault, cbCustomColor] + Anchors = [akTop, akLeft, akRight] + ItemHeight = 16 + ParentShowHint = False + ShowHint = True + TabOrder = 1 + end + object DividerBevelAnchors: TDividerBevel + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = CheckBoxForceRefreshing + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = ComboBoxTabPosition + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 15 + Top = 130 + Width = 565 + Caption = 'Anchors' + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Top = 6 + Font.Style = [fsBold] + ParentFont = False + end + object CheckBoxAnchorTabVisible: TCheckBox + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = DividerBevelAnchors + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 19 + Top = 151 + Width = 116 + BorderSpacing.Top = 6 + Caption = 'Show Anchors Tab' + ParentShowHint = False + ShowHint = True + TabOrder = 2 + OnChange = CheckBoxAnchorTabVisibleChange + end + object LabelCaptureDistance: TLabel + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = CheckBoxAnchorTabVisible + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 15 + Top = 176 + Width = 90 + BorderSpacing.Top = 6 + Caption = 'Capture Distance' + ParentColor = False + end + object SpinEditCaptureDistance: TSpinEdit + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = LabelCaptureDistance + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = ComboBoxTabPosition + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 23 + Top = 191 + Width = 565 + Anchors = [akTop, akLeft, akRight] + ParentShowHint = False + ShowHint = True + TabOrder = 3 + end + object LabelMouseBorderFactor: TLabel + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = SpinEditCaptureDistance + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 15 + Top = 220 + Width = 127 + BorderSpacing.Top = 6 + Caption = 'Mouse Bordering Factor' + ParentColor = False + end + object SpinEditMouseBorderFactor: TSpinEdit + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = LabelMouseBorderFactor + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = ComboBoxTabPosition + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 23 + Top = 235 + Width = 565 + Anchors = [akTop, akLeft, akRight] + MaxValue = 10 + MinValue = 1 + ParentShowHint = False + ShowHint = True + TabOrder = 4 + Value = 1 + end + object CheckBoxTreatAlign: TCheckBox + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = SpinEditMouseBorderFactor + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 19 + Top = 264 + Width = 139 + BorderSpacing.Top = 6 + Caption = 'Automatic Treat Aligns' + ParentShowHint = False + ShowHint = True + TabOrder = 5 + end + object LabelColors: TLabel + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = CheckBoxAllowSizing + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 15 + Top = 339 + Width = 34 + BorderSpacing.Top = 6 + Caption = 'Colors' + ParentColor = False + end + object CheckBoxForceRefreshing: TCheckBox + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = ColorBoxResizer + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 19 + Top = 105 + Width = 155 + BorderSpacing.Top = 6 + Caption = 'Force Refreshing At Sizing' + ParentShowHint = False + ShowHint = True + TabOrder = 6 + OnChange = CheckBoxAnchorTabVisibleChange + end + object AnchorsColorBox: TColorBox + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = AnchorsColorListBox + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = ComboBoxTabPosition + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Side = asrBottom + Left = 0 + Height = 26 + Top = 499 + Width = 565 + Style = [cbStandardColors, cbExtendedColors, cbSystemColors, cbIncludeNone, cbIncludeDefault, cbCustomColor, cbPrettyNames, cbCustomColors] + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Top = 2 + ItemHeight = 20 + TabOrder = 7 + OnChange = AnchorsColorBoxChange + end + object AnchorsColorListBox: TColorListBox + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = LabelColors + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = ComboBoxTabPosition + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 143 + Top = 354 + Width = 565 + Style = [cbCustomColors] + OnGetColors = AnchorsColorListBoxGetColors + Anchors = [akTop, akLeft, akRight] + ItemHeight = 0 + OnSelectionChange = AnchorsColorListBoxSelectionChange + TabOrder = 8 + end + object CheckBoxTreatBorder: TCheckBox + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = CheckBoxTreatAlign + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 19 + Top = 289 + Width = 184 + BorderSpacing.Top = 6 + Caption = 'Automatic Treat Around Border' + ParentShowHint = False + ShowHint = True + TabOrder = 9 + end + object CheckBoxAllowSizing: TCheckBox + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = CheckBoxTreatBorder + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 19 + Top = 314 + Width = 82 + BorderSpacing.Top = 6 + Caption = 'Allow Sizing' + ParentShowHint = False + ShowHint = True + TabOrder = 10 + end + object DividerBevel1: TDividerBevel + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = Panel1 + AnchorSideRight.Control = ComboBoxTabPosition + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 15 + Top = 0 + Width = 571 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Bottom = 3 + Font.Style = [fsBold] + ParentFont = False + end + object LabelTabPosition: TLabel + AnchorSideLeft.Control = Panel1 + AnchorSideTop.Control = DividerBevel1 + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 15 + Top = 18 + Width = 64 + Caption = 'Tab Position' + ParentColor = False + end end end diff --git a/components/dockedformeditor/source/dockedoptionsframe.pas b/components/dockedformeditor/source/dockedoptionsframe.pas index 654cda4c50..5c3de9025b 100644 --- a/components/dockedformeditor/source/dockedoptionsframe.pas +++ b/components/dockedformeditor/source/dockedoptionsframe.pas @@ -29,6 +29,7 @@ type { TFrameDockedOptions } TFrameDockedOptions = class(TAbstractIDEOptionsEditor) + cbDisableDockFormEd: TCheckBox; CheckBoxAnchorTabVisible: TCheckBox; CheckBoxForceRefreshing: TCheckBox; CheckBoxTreatAlign: TCheckBox; @@ -37,6 +38,7 @@ type ColorBoxResizer: TColorBox; ComboBoxTabPosition: TComboBox; DividerBevelAnchors: TDividerBevel; + DividerBevel1: TDividerBevel; LabelColors: TLabel; LabelCaptureDistance: TLabel; LabelMouseBorderFactor: TLabel; @@ -44,8 +46,10 @@ type LabelTabPosition: TLabel; AnchorsColorBox: TColorBox; AnchorsColorListBox: TColorListBox; + Panel1: TPanel; SpinEditCaptureDistance: TSpinEdit; SpinEditMouseBorderFactor: TSpinEdit; + procedure cbDisableDockFormEdChange(Sender: TObject); procedure CheckBoxAnchorTabVisibleChange(Sender: TObject); procedure AnchorsColorBoxChange(Sender: TObject); procedure AnchorsColorListBoxGetColors(Sender: TCustomColorListBox; Items: TStrings); @@ -68,6 +72,7 @@ type FLastTreatAlign: Boolean; FLastTreatBorder: Boolean; FReady: Boolean; + FDisableChanged: Boolean; public function GetTitle: String; override; procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; @@ -77,6 +82,12 @@ type class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; end; + { TFrameDisabledDockedOptions } + + TFrameDisabledDockedOptions = class(TFrameDockedOptions) + constructor Create(AnOwner: TComponent); override; + end; + implementation {$R *.lfm} @@ -95,6 +106,11 @@ begin SpinEditMouseBorderFactor.Enabled := CheckBoxAnchorTabVisible.Checked; end; +procedure TFrameDockedOptions.cbDisableDockFormEdChange(Sender: TObject); +begin + FDisableChanged := True; +end; + procedure TFrameDockedOptions.AnchorsColorBoxChange(Sender: TObject); var i: Integer; @@ -144,6 +160,7 @@ begin LabelTabPosition.Caption := STabPositionCaption; LabelCaptureDistance.Caption := SCaptureDistanceCaption; LabelMouseBorderFactor.Caption := SMouseBorderFactorCaption; + cbDisableDockFormEd.Caption := SDisableRequiresRestart; CheckBoxAllowSizing.Hint := SAllowSizingHint; CheckBoxAnchorTabVisible.Hint := SAnchorTabVisibleHint; @@ -174,6 +191,8 @@ begin FLastTabPosition := DockedOptions.TabPosition; FLastTreatAlign := DockedOptions.TreatAlign; FLastTreatBorder := DockedOptions.TreatBorder; + cbDisableDockFormEd.Checked := not DockedOptions.EnableDockedDesigner; + FDisableChanged := False; RestoreSettings(AOptions); FReady := true; end; @@ -196,6 +215,9 @@ begin DockedOptions.TabPosition := TTabPosition(ComboBoxTabPosition.ItemIndex); DockedOptions.TreatAlign := CheckBoxTreatAlign.Checked; DockedOptions.TreatBorder := CheckBoxTreatBorder.Checked; + if FDisableChanged then + DockedOptions.DoneAskUserEnableDockedDesigner := True; + DockedOptions.EnableDockedDesigner := not cbDisableDockFormEd.Checked; if DockedOptions.Modified then begin @@ -231,5 +253,13 @@ begin Result := IDEEditorGroups.GetByIndex(GroupEnvironment)^.GroupClass; end; +{ TFrameDisabledDockedOptions } + +constructor TFrameDisabledDockedOptions.Create(AnOwner: TComponent); +begin + inherited Create(AnOwner); + Panel1.Visible := False; +end; + end. diff --git a/components/dockedformeditor/source/dockedoptionside.pas b/components/dockedformeditor/source/dockedoptionside.pas index 79ee521182..071462696a 100644 --- a/components/dockedformeditor/source/dockedoptionside.pas +++ b/components/dockedformeditor/source/dockedoptionside.pas @@ -69,6 +69,8 @@ type FAnchorTopColor: TColor; FCaptureDistance: Integer; FChangeStamp: Integer; + FDoneAskUserEnableDockedDesigner: boolean; + FEnableDockedDesigner: boolean; FForceRefreshing: Boolean; FLastSavedChangeStamp: Integer; FMouseBorderFactor: Integer; @@ -87,6 +89,8 @@ type procedure SetAnchorTargetColor(AValue: TColor); procedure SetAnchorTopColor(AValue: TColor); procedure SetCaptureDistance(AValue: Integer); + procedure SetDoneAskUserEnableDockedDesigner(AValue: boolean); + procedure SetEnableDockedDesigner(AValue: boolean); procedure SetForceRefreshing(AValue: Boolean); procedure SetModified(AValue: Boolean); procedure SetMouseBorderFactor(AValue: Integer); @@ -121,6 +125,8 @@ type property TabPosition: TTabPosition read FTabPosition write SetTabPosition; property TreatAlign: Boolean read FTreatAlign write SetTreatAlign; property TreatBorder: Boolean read FTreatBorder write SetTreatBorder; + property EnableDockedDesigner: boolean read FEnableDockedDesigner write SetEnableDockedDesigner default False; + property DoneAskUserEnableDockedDesigner: boolean read FDoneAskUserEnableDockedDesigner write SetDoneAskUserEnableDockedDesigner default False; end; const @@ -209,6 +215,20 @@ begin IncreaseChangeStamp; end; +procedure TDockedOptions.SetDoneAskUserEnableDockedDesigner(AValue: boolean); +begin + if FDoneAskUserEnableDockedDesigner = AValue then Exit; + FDoneAskUserEnableDockedDesigner := AValue; + IncreaseChangeStamp; +end; + +procedure TDockedOptions.SetEnableDockedDesigner(AValue: boolean); +begin + if FEnableDockedDesigner = AValue then Exit; + FEnableDockedDesigner := AValue; + IncreaseChangeStamp; +end; + procedure TDockedOptions.SetForceRefreshing(AValue: Boolean); begin if FForceRefreshing = AValue then Exit; @@ -277,6 +297,8 @@ begin FTabPosition := tpTop; FTreatAlign := True; FTreatBorder := True; + FEnableDockedDesigner := False; + FDoneAskUserEnableDockedDesigner := False; end; procedure TDockedOptions.SaveSafe; @@ -323,6 +345,8 @@ begin Cfg.SetDeleteValue('TabPosition/Value', Integer(TabPosition), Integer(tpTop)); Cfg.SetDeleteValue('TreatAlign/Value', TreatAlign, True); Cfg.SetDeleteValue('TreatBorder/Value', TreatBorder, True); + Cfg.SetDeleteValue('EnableDockedDesigner/Value', EnableDockedDesigner, False); + Cfg.SetDeleteValue('DoneAskUserEnableDockedDesigner/Value', DoneAskUserEnableDockedDesigner, False); finally Cfg.Free; end; @@ -350,6 +374,8 @@ begin TabPosition := TTabPosition(Cfg.GetValue('TabPosition/Value', Integer(tpTop))); TreatAlign := Cfg.GetValue('TreatAlign/Value', True); TreatBorder := Cfg.GetValue('TreatBorder/Value', True); + EnableDockedDesigner := Cfg.GetValue('EnableDockedDesigner/Value', False); + DoneAskUserEnableDockedDesigner := Cfg.GetValue('DoneAskUserEnableDockedDesigner/Value', False); finally Cfg.Free; end; diff --git a/components/dockedformeditor/source/dockedregister.pas b/components/dockedformeditor/source/dockedregister.pas index af5ba24283..d6a015f080 100644 --- a/components/dockedformeditor/source/dockedregister.pas +++ b/components/dockedformeditor/source/dockedregister.pas @@ -24,7 +24,7 @@ uses SrcEditorIntf, IDEWindowIntf, PropEdits, ComponentEditors, IDEOptEditorIntf, IDEOptionsIntf, // DockedFormEditor - DockedMainIDE, DockedDesignForm, DockedOptionsIDE, DockedOptionsFrame; + DockedMainIDE, DockedDesignForm, DockedOptionsIDE, DockedOptionsFrame, DockedSourceWindow; var DockedOptionsFrameID: Integer = 1000; @@ -35,36 +35,45 @@ implementation procedure Register; begin - Screen.AddHandlerFormAdded(TDockedMainIDE.Screen_FormAdded); - Screen.AddHandlerRemoveForm(TDockedMainIDE.Screen_FormDel); - Screen.AddHandlerNewFormCreated(TDesignForm.Screen_NewFormCreated); - SourceEditorManagerIntf.RegisterChangeEvent(semWindowCreate, TDockedMainIDE.WindowCreate); - SourceEditorManagerIntf.RegisterChangeEvent(semWindowDestroy, TDockedMainIDE.WindowDestroy); - SourceEditorManagerIntf.RegisterChangeEvent(semWindowShow, TDockedMainIDE.WindowShow); - SourceEditorManagerIntf.RegisterChangeEvent(semWindowHide, TDockedMainIDE.WindowHide); - SourceEditorManagerIntf.RegisterChangeEvent(semEditorActivate, TDockedMainIDE.EditorActivated); - SourceEditorManagerIntf.RegisterChangeEvent(semEditorDestroy, TDockedMainIDE.EditorDestroyed); - SourceEditorManagerIntf.RegisterChangeEvent(semEditorCreate, TDockedMainIDE.EditorCreate); - - LazarusIDE.AddHandlerOnShowDesignerFormOfSource(TDockedMainIDE.OnShowDesignerForm); - LazarusIDE.AddHandlerOnShowSourceOfActiveDesignerForm(TDockedMainIDE.OnShowSrcEditor); - - GlobalDesignHook.AddHandlerShowMethod(TDockedMainIDE.OnDesignShowMethod); - GlobalDesignHook.AddHandlerModified(TDockedMainIDE.OnDesignModified); - GlobalDesignHook.AddHandlerPersistentAdded(TDockedMainIDE.OnDesignPersistentAdded); - GlobalDesignHook.AddHandlerPersistentDeleted(TDockedMainIDE.OnDesignPersistentDeleted); - GlobalDesignHook.AddHandlerRefreshPropertyValues(TDockedMainIDE.OnDesignRefreshPropertyValues); - GlobalDesignHook.AddHandlerDesignerMouseDown(TDockedMainIDE.OnDesignMouseDown); - GlobalDesignHook.AddHandlerSetSelection(TDockedMainIDE.OnDesignSetSelection); - - DockedOptions := TDockedOptions.Create; - DockedOptionsFrameID := RegisterIDEOptionsEditor(GroupEnvironment, TFrameDockedOptions, DockedOptionsFrameID)^.Index; DockedOptions.LoadSafe; + if DockedOptions.EnableDockedDesigner then begin + SourceWindows := TSourceWindows.CreateNew; - IDETabMaster := TDockedTabMaster.Create; - DesignForms := TDesignForms.Create; + Screen.AddHandlerFormAdded(TDockedMainIDE.Screen_FormAdded); + Screen.AddHandlerRemoveForm(TDockedMainIDE.Screen_FormDel); + Screen.AddHandlerNewFormCreated(TDesignForm.Screen_NewFormCreated); + SourceEditorManagerIntf.RegisterChangeEvent(semWindowCreate, TDockedMainIDE.WindowCreate); + SourceEditorManagerIntf.RegisterChangeEvent(semWindowDestroy, TDockedMainIDE.WindowDestroy); + SourceEditorManagerIntf.RegisterChangeEvent(semWindowShow, TDockedMainIDE.WindowShow); + SourceEditorManagerIntf.RegisterChangeEvent(semWindowHide, TDockedMainIDE.WindowHide); + SourceEditorManagerIntf.RegisterChangeEvent(semEditorActivate, TDockedMainIDE.EditorActivated); + SourceEditorManagerIntf.RegisterChangeEvent(semEditorDestroy, TDockedMainIDE.EditorDestroyed); + SourceEditorManagerIntf.RegisterChangeEvent(semEditorCreate, TDockedMainIDE.EditorCreate); + + LazarusIDE.AddHandlerOnShowDesignerFormOfSource(TDockedMainIDE.OnShowDesignerForm); + LazarusIDE.AddHandlerOnShowSourceOfActiveDesignerForm(TDockedMainIDE.OnShowSrcEditor); + + GlobalDesignHook.AddHandlerShowMethod(TDockedMainIDE.OnDesignShowMethod); + GlobalDesignHook.AddHandlerModified(TDockedMainIDE.OnDesignModified); + GlobalDesignHook.AddHandlerPersistentAdded(TDockedMainIDE.OnDesignPersistentAdded); + GlobalDesignHook.AddHandlerPersistentDeleted(TDockedMainIDE.OnDesignPersistentDeleted); + GlobalDesignHook.AddHandlerRefreshPropertyValues(TDockedMainIDE.OnDesignRefreshPropertyValues); + GlobalDesignHook.AddHandlerDesignerMouseDown(TDockedMainIDE.OnDesignMouseDown); + GlobalDesignHook.AddHandlerSetSelection(TDockedMainIDE.OnDesignSetSelection); + + DockedOptionsFrameID := RegisterIDEOptionsEditor(GroupEnvironment, TFrameDockedOptions, DockedOptionsFrameID)^.Index; + + IDETabMaster := TDockedTabMaster.Create; + DesignForms := TDesignForms.Create; + end + else begin + DockedOptionsFrameID := RegisterIDEOptionsEditor(GroupEnvironment, TFrameDisabledDockedOptions, DockedOptionsFrameID)^.Index; + end; end; +initialization + DockedOptions := TDockedOptions.Create; + finalization Screen.RemoveHandlerNewFormCreated(TDesignForm.Screen_NewFormCreated); Screen.RemoveHandlerFormAdded(TDockedMainIDE.Screen_FormAdded); diff --git a/components/dockedformeditor/source/dockedsourcewindow.pas b/components/dockedformeditor/source/dockedsourcewindow.pas index d5cf73dd3c..dc452f25f9 100644 --- a/components/dockedformeditor/source/dockedsourcewindow.pas +++ b/components/dockedformeditor/source/dockedsourcewindow.pas @@ -467,9 +467,6 @@ begin LPageCtrl.ShowCode; end; -initialization - SourceWindows := TSourceWindows.CreateNew; - finalization SourceWindows.Free; diff --git a/components/ideintf/idewindowintf.pas b/components/ideintf/idewindowintf.pas index eeed455a10..bc4b65e3ec 100644 --- a/components/ideintf/idewindowintf.pas +++ b/components/ideintf/idewindowintf.pas @@ -466,7 +466,12 @@ type end; var - IDEDockMaster: TIDEDockMaster = nil; // can be set by a package + OnIDEDockMasterNeeded: procedure = nil; + +procedure SetIDEDockMaster(AnIDEDockMaster: TIDEDockMaster); +function GetIDEDockMaster: TIDEDockMaster; + +property IDEDockMaster: TIDEDockMaster read GetIDEDockMaster write SetIDEDockMaster; procedure MakeIDEWindowDockable(AControl: TWinControl); procedure MakeIDEWindowDockSite(AForm: TCustomForm); @@ -484,6 +489,7 @@ uses var FIDEWindowsGlobalOptions: TIDEWindowsGlobalOptions = nil; + TheIDEDockMaster: TIDEDockMaster = nil; // can be set by a package procedure SetPopupModeParentForPropertyEditor(const AEditorDlg: TCustomForm); begin @@ -500,6 +506,18 @@ begin Result:=iwsNormal; end; +procedure SetIDEDockMaster(AnIDEDockMaster: TIDEDockMaster); +begin + TheIDEDockMaster := AnIDEDockMaster; +end; + +function GetIDEDockMaster: TIDEDockMaster; +begin + if (TheIDEDockMaster = nil) and Assigned(OnIDEDockMasterNeeded) then + OnIDEDockMasterNeeded; + Result := TheIDEDockMaster; +end; + procedure MakeIDEWindowDockable(AControl: TWinControl); begin if Assigned(IDEDockMaster) then diff --git a/ide/main.pp b/ide/main.pp index debccee125..542341f378 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -1340,9 +1340,6 @@ begin end; end; - Application.ShowButtonGlyphs := EnvironmentGuiOpts.ShowButtonGlyphs; - Application.ShowMenuGlyphs := EnvironmentGuiOpts.ShowMenuGlyphs; - OldVer:=EnvironmentOptions.OldLazarusVersion; NowVer:=LazarusVersionStr; //debugln(['TMainIDE.LoadGlobalOptions ',FEnvOptsCfgExisted,' diff=',OldVer<>NowVer,' Now=',NowVer,' Old=',OldVer,' Comp=',CompareLazarusVersion(NowVer,OldVer)]); @@ -1571,8 +1568,6 @@ begin {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.Create BUILD MANAGER');{$ENDIF} // setup macros before loading options MainBuildBoss.SetupTransferMacros; - EnvironmentGuiOpts := TEnvGuiOptions.Create; - EnvironmentOptions.RegisterSubConfig(EnvironmentGuiOpts, '/'); EnvironmentDebugOpts := TEnvDebuggerOptions.Create; EnvironmentOptions.RegisterSubConfig(EnvironmentDebugOpts, 'EnvironmentOptions/'); @@ -1585,9 +1580,6 @@ begin LoadGlobalOptions; if Application.Terminated then exit; - if EnvironmentGuiOpts.Desktop.SingleTaskBarButton then - Application.TaskBarBehavior := tbSingleButton; - // setup code templates SetupCodeMacros; @@ -1601,6 +1593,14 @@ begin SetupInteractive; if Application.Terminated then exit; + EnvironmentGuiOpts := TEnvGuiOptions.Create; + EnvironmentOptions.RegisterSubConfig(EnvironmentGuiOpts, '/',True); + + if EnvironmentGuiOpts.Desktop.SingleTaskBarButton then + Application.TaskBarBehavior := tbSingleButton; + Application.ShowButtonGlyphs := EnvironmentGuiOpts.ShowButtonGlyphs; + Application.ShowMenuGlyphs := EnvironmentGuiOpts.ShowMenuGlyphs; + {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.Create CODETOOLS');{$ENDIF} MainBuildBoss.SetupExternalTools(TExternalToolsIDE); diff --git a/ide/packages/ideconfig/environmentopts.pp b/ide/packages/ideconfig/environmentopts.pp index 71e2ec2fc7..d61fc4cd12 100644 --- a/ide/packages/ideconfig/environmentopts.pp +++ b/ide/packages/ideconfig/environmentopts.pp @@ -368,7 +368,7 @@ type procedure DoAfterWrite(Restore: boolean); override; // SubConfig function GetSubConfigObj(ASubConfigClass: TIDESubOptionsClass): TIDESubOptions; - procedure RegisterSubConfig(ASubConfig: TIDESubOptions; APath: String); + procedure RegisterSubConfig(ASubConfig: TIDESubOptions; APath: String; ALoadConf: Boolean = False); procedure UnRegisterSubConfig(ASubConfig: TIDESubOptions); function SubConfigCount: integer; property SubConfig[Index: Integer]: TIDESubOptions read GetSubConfig; @@ -818,8 +818,8 @@ begin Result := Nil; end; -procedure TEnvironmentOptions.RegisterSubConfig(ASubConfig: TIDESubOptions; - APath: String); +procedure TEnvironmentOptions.RegisterSubConfig(ASubConfig: TIDESubOptions; APath: String; + ALoadConf: Boolean); //var // i: Integer; begin @@ -835,7 +835,11 @@ begin fRegisteredSubConfig.Add(ASubConfig); ASubConfig.FTopPath := APath; ASubConfig.FXMLCfg := FXMLCfg; - // ASubConfig.ReadFromXml; + if ALoadConf then begin + ASubConfig.InitConfig; + ASubConfig.FVersion:=FFileVersion; + ASubConfig.ReadFromXml(False); + end; end; procedure TEnvironmentOptions.UnRegisterSubConfig(ASubConfig: TIDESubOptions);