Merged revision(s) 50733 #777d59b1c9, 50754 #5bdc000349, 50762 #780ce482b8, 50781 #a04860897f from trunk:

packagetabs: add "View project source" menu item
........
packagetabs: implement i18n, HU translation. Issue #29173. Patch by Peter Gabor
........
packagetabs: add "Copy File Path To Clipboard" menu command
........
PackageTabs: added Russian translation
........

git-svn-id: branches/fixes_1_6@50782 -
This commit is contained in:
maxim 2015-12-13 22:40:35 +00:00
parent d1751e002f
commit 7cbd1f6050
8 changed files with 282 additions and 33 deletions

4
.gitattributes vendored
View File

@ -3203,9 +3203,13 @@ components/opengl/openglcontext.pas svneol=native#text/plain
components/opengl/openglcontext.res -text components/opengl/openglcontext.res -text
components/opengl/topenglcontrol.xpm svneol=native#text/plain components/opengl/topenglcontrol.xpm svneol=native#text/plain
components/packagetabs/README.txt svneol=native#text/plain components/packagetabs/README.txt svneol=native#text/plain
components/packagetabs/languages/packagetabsstr.hu.po svneol=native#text/plain
components/packagetabs/languages/packagetabsstr.po svneol=native#text/plain
components/packagetabs/languages/packagetabsstr.ru.po svneol=native#text/plain
components/packagetabs/packagetabs.lpk svneol=native#text/plain components/packagetabs/packagetabs.lpk svneol=native#text/plain
components/packagetabs/packagetabs.pas svneol=native#text/pascal components/packagetabs/packagetabs.pas svneol=native#text/pascal
components/packagetabs/packagetabs_impl.pas svneol=native#text/pascal components/packagetabs/packagetabs_impl.pas svneol=native#text/pascal
components/packagetabs/packagetabsstr.pas svneol=native#text/pascal
components/paradox/README.txt svneol=native#text/plain components/paradox/README.txt svneol=native#text/plain
components/paradox/demo/frmmain.lfm svneol=native#text/plain components/paradox/demo/frmmain.lfm svneol=native#text/plain
components/paradox/demo/frmmain.pp svneol=native#text/plain components/paradox/demo/frmmain.pp svneol=native#text/plain

View File

@ -0,0 +1,55 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: Péter Gábor <ptrg@freemail.hu>\n"
"Language-Team: Magyar (Hungarian)\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.4\n"
#: packagetabsstr.saddtoproject
#, fuzzy
#| msgid "Add To Project"
msgid "Add To Project"
msgstr "Hozzáadás a projekthez"
#: packagetabsstr.scloneto
#, fuzzy
#| msgid "Clone To"
msgid "Clone To"
msgstr "Klónozás"
#: packagetabsstr.scopyfilepathtoclipboard
msgid "Copy File Path To Clipboard"
msgstr ""
#: packagetabsstr.sfindinotherwindow
msgid "Find In Other Window"
msgstr "Keresés másik ablakban"
#: packagetabsstr.smoveto
#, fuzzy
#| msgid "Move To"
msgid "Move To"
msgstr "Áthelyezés"
#: packagetabsstr.snewwindow
#, fuzzy
#| msgid "New Window"
msgid "New Window"
msgstr "Új ablak"
#: packagetabsstr.sopenpackage
#, fuzzy
#| msgid "Open package"
msgid "Open package"
msgstr "Csomag megnyitása"
#: packagetabsstr.sother
msgid "Other"
msgstr "Egyéb"

View File

@ -0,0 +1,35 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: packagetabsstr.saddtoproject
msgid "Add To Project"
msgstr ""
#: packagetabsstr.scloneto
msgid "Clone To"
msgstr ""
#: packagetabsstr.scopyfilepathtoclipboard
msgid "Copy File Path To Clipboard"
msgstr ""
#: packagetabsstr.sfindinotherwindow
msgid "Find In Other Window"
msgstr ""
#: packagetabsstr.smoveto
msgid "Move To"
msgstr ""
#: packagetabsstr.snewwindow
msgid "New Window"
msgstr ""
#: packagetabsstr.sopenpackage
msgid "Open package"
msgstr ""
#: packagetabsstr.sother
msgid "Other"
msgstr ""

View File

@ -0,0 +1,45 @@
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: Maxim Ganetsky <maxkill@mail.ru>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru\n"
"X-Generator: Poedit 1.7.7\n"
#: packagetabsstr.saddtoproject
msgid "Add To Project"
msgstr "Добавить к проекту"
#: packagetabsstr.scloneto
msgid "Clone To"
msgstr "Клонировать в"
#: packagetabsstr.scopyfilepathtoclipboard
msgid "Copy File Path To Clipboard"
msgstr "Копировать путь к файлу в буфер обмена"
#: packagetabsstr.sfindinotherwindow
msgid "Find In Other Window"
msgstr "Найти в другом окне"
#: packagetabsstr.smoveto
msgid "Move To"
msgstr "Переместить в"
#: packagetabsstr.snewwindow
msgid "New Window"
msgstr "Новое окно"
#: packagetabsstr.sopenpackage
msgid "Open package"
msgstr "Открыть пакет"
#: packagetabsstr.sother
msgid "Other"
msgstr "Прочие"

View File

@ -30,13 +30,22 @@
<Description Value="Replacement of source editor tabs/pages with buttons sorted by package and name."/> <Description Value="Replacement of source editor tabs/pages with buttons sorted by package and name."/>
<License Value="GPL-2"/> <License Value="GPL-2"/>
<Version Minor="1" Release="1"/> <Version Minor="1" Release="1"/>
<Files Count="1"> <Files Count="2">
<Item1> <Item1>
<Filename Value="packagetabs_impl.pas"/> <Filename Value="packagetabs_impl.pas"/>
<HasRegisterProc Value="True"/> <HasRegisterProc Value="True"/>
<UnitName Value="packagetabs_impl"/> <UnitName Value="packagetabs_impl"/>
</Item1> </Item1>
<Item2>
<Filename Value="packagetabsstr.pas"/>
<UnitName Value="packagetabsstr"/>
</Item2>
</Files> </Files>
<i18n>
<EnableI18N Value="True"/>
<OutDir Value="languages"/>
<EnableI18NForLFM Value="True"/>
</i18n>
<RequiredPkgs Count="2"> <RequiredPkgs Count="2">
<Item1> <Item1>
<PackageName Value="IDEIntf"/> <PackageName Value="IDEIntf"/>

View File

@ -7,7 +7,7 @@ unit packagetabs;
interface interface
uses uses
packagetabs_impl, LazarusPackageIntf; packagetabs_impl, packagetabsstr, LazarusPackageIntf;
implementation implementation

View File

@ -33,7 +33,7 @@ uses
Classes, SysUtils, Types, Contnrs, Controls, SrcEditorIntf, StdCtrls, Buttons, Classes, SysUtils, Types, Contnrs, Controls, SrcEditorIntf, StdCtrls, Buttons,
ComCtrls, Forms, LazFileUtils, PackageIntf, Graphics, Menus, LazIDEIntf, ComCtrls, Forms, LazFileUtils, PackageIntf, Graphics, Menus, LazIDEIntf,
ExtCtrls, IDEImagesIntf, LMessages, Math, Laz2_XMLCfg, IDECommands, LCLIntf, ExtCtrls, IDEImagesIntf, LMessages, Math, Laz2_XMLCfg, IDECommands, LCLIntf,
IDEOptionsIntf; IDEOptionsIntf, packagetabsstr, Clipbrd;
type type
TPackageTabButton = class(TSpeedButton) TPackageTabButton = class(TSpeedButton)
@ -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);
@ -124,11 +132,14 @@ type
FAppIdleLocked: Boolean; FAppIdleLocked: Boolean;
FTabLabelMenu: TPopupMenu; FTabLabelMenu: TPopupMenu;
FTabLabelMenuCloseAllGroup: TMenuItem; FTabLabelMenuCloseAllGroup: TMenuItem;
FTabLabelCopyToClipboard: TMenuItem;
FTabLabelMenuPkgSep: TMenuItem; FTabLabelMenuPkgSep: TMenuItem;
FTabLabelMenuOpenPackage: TMenuItem; FTabLabelMenuOpenPackage: TMenuItem;
FTabLabelMenuViewProjectSource: TMenuItem;
FTabButtonMenu: TPopupMenu; FTabButtonMenu: TPopupMenu;
FTabButtonMenuClose: TMenuItem; FTabButtonMenuClose: TMenuItem;
FTabButtonMenuLock: TMenuItemCommand; FTabButtonMenuLock: TMenuItemCommand;
FTabButtonCopyToClipboard: TMenuItem;
FTabButtonMenuProjSep: TMenuItem; FTabButtonMenuProjSep: TMenuItem;
FTabButtonMenuAddToProject: TMenuItem; FTabButtonMenuAddToProject: TMenuItem;
FTabButtonMenuMoveCloneSep: TMenuItem; FTabButtonMenuMoveCloneSep: TMenuItem;
@ -158,12 +169,15 @@ type
procedure TabButtonMenuCloseClick(Sender: TObject); procedure TabButtonMenuCloseClick(Sender: TObject);
procedure TabButtonMenuMoveToClick(Sender: TObject); procedure TabButtonMenuMoveToClick(Sender: TObject);
procedure TabButtonMenuFindInClick(Sender: TObject); procedure TabButtonMenuFindInClick(Sender: TObject);
procedure TabButtonCopyToClipboardClick(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 TabLabelCopyToClipboardClick(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 +437,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 +450,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 +460,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 +476,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;
@ -513,7 +527,7 @@ begin
FTabLabelMenu.Images := IDEImages.Images_16; FTabLabelMenu.Images := IDEImages.Images_16;
FTabLabelMenu.OnPopup := @TabLabelMenuPopup; FTabLabelMenu.OnPopup := @TabLabelMenuPopup;
FTabLabelMenuCloseAllGroup := TMenuItem.Create(Self); FTabLabelMenuCloseAllGroup := TMenuItem.Create(Self);
FTabLabelMenuCloseAllGroup.Caption := 'Close all'; // ToDo: localize FTabLabelMenuCloseAllGroup.Caption := IDECommandList.FindIDECommand(ecCloseAll).LocalizedName;
FTabLabelMenuCloseAllGroup.OnClick := @TabLabelCloseAllGroupClick; FTabLabelMenuCloseAllGroup.OnClick := @TabLabelCloseAllGroupClick;
FTabLabelMenuCloseAllGroup.ImageIndex := IDEImages.LoadImage(16, 'menu_close_all'); FTabLabelMenuCloseAllGroup.ImageIndex := IDEImages.LoadImage(16, 'menu_close_all');
FTabLabelMenu.Items.Add(FTabLabelMenuCloseAllGroup); FTabLabelMenu.Items.Add(FTabLabelMenuCloseAllGroup);
@ -521,30 +535,43 @@ begin
FTabLabelMenuPkgSep.Caption := '-'; FTabLabelMenuPkgSep.Caption := '-';
FTabLabelMenu.Items.Add(FTabLabelMenuPkgSep); FTabLabelMenu.Items.Add(FTabLabelMenuPkgSep);
FTabLabelMenuOpenPackage := TMenuItem.Create(Self); FTabLabelMenuOpenPackage := TMenuItem.Create(Self);
FTabLabelMenuOpenPackage.Caption := 'Open package'; // ToDo: localize FTabLabelMenuOpenPackage.Caption := sOpenPackage;
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 := IDECommandList.FindIDECommand(ecViewProjectSource).LocalizedName;
FTabLabelMenuViewProjectSource.OnClick := @TabLabelMenuViewProjectSourceClick;
FTabLabelMenuViewProjectSource.ImageIndex := IDEImages.LoadImage(16, 'menu_project_viewsource');
FTabLabelMenu.Items.Add(FTabLabelMenuViewProjectSource);
FTabLabelCopyToClipboard := TMenuItem.Create(Self);
FTabLabelCopyToClipboard.Caption := sCopyFilePathToClipboard;
FTabLabelCopyToClipboard.OnClick := @TabLabelCopyToClipboardClick;
FTabLabelMenu.Items.Add(FTabLabelCopyToClipboard);
FTabButtonMenu := TPopupMenu.Create(Self); FTabButtonMenu := TPopupMenu.Create(Self);
FTabButtonMenu.Images := IDEImages.Images_16; FTabButtonMenu.Images := IDEImages.Images_16;
FTabButtonMenu.OnPopup := @TabButtonMenuPopup; FTabButtonMenu.OnPopup := @TabButtonMenuPopup;
FTabButtonMenuClose := TMenuItem.Create(Self); FTabButtonMenuClose := TMenuItem.Create(Self);
FTabButtonMenuClose.Caption := 'Close'; // ToDo: localize FTabButtonMenuClose.Caption := IDECommandList.FindIDECommand(ecClose).LocalizedName;
FTabButtonMenuClose.OnClick := @TabButtonMenuCloseClick; FTabButtonMenuClose.OnClick := @TabButtonMenuCloseClick;
FTabButtonMenuClose.ImageIndex := IDEImages.LoadImage(16, 'menu_close'); FTabButtonMenuClose.ImageIndex := IDEImages.LoadImage(16, 'menu_close');
FTabButtonMenu.Items.Add(FTabButtonMenuClose); FTabButtonMenu.Items.Add(FTabButtonMenuClose);
FTabButtonMenuLock := TMenuItemCommand.Create(Self); FTabButtonMenuLock := TMenuItemCommand.Create(Self);
FTabButtonMenuLock.Caption := 'Lock Editor'; // ToDo: localize FTabButtonMenuLock.Caption := IDECommandList.FindIDECommand(ecLockEditor).LocalizedName;
FTabButtonMenuLock.IDECommand := ecLockEditor; FTabButtonMenuLock.IDECommand := ecLockEditor;
FTabButtonMenuLock.OnClick := @MenuItemCommandClick; FTabButtonMenuLock.OnClick := @MenuItemCommandClick;
FTabButtonMenu.Items.Add(FTabButtonMenuLock); FTabButtonMenu.Items.Add(FTabButtonMenuLock);
FTabButtonCopyToClipboard := TMenuItem.Create(Self);
FTabButtonCopyToClipboard.Caption := sCopyFilePathToClipboard;
FTabButtonCopyToClipboard.OnClick := @TabButtonCopyToClipboardClick;
FTabButtonMenu.Items.Add(FTabButtonCopyToClipboard);
FTabButtonMenuProjSep := TMenuItem.Create(Self); FTabButtonMenuProjSep := TMenuItem.Create(Self);
FTabButtonMenuProjSep.Caption := '-'; FTabButtonMenuProjSep.Caption := '-';
FTabButtonMenu.Items.Add(FTabButtonMenuProjSep); FTabButtonMenu.Items.Add(FTabButtonMenuProjSep);
FTabButtonMenuAddToProject := TMenuItem.Create(Self); FTabButtonMenuAddToProject := TMenuItem.Create(Self);
FTabButtonMenuAddToProject.Caption := 'Add to project'; // ToDo: localize FTabButtonMenuAddToProject.Caption := sAddToProject;
FTabButtonMenuAddToProject.OnClick := @TabButtonMenuAddToProjectClick; FTabButtonMenuAddToProject.OnClick := @TabButtonMenuAddToProjectClick;
FTabButtonMenuAddToProject.ImageIndex := IDEImages.LoadImage(16, 'menu_project_add'); FTabButtonMenuAddToProject.ImageIndex := IDEImages.LoadImage(16, 'menu_project_add');
FTabButtonMenu.Items.Add(FTabButtonMenuAddToProject); FTabButtonMenu.Items.Add(FTabButtonMenuAddToProject);
@ -553,25 +580,25 @@ begin
FTabButtonMenuMoveCloneSep.Caption := '-'; FTabButtonMenuMoveCloneSep.Caption := '-';
FTabButtonMenu.Items.Add(FTabButtonMenuMoveCloneSep); FTabButtonMenu.Items.Add(FTabButtonMenuMoveCloneSep);
FTabButtonMenuMoveTo := TMenuItem.Create(Self); FTabButtonMenuMoveTo := TMenuItem.Create(Self);
FTabButtonMenuMoveTo.Caption := 'Move To'; // ToDo: localize FTabButtonMenuMoveTo.Caption := sMoveTo;
FTabButtonMenu.Items.Add(FTabButtonMenuMoveTo); FTabButtonMenu.Items.Add(FTabButtonMenuMoveTo);
FTabButtonMenuMoveToNew := TMenuItemCommand.Create(Self); FTabButtonMenuMoveToNew := TMenuItemCommand.Create(Self);
FTabButtonMenuMoveToNew.Caption := 'New Window'; // ToDo: localize FTabButtonMenuMoveToNew.Caption := sNewWindow;
FTabButtonMenuMoveToNew.IDECommand := ecMoveEditorNewWindow; FTabButtonMenuMoveToNew.IDECommand := ecMoveEditorNewWindow;
FTabButtonMenuMoveToNew.NeedsActiveEditor := True; FTabButtonMenuMoveToNew.NeedsActiveEditor := True;
FTabButtonMenuMoveToNew.OnClick := @MenuItemCommandClick; FTabButtonMenuMoveToNew.OnClick := @MenuItemCommandClick;
FTabButtonMenuMoveTo.Add(FTabButtonMenuMoveToNew); FTabButtonMenuMoveTo.Add(FTabButtonMenuMoveToNew);
FTabButtonMenuCloneTo := TMenuItem.Create(Self); FTabButtonMenuCloneTo := TMenuItem.Create(Self);
FTabButtonMenuCloneTo.Caption := 'Clone To'; // ToDo: localize FTabButtonMenuCloneTo.Caption := sCloneTo;
FTabButtonMenu.Items.Add(FTabButtonMenuCloneTo); FTabButtonMenu.Items.Add(FTabButtonMenuCloneTo);
FTabButtonMenuCloneToNew := TMenuItemCommand.Create(Self); FTabButtonMenuCloneToNew := TMenuItemCommand.Create(Self);
FTabButtonMenuCloneToNew.Caption := 'New Window'; // ToDo: localize FTabButtonMenuCloneToNew.Caption := sNewWindow;
FTabButtonMenuCloneToNew.IDECommand := ecCopyEditorNewWindow; FTabButtonMenuCloneToNew.IDECommand := ecCopyEditorNewWindow;
FTabButtonMenuCloneToNew.NeedsActiveEditor := True; FTabButtonMenuCloneToNew.NeedsActiveEditor := True;
FTabButtonMenuCloneToNew.OnClick := @MenuItemCommandClick; FTabButtonMenuCloneToNew.OnClick := @MenuItemCommandClick;
FTabButtonMenuCloneTo.Add(FTabButtonMenuCloneToNew); FTabButtonMenuCloneTo.Add(FTabButtonMenuCloneToNew);
FTabButtonMenuFindIn := TMenuItem.Create(Self); FTabButtonMenuFindIn := TMenuItem.Create(Self);
FTabButtonMenuFindIn.Caption := 'Find In Other Window'; // ToDo: localize FTabButtonMenuFindIn.Caption := sFindInOtherWindow;
FTabButtonMenu.Items.Add(FTabButtonMenuFindIn); FTabButtonMenu.Items.Add(FTabButtonMenuFindIn);
Application.AddOnIdleHandler(@AppOnIdle, False); Application.AddOnIdleHandler(@AppOnIdle, False);
@ -692,7 +719,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
@ -723,7 +750,7 @@ begin
if (xPackage<>nil) and (xPackage.Name<>'') then if (xPackage<>nil) and (xPackage.Name<>'') then
xPackageName := xPackage.Name xPackageName := xPackage.Name
else else
xPackageName := High(Char)+'Other'; // ToDo: localize, better sorting... xPackageName := High(Char) + sOther; // ToDo: better sorting...
end; end;
xPkgIndex := xPackages.IndexOf(xPackageName); xPkgIndex := xPackages.IndexOf(xPackageName);
if xPkgIndex < 0 then if xPkgIndex < 0 then
@ -737,13 +764,31 @@ 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
Delete(xPackageName, 1, 1); Low(Char):
xLbl := TPackageTabLabel.Create(Self); begin
Delete(xPackageName, 1, 1);
xLbl := TProjectTabLabel.Create(Self);
if LazarusIDE.ActiveProject <> nil then
begin
xLbl.Hint := LazarusIDE.ActiveProject.MainFile.Filename;
xLbl.ShowHint := True;
end;
end;
High(Char):
begin
Delete(xPackageName, 1, 1);
xLbl := TOtherTabLabel.Create(Self);
end;
else
xLbl := TPackageTabLabel.Create(Self);
TPackageTabLabel(xLbl).Package := xPkgItem.Package;
xLbl.Hint := xPkgItem.Package.Filename;
xLbl.ShowHint := True;
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
@ -841,6 +886,14 @@ begin
FSetActiveEditor := False; FSetActiveEditor := False;
end; end;
procedure TPackageTabPanel.TabButtonCopyToClipboardClick(Sender: TObject);
var
xBtn: TPackageTabButton;
begin
xBtn := (FTabButtonMenu.PopupComponent as TPackageTabButton);
Clipboard.AsText := xBtn.Editor.FileName;
end;
procedure TPackageTabPanel.TabButtonMenuAddToProjectClick(Sender: TObject); procedure TPackageTabPanel.TabButtonMenuAddToProjectClick(Sender: TObject);
var var
xBtn: TPackageTabButton; xBtn: TPackageTabButton;
@ -1011,6 +1064,22 @@ begin
end; end;
end; end;
procedure TPackageTabPanel.TabLabelCopyToClipboardClick(Sender: TObject);
var
xFileName: string;
begin
if (FTabLabelMenu.PopupComponent is TPackageTabLabel) then
xFileName := (FTabLabelMenu.PopupComponent as TPackageTabLabel).Package.Filename
else
if (FTabLabelMenu.PopupComponent is TProjectTabLabel) then
xFileName := LazarusIDE.ActiveProject.MainFile.Filename
else
xFileName := '';
if xFileName<>'' then
Clipboard.AsText := xFileName;
end;
procedure TPackageTabPanel.TabLabelMenuOpenPackageClick(Sender: TObject); procedure TPackageTabPanel.TabLabelMenuOpenPackageClick(Sender: TObject);
var var
xLbl: TPackageTabLabel; xLbl: TPackageTabLabel;
@ -1021,11 +1090,23 @@ 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;
FTabLabelCopyToClipboard.Visible := not(xLbl is TOtherTabLabel);
end;
procedure TPackageTabPanel.TabLabelMenuViewProjectSourceClick(Sender: TObject);
var
xCmd: TIDECommand;
begin
xCmd := IDECommandList.FindIDECommand(ecViewProjectSource);
Assert(xCmd<>nil);
xCmd.Execute(Sender);
end; end;
{ TPackageTabPanels } { TPackageTabPanels }

View File

@ -0,0 +1,20 @@
unit packagetabsstr;
{$mode objfpc}{$H+}
interface
resourcestring
sOpenPackage = 'Open package';
sMoveTo = 'Move To';
sNewWindow = 'New Window';
sCloneTo = 'Clone To';
sFindInOtherWindow = 'Find In Other Window';
sOther = 'Other';
sAddToProject = 'Add To Project';
sCopyFilePathToClipboard = 'Copy File Path To Clipboard';
implementation
end.