ide: desktops: add "Associated debug desktop" property to a desktop.

git-svn-id: trunk@55278 -
This commit is contained in:
ondrej 2017-06-09 11:15:00 +00:00
parent 840c63cf14
commit cb1bb1a10b
4 changed files with 81 additions and 14 deletions

View File

@ -10,7 +10,7 @@ object DesktopForm: TDesktopForm
OnCreate = FormCreate
OnShow = FormShow
Position = poScreenCenter
LCLVersion = '1.5'
LCLVersion = '1.9.0.0'
object ButtonPanel1: TButtonPanel
Left = 6
Height = 34
@ -27,7 +27,7 @@ object DesktopForm: TDesktopForm
CancelButton.Name = 'CancelButton'
CancelButton.Caption = 'Close'
CancelButton.DefaultCaption = False
TabOrder = 3
TabOrder = 4
ShowButtons = [pbClose, pbHelp]
object ExportBitBtn: TBitBtn
Left = 93
@ -58,9 +58,9 @@ object DesktopForm: TDesktopForm
AnchorSideLeft.Control = LblGrayedInfo
AnchorSideRight.Control = LblGrayedInfo
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = AutoSaveActiveDesktopCheckBox
AnchorSideBottom.Control = AssociatedDebugDesktopComboBox
Left = 11
Height = 190
Height = 161
Top = 8
Width = 320
Anchors = [akTop, akLeft, akRight, akBottom]
@ -87,7 +87,7 @@ object DesktopForm: TDesktopForm
Caption = 'Auto save active desktop'
ParentShowHint = False
ShowHint = True
TabOrder = 1
TabOrder = 2
end
object ToolBar1: TToolBar
Left = 340
@ -98,7 +98,7 @@ object DesktopForm: TDesktopForm
Anchors = [akTop, akRight, akBottom]
Caption = 'ToolBar1'
EdgeBorders = []
TabOrder = 2
TabOrder = 3
object SaveTB: TToolButton
Left = 1
Top = 0
@ -109,7 +109,6 @@ object DesktopForm: TDesktopForm
end
object ToolButton1: TToolButton
Left = 1
Height = 5
Top = 22
Width = 23
Caption = 'ToolButton1'
@ -167,7 +166,6 @@ object DesktopForm: TDesktopForm
end
object ToolButton2: TToolButton
Left = 1
Height = 5
Top = 120
Width = 23
Caption = 'ToolButton2'
@ -175,7 +173,6 @@ object DesktopForm: TDesktopForm
end
object ToolButton3: TToolButton
Left = 1
Height = 5
Top = 49
Width = 23
Caption = 'ToolButton3'
@ -195,9 +192,39 @@ object DesktopForm: TDesktopForm
ParentColor = False
WordWrap = True
end
object AssociatedDebugDesktopComboBox: TComboBox
AnchorSideLeft.Control = AssociatedDebugDesktopLabel
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = DesktopListBox
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = AutoSaveActiveDesktopCheckBox
Left = 184
Height = 23
Top = 175
Width = 147
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 10
ItemHeight = 15
OnChange = AssociatedDebugDesktopComboBoxChange
Style = csDropDownList
TabOrder = 1
end
object AssociatedDebugDesktopLabel: TLabel
AnchorSideLeft.Control = AutoSaveActiveDesktopCheckBox
AnchorSideTop.Control = AssociatedDebugDesktopComboBox
AnchorSideTop.Side = asrCenter
Left = 11
Height = 15
Top = 179
Width = 163
Caption = 'AssociatedDebugDesktopLabel'
ParentColor = False
ParentShowHint = False
ShowHint = True
end
object ExportMenu: TPopupMenu
left = 48
top = 24
Left = 48
Top = 24
object ExportItem: TMenuItem
Action = ExportAction
OnClick = ExportActionClick
@ -208,8 +235,8 @@ object DesktopForm: TDesktopForm
end
end
object ActionList1: TActionList
left = 128
top = 32
Left = 128
Top = 32
object SaveAction: TAction
Caption = 'SaveAction'
OnExecute = SaveActionClick

View File

@ -20,11 +20,13 @@ type
{ TDesktopForm }
TDesktopForm = class(TForm)
AssociatedDebugDesktopComboBox: TComboBox;
ExportBitBtn: TBitBtn;
ImportBitBtn: TBitBtn;
ImportAction: TAction;
ExportAction: TAction;
ExportAllAction: TAction;
AssociatedDebugDesktopLabel: TLabel;
MoveUpAction: TAction;
MoveDownAction: TAction;
DeleteAction: TAction;
@ -51,6 +53,7 @@ type
MoveDownTB: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
procedure AssociatedDebugDesktopComboBoxChange(Sender: TObject);
procedure DeleteActionClick(Sender: TObject);
procedure DesktopListBoxDrawItem(Control: TWinControl; Index: Integer;
ARect: TRect; {%H-}State: TOwnerDrawState);
@ -344,6 +347,8 @@ begin
AutoSaveActiveDesktopCheckBox.Caption := dlgAutoSaveActiveDesktop;
AutoSaveActiveDesktopCheckBox.Hint := dlgAutoSaveActiveDesktopHint;
LblGrayedInfo.Caption := dlgGrayedDesktopsUndocked;
AssociatedDebugDesktopLabel.Caption := dlgAssociatedDebugDesktop;
AssociatedDebugDesktopLabel.Hint := dlgAssociatedDebugDesktopHint;
LblGrayedInfo.Font.Color := clGrayText;
ExportAction.Hint := lisExport;
@ -387,11 +392,14 @@ begin
HasNonCompatible := False;
DesktopListBox.Clear;
AssociatedDebugDesktopComboBox.Clear;
AssociatedDebugDesktopComboBox.Items.AddObject(dlgPOIconDescNone, nil);
// Saved desktops
for i:=0 to EnvironmentOptions.Desktops.Count-1 do
begin
DskTop := EnvironmentOptions.Desktops[i];
DesktopListBox.Items.Add(DskTop.Name);
DesktopListBox.Items.AddObject(DskTop.Name, DskTop);
AssociatedDebugDesktopComboBox.Items.AddObject(DskTop.Name, DskTop);
if not DskTop.Compatible then
HasNonCompatible := True;
end;
@ -446,6 +454,19 @@ begin
end;
end;
procedure TDesktopForm.AssociatedDebugDesktopComboBoxChange(Sender: TObject);
var
SelDesktop: TDesktopOpt;
begin
if DesktopListBox.ItemIndex = -1 then
Exit;
SelDesktop := DesktopListBox.Items.Objects[DesktopListBox.ItemIndex] as TDesktopOpt;
SelDesktop.AssociatedDebugDesktopName := AssociatedDebugDesktopComboBox.Text;
if SelDesktop.Name = EnvironmentOptions.ActiveDesktopName then
EnvironmentOptions.Desktop.AssociatedDebugDesktopName := SelDesktop.AssociatedDebugDesktopName;
end;
procedure TDesktopForm.DeleteActionClick(Sender: TObject);
var
dskName: String;
@ -758,10 +779,20 @@ procedure TDesktopForm.DesktopListBoxSelectionChange(Sender: TObject; User: bool
var
HasSel, IsActive, IsDebug: Boolean;
CurName: String;
SelDesktop: TDesktopOpt;
begin
HasSel := DesktopListBox.ItemIndex>=0;
if HasSel then
begin
SelDesktop := DesktopListBox.Items.Objects[DesktopListBox.ItemIndex] as TDesktopOpt;
if (SelDesktop.AssociatedDebugDesktopName<>'') then
begin
AssociatedDebugDesktopComboBox.ItemIndex :=
AssociatedDebugDesktopComboBox.Items.IndexOfObject(EnvironmentOptions.Desktops.Find(SelDesktop.AssociatedDebugDesktopName));
if AssociatedDebugDesktopComboBox.ItemIndex<0 then
AssociatedDebugDesktopComboBox.ItemIndex := 0;
end else
AssociatedDebugDesktopComboBox.ItemIndex := 0;
CurName := DesktopListBox.Items[DesktopListBox.ItemIndex];
IsActive := CurName = EnvironmentOptions.ActiveDesktopName;
IsDebug := CurName = EnvironmentOptions.DebugDesktopName;

View File

@ -298,6 +298,7 @@ type
TDesktopOpt = class
private
FName: String;
FAssociatedDebugDesktopName: String;
FIsDocked: Boolean;
FXMLCfg: TRttiXMLConfig;
FConfigStore: TXMLOptionsStorage;
@ -344,6 +345,7 @@ type
procedure RestoreDesktop;
property Name: String read FName write FName;
property AssociatedDebugDesktopName: String read FAssociatedDebugDesktopName write FAssociatedDebugDesktopName;
property IDEWindowCreatorsLayoutList: TSimpleWindowLayoutList read FIDEWindowCreatorsLayoutList write FIDEWindowCreatorsLayoutList;
property IDEDialogLayoutList: TIDEDialogLayoutList read FIDEDialogLayoutList;
property SingleTaskBarButton: boolean read FSingleTaskBarButton write FSingleTaskBarButton;
@ -1168,6 +1170,7 @@ begin
begin
FIDEWindowCreatorsLayoutList.CopyItemsFrom(Source.FIDEWindowCreatorsLayoutList);
FIDEDialogLayoutList.Assign(Source.FIDEDialogLayoutList);
FAssociatedDebugDesktopName := Source.FAssociatedDebugDesktopName;
end;
FSingleTaskBarButton := Source.FSingleTaskBarButton;
FHideIDEOnRun := Source.FHideIDEOnRun;
@ -1199,6 +1202,7 @@ begin
FIDEWindowCreatorsLayoutList.LoadFromConfig(FConfigStore, Path);
FIDEDialogLayoutList.LoadFromConfig(FConfigStore, Path+'Dialogs/');
FAssociatedDebugDesktopName:=FXMLCfg.GetValue(Path+'AssociatedDebugDesktopName/Value', '');
FSingleTaskBarButton:=FXMLCfg.GetValue(Path+'SingleTaskBarButton/Value', False);
FHideIDEOnRun:=FXMLCfg.GetValue(Path+'HideIDEOnRun/Value',false);
FAutoAdjustIDEHeight:=FXMLCfg.GetValue(Path+'AutoAdjustIDEHeight/Value',true);
@ -1255,6 +1259,7 @@ begin
FIDEWindowCreatorsLayoutList.SaveToConfig(FConfigStore, Path);
FIDEDialogLayoutList.SaveToConfig(FConfigStore,Path+'Dialogs/');
FXMLCfg.SetDeleteValue(Path+'AssociatedDebugDesktopName/Value', FAssociatedDebugDesktopName, '');
FXMLCfg.SetDeleteValue(Path+'SingleTaskBarButton/Value',FSingleTaskBarButton, False);
FXMLCfg.SetDeleteValue(Path+'HideIDEOnRun/Value',FHideIDEOnRun,false);
FXMLCfg.SetDeleteValue(Path+'AutoAdjustIDEHeight/Value',FAutoAdjustIDEHeight,true);
@ -2750,6 +2755,8 @@ begin
DoBeforeWrite(False); //this is needed to get the EditorToolBar refreshed!!! - needed only here in UseDesktop()
Desktop.Assign(ADesktop);
ActiveDesktopName := ADesktop.Name;
if ADesktop.AssociatedDebugDesktopName<>'' then
DebugDesktopName := ADesktop.AssociatedDebugDesktopName;
DoAfterWrite(False); //this is needed to get the EditorToolBar refreshed!!! - needed only here in UseDesktop()
Desktop.ExportSettingsToIDE;
Desktop.RestoreDesktop;

View File

@ -1355,6 +1355,8 @@ resourcestring
dlgGrayedDesktopsUndocked = 'Grayed desktops are for undocked environment.';
dlgAutoSaveActiveDesktop = 'Auto save active desktop';
dlgAutoSaveActiveDesktopHint = 'Save active desktop on IDE close'+sLineBreak+'Save debug desktop on IDE close and debug end';
dlgAssociatedDebugDesktop = 'Associated debug desktop';
dlgAssociatedDebugDesktopHint = 'If you select the desktop, the associated debug desktop will be selected as well.';
// Window options
dlgShowingWindows = 'Showing Windows';