mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-19 16:03:06 +02:00
packagetabs: add "View project source" menu item
git-svn-id: trunk@50733 -
This commit is contained in:
parent
e293f914e1
commit
777d59b1c9
@ -47,11 +47,9 @@ type
|
|||||||
constructor Create(aOwner: TComponent); override;
|
constructor Create(aOwner: TComponent); override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TPackageTabLabel = class(TLabel)
|
TGroupTabLabel = class(TLabel)
|
||||||
private
|
private
|
||||||
FLeftClickPopupBlock: QWord;
|
FLeftClickPopupBlock: QWord;
|
||||||
public
|
|
||||||
Package: TIDEPackage;
|
|
||||||
protected
|
protected
|
||||||
procedure CalculatePreferredSize(var PreferredWidth,
|
procedure CalculatePreferredSize(var PreferredWidth,
|
||||||
PreferredHeight: integer; WithThemeSpace: Boolean); override;
|
PreferredHeight: integer; WithThemeSpace: Boolean); override;
|
||||||
@ -61,6 +59,15 @@ type
|
|||||||
public
|
public
|
||||||
constructor Create(aOwner: TComponent); override;
|
constructor Create(aOwner: TComponent); override;
|
||||||
end;
|
end;
|
||||||
|
TGroupTabLabelClass = class of TGroupTabLabel;
|
||||||
|
|
||||||
|
TPackageTabLabel = class(TGroupTabLabel)
|
||||||
|
public
|
||||||
|
Package: TIDEPackage;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TProjectTabLabel = class(TGroupTabLabel);
|
||||||
|
TOtherTabLabel = class(TGroupTabLabel);
|
||||||
|
|
||||||
TPackageTabScrollBox = class(TScrollBox)
|
TPackageTabScrollBox = class(TScrollBox)
|
||||||
protected
|
protected
|
||||||
@ -78,6 +85,7 @@ type
|
|||||||
TPackageItem = class
|
TPackageItem = class
|
||||||
public
|
public
|
||||||
Package: TIDEPackage;
|
Package: TIDEPackage;
|
||||||
|
GroupTabLabel: TGroupTabLabelClass;
|
||||||
Files: TStringList;
|
Files: TStringList;
|
||||||
|
|
||||||
constructor Create(APackage: TIDEPackage);
|
constructor Create(APackage: TIDEPackage);
|
||||||
@ -126,6 +134,7 @@ type
|
|||||||
FTabLabelMenuCloseAllGroup: TMenuItem;
|
FTabLabelMenuCloseAllGroup: TMenuItem;
|
||||||
FTabLabelMenuPkgSep: TMenuItem;
|
FTabLabelMenuPkgSep: TMenuItem;
|
||||||
FTabLabelMenuOpenPackage: TMenuItem;
|
FTabLabelMenuOpenPackage: TMenuItem;
|
||||||
|
FTabLabelMenuViewProjectSource: TMenuItem;
|
||||||
FTabButtonMenu: TPopupMenu;
|
FTabButtonMenu: TPopupMenu;
|
||||||
FTabButtonMenuClose: TMenuItem;
|
FTabButtonMenuClose: TMenuItem;
|
||||||
FTabButtonMenuLock: TMenuItemCommand;
|
FTabButtonMenuLock: TMenuItemCommand;
|
||||||
@ -160,10 +169,11 @@ type
|
|||||||
procedure TabButtonMenuFindInClick(Sender: TObject);
|
procedure TabButtonMenuFindInClick(Sender: TObject);
|
||||||
procedure TabButtonMenuPopup(Sender: TObject);
|
procedure TabButtonMenuPopup(Sender: TObject);
|
||||||
procedure TabButtonMouseDown(Sender: TObject; Button: TMouseButton;
|
procedure TabButtonMouseDown(Sender: TObject; Button: TMouseButton;
|
||||||
Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
|
{%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
|
||||||
procedure TabLabelCloseAllGroupClick(Sender: TObject);
|
procedure TabLabelCloseAllGroupClick(Sender: TObject);
|
||||||
procedure TabLabelMenuOpenPackageClick(Sender: TObject);
|
procedure TabLabelMenuOpenPackageClick(Sender: TObject);
|
||||||
procedure TabLabelMenuPopup(Sender: TObject);
|
procedure TabLabelMenuPopup(Sender: TObject);
|
||||||
|
procedure TabLabelMenuViewProjectSourceClick(Sender: TObject);
|
||||||
public
|
public
|
||||||
constructor Create(AParentWindow: TSourceEditorWindowInterface); reintroduce;
|
constructor Create(AParentWindow: TSourceEditorWindowInterface); reintroduce;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -423,9 +433,9 @@ begin
|
|||||||
PreferredWidth := PreferredWidth + 6;
|
PreferredWidth := PreferredWidth + 6;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TPackageTabLabel }
|
{ TGroupTabLabel }
|
||||||
|
|
||||||
constructor TPackageTabLabel.Create(aOwner: TComponent);
|
constructor TGroupTabLabel.Create(aOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(aOwner);
|
inherited Create(aOwner);
|
||||||
|
|
||||||
@ -436,7 +446,7 @@ begin
|
|||||||
Cursor := crHandPoint;
|
Cursor := crHandPoint;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPackageTabLabel.CalculatePreferredSize(var PreferredWidth,
|
procedure TGroupTabLabel.CalculatePreferredSize(var PreferredWidth,
|
||||||
PreferredHeight: integer; WithThemeSpace: Boolean);
|
PreferredHeight: integer; WithThemeSpace: Boolean);
|
||||||
begin
|
begin
|
||||||
inherited CalculatePreferredSize(PreferredWidth, PreferredHeight,
|
inherited CalculatePreferredSize(PreferredWidth, PreferredHeight,
|
||||||
@ -446,7 +456,7 @@ begin
|
|||||||
PreferredWidth := PreferredWidth + 8;
|
PreferredWidth := PreferredWidth + 8;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPackageTabLabel.MouseDown(Button: TMouseButton; Shift: TShiftState;
|
procedure TGroupTabLabel.MouseDown(Button: TMouseButton; Shift: TShiftState;
|
||||||
X, Y: Integer);
|
X, Y: Integer);
|
||||||
var
|
var
|
||||||
xPt: Types.TPoint;
|
xPt: Types.TPoint;
|
||||||
@ -462,14 +472,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPackageTabLabel.MouseEnter;
|
procedure TGroupTabLabel.MouseEnter;
|
||||||
begin
|
begin
|
||||||
inherited MouseEnter;
|
inherited MouseEnter;
|
||||||
|
|
||||||
Font.Style := Font.Style + [fsUnderline];
|
Font.Style := Font.Style + [fsUnderline];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPackageTabLabel.MouseLeave;
|
procedure TGroupTabLabel.MouseLeave;
|
||||||
begin
|
begin
|
||||||
inherited MouseLeave;
|
inherited MouseLeave;
|
||||||
|
|
||||||
@ -525,6 +535,11 @@ begin
|
|||||||
FTabLabelMenuOpenPackage.OnClick := @TabLabelMenuOpenPackageClick;
|
FTabLabelMenuOpenPackage.OnClick := @TabLabelMenuOpenPackageClick;
|
||||||
FTabLabelMenuOpenPackage.ImageIndex := IDEImages.LoadImage(16, 'pkg_open');
|
FTabLabelMenuOpenPackage.ImageIndex := IDEImages.LoadImage(16, 'pkg_open');
|
||||||
FTabLabelMenu.Items.Add(FTabLabelMenuOpenPackage);
|
FTabLabelMenu.Items.Add(FTabLabelMenuOpenPackage);
|
||||||
|
FTabLabelMenuViewProjectSource := TMenuItem.Create(Self);
|
||||||
|
FTabLabelMenuViewProjectSource.Caption := 'View project source'; // ToDo: localize
|
||||||
|
FTabLabelMenuViewProjectSource.OnClick := @TabLabelMenuViewProjectSourceClick;
|
||||||
|
FTabLabelMenuViewProjectSource.ImageIndex := IDEImages.LoadImage(16, 'menu_project_viewsource');
|
||||||
|
FTabLabelMenu.Items.Add(FTabLabelMenuViewProjectSource);
|
||||||
|
|
||||||
FTabButtonMenu := TPopupMenu.Create(Self);
|
FTabButtonMenu := TPopupMenu.Create(Self);
|
||||||
FTabButtonMenu.Images := IDEImages.Images_16;
|
FTabButtonMenu.Images := IDEImages.Images_16;
|
||||||
@ -692,7 +707,7 @@ var
|
|||||||
xPackages: TStringList;
|
xPackages: TStringList;
|
||||||
xPackage: TIDEPackage;
|
xPackage: TIDEPackage;
|
||||||
xEditor, xOldActive: TSourceEditorInterface;
|
xEditor, xOldActive: TSourceEditorInterface;
|
||||||
xLbl: TPackageTabLabel;
|
xLbl: TGroupTabLabel;
|
||||||
xPkgItem: TPackageItem;
|
xPkgItem: TPackageItem;
|
||||||
xPackageName: string;
|
xPackageName: string;
|
||||||
begin
|
begin
|
||||||
@ -737,13 +752,24 @@ begin
|
|||||||
xPkgItem := TPackageItem(xPackages.Objects[I]);
|
xPkgItem := TPackageItem(xPackages.Objects[I]);
|
||||||
|
|
||||||
xPackageName := xPackages[I];
|
xPackageName := xPackages[I];
|
||||||
if xPackageName[1] in [Low(Char), High(Char)] then
|
case xPackageName[1] of
|
||||||
|
Low(Char):
|
||||||
|
begin
|
||||||
Delete(xPackageName, 1, 1);
|
Delete(xPackageName, 1, 1);
|
||||||
|
xLbl := TProjectTabLabel.Create(Self);
|
||||||
|
end;
|
||||||
|
High(Char):
|
||||||
|
begin
|
||||||
|
Delete(xPackageName, 1, 1);
|
||||||
|
xLbl := TOtherTabLabel.Create(Self);
|
||||||
|
end;
|
||||||
|
else
|
||||||
xLbl := TPackageTabLabel.Create(Self);
|
xLbl := TPackageTabLabel.Create(Self);
|
||||||
|
TPackageTabLabel(xLbl).Package := xPkgItem.Package;
|
||||||
|
end;
|
||||||
xLbl.Caption := xPackageName;
|
xLbl.Caption := xPackageName;
|
||||||
xLbl.Parent := FPanel;
|
xLbl.Parent := FPanel;
|
||||||
xLbl.PopupMenu := FTabLabelMenu;
|
xLbl.PopupMenu := FTabLabelMenu;
|
||||||
xLbl.Package := xPkgItem.Package;
|
|
||||||
xLbl.Height := TPackageTabButton.GetControlClassDefaultSize.cy;
|
xLbl.Height := TPackageTabButton.GetControlClassDefaultSize.cy;
|
||||||
if FPanel is TPackageTabScrollBox then
|
if FPanel is TPackageTabScrollBox then
|
||||||
begin
|
begin
|
||||||
@ -1021,11 +1047,22 @@ end;
|
|||||||
|
|
||||||
procedure TPackageTabPanel.TabLabelMenuPopup(Sender: TObject);
|
procedure TPackageTabPanel.TabLabelMenuPopup(Sender: TObject);
|
||||||
var
|
var
|
||||||
xLbl: TPackageTabLabel;
|
xLbl: TGroupTabLabel;
|
||||||
begin
|
begin
|
||||||
xLbl := (FTabLabelMenu.PopupComponent as TPackageTabLabel);
|
xLbl := (FTabLabelMenu.PopupComponent as TGroupTabLabel);
|
||||||
FTabLabelMenuPkgSep.Visible := xLbl.Package<>nil;
|
FTabLabelMenuOpenPackage.Visible := (xLbl is TPackageTabLabel);
|
||||||
FTabLabelMenuOpenPackage.Visible := xLbl.Package<>nil;
|
FTabLabelMenuViewProjectSource.Visible := (xLbl is TProjectTabLabel);
|
||||||
|
FTabLabelMenuPkgSep.Visible :=
|
||||||
|
FTabLabelMenuOpenPackage.Visible or FTabLabelMenuViewProjectSource.Visible;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TPackageTabPanel.TabLabelMenuViewProjectSourceClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
xCmd: TIDECommand;
|
||||||
|
begin
|
||||||
|
xCmd := IDECommandList.FindIDECommand(ecViewProjectSource);
|
||||||
|
Assert(xCmd<>nil);
|
||||||
|
xCmd.Execute(Sender);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TPackageTabPanels }
|
{ TPackageTabPanels }
|
||||||
|
Loading…
Reference in New Issue
Block a user