IDE: Improve Window options frame with hints.

git-svn-id: trunk@40891 -
This commit is contained in:
juha 2013-04-26 08:05:42 +00:00
parent e2f70c366f
commit d641da3f9e
3 changed files with 186 additions and 112 deletions

View File

@ -1,9 +1,9 @@
object WindowOptionsFrame: TWindowOptionsFrame
Left = 0
Height = 473
Height = 482
Top = 0
Width = 566
ClientHeight = 473
ClientHeight = 482
ClientWidth = 566
TabOrder = 0
Visible = False
@ -42,13 +42,13 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 362
Top = 111
Height = 374
Top = 108
Width = 566
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 6
BorderSpacing.Top = 3
Caption = 'WindowPositionsGroupBox'
ClientHeight = 333
ClientHeight = 345
ClientWidth = 560
TabOrder = 2
object Bevel1: TBevel
@ -57,7 +57,7 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideTop.Side = asrCenter
Left = 6
Height = 3
Top = 138
Top = 132
Width = 50
BorderSpacing.Left = 6
end
@ -70,7 +70,7 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideRight.Side = asrBottom
Left = 205
Height = 3
Top = 138
Top = 132
Width = 349
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
@ -82,7 +82,7 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideTop.Side = asrBottom
Left = 70
Height = 15
Top = 132
Top = 126
Width = 129
BorderSpacing.Left = 70
BorderSpacing.Top = 6
@ -97,7 +97,7 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideRight.Control = LeftEdit
Left = 285
Height = 15
Top = 218
Top = 230
Width = 56
Anchors = [akTop, akRight]
BorderSpacing.Right = 3
@ -110,7 +110,7 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideRight.Control = TopEdit
Left = 287
Height = 15
Top = 247
Top = 259
Width = 54
Anchors = [akTop, akRight]
BorderSpacing.Right = 3
@ -123,7 +123,7 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideRight.Control = WidthEdit
Left = 408
Height = 15
Top = 218
Top = 230
Width = 68
Anchors = [akTop, akRight]
BorderSpacing.Right = 3
@ -136,7 +136,7 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideRight.Control = HeightEdit
Left = 402
Height = 15
Top = 247
Top = 259
Width = 74
Anchors = [akTop, akRight]
BorderSpacing.Right = 3
@ -150,77 +150,96 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideRight.Side = asrBottom
Left = 6
Height = 120
Top = 6
Top = 0
Width = 548
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 6
BorderSpacing.Left = 6
BorderSpacing.Right = 6
ItemHeight = 0
OnSelectionChange = WindowPositionsListBoxSelectionChange
ParentShowHint = False
ShowHint = True
TabOrder = 0
end
object UseWindowManagerSettingRadioButton: TRadioButton
AnchorSideLeft.Control = WindowPositionsGroupBox
AnchorSideTop.Control = SplitterPanel
AnchorSideTop.Side = asrBottom
Left = 6
Height = 21
Top = 214
Width = 273
BorderSpacing.Around = 6
Caption = 'UseWindowManagerSettingRadioButton'
Checked = True
TabOrder = 1
TabStop = True
end
object DefaultRadioButton: TRadioButton
AnchorSideLeft.Control = WindowPositionsGroupBox
AnchorSideTop.Control = UseWindowManagerSettingRadioButton
AnchorSideTop.Side = asrBottom
Left = 6
Height = 21
Top = 241
Width = 147
BorderSpacing.Around = 6
Caption = 'DefaultRadioButton'
TabOrder = 2
end
object RestoreWindowGeometryRadioButton: TRadioButton
AnchorSideLeft.Control = WindowPositionsGroupBox
AnchorSideTop.Control = DefaultRadioButton
AnchorSideTop.Side = asrBottom
Left = 6
Height = 21
Top = 268
Width = 257
BorderSpacing.Around = 6
Caption = 'RestoreWindowGeometryRadioButton'
TabOrder = 3
end
object CustomPositionRadioButton: TRadioButton
object LetWindowManagerDecideRadioButton: TRadioButton
AnchorSideLeft.Control = WindowPositionsGroupBox
AnchorSideTop.Control = RestoreWindowGeometryRadioButton
AnchorSideTop.Side = asrBottom
Left = 6
Height = 21
Top = 295
Width = 199
BorderSpacing.Around = 6
Caption = 'CustomPositionRadioButton'
Top = 250
Width = 266
BorderSpacing.Left = 6
BorderSpacing.Top = 3
Caption = 'LetWindowManagerDecideRadioButton'
OnClick = WindowGeometryRadioButtonClick
ParentShowHint = False
ShowHint = True
TabOrder = 1
end
object FixedDefaultRadioButton: TRadioButton
AnchorSideLeft.Control = WindowPositionsGroupBox
AnchorSideTop.Control = LetWindowManagerDecideRadioButton
AnchorSideTop.Side = asrBottom
Left = 6
Height = 21
Top = 274
Width = 178
BorderSpacing.Left = 6
BorderSpacing.Top = 3
Caption = 'FixedDefaultRadioButton'
OnClick = WindowGeometryRadioButtonClick
ParentShowHint = False
ShowHint = True
TabOrder = 2
end
object RestoreWindowGeometryRadioButton: TRadioButton
AnchorSideLeft.Control = WindowPositionsGroupBox
AnchorSideTop.Control = SplitterPanel
AnchorSideTop.Side = asrBottom
Left = 6
Height = 21
Top = 226
Width = 257
BorderSpacing.Left = 6
BorderSpacing.Top = 4
Caption = 'RestoreWindowGeometryRadioButton'
Checked = True
OnClick = WindowGeometryRadioButtonClick
ParentShowHint = False
ShowHint = True
TabOrder = 3
TabStop = True
end
object CustomGeometryRadioButton: TRadioButton
AnchorSideLeft.Control = WindowPositionsGroupBox
AnchorSideTop.Control = FixedDefaultRadioButton
AnchorSideTop.Side = asrBottom
Left = 6
Height = 21
Top = 298
Width = 209
BorderSpacing.Left = 6
BorderSpacing.Top = 3
Caption = 'CustomGeometryRadioButton'
OnClick = CustomGeometryRadioButtonClick
ParentShowHint = False
ShowHint = True
TabOrder = 4
end
object LeftEdit: TSpinEdit
AnchorSideTop.Control = SplitterPanel
AnchorSideTop.Side = asrBottom
AnchorSideTop.Control = RestoreWindowGeometryRadioButton
AnchorSideRight.Control = WidthEdit
Left = 344
Height = 23
Top = 214
Top = 226
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.Top = 6
BorderSpacing.Right = 60
MaxValue = 4096
MinValue = -5000
ParentShowHint = False
ShowHint = True
TabOrder = 5
end
object TopEdit: TSpinEdit
@ -229,28 +248,30 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideRight.Control = HeightEdit
Left = 344
Height = 23
Top = 243
Top = 255
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.Top = 6
BorderSpacing.Right = 60
MaxValue = 4096
MinValue = -5000
ParentShowHint = False
ShowHint = True
TabOrder = 6
end
object WidthEdit: TSpinEdit
AnchorSideTop.Control = SplitterPanel
AnchorSideTop.Side = asrBottom
AnchorSideTop.Control = LeftEdit
AnchorSideRight.Control = WindowPositionsGroupBox
AnchorSideRight.Side = asrBottom
Left = 479
Height = 23
Top = 214
Top = 226
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.Top = 6
BorderSpacing.Right = 6
MaxValue = 4096
ParentShowHint = False
ShowHint = True
TabOrder = 7
end
object HeightEdit: TSpinEdit
@ -260,25 +281,26 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideRight.Side = asrBottom
Left = 479
Height = 23
Top = 243
Top = 255
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.Top = 6
BorderSpacing.Right = 6
MaxValue = 4096
ParentShowHint = False
ShowHint = True
TabOrder = 8
end
object GetWindowPositionButton: TButton
AnchorSideTop.Control = TopEdit
AnchorSideTop.Side = asrBottom
AnchorSideTop.Control = ApplyButton
AnchorSideRight.Control = ApplyButton
Left = 286
Height = 24
Top = 272
Top = 290
Width = 174
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Around = 6
BorderSpacing.Right = 6
Caption = 'GetWindowPositionButton'
Constraints.MinWidth = 75
OnClick = GetWindowPositionButtonClick
@ -291,11 +313,12 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideRight.Side = asrBottom
Left = 466
Height = 24
Top = 272
Top = 290
Width = 88
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Around = 6
BorderSpacing.Top = 12
BorderSpacing.Right = 6
Caption = 'ApplyButton'
Constraints.MinWidth = 75
OnClick = ApplyButtonClick
@ -310,17 +333,18 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideBottom.Control = WindowPositionsGroupBox
AnchorSideBottom.Side = asrBottom
Left = 4
Height = 57
Top = 151
Width = 552
Height = 78
Top = 144
Width = 556
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 4
BorderSpacing.Left = 4
BorderSpacing.Top = 3
BevelOuter = bvNone
BorderWidth = 1
BorderStyle = bsSingle
Caption = ' '
ClientHeight = 51
ClientWidth = 546
ClientHeight = 72
ClientWidth = 550
TabOrder = 11
Visible = False
object SplitterList: TListBox
@ -329,23 +353,26 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideBottom.Control = SplitterPanel
AnchorSideBottom.Side = asrBottom
Left = 1
Height = 49
Height = 70
Top = 1
Width = 275
Anchors = [akTop, akLeft, akBottom]
ItemHeight = 0
OnSelectionChange = SplitterListSelectionChange
ParentShowHint = False
ShowHint = True
TabOrder = 0
end
object SplitLabel: TLabel
AnchorSideTop.Control = SplitEdit
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = SplitEdit
Left = 410
Left = 411
Height = 15
Top = 31
Top = 43
Width = 60
Anchors = [akTop, akRight]
BorderSpacing.Right = 3
Caption = 'SplitLabel'
ParentColor = False
end
@ -354,12 +381,15 @@ object WindowOptionsFrame: TWindowOptionsFrame
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = SplitterPanel
AnchorSideBottom.Side = asrBottom
Left = 470
Left = 474
Height = 23
Top = 27
Top = 39
Width = 75
Anchors = [akRight, akBottom]
BorderSpacing.Bottom = 9
MaxValue = 5000
ParentShowHint = False
ShowHint = True
TabOrder = 1
end
object dropSplitterPlacement: TComboBox
@ -371,10 +401,12 @@ object WindowOptionsFrame: TWindowOptionsFrame
Left = 282
Height = 24
Top = 1
Width = 263
Width = 267
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
ItemHeight = 0
ParentShowHint = False
ShowHint = True
Style = csDropDownList
TabOrder = 2
end

View File

@ -39,8 +39,8 @@ type
Bevel1: TBevel;
Bevel2: TBevel;
dropSplitterPlacement: TComboBox;
CustomPositionRadioButton: TRadioButton;
DefaultRadioButton: TRadioButton;
CustomGeometryRadioButton: TRadioButton;
FixedDefaultRadioButton: TRadioButton;
GetWindowPositionButton: TButton;
HeightEdit: TSpinEdit;
HeightLabel: TLabel;
@ -59,13 +59,15 @@ type
ProjectDirInIdeTitleCheckBox: TCheckBox;
TopEdit: TSpinEdit;
TopLabel: TLabel;
UseWindowManagerSettingRadioButton: TRadioButton;
LetWindowManagerDecideRadioButton: TRadioButton;
WidthEdit: TSpinEdit;
WidthLabel: TLabel;
WindowPositionsGroupBox: TGroupBox;
WindowPositionsListBox: TListBox;
procedure ApplyButtonClick(Sender: TObject);
procedure CustomGeometryRadioButtonClick(Sender: TObject);
procedure GetWindowPositionButtonClick(Sender: TObject);
procedure WindowGeometryRadioButtonClick(Sender: TObject);
procedure SplitterListSelectionChange(Sender: TObject; User: boolean);
procedure WindowPositionsListBoxSelectionChange(Sender: TObject; User: boolean);
private
@ -73,6 +75,7 @@ type
FLayout: TSimpleWindowLayout;
FDivider: TSimpleWindowLayoutDividerPos;
FShowSimpleLayout: boolean;
procedure EnableGeometryEdits(aEnable: Boolean);
function GetPlacementRadioButtons(APlacement: TIDEWindowPlacement): TRadioButton;
procedure SetLayout(const AValue: TSimpleWindowLayout);
procedure SetDivider(const AValue: TSimpleWindowLayoutDividerPos);
@ -122,8 +125,7 @@ end;
procedure TWindowOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
var
Creator: TIDEWindowCreator;
i: Integer;
j: Integer;
i, j: Integer;
begin
with AOptions as TEnvironmentOptions do
begin
@ -156,6 +158,11 @@ begin
WindowPositionsListBox.Sorted := True;
WindowPositionsListBox.Items.EndUpdate;
WindowPositionsListBox.Hint := rsiwpPositionWindowListHint;
SplitterList.Hint := rsiwpColumnNamesHint;
dropSplitterPlacement.Hint := rsiwpColumnStrategyHint;
SplitEdit.Hint := rsiwpColumnWidthHint;
LeftLabel.Caption := dlgLeftPos;
TopLabel.Caption := dlgTopPos;
WidthLabel.Caption := dlgWidthPos;
@ -164,15 +171,25 @@ begin
GetWindowPositionButton.Caption := dlgGetPosition;
SplitLabel.Caption := dlgWidthPos;
UseWindowManagerSettingRadioButton.Caption := rsiwpUseWindowManagerSetting;
DefaultRadioButton.Caption := rsiwpDefault;
LeftEdit.Hint := rsiwpSplitterCustomPosition;
TopEdit.Hint := rsiwpSplitterCustomPosition;
WidthEdit.Hint := rsiwpSplitterCustomPosition;
HeightEdit.Hint := rsiwpSplitterCustomPosition;
RestoreWindowGeometryRadioButton.Caption := rsiwpRestoreWindowGeometry;
CustomPositionRadioButton.Caption := rsiwpCustomPosition;
LetWindowManagerDecideRadioButton.Caption := rsiwpLetWindowManagerDecide;
FixedDefaultRadioButton.Caption := rsiwpFixedDefaultGeometry;
CustomGeometryRadioButton.Caption := rsiwpCustomGeometry;
RestoreWindowGeometryRadioButton.Hint := rsiwpRestoreWindowGeometryHint;
LetWindowManagerDecideRadioButton.Hint := rsiwpLetWindowManagerDecideHint;
FixedDefaultRadioButton.Hint := rsiwpFixedDefaultGeometryHint;
CustomGeometryRadioButton.Hint := rsiwpCustomGeometryHint;
dropSplitterPlacement.Clear;
dropSplitterPlacement.Items.Add(rsiwpSplitterFollowWindow);
dropSplitterPlacement.Items.Add(rsiwpSplitterDefault);
dropSplitterPlacement.Items.Add(rsiwpSplitterRestoreWindowGeometry);
dropSplitterPlacement.Items.Add(rsiwpSplitterDefault);
dropSplitterPlacement.Items.Add(rsiwpSplitterCustomPosition);
SetWindowPositionsItem(0);
@ -202,9 +219,9 @@ function TWindowOptionsFrame.GetPlacementRadioButtons(
begin
case APlacement of
iwpRestoreWindowGeometry: Result := RestoreWindowGeometryRadioButton;
iwpDefault: Result := DefaultRadioButton;
iwpCustomPosition: Result := CustomPositionRadioButton;
iwpUseWindowManagerSetting: Result := UseWindowManagerSettingRadioButton;
iwpDefault: Result := FixedDefaultRadioButton;
iwpCustomPosition: Result := CustomGeometryRadioButton;
iwpUseWindowManagerSetting: Result := LetWindowManagerDecideRadioButton;
else
Result := nil;
end;
@ -281,8 +298,8 @@ begin
SplitEdit.Value := FDivider.Size;
case FDivider.Placement of
iwpdUseWindowSetting: dropSplitterPlacement.ItemIndex := 0;
iwpdDefault: dropSplitterPlacement.ItemIndex := 1;
iwpdRestore: dropSplitterPlacement.ItemIndex := 2;
iwpdRestore: dropSplitterPlacement.ItemIndex := 1;
iwpdDefault: dropSplitterPlacement.ItemIndex := 2;
iwpdCustomSize: dropSplitterPlacement.ItemIndex := 3;
end;
end;
@ -306,6 +323,24 @@ begin
end;
end;
procedure TWindowOptionsFrame.EnableGeometryEdits(aEnable: Boolean);
begin
LeftEdit.Enabled := aEnable;
TopEdit.Enabled := aEnable;
WidthEdit.Enabled := aEnable;
HeightEdit.Enabled := aEnable;
end;
procedure TWindowOptionsFrame.WindowGeometryRadioButtonClick(Sender: TObject);
begin
EnableGeometryEdits(False);
end;
procedure TWindowOptionsFrame.CustomGeometryRadioButtonClick(Sender: TObject);
begin
EnableGeometryEdits(True);
end;
procedure TWindowOptionsFrame.GetWindowPositionButtonClick(Sender: TObject);
begin
if (Layout<>nil) and (Layout.Form <> nil) then
@ -346,8 +381,8 @@ begin
if FDivider = nil then exit;
case dropSplitterPlacement.ItemIndex of
0: FDivider.Placement := iwpdUseWindowSetting;
1: FDivider.Placement := iwpdDefault;
2: FDivider.Placement := iwpdRestore;
1: FDivider.Placement := iwpdRestore;
2: FDivider.Placement := iwpdDefault;
3: FDivider.Placement := iwpdCustomSize;
end;
FDivider.Size := SplitEdit.Value;

View File

@ -2421,16 +2421,23 @@ resourcestring
dlgWidthPos = 'Width:';
dlgTopPos = 'Top:';
DlgHeightPos = 'Height:';
rsiwpUseWindowManagerSetting = 'Use windowmanager setting';
rsiwpDefault = 'Default';
rsiwpRestoreWindowGeometry = 'Restore window geometry';
rsiwpDocked = 'Docked';
rsiwpCustomPosition = 'Custom position';
rsiwpRestoreWindowSize = 'Restore window size';
rsiwpLetWindowManagerDecide = 'Let windowmanager decide';
rsiwpFixedDefaultGeometry = 'Fixed default geometry';
rsiwpCustomGeometry = 'Custom geometry';
rsiwpPositionWindowListHint = 'Windows that have been open. They may be closed now.';
rsiwpColumnNamesHint = 'Column Names';
rsiwpColumnStrategyHint = 'Strategy for saving Columns';
rsiwpColumnWidthHint = 'Column Width';
rsiwpRestoreWindowGeometryHint = 'Use previous position and size';
rsiwpLetWindowManagerDecideHint = 'System windowmanagers have different strategies for positioning windows';
rsiwpFixedDefaultGeometryHint = 'Always the same fixed position and size';
rsiwpCustomGeometryHint = 'User can define window''s position and size';
rsiwpSplitterFollowWindow = 'Restore with window';
rsiwpSplitterDefault = 'Default Size';
rsiwpSplitterRestoreWindowGeometry = 'Restore Size';
rsiwpSplitterDefault = 'Default Size';
rsiwpSplitterCustomPosition = 'Custom Size';
// Code Explorer