packagetabs: add "View project source" menu item

git-svn-id: trunk@50733 -
This commit is contained in:
ondrej 2015-12-10 13:44:07 +00:00
parent e293f914e1
commit 777d59b1c9

View File

@ -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 }