Hi:
2007/10/3, Víctor R. Ruiz <[EMAIL PROTECTED]>:
> I'm still working on the whole IDE docking. The lastest code I have
> is cleaner than the one I previously sent.
Here is the patch.
Greetings,
--
Víctor R. Ruiz <[EMAIL PROTECTED]> | - Todos estos momentos se perderán
http://rvr.blogalia.com/ | como lágrimas en la lluvia
Index: ide/main.pp
===================================================================
--- ide/main.pp (revisión: 12034)
+++ ide/main.pp (copia de trabajo)
@@ -535,6 +535,8 @@
procedure SetupHelpMenu; override;
procedure LoadMenuShortCuts; override;
procedure ConnectMainBarEvents;
+ procedure SetupPanels;
+ procedure SetupDockedIDE;
procedure SetupSpeedButtons;
procedure SetupDialogs;
procedure SetupComponentNoteBook;
@@ -894,6 +896,7 @@
SkipAutoLoadingLastProject: boolean = false;
StartedByStartLazarus: boolean = false;
EnableRemoteControl: boolean = false;
+ DockedIDE: boolean = true;
//==============================================================================
@@ -1088,13 +1091,14 @@
Application.CreateForm(TMainIDEBar,MainIDEBar);
MainIDEBar.OnDestroy:[EMAIL PROTECTED];
{$IFNDEF IDEDocking}
- MainIDEBar.Constraints.MaxHeight:=110;
+ // MainIDEBar.Constraints.MaxHeight:=110;
{$ENDIF}
MainIDEBar.Name := NonModalIDEWindowNames[nmiwMainIDEName];
EnvironmentOptions.IDEWindowLayoutList.Apply(MainIDEBar,MainIDEBar.Name);
HiddenWindowsOnRun:=TList.Create;
// menu
+ SetupPanels;
SetupStandardIDEMenuItems;
SetupMainMenu;
SetupSpeedButtons;
@@ -1119,6 +1123,10 @@
SetupObjectInspector;
SetupFormEditor;
SetupSourceNotebook;
+ if (DockedIDE) then begin
+ CreateOftenUsedForms;
+ SetupDockedIDE;
+ end;
SetupControlSelection;
SetupTextConverters;
@@ -1143,7 +1151,7 @@
Application.AddOnKeyDownHandler(@OnApplicationKeyDown);
Screen.AddHandlerRemoveForm(@OnScreenRemoveForm);
SetupHints;
-
+
// Now load a project
SetupStartProject;
@@ -1222,8 +1230,8 @@
procedure TMainIDE.CreateOftenUsedForms;
begin
- MessagesView:=TMessagesView.Create(nil);
- LazFindReplaceDialog:=TLazFindReplaceDialog.Create(nil);
+ if (MessagesView = nil) then MessagesView:=TMessagesView.Create(nil);
+ if (LazFindReplaceDialog = nil) then LazFindReplaceDialog:=TLazFindReplaceDialog.Create(nil);
end;
procedure TMainIDE.CreateSearchResultWindow;
@@ -1423,7 +1431,7 @@
MainIDEBar.pnlSpeedButtons := TPanel.Create(OwningComponent);
with MainIDEBar.pnlSpeedButtons do begin
Name := 'pnlSpeedButtons';
- Parent:= MainIDEBar;
+ Parent:= MainIDEBar.pnlMenu;
Align := alLeft;
Top := 0;
Left:= 0;
@@ -1481,12 +1489,93 @@
IDEQuestionDialog:[EMAIL PROTECTED];
end;
+procedure TMainIDE.SetupPanels;
+begin
+ MainIDEBar.pnlMenu := TPanel.Create(OwningComponent);
+ with MainIDEBar.pnlMenu do begin
+ Name := 'pnlMenu';
+ Parent := MainIDEBar;
+ Align := alTop;
+ Height := 60;
+ Caption := '';
+ BevelInner := bvNone;
+ BevelOuter := bvNone;
+ end;
+ MainIDEBar.pnlSpace := TPanel.Create(OwningComponent);
+ with MainIDEBar.pnlSpace do begin
+ Name := 'pnlSpace';
+ Parent := MainIDEBar;
+ Align := alClient;
+ Caption := '';
+ Visible := DockedIDE;
+ BevelInner := bvNone;
+ BevelOuter := bvNone;
+ end;
+end;
+
+procedure TMainIDE.SetupDockedIDE;
+var
+ pnlTop: TPanel;
+ pnlMessagesView, pnlObjectInspector, pnlSourceNotebook: TGroupBox;
+ SplitterHorizontal, SplitterVertical: TSplitter;
+
+begin
+ pnlTop := TPanel.Create(OwningComponent); // Top
+ pnlMessagesView := TGroupBox.Create(OwningComponent); // Bottom
+ pnlObjectInspector := TGroupBox.Create(OwningComponent); // Top Left
+ pnlSourceNotebook := TGroupBox.Create(OwningComponent); // Top Right
+ SplitterHorizontal := TSplitter.Create(OwningComponent); // Top - Bottom
+ SplitterVertical := TSplitter.Create(OwningComponent); // Left - Right
+
+ pnlMessagesView.Height := 150;
+ pnlObjectInspector.Width := 250;
+
+ pnlTop.Parent := MainIDEBar.pnlSpace;
+ pnlTop.Align := alClient;
+ pnlTop.BevelInner := bvNone;
+ pnlTop.BevelOuter := bvNone;
+
+ SplitterHorizontal.Parent := MainIDEBar.pnlSpace;
+ SplitterHorizontal.Align := alBottom;
+
+ pnlMessagesView.Parent := MainIDEBar.pnlSpace;
+ pnlMessagesView.Align := alBottom;
+ pnlMessagesView.Caption := 'Messages';
+
+ pnlObjectInspector.Parent := pnlTop;
+ pnlObjectInspector.Align := alLeft;
+ pnlObjectInspector.Caption := 'Object Inspector';
+
+ SplitterVertical.Parent := pnlTop;
+ SplitterVertical.Align := alLeft;
+
+ pnlSourceNotebook.Parent := pnlTop;
+ pnlSourceNotebook.Align := alClient;
+ pnlSourceNotebook.Caption := 'Editor';
+
+ if (ObjectInspector1<>nil) then begin
+ ObjectInspector1.Parent := pnlObjectInspector;
+ ObjectInspector1.Align := alClient;
+ ObjectInspector1.Show;
+ end;
+ if (SourceNotebook<>nil) then begin
+ SourceNotebook.Parent := pnlSourceNotebook;
+ SourceNotebook.Align := alClient;
+ SourceNotebook.Show;
+ end;
+ if (MessagesView<>nil) then begin
+ MessagesView.Parent := pnlMessagesView;
+ MessagesView.Align := alClient;
+ MessagesView.Show;
+ end;
+end;
+
procedure TMainIDE.SetupComponentNoteBook;
begin
// Component Notebook
MainIDEBar.ComponentNotebook := TNotebook.Create(OwningComponent);
with MainIDEBar.ComponentNotebook do begin
- Parent := MainIDEBar;
+ Parent := MainIDEBar.pnlMenu;
Name := 'ComponentNotebook';
Align := alClient;
Left := MainIDEBar.pnlSpeedButtons.Left + MainIDEBar.pnlSpeedButtons.Width;
@@ -9583,7 +9672,7 @@
procedure ShowInspector;
begin
if ObjectInspector1=nil then exit;
- ObjectInspector1.ShowOnTop;
+ if (DockedIDE=false) then ObjectInspector1.ShowOnTop;
FDisplayState:= Succ(FDisplayState);
end;
@@ -9903,6 +9992,7 @@
WasVisible: boolean;
ALayout: TIDEWindowLayout;
begin
+ if (DockedIDE) then exit;
//debugln('TMainIDE.DoShowMessagesView');
WasVisible:=MessagesView.Visible;
MessagesView.Visible:=true;
Index: ide/mainbar.pas
===================================================================
--- ide/mainbar.pas (revisión: 12034)
+++ ide/mainbar.pas (copia de trabajo)
@@ -48,6 +48,8 @@
TMainIDEBar = class(TForm)
// the speedbuttons panel for frequently used IDE functions
+ pnlMenu : TPanel;
+ pnlSpace : TPanel;
pnlSpeedButtons : TPanel;
ViewUnitsSpeedBtn : TSpeedButton;
ViewFormsSpeedBtn : TSpeedButton;
Index: lcl/include/customform.inc
===================================================================
--- lcl/include/customform.inc (revisión: 12034)
+++ lcl/include/customform.inc (copia de trabajo)
@@ -1221,7 +1221,7 @@
{$IFDEF VerboseFocus}
RaiseGDBException(SCannotFocus);
{$ELSE}
- raise EInvalidOperation.Create(SCannotFocus);
+ // raise EInvalidOperation.Create(SCannotFocus);
{$ENDIF}
end;
end;