diff --git a/ide/frames/window_options.lfm b/ide/frames/window_options.lfm index 2c2b58f2b9..6e2a2c78b5 100644 --- a/ide/frames/window_options.lfm +++ b/ide/frames/window_options.lfm @@ -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 diff --git a/ide/frames/window_options.pas b/ide/frames/window_options.pas index bc3ad097a8..4efad24171 100644 --- a/ide/frames/window_options.pas +++ b/ide/frames/window_options.pas @@ -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; diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index 13a6718a17..3f63c5ddc7 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -2421,17 +2421,24 @@ 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'; + rsiwpRestoreWindowGeometry = 'Restore window geometry'; + rsiwpLetWindowManagerDecide = 'Let windowmanager decide'; + rsiwpFixedDefaultGeometry = 'Fixed default geometry'; + rsiwpCustomGeometry = 'Custom geometry'; - rsiwpSplitterFollowWindow = 'Restore with window'; - rsiwpSplitterDefault = 'Default Size'; - rsiwpSplitterRestoreWindowGeometry = 'Restore Size'; - rsiwpSplitterCustomPosition = 'Custom Size'; + 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'; + rsiwpSplitterRestoreWindowGeometry = 'Restore Size'; + rsiwpSplitterDefault = 'Default Size'; + rsiwpSplitterCustomPosition = 'Custom Size'; // Code Explorer lisCodeExplorer = 'Code Explorer';