IDE: An experimental GUI for saving and switching desktops + other related changes. Define EnableDesktops.

git-svn-id: trunk@49457 -
This commit is contained in:
juha 2015-06-28 12:27:48 +00:00
parent 1fb779c4a5
commit 15df1a216f
10 changed files with 283 additions and 145 deletions

View File

@ -317,7 +317,8 @@ const
ecCodeToolsDefinesEd = ecFirstLazarus + 823; ecCodeToolsDefinesEd = ecFirstLazarus + 823;
ecExtToolSettings = ecFirstLazarus + 824; ecExtToolSettings = ecFirstLazarus + 824;
ecManageExamples = ecFirstLazarus + 825; ecManageDesktops = ecFirstLazarus + 825;
ecManageExamples = ecFirstLazarus + 826;
ecConfigBuildLazarus = ecFirstLazarus + 830; ecConfigBuildLazarus = ecFirstLazarus + 830;
ecBuildLazarus = ecFirstLazarus + 831; ecBuildLazarus = ecFirstLazarus + 831;
ecBuildAdvancedLazarus = ecFirstLazarus + 832; ecBuildAdvancedLazarus = ecFirstLazarus + 832;

View File

@ -42,6 +42,7 @@ type
procedure SetHeight(const AValue: integer); procedure SetHeight(const AValue: integer);
public public
constructor Create(const TheName: string; TheList: TIDEDialogLayoutList); constructor Create(const TheName: string; TheList: TIDEDialogLayoutList);
procedure Assign(Source: TIDEDialogLayout);
function SizeValid: boolean; function SizeValid: boolean;
property Width: integer read FWidth write SetWidth; property Width: integer read FWidth write SetWidth;
property Height: integer read FHeight write SetHeight; property Height: integer read FHeight write SetHeight;
@ -66,6 +67,7 @@ type
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
procedure Assign(Source: TIDEDialogLayoutList);
procedure ApplyLayout(ADialog: TControl; procedure ApplyLayout(ADialog: TControl;
DefaultWidth, DefaultHeight: integer; DefaultWidth, DefaultHeight: integer;
UseAsMin: boolean = true); UseAsMin: boolean = true);
@ -852,13 +854,20 @@ begin
FList:=TheList; FList:=TheList;
end; end;
procedure TIDEDialogLayout.Assign(Source: TIDEDialogLayout);
begin
FName := Source.FName;
FWidth := Source.FWidth;
FHeight := Source.FHeight;
FModified := True;
end;
function TIDEDialogLayout.SizeValid: boolean; function TIDEDialogLayout.SizeValid: boolean;
begin begin
Result:=(Width>10) and (Height>10); Result:=(Width>10) and (Height>10);
end; end;
procedure TIDEDialogLayout.LoadFromConfig(Config: TConfigStorage; procedure TIDEDialogLayout.LoadFromConfig(Config: TConfigStorage; const Path: string);
const Path: string);
begin begin
FName:=Config.GetValue(Path+'Name/Value',''); FName:=Config.GetValue(Path+'Name/Value','');
FWidth:=Config.GetValue(Path+'Size/Width',0); FWidth:=Config.GetValue(Path+'Size/Width',0);
@ -866,8 +875,7 @@ begin
Modified:=false; Modified:=false;
end; end;
procedure TIDEDialogLayout.SaveToConfig(Config: TConfigStorage; procedure TIDEDialogLayout.SaveToConfig(Config: TConfigStorage; const Path: string);
const Path: string);
begin begin
Config.SetValue(Path+'Name/Value',Name); Config.SetValue(Path+'Name/Value',Name);
Config.SetValue(Path+'Size/Width',Width); Config.SetValue(Path+'Size/Width',Width);
@ -902,6 +910,21 @@ begin
inherited Destroy; inherited Destroy;
end; end;
procedure TIDEDialogLayoutList.Assign(Source: TIDEDialogLayoutList);
var
i: Integer;
Layout: TIDEDialogLayout;
begin
FItemClass := Source.FItemClass;
Clear;
for i:=0 to Source.FItems.Count-1 do begin
Layout := TIDEDialogLayout.Create(Source.Items[i].Name, Self);
Layout.Assign(Source.Items[i]);
FItems.Add(Layout);
end;
FModified := True;
end;
procedure TIDEDialogLayoutList.ApplyLayout(ADialog: TControl; procedure TIDEDialogLayoutList.ApplyLayout(ADialog: TControl;
DefaultWidth, DefaultHeight: integer; UseAsMin: boolean); DefaultWidth, DefaultHeight: integer; UseAsMin: boolean);
var var

View File

@ -281,13 +281,16 @@ type
FEditorToolBarOptions: TEditorToolBarOptions; FEditorToolBarOptions: TEditorToolBarOptions;
// component palette // component palette
FComponentPaletteOptions: TCompPaletteOptions; FComponentPaletteOptions: TCompPaletteOptions;
procedure SetConfig(aXMLCfg: TRttiXMLConfig; aConfigStore: TXMLOptionsStorage); procedure SetConfig(aXMLCfg: TRttiXMLConfig; aConfigStore: TXMLOptionsStorage);
procedure InitLayoutList; procedure InitLayoutList;
procedure Load(Path: String); procedure Load(Path: String);
procedure Save(Path: String); procedure Save(Path: String);
public public
constructor Create; constructor Create;
constructor Create(aName: String);
destructor Destroy; override; destructor Destroy; override;
procedure Assign(Source: TDesktopOpt);
property Name: String read FName write FName; property Name: String read FName write FName;
property IDEDialogLayoutList: TIDEDialogLayoutList read FIDEDialogLayoutList; property IDEDialogLayoutList: TIDEDialogLayoutList read FIDEDialogLayoutList;
@ -311,9 +314,10 @@ type
property IDECoolBarOptions: TIDECoolBarOptions read FIDECoolBarOptions; property IDECoolBarOptions: TIDECoolBarOptions read FIDECoolBarOptions;
property EditorToolBarOptions: TEditorToolBarOptions read FEditorToolBarOptions; property EditorToolBarOptions: TEditorToolBarOptions read FEditorToolBarOptions;
property ComponentPaletteOptions: TCompPaletteOptions read FComponentPaletteOptions; property ComponentPaletteOptions: TCompPaletteOptions read FComponentPaletteOptions;
end; end;
TEnvironmentOptions = class;
{ TDesktopOptList } { TDesktopOptList }
dtol = specialize TFPGObjectList<TDesktopOpt>; dtol = specialize TFPGObjectList<TDesktopOpt>;
@ -321,11 +325,15 @@ type
private private
FXMLCfg: TRttiXMLConfig; FXMLCfg: TRttiXMLConfig;
FConfigStore: TXMLOptionsStorage; FConfigStore: TXMLOptionsStorage;
FEnvOpts: TEnvironmentOptions;
procedure SetConfig(aXMLCfg: TRttiXMLConfig; aConfigStore: TXMLOptionsStorage); procedure SetConfig(aXMLCfg: TRttiXMLConfig; aConfigStore: TXMLOptionsStorage);
public public
constructor Create(aEnvOpts: TEnvironmentOptions);
destructor Destroy; override;
procedure AddFromCfg(Path: String);
function IndexOf(aName: string): integer; function IndexOf(aName: string): integer;
function Find(aName: string): TDesktopOpt; function Find(aName: string): TDesktopOpt;
procedure AddFromCfg(Path: String); function Select(aName: string): Boolean;
end; end;
{ TEnvironmentOptions - class for storing environment options } { TEnvironmentOptions - class for storing environment options }
@ -747,6 +755,7 @@ type
property NewUnitTemplate: string read FNewUnitTemplate write FNewUnitTemplate; property NewUnitTemplate: string read FNewUnitTemplate write FNewUnitTemplate;
property NewFormTemplate: string read FNewFormTemplate write FNewFormTemplate; property NewFormTemplate: string read FNewFormTemplate write FNewFormTemplate;
// Desktop // Desktop
property Desktops: TDesktopOptList read FDesktops;
property Desktop: TDesktopOpt read GetDesktop; property Desktop: TDesktopOpt read GetDesktop;
end; end;
@ -864,12 +873,33 @@ end;
{ TDesktopOptList } { TDesktopOptList }
constructor TDesktopOptList.Create(aEnvOpts: TEnvironmentOptions);
begin
inherited Create;
FEnvOpts := aEnvOpts;
end;
destructor TDesktopOptList.Destroy;
begin
inherited Destroy;
end;
procedure TDesktopOptList.SetConfig(aXMLCfg: TRttiXMLConfig; aConfigStore: TXMLOptionsStorage); procedure TDesktopOptList.SetConfig(aXMLCfg: TRttiXMLConfig; aConfigStore: TXMLOptionsStorage);
begin begin
FXMLCfg := aXMLCfg; FXMLCfg := aXMLCfg;
FConfigStore := aConfigStore; FConfigStore := aConfigStore;
end; end;
procedure TDesktopOptList.AddFromCfg(Path: String);
var
dsk: TDesktopOpt;
begin
dsk := TDesktopOpt.Create;
dsk.SetConfig(FXMLCfg, FConfigStore);
dsk.Load(Path);
Add(dsk);
end;
function TDesktopOptList.IndexOf(aName: string): integer; function TDesktopOptList.IndexOf(aName: string): integer;
begin begin
Result:=Count-1; Result:=Count-1;
@ -889,14 +919,14 @@ begin
Result:=nil; Result:=nil;
end; end;
procedure TDesktopOptList.AddFromCfg(Path: String); function TDesktopOptList.Select(aName: string): Boolean;
var var
dsk: TDesktopOpt; dsk: TDesktopOpt;
begin begin
dsk := TDesktopOpt.Create; dsk := Find(aName);
Add(dsk); Result := Assigned(dsk);
dsk.SetConfig(FXMLCfg, FConfigStore); if Result then
dsk.Load(Path); FEnvOpts.FDesktop := dsk;
end; end;
@ -904,6 +934,7 @@ end;
constructor TDesktopOpt.Create; constructor TDesktopOpt.Create;
begin begin
inherited Create;
FSingleTaskBarButton:=false; FSingleTaskBarButton:=false;
FHideIDEOnRun:=false; FHideIDEOnRun:=false;
FComponentPaletteVisible:=true; FComponentPaletteVisible:=true;
@ -931,6 +962,12 @@ begin
IDEWindowIntf.IDEDialogLayoutList:=FIDEDialogLayoutList; IDEWindowIntf.IDEDialogLayoutList:=FIDEDialogLayoutList;
end; end;
constructor TDesktopOpt.Create(aName: String);
begin
Create; // constructor above.
FName:=aName;
end;
destructor TDesktopOpt.Destroy; destructor TDesktopOpt.Destroy;
begin begin
if IDEWindowIntf.IDEDialogLayoutList=FIDEDialogLayoutList then if IDEWindowIntf.IDEDialogLayoutList=FIDEDialogLayoutList then
@ -942,6 +979,37 @@ begin
inherited Destroy; inherited Destroy;
end; end;
procedure TDesktopOpt.Assign(Source: TDesktopOpt);
begin
// Note: FName is not assigned.
// ToDo :
//FXMLCfg.Assign(Source.FXMLCfg);
//FConfigStore.Assign(Source.FConfigStore);
// window layout
FIDEDialogLayoutList.Assign(Source.FIDEDialogLayoutList);
FSingleTaskBarButton := Source.FSingleTaskBarButton;
FHideIDEOnRun := Source.FHideIDEOnRun;
FComponentPaletteVisible := Source.FComponentPaletteVisible;
FAutoAdjustIDEHeight := Source.FAutoAdjustIDEHeight;
FAutoAdjustIDEHeightFullCompPal := Source.FAutoAdjustIDEHeightFullCompPal;
// window menu
FIDENameForDesignedFormList := Source.FIDENameForDesignedFormList;
// CompletionWindow
FCompletionWindowWidth := Source.FCompletionWindowWidth;
FCompletionWindowHeight := Source.FCompletionWindowHeight;
// title
FIDETitleStartsWithProject := Source.FIDETitleStartsWithProject;
FIDETitleIncludesBuildMode := Source.FIDETitleIncludesBuildMode;
FIDEProjectDirectoryInIdeTitle := Source.FIDEProjectDirectoryInIdeTitle;
// IDE Coolbar
FIDECoolBarOptions.Assign(Source.FIDECoolBarOptions);
// Editor Toolbar
FEditorToolBarOptions.Assign(Source.FEditorToolBarOptions);
// component palette
FComponentPaletteOptions.Assign(Source.FComponentPaletteOptions);
end;
procedure TDesktopOpt.Load(Path: String); procedure TDesktopOpt.Load(Path: String);
begin begin
FName:=FXMLCfg.GetValue(Path+'Name', 'default'); FName:=FXMLCfg.GetValue(Path+'Name', 'default');
@ -1171,7 +1239,7 @@ begin
FBuildMatrixOptions:=TBuildMatrixOptions.Create; FBuildMatrixOptions:=TBuildMatrixOptions.Create;
// Desktop collection (FDesktop will point to the active desktop). // Desktop collection (FDesktop will point to the active desktop).
FDesktops := TDesktopOptList.Create; FDesktops := TDesktopOptList.Create(Self);
end; end;
destructor TEnvironmentOptions.Destroy; destructor TEnvironmentOptions.Destroy;
@ -1365,7 +1433,7 @@ procedure TEnvironmentOptions.Load(OnlyDesktop: boolean);
end; end;
var var
Path, CurPath: String; Path, CurPath, ActiveDsk: String;
i, j: Integer; i, j: Integer;
Rec: PIDEOptionsGroupRec; Rec: PIDEOptionsGroupRec;
NodeName: String; NodeName: String;
@ -1560,7 +1628,9 @@ begin
FDesktops.AddFromCfg(CurPath+'Desktop'+IntToStr(i+1)+'/'); FDesktops.AddFromCfg(CurPath+'Desktop'+IntToStr(i+1)+'/');
Assert(FDesktops.Count>0, 'FDesktops.Count=0'); Assert(FDesktops.Count>0, 'FDesktops.Count=0');
// Find active desktop // Find active desktop
FDesktop:=FDesktops.Find(FXMLCfg.GetValue(CurPath+'Active','default')); ActiveDsk := FXMLCfg.GetValue(CurPath+'Active','default');
FDesktop:=FDesktops.Find(ActiveDsk);
DebugLn(['TEnvironmentOptions.Load: New desktop, Count=',j,', Active=', ActiveDsk, ', Dsk name=', FDesktop.Name]);
end end
else begin // Old path was under EnvironmentOptions/. else begin // Old path was under EnvironmentOptions/.
FDesktops.AddFromCfg(Path+'Desktop/'); FDesktops.AddFromCfg(Path+'Desktop/');
@ -1833,7 +1903,8 @@ begin
CurPath:='Desktops/'; CurPath:='Desktops/';
FXMLCfg.SetDeleteValue(CurPath+'Count', FDesktops.Count, 0); FXMLCfg.SetDeleteValue(CurPath+'Count', FDesktops.Count, 0);
FXMLCfg.SetDeleteValue(CurPath+'Active', FDesktop.Name, ''); FXMLCfg.SetDeleteValue(CurPath+'Active', FDesktop.Name, '');
for i := 0 to FDesktops.Count-1 do begin for i := 0 to FDesktops.Count-1 do
begin
FDesktops[i].SetConfig(FXMLCfg, FConfigStore); FDesktops[i].SetConfig(FXMLCfg, FConfigStore);
FDesktops[i].Save(CurPath+'Desktop'+IntToStr(i+1)+'/'); FDesktops[i].Save(CurPath+'Desktop'+IntToStr(i+1)+'/');
end; end;
@ -2258,8 +2329,7 @@ begin
// Can be Nil if desktops are not read from config files -> create a default desktop. // Can be Nil if desktops are not read from config files -> create a default desktop.
if not Assigned(FDesktop) then if not Assigned(FDesktop) then
begin begin
FDesktop := TDesktopOpt.Create; FDesktop := TDesktopOpt.Create('default');
FDesktop.Name := 'default';
FDesktops.Add(FDesktop); FDesktops.Add(FDesktop);
end; end;
Result := FDesktop; Result := FDesktop;

View File

@ -14,9 +14,9 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = AutoSaveProjectCheckBox AnchorSideTop.Control = AutoSaveProjectCheckBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 20 Height = 17
Top = 383 Top = 347
Width = 189 Width = 164
BorderSpacing.Left = 6 BorderSpacing.Left = 6
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Caption = 'AutoSaveIntervalInSecsLabel' Caption = 'AutoSaveIntervalInSecsLabel'
@ -29,9 +29,9 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = PanelGlyphsButtonsOptions AnchorSideTop.Control = PanelGlyphsButtonsOptions
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
Left = 6 Left = 6
Height = 20 Height = 17
Top = 206 Top = 184
Width = 73 Width = 64
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'lblButtons' Caption = 'lblButtons'
Font.Style = [fsBold] Font.Style = [fsBold]
@ -43,9 +43,9 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = PanelGlyphsMenusOptions AnchorSideTop.Control = PanelGlyphsMenusOptions
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
Left = 6 Left = 6
Height = 20 Height = 17
Top = 233 Top = 210
Width = 64 Width = 56
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'lblMenus' Caption = 'lblMenus'
Font.Style = [fsBold] Font.Style = [fsBold]
@ -57,9 +57,9 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = lblCheckAndAutoSave AnchorSideTop.Control = lblCheckAndAutoSave
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 22
Top = 281 Top = 253
Width = 296 Width = 260
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'CheckDiskChangesWithLoadingCheckBox' Caption = 'CheckDiskChangesWithLoadingCheckBox'
ParentShowHint = False ParentShowHint = False
@ -71,9 +71,9 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = ShowHintsForMainSpeedButtonsCheckBox AnchorSideTop.Control = ShowHintsForMainSpeedButtonsCheckBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 22
Top = 151 Top = 133
Width = 303 Width = 266
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'ShowHintsForComponentPaletteCheckBox' Caption = 'ShowHintsForComponentPaletteCheckBox'
TabOrder = 1 TabOrder = 1
@ -83,9 +83,9 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = lblHints AnchorSideTop.Control = lblHints
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 22
Top = 127 Top = 111
Width = 304 Width = 268
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'ShowHintsForMainSpeedButtonsCheckBox' Caption = 'ShowHintsForMainSpeedButtonsCheckBox'
TabOrder = 2 TabOrder = 2
@ -97,14 +97,14 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 6 Left = 6
Height = 28 Height = 23
Top = 23 Top = 20
Width = 584 Width = 584
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6 BorderSpacing.Left = 6
BorderSpacing.Top = 3 BorderSpacing.Top = 3
BorderSpacing.Right = 6 BorderSpacing.Right = 6
ItemHeight = 20 ItemHeight = 17
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
Style = csDropDownList Style = csDropDownList
@ -117,13 +117,13 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 6 Left = 6
Height = 28 Height = 23
Top = 409 Top = 370
Width = 584 Width = 584
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Enabled = False Enabled = False
ItemHeight = 20 ItemHeight = 17
Items.Strings = ( Items.Strings = (
'1200' '1200'
'600' '600'
@ -138,9 +138,9 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = AutoSaveEditorFilesCheckBox AnchorSideTop.Control = AutoSaveEditorFilesCheckBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 22
Top = 353 Top = 319
Width = 197 Width = 174
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'AutoSaveProjectCheckBox' Caption = 'AutoSaveProjectCheckBox'
Enabled = False Enabled = False
@ -154,9 +154,9 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = AskSavingOnlySessionCheckBox AnchorSideTop.Control = AskSavingOnlySessionCheckBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 22
Top = 329 Top = 297
Width = 220 Width = 193
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'AutoSaveEditorFilesCheckBox' Caption = 'AutoSaveEditorFilesCheckBox'
Enabled = False Enabled = False
@ -165,40 +165,40 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
TabOrder = 6 TabOrder = 6
Visible = False Visible = False
end end
object LoadDesktopSettingsFromFileButton: TButton object ImportDesktopButton: TButton
AnchorSideLeft.Control = SaveDesktopSettingsToFileButton AnchorSideLeft.Control = ExportDesktopButton
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = SaveDesktopSettingsToFileButton AnchorSideTop.Control = ExportDesktopButton
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 299 Left = 299
Height = 30 Height = 29
Top = 466 Top = 419
Width = 291 Width = 291
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
AutoSize = True AutoSize = True
BorderSpacing.Left = 6 BorderSpacing.Left = 6
BorderSpacing.Right = 6 BorderSpacing.Right = 6
Caption = 'LoadDesktopSettingsFromFileButton' Caption = 'Import desktop'
OnClick = LoadDesktopSettingsFromFileButtonClick OnClick = ImportDesktopButtonClick
TabOrder = 7 TabOrder = 7
end end
object SaveDesktopSettingsToFileButton: TButton object ExportDesktopButton: TButton
AnchorSideLeft.Control = Owner AnchorSideLeft.Control = Owner
AnchorSideTop.Control = lblDesktopFiles AnchorSideTop.Control = lblImportExport
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = lblCenter AnchorSideRight.Control = lblCenter
Left = 6 Left = 6
Height = 30 Height = 29
Top = 466 Top = 419
Width = 287 Width = 287
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
AutoSize = True AutoSize = True
BorderSpacing.Left = 6 BorderSpacing.Left = 6
BorderSpacing.Top = 3 BorderSpacing.Top = 3
BorderSpacing.Right = 3 BorderSpacing.Right = 3
Caption = 'SaveDesktopSettingsToFileButton' Caption = 'Export desktop'
OnClick = SaveDesktopSettingsToFileButtonClick OnClick = ExportDesktopButtonClick
TabOrder = 8 TabOrder = 8
end end
object PanelGlyphsButtonsOptions: TPanel object PanelGlyphsButtonsOptions: TPanel
@ -208,10 +208,10 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 85 Left = 76
Height = 24 Height = 23
Top = 204 Top = 181
Width = 505 Width = 514
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
AutoSize = True AutoSize = True
BorderSpacing.Left = 6 BorderSpacing.Left = 6
@ -220,15 +220,15 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
BevelOuter = bvNone BevelOuter = bvNone
ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 3 ChildSizing.ControlsPerLine = 3
ClientHeight = 24 ClientHeight = 23
ClientWidth = 505 ClientWidth = 514
TabOrder = 9 TabOrder = 9
object rbBtnGlyphShowSystem: TRadioButton object rbBtnGlyphShowSystem: TRadioButton
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 0 Left = 0
Height = 24 Height = 23
Top = 0 Top = 0
Width = 181 Width = 161
Caption = 'rbBtnGlyphShowSystem' Caption = 'rbBtnGlyphShowSystem'
Checked = True Checked = True
TabOrder = 0 TabOrder = 0
@ -236,18 +236,18 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
end end
object rbBtnGlyphShowNever: TRadioButton object rbBtnGlyphShowNever: TRadioButton
AnchorSideLeft.Side = asrCenter AnchorSideLeft.Side = asrCenter
Left = 181 Left = 161
Height = 24 Height = 23
Top = 0 Top = 0
Width = 173 Width = 154
Caption = 'rbBtnGlyphShowNever' Caption = 'rbBtnGlyphShowNever'
TabOrder = 1 TabOrder = 1
end end
object rbBtnGlyphShowAlways: TRadioButton object rbBtnGlyphShowAlways: TRadioButton
Left = 354 Left = 315
Height = 24 Height = 23
Top = 0 Top = 0
Width = 180 Width = 159
Caption = 'rbBtnGlyphShowAlways' Caption = 'rbBtnGlyphShowAlways'
TabOrder = 2 TabOrder = 2
end end
@ -258,10 +258,10 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 85 Left = 76
Height = 24 Height = 23
Top = 231 Top = 207
Width = 505 Width = 514
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
AutoSize = True AutoSize = True
BorderSpacing.Top = 3 BorderSpacing.Top = 3
@ -269,16 +269,16 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
BevelOuter = bvNone BevelOuter = bvNone
ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 3 ChildSizing.ControlsPerLine = 3
ClientHeight = 24 ClientHeight = 23
ClientWidth = 505 ClientWidth = 514
TabOrder = 10 TabOrder = 10
object rbMenuGlyphShowSystem: TRadioButton object rbMenuGlyphShowSystem: TRadioButton
AnchorSideRight.Control = PanelGlyphsMenusOptions AnchorSideRight.Control = PanelGlyphsMenusOptions
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 0 Left = 0
Height = 24 Height = 23
Top = 0 Top = 0
Width = 196 Width = 174
Caption = 'rbMenuGlyphShowSystem' Caption = 'rbMenuGlyphShowSystem'
Checked = True Checked = True
TabOrder = 0 TabOrder = 0
@ -286,18 +286,18 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
end end
object rbMenuGlyphShowNever: TRadioButton object rbMenuGlyphShowNever: TRadioButton
AnchorSideLeft.Side = asrCenter AnchorSideLeft.Side = asrCenter
Left = 196 Left = 174
Height = 24 Height = 23
Top = 0 Top = 0
Width = 188 Width = 167
Caption = 'rbMenuGlyphShowNever' Caption = 'rbMenuGlyphShowNever'
TabOrder = 1 TabOrder = 1
end end
object rbMenuGlyphShowAlways: TRadioButton object rbMenuGlyphShowAlways: TRadioButton
Left = 384 Left = 341
Height = 24 Height = 23
Top = 0 Top = 0
Width = 195 Width = 172
Caption = 'rbMenuGlyphShowAlways' Caption = 'rbMenuGlyphShowAlways'
TabOrder = 2 TabOrder = 2
end end
@ -305,11 +305,11 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
object lblCenter: TLabel object lblCenter: TLabel
AnchorSideLeft.Control = Owner AnchorSideLeft.Control = Owner
AnchorSideLeft.Side = asrCenter AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = lblDesktopFiles AnchorSideTop.Control = lblImportExport
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 296 Left = 296
Height = 5 Height = 5
Top = 463 Top = 416
Width = 5 Width = 5
AutoSize = False AutoSize = False
ParentColor = False ParentColor = False
@ -319,9 +319,9 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = CheckDiskChangesWithLoadingCheckBox AnchorSideTop.Control = CheckDiskChangesWithLoadingCheckBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 22
Top = 305 Top = 275
Width = 234 Width = 207
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'AskSavingOnlySessionCheckBox' Caption = 'AskSavingOnlySessionCheckBox'
ParentShowHint = False ParentShowHint = False
@ -333,9 +333,9 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = lblMouseAction AnchorSideTop.Control = lblMouseAction
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 22
Top = 77 Top = 66
Width = 207 Width = 183
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'PreferDoubleClickCheckBox' Caption = 'PreferDoubleClickCheckBox'
ParentShowHint = False ParentShowHint = False
@ -345,10 +345,10 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
object lblLanguage: TDividerBevel object lblLanguage: TDividerBevel
AnchorSideTop.Control = Owner AnchorSideTop.Control = Owner
Left = 0 Left = 0
Height = 20 Height = 17
Top = 0 Top = 0
Width = 590 Width = 590
Caption = 'lblLanguage' Caption = 'Language'
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
Font.Style = [fsBold] Font.Style = [fsBold]
ParentColor = False ParentColor = False
@ -358,24 +358,24 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = PanelGlyphsMenusOptions AnchorSideTop.Control = PanelGlyphsMenusOptions
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 0 Left = 0
Height = 20 Height = 17
Top = 261 Top = 236
Width = 597 Width = 597
Caption = 'lblCheckAndAutoSave' Caption = 'Check and Auto Save Files'
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Font.Style = [fsBold] Font.Style = [fsBold]
ParentColor = False ParentColor = False
ParentFont = False ParentFont = False
end end
object lblDesktopFiles: TDividerBevel object lblImportExport: TDividerBevel
AnchorSideTop.Control = AutoSaveIntervalInSecsComboBox AnchorSideTop.Control = AutoSaveIntervalInSecsComboBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 0 Left = 0
Height = 20 Height = 17
Top = 443 Top = 399
Width = 597 Width = 597
Caption = 'lblDesktopFiles' Caption = 'Import / Export'
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Font.Style = [fsBold] Font.Style = [fsBold]
@ -386,10 +386,10 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = ShowHintsForComponentPaletteCheckBox AnchorSideTop.Control = ShowHintsForComponentPaletteCheckBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 0 Left = 0
Height = 20 Height = 17
Top = 181 Top = 161
Width = 597 Width = 597
Caption = 'lblGlyphs' Caption = 'Show Glyphs for'
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Font.Style = [fsBold] Font.Style = [fsBold]
@ -400,10 +400,10 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = PreferDoubleClickCheckBox AnchorSideTop.Control = PreferDoubleClickCheckBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 0 Left = 0
Height = 20 Height = 17
Top = 107 Top = 94
Width = 597 Width = 597
Caption = 'lblHints' Caption = 'Hints'
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Font.Style = [fsBold] Font.Style = [fsBold]
@ -414,10 +414,10 @@ object DesktopOptionsFrame: TDesktopOptionsFrame
AnchorSideTop.Control = LanguageComboBox AnchorSideTop.Control = LanguageComboBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 0 Left = 0
Height = 20 Height = 17
Top = 57 Top = 49
Width = 597 Width = 597
Caption = 'lblMouseAction' Caption = 'Mouse Action'
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6 BorderSpacing.Top = 6
Font.Style = [fsBold] Font.Style = [fsBold]

View File

@ -25,8 +25,8 @@ unit desktop_options;
interface interface
uses uses
Classes, SysUtils, FileUtil, Forms, StdCtrls, Dialogs, LCLProc, Classes, SysUtils, FileUtil, Forms, StdCtrls, Dialogs, LCLProc, ExtCtrls,
ExtCtrls, EnvironmentOpts, LazarusIDEStrConsts, IDETranslations, InputHistory, Buttons, EnvironmentOpts, LazarusIDEStrConsts, IDETranslations, InputHistory,
IDEProcs, IDEOptionsIntf, IDEWindowIntf, IDEUtils, DividerBevel; IDEProcs, IDEOptionsIntf, IDEWindowIntf, IDEUtils, DividerBevel;
type type
@ -40,7 +40,7 @@ type
AutoSaveIntervalInSecsLabel: TLabel; AutoSaveIntervalInSecsLabel: TLabel;
AutoSaveProjectCheckBox: TCheckBox; AutoSaveProjectCheckBox: TCheckBox;
lblCheckAndAutoSave: TDividerBevel; lblCheckAndAutoSave: TDividerBevel;
lblDesktopFiles: TDividerBevel; lblImportExport: TDividerBevel;
lblGlyphs: TDividerBevel; lblGlyphs: TDividerBevel;
lblHints: TDividerBevel; lblHints: TDividerBevel;
lblLanguage: TDividerBevel; lblLanguage: TDividerBevel;
@ -51,7 +51,7 @@ type
lblCenter: TLabel; lblCenter: TLabel;
lblMenus: TLabel; lblMenus: TLabel;
LanguageComboBox: TComboBox; LanguageComboBox: TComboBox;
LoadDesktopSettingsFromFileButton: TButton; ImportDesktopButton: TButton;
PanelGlyphsButtonsOptions: TPanel; PanelGlyphsButtonsOptions: TPanel;
PanelGlyphsMenusOptions: TPanel; PanelGlyphsMenusOptions: TPanel;
rbMenuGlyphShowAlways: TRadioButton; rbMenuGlyphShowAlways: TRadioButton;
@ -60,11 +60,11 @@ type
rbBtnGlyphShowAlways: TRadioButton; rbBtnGlyphShowAlways: TRadioButton;
rbBtnGlyphShowNever: TRadioButton; rbBtnGlyphShowNever: TRadioButton;
rbBtnGlyphShowSystem: TRadioButton; rbBtnGlyphShowSystem: TRadioButton;
SaveDesktopSettingsToFileButton: TButton; ExportDesktopButton: TButton;
ShowHintsForComponentPaletteCheckBox: TCheckBox; ShowHintsForComponentPaletteCheckBox: TCheckBox;
ShowHintsForMainSpeedButtonsCheckBox: TCheckBox; ShowHintsForMainSpeedButtonsCheckBox: TCheckBox;
procedure SaveDesktopSettingsToFileButtonClick(Sender: TObject); procedure ExportDesktopButtonClick(Sender: TObject);
procedure LoadDesktopSettingsFromFileButtonClick(Sender: TObject); procedure ImportDesktopButtonClick(Sender: TObject);
private private
function LangIDToCaption(const LangID: string): string; function LangIDToCaption(const LangID: string): string;
function CaptionToLangID(const ACaption: string): string; function CaptionToLangID(const ACaption: string): string;
@ -146,9 +146,9 @@ begin
AutoSaveIntervalInSecsLabel.Caption := dlgIntvInSec; AutoSaveIntervalInSecsLabel.Caption := dlgIntvInSec;
// desktop files // desktop files
lblDesktopFiles.Caption := dlgDesktopFiles; lblImportExport.Caption := lisImportExport;
SaveDesktopSettingsToFileButton.Caption := dlgSaveDFile; ExportDesktopButton.Caption := dlgExportDesktop;
LoadDesktopSettingsFromFileButton.Caption := dlgLoadDFile; ImportDesktopButton.Caption := dlgImportDesktop;
end; end;
procedure TDesktopOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); procedure TDesktopOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
@ -229,19 +229,19 @@ begin
end; end;
end; end;
procedure TDesktopOptionsFrame.SaveDesktopSettingsToFileButtonClick(Sender: TObject); procedure TDesktopOptionsFrame.ExportDesktopButtonClick(Sender: TObject);
var var
AnEnvironmentOptions: TEnvironmentOptions; AnEnvironmentOptions: TEnvironmentOptions;
SaveDialog: TSaveDialog; SaveDialog: TSaveDialog;
AFilename: String; AFilename: String;
begin begin
//debugln('TEnvironmentOptionsDialog.SaveDesktopSettingsToFileButtonClick A'); //debugln('TDesktopOptionsFrame.ExportDesktopButtonClick A');
SaveDialog := TSaveDialog.Create(nil); SaveDialog := TSaveDialog.Create(nil);
try try
try try
InputHistories.ApplyFileDialogSettings(SaveDialog); InputHistories.ApplyFileDialogSettings(SaveDialog);
SaveDialog.Filter:=dlgFilterLazarusDesktopSettings+' (*.lds)|*.lds' SaveDialog.Filter:=dlgFilterLazarusDesktopSettings+' (*.lds)|*.lds'
+'|'+dlgFilterXML+' (*.xml)|*.xml' //+'|'+dlgFilterXML+' (*.xml)|*.xml'
+'|'+dlgFilterAll+' ('+GetAllFilesMask+')|' + GetAllFilesMask; +'|'+dlgFilterAll+' ('+GetAllFilesMask+')|' + GetAllFilesMask;
if SaveDialog.Execute then if SaveDialog.Execute then
begin begin
@ -253,7 +253,7 @@ begin
AnEnvironmentOptions.Filename := AFilename; AnEnvironmentOptions.Filename := AFilename;
DoSaveSettings(AnEnvironmentOptions); DoSaveSettings(AnEnvironmentOptions);
AnEnvironmentOptions.Save(true); AnEnvironmentOptions.Save(true);
ShowMessage(lisSavedSuccessfully); ShowMessageFmt(lisSuccessfullyExported, [SaveDialog.Filename]);
finally finally
AnEnvironmentOptions.Free; AnEnvironmentOptions.Free;
end; end;
@ -262,7 +262,7 @@ begin
except except
on E: Exception do on E: Exception do
begin begin
DebugLn('ERROR: [TEnvironmentOptionsDialog.SaveDesktopSettingsToFileButtonClick] ', E.Message); DebugLn('ERROR: [TDesktopOptionsFrame.ExportDesktopButtonClick] ', E.Message);
end; end;
end; end;
finally finally
@ -270,18 +270,18 @@ begin
end; end;
end; end;
procedure TDesktopOptionsFrame.LoadDesktopSettingsFromFileButtonClick(Sender: TObject); procedure TDesktopOptionsFrame.ImportDesktopButtonClick(Sender: TObject);
var var
AnEnvironmentOptions: TEnvironmentOptions; AnEnvironmentOptions: TEnvironmentOptions;
OpenDialog: TOpenDialog; OpenDialog: TOpenDialog;
begin begin
//debugln('TEnvironmentOptionsDialog.LoadDesktopSettingsFromFileButtonClick A'); //debugln('TDesktopOptionsFrame.ImportDesktopButtonClick A');
OpenDialog := TOpenDialog.Create(nil); OpenDialog := TOpenDialog.Create(nil);
try try
try try
InputHistories.ApplyFileDialogSettings(OpenDialog); InputHistories.ApplyFileDialogSettings(OpenDialog);
OpenDialog.Filter:=dlgFilterLazarusDesktopSettings+' (*.lds)|*.lds' OpenDialog.Filter:=dlgFilterLazarusDesktopSettings+' (*.lds)|*.lds'
+'|'+dlgFilterXML+' (*.xml)|*.xml' //+'|'+dlgFilterXML+' (*.xml)|*.xml'
+'|'+dlgFilterAll+' ('+GetAllFilesMask+')|' + GetAllFilesMask; +'|'+dlgFilterAll+' ('+GetAllFilesMask+')|' + GetAllFilesMask;
if OpenDialog.Execute then if OpenDialog.Execute then
begin begin
@ -292,7 +292,7 @@ begin
DoLoadSettings(AnEnvironmentOptions); DoLoadSettings(AnEnvironmentOptions);
if IDEDockMaster=nil then if IDEDockMaster=nil then
IDEWindowCreators.RestoreSimpleLayout; IDEWindowCreators.RestoreSimpleLayout;
ShowMessage(lisLoadedSuccessfully); ShowMessageFmt(lisSuccessfullyImported, [OpenDialog.Filename]);
finally finally
AnEnvironmentOptions.Free; AnEnvironmentOptions.Free;
end; end;
@ -302,7 +302,7 @@ begin
on E: Exception do on E: Exception do
begin begin
// ToDo // ToDo
DebugLn('ERROR: [TEnvironmentOptionsDialog.SaveDesktopSettingsToFileButtonClick] ', E.Message); DebugLn('ERROR: [TDesktopOptionsFrame.ImportDesktopButtonClick] ', E.Message);
end; end;
end; end;
finally finally

View File

@ -61,7 +61,11 @@ type
end; end;
TIDEToolBarOptionList = specialize TFPGObjectList<TIDEToolBarOptions>; { TIDEToolBarOptionList }
Ttbo = specialize TFPGObjectList<TIDEToolBarOptions>;
TIDEToolBarOptionList = class(Ttbo)
procedure Assign(Source: TIDEToolBarOptionList);
end;
{ TIDECoolBarOptions } { TIDECoolBarOptions }
TIDECoolBarOptions = class TIDECoolBarOptions = class
@ -77,6 +81,7 @@ type
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
procedure Clear; procedure Clear;
procedure Assign(Source: TIDECoolBarOptions);
function EqualToolbars(Opts: TIDECoolBarOptions): boolean; function EqualToolbars(Opts: TIDECoolBarOptions): boolean;
procedure Load(XMLConfig: TXMLConfig; Path: String); procedure Load(XMLConfig: TXMLConfig; Path: String);
procedure Save(XMLConfig: TXMLConfig; Path: String); procedure Save(XMLConfig: TXMLConfig; Path: String);
@ -238,6 +243,22 @@ begin
XMLConfig.SetDeleteValue(SubPath + 'Button' + IntToStr(I+1) + '/Name', ButtonNames[I], ''); XMLConfig.SetDeleteValue(SubPath + 'Button' + IntToStr(I+1) + '/Name', ButtonNames[I], '');
end; end;
{ TIDEToolBarOptionList }
procedure TIDEToolBarOptionList.Assign(Source: TIDEToolBarOptionList);
var
tbo: TIDEToolBarOptions;
i: Integer;
begin
Clear;
for i := 0 to Source.Count-1 do
begin
tbo := TIDEToolBarOptions.Create;
tbo.Assign(Source[i]);
Add(tbo);
end;
end;
{ TIDECoolBarOptions } { TIDECoolBarOptions }
constructor TIDECoolBarOptions.Create; constructor TIDECoolBarOptions.Create;
begin begin
@ -256,6 +277,16 @@ begin
FIDECoolBarToolBars.Clear; FIDECoolBarToolBars.Clear;
end; end;
procedure TIDECoolBarOptions.Assign(Source: TIDECoolBarOptions);
begin
FIDECoolBarVisible := Source.FIDECoolBarVisible;
FIDECoolBarWidth := Source.FIDECoolBarWidth;
FIDECoolBarGrabStyle := Source.FIDECoolBarGrabStyle;
FIDECoolBarGrabWidth := Source.FIDECoolBarGrabWidth;
FIDECoolBarBorderStyle := Source.FIDECoolBarBorderStyle;
FIDECoolBarToolBars.Assign(Source.FIDECoolBarToolBars);
end;
function TIDECoolBarOptions.EqualToolbars(Opts: TIDECoolBarOptions): boolean; function TIDECoolBarOptions.EqualToolbars(Opts: TIDECoolBarOptions): boolean;
var var
I: Integer; I: Integer;

View File

@ -1232,9 +1232,9 @@ resourcestring
lisIfOnlySessionInfoChangedThenAsk = 'If only the session info changed, ask about saving it.'; lisIfOnlySessionInfoChangedThenAsk = 'If only the session info changed, ask about saving it.';
dlgEdFiles = 'Editor Files'; dlgEdFiles = 'Editor Files';
dlgIntvInSec = 'Interval in secs'; dlgIntvInSec = 'Interval in secs';
dlgDesktopFiles = 'Desktop Files'; dlgExportDesktop = 'Export desktop';
dlgSaveDFile = 'Save desktop settings to file'; dlgImportDesktop = 'Import desktop';
dlgLoadDFile = 'Load desktop settings from file'; dlgSaveCurrentDesktop = 'Save current desktop';
dlgDesktopHints = 'Hints'; dlgDesktopHints = 'Hints';
dlgDesktopButtons = 'Buttons - '; dlgDesktopButtons = 'Buttons - ';
dlgDesktopMenus = 'Menus - '; dlgDesktopMenus = 'Menus - ';
@ -1244,8 +1244,6 @@ resourcestring
dlgPreferDoubleClickOverSingleClick = 'Prefer double-click over single-click'; dlgPreferDoubleClickOverSingleClick = 'Prefer double-click over single-click';
dlgCurrentlyRespectedByMessagesWindow = 'Currently respected by messages window, ' dlgCurrentlyRespectedByMessagesWindow = 'Currently respected by messages window, '
+'jump history and search results.'; +'jump history and search results.';
lisSavedSuccessfully = 'Saved successfully';
lisLoadedSuccessfully = 'Loaded successfully';
// Window options // Window options
dlgShowingWindows = 'Showing Windows'; dlgShowingWindows = 'Showing Windows';
@ -3139,6 +3137,7 @@ resourcestring
lisMenuCodeToolsDefinesEditor = 'CodeTools Defines Editor ...'; lisMenuCodeToolsDefinesEditor = 'CodeTools Defines Editor ...';
lisMenuRescanFPCSourceDirectory = 'Rescan FPC Source Directory'; lisMenuRescanFPCSourceDirectory = 'Rescan FPC Source Directory';
srkmecMakeResourceString = 'Make Resource String'; srkmecMakeResourceString = 'Make Resource String';
lisDesktops = 'Desktops ...';
lisKMDiffEditorFiles = 'Diff Editor Files'; lisKMDiffEditorFiles = 'Diff Editor Files';
lisKMConvertDFMFileToLFM = 'Convert DFM File to LFM'; lisKMConvertDFMFileToLFM = 'Convert DFM File to LFM';
lisKMConvertDelphiUnitToLazarusUnit = 'Convert Delphi Unit to Lazarus Unit'; lisKMConvertDelphiUnitToLazarusUnit = 'Convert Delphi Unit to Lazarus Unit';

View File

@ -146,7 +146,7 @@ uses
CodeTemplatesDlg, CodeBrowser, FindUnitDlg, InspectChksumChangedDlg, CodeTemplatesDlg, CodeBrowser, FindUnitDlg, InspectChksumChangedDlg,
IdeOptionsDlg, EditDefineTree, PublishModule, EnvironmentOpts, TransferMacros, IdeOptionsDlg, EditDefineTree, PublishModule, EnvironmentOpts, TransferMacros,
KeyMapping, IDETranslations, IDEProcs, ExtToolDialog, ExtToolEditDlg, KeyMapping, IDETranslations, IDEProcs, ExtToolDialog, ExtToolEditDlg,
JumpHistoryView, ExampleManager, JumpHistoryView, DesktopManager, ExampleManager,
BuildLazDialog, BuildProfileManager, BuildManager, CheckCompOptsForNewUnitDlg, BuildLazDialog, BuildProfileManager, BuildManager, CheckCompOptsForNewUnitDlg,
MiscOptions, InputHistory, UnitDependencies, MiscOptions, InputHistory, UnitDependencies,
IDEFPCInfo, IDEInfoDlg, IDEInfoNeedBuild, ProcessList, InitialSetupDlgs, IDEFPCInfo, IDEInfoDlg, IDEInfoNeedBuild, ProcessList, InitialSetupDlgs,
@ -356,6 +356,7 @@ type
procedure mnuToolConvertDelphiProjectClicked(Sender: TObject); procedure mnuToolConvertDelphiProjectClicked(Sender: TObject);
procedure mnuToolConvertDelphiPackageClicked(Sender: TObject); procedure mnuToolConvertDelphiPackageClicked(Sender: TObject);
procedure mnuToolConvertEncodingClicked(Sender: TObject); procedure mnuToolConvertEncodingClicked(Sender: TObject);
procedure mnuToolManageDesktopsClicked(Sender: TObject);
procedure mnuToolManageExamplesClicked(Sender: TObject); procedure mnuToolManageExamplesClicked(Sender: TObject);
procedure mnuToolBuildLazarusClicked(Sender: TObject); procedure mnuToolBuildLazarusClicked(Sender: TObject);
procedure mnuToolBuildAdvancedLazarusClicked(Sender: TObject); procedure mnuToolBuildAdvancedLazarusClicked(Sender: TObject);
@ -2735,6 +2736,11 @@ begin
itmEnvCodeToolsDefinesEditor.OnClick := @mnuEnvCodeToolsDefinesEditorClicked; itmEnvCodeToolsDefinesEditor.OnClick := @mnuEnvCodeToolsDefinesEditorClicked;
itmToolConfigure.OnClick := @mnuToolConfigureUserExtToolsClicked; itmToolConfigure.OnClick := @mnuToolConfigureUserExtToolsClicked;
itmToolManageDesktops.OnClick := @mnuToolManageDesktopsClicked;
{$IFnDEF EnableDesktops}
itmToolManageDesktops.Visible := False;
{$ENDIF}
itmToolManageExamples.OnClick := @mnuToolManageExamplesClicked;
itmToolDiff.OnClick := @mnuToolDiffClicked; itmToolDiff.OnClick := @mnuToolDiffClicked;
itmToolCheckLFM.OnClick := @mnuToolCheckLFMClicked; itmToolCheckLFM.OnClick := @mnuToolCheckLFMClicked;
@ -2743,7 +2749,6 @@ begin
itmToolConvertDelphiProject.OnClick := @mnuToolConvertDelphiProjectClicked; itmToolConvertDelphiProject.OnClick := @mnuToolConvertDelphiProjectClicked;
itmToolConvertDelphiPackage.OnClick := @mnuToolConvertDelphiPackageClicked; itmToolConvertDelphiPackage.OnClick := @mnuToolConvertDelphiPackageClicked;
itmToolConvertEncoding.OnClick := @mnuToolConvertEncodingClicked; itmToolConvertEncoding.OnClick := @mnuToolConvertEncodingClicked;
itmToolManageExamples.OnClick := @mnuToolManageExamplesClicked;
itmToolBuildLazarus.OnClick := @mnuToolBuildLazarusClicked; itmToolBuildLazarus.OnClick := @mnuToolBuildLazarusClicked;
itmToolConfigureBuildLazarus.OnClick := @mnuToolConfigBuildLazClicked; itmToolConfigureBuildLazarus.OnClick := @mnuToolConfigBuildLazClicked;
// Set initial caption for Build Lazarus item. Will be changed in BuildLazDialog. // Set initial caption for Build Lazarus item. Will be changed in BuildLazDialog.
@ -4551,6 +4556,11 @@ begin
ShowConvertEncodingDlg; ShowConvertEncodingDlg;
end; end;
procedure TMainIDE.mnuToolManageDesktopsClicked(Sender: TObject);
begin
ShowDesktopManagerDlg;
end;
procedure TMainIDE.mnuToolManageExamplesClicked(Sender: TObject); procedure TMainIDE.mnuToolManageExamplesClicked(Sender: TObject);
begin begin
DoExampleManager(); DoExampleManager();

View File

@ -332,6 +332,8 @@ type
//itmCustomTools: TIDEMenuSection; //itmCustomTools: TIDEMenuSection;
itmToolConfigure: TIDEMenuCommand; itmToolConfigure: TIDEMenuCommand;
//itmSecondaryTools: TIDEMenuSection; //itmSecondaryTools: TIDEMenuSection;
itmToolManageDesktops: TIDEMenuCommand;
itmToolManageExamples: TIDEMenuCommand;
itmToolDiff: TIDEMenuCommand; itmToolDiff: TIDEMenuCommand;
//itmDelphiConversion: TIDEMenuSection; //itmDelphiConversion: TIDEMenuSection;
itmToolCheckLFM: TIDEMenuCommand; itmToolCheckLFM: TIDEMenuCommand;
@ -341,7 +343,6 @@ type
itmToolConvertDFMtoLFM: TIDEMenuCommand; itmToolConvertDFMtoLFM: TIDEMenuCommand;
itmToolConvertEncoding: TIDEMenuCommand; itmToolConvertEncoding: TIDEMenuCommand;
//itmBuildingLazarus: TIDEMenuSection; //itmBuildingLazarus: TIDEMenuSection;
itmToolManageExamples: TIDEMenuCommand;
itmToolBuildLazarus: TIDEMenuCommand; itmToolBuildLazarus: TIDEMenuCommand;
itmToolConfigureBuildLazarus: TIDEMenuCommand; itmToolConfigureBuildLazarus: TIDEMenuCommand;

View File

@ -1011,6 +1011,7 @@ begin
CreateMenuSeparatorSection(mnuTools,itmSecondaryTools,'itmSecondaryTools'); CreateMenuSeparatorSection(mnuTools,itmSecondaryTools,'itmSecondaryTools');
ParentMI:=itmSecondaryTools; ParentMI:=itmSecondaryTools;
CreateMenuItem(ParentMI,itmToolManageDesktops,'itmToolManageDesktops', lisDesktops);
CreateMenuItem(ParentMI,itmToolManageExamples,'itmToolManageExamples',lisMenuExampleProjects, 'camera'); CreateMenuItem(ParentMI,itmToolManageExamples,'itmToolManageExamples',lisMenuExampleProjects, 'camera');
CreateMenuItem(ParentMI,itmToolDiff,'itmToolDiff',lisMenuCompareFiles, 'menu_tool_diff'); CreateMenuItem(ParentMI,itmToolDiff,'itmToolDiff',lisMenuCompareFiles, 'menu_tool_diff');
@ -1294,6 +1295,9 @@ begin
itmEnvCodeToolsDefinesEditor.Command:=GetCommand(ecCodeToolsDefinesEd); itmEnvCodeToolsDefinesEditor.Command:=GetCommand(ecCodeToolsDefinesEd);
itmToolConfigure.Command:=GetCommand(ecExtToolSettings); itmToolConfigure.Command:=GetCommand(ecExtToolSettings);
itmToolManageDesktops.Command:=GetCommand(ecManageDesktops);
itmToolManageExamples.Command:=GetCommand(ecManageExamples);
itmToolDiff.Command:=GetCommand(ecDiff); itmToolDiff.Command:=GetCommand(ecDiff);
itmToolConvertDFMtoLFM.Command:=GetCommand(ecConvertDFM2LFM); itmToolConvertDFMtoLFM.Command:=GetCommand(ecConvertDFM2LFM);
@ -1302,7 +1306,6 @@ begin
itmToolConvertDelphiProject.Command:=GetCommand(ecConvertDelphiProject); itmToolConvertDelphiProject.Command:=GetCommand(ecConvertDelphiProject);
itmToolConvertDelphiPackage.Command:=GetCommand(ecConvertDelphiPackage); itmToolConvertDelphiPackage.Command:=GetCommand(ecConvertDelphiPackage);
itmToolConvertEncoding.Command:=GetCommand(ecConvertEncoding); itmToolConvertEncoding.Command:=GetCommand(ecConvertEncoding);
itmToolManageExamples.Command:=GetCommand(ecManageExamples);
itmToolBuildLazarus.Command:=GetCommand(ecBuildLazarus); itmToolBuildLazarus.Command:=GetCommand(ecBuildLazarus);
itmToolConfigureBuildLazarus.Command:=GetCommand(ecConfigBuildLazarus); itmToolConfigureBuildLazarus.Command:=GetCommand(ecConfigBuildLazarus);