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/topenglcontrol.xpm 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.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/demo/frmmain.lfm 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."/>
<License Value="GPL-2"/>
<Version Minor="1" Release="1"/>
<Files Count="1">
<Files Count="2">
<Item1>
<Filename Value="packagetabs_impl.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="packagetabs_impl"/>
</Item1>
<Item2>
<Filename Value="packagetabsstr.pas"/>
<UnitName Value="packagetabsstr"/>
</Item2>
</Files>
<i18n>
<EnableI18N Value="True"/>
<OutDir Value="languages"/>
<EnableI18NForLFM Value="True"/>
</i18n>
<RequiredPkgs Count="2">
<Item1>
<PackageName Value="IDEIntf"/>

View File

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

View File

@ -33,7 +33,7 @@ uses
Classes, SysUtils, Types, Contnrs, Controls, SrcEditorIntf, StdCtrls, Buttons,
ComCtrls, Forms, LazFileUtils, PackageIntf, Graphics, Menus, LazIDEIntf,
ExtCtrls, IDEImagesIntf, LMessages, Math, Laz2_XMLCfg, IDECommands, LCLIntf,
IDEOptionsIntf;
IDEOptionsIntf, packagetabsstr, Clipbrd;
type
TPackageTabButton = class(TSpeedButton)
@ -47,11 +47,9 @@ type
constructor Create(aOwner: TComponent); override;
end;
TPackageTabLabel = class(TLabel)
TGroupTabLabel = class(TLabel)
private
FLeftClickPopupBlock: QWord;
public
Package: TIDEPackage;
protected
procedure CalculatePreferredSize(var PreferredWidth,
PreferredHeight: integer; WithThemeSpace: Boolean); override;
@ -61,6 +59,15 @@ type
public
constructor Create(aOwner: TComponent); override;
end;
TGroupTabLabelClass = class of TGroupTabLabel;
TPackageTabLabel = class(TGroupTabLabel)
public
Package: TIDEPackage;
end;
TProjectTabLabel = class(TGroupTabLabel);
TOtherTabLabel = class(TGroupTabLabel);
TPackageTabScrollBox = class(TScrollBox)
protected
@ -78,6 +85,7 @@ type
TPackageItem = class
public
Package: TIDEPackage;
GroupTabLabel: TGroupTabLabelClass;
Files: TStringList;
constructor Create(APackage: TIDEPackage);
@ -124,11 +132,14 @@ type
FAppIdleLocked: Boolean;
FTabLabelMenu: TPopupMenu;
FTabLabelMenuCloseAllGroup: TMenuItem;
FTabLabelCopyToClipboard: TMenuItem;
FTabLabelMenuPkgSep: TMenuItem;
FTabLabelMenuOpenPackage: TMenuItem;
FTabLabelMenuViewProjectSource: TMenuItem;
FTabButtonMenu: TPopupMenu;
FTabButtonMenuClose: TMenuItem;
FTabButtonMenuLock: TMenuItemCommand;
FTabButtonCopyToClipboard: TMenuItem;
FTabButtonMenuProjSep: TMenuItem;
FTabButtonMenuAddToProject: TMenuItem;
FTabButtonMenuMoveCloneSep: TMenuItem;
@ -158,12 +169,15 @@ type
procedure TabButtonMenuCloseClick(Sender: TObject);
procedure TabButtonMenuMoveToClick(Sender: TObject);
procedure TabButtonMenuFindInClick(Sender: TObject);
procedure TabButtonCopyToClipboardClick(Sender: TObject);
procedure TabButtonMenuPopup(Sender: TObject);
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 TabLabelCopyToClipboardClick(Sender: TObject);
procedure TabLabelMenuOpenPackageClick(Sender: TObject);
procedure TabLabelMenuPopup(Sender: TObject);
procedure TabLabelMenuViewProjectSourceClick(Sender: TObject);
public
constructor Create(AParentWindow: TSourceEditorWindowInterface); reintroduce;
destructor Destroy; override;
@ -423,9 +437,9 @@ begin
PreferredWidth := PreferredWidth + 6;
end;
{ TPackageTabLabel }
{ TGroupTabLabel }
constructor TPackageTabLabel.Create(aOwner: TComponent);
constructor TGroupTabLabel.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
@ -436,7 +450,7 @@ begin
Cursor := crHandPoint;
end;
procedure TPackageTabLabel.CalculatePreferredSize(var PreferredWidth,
procedure TGroupTabLabel.CalculatePreferredSize(var PreferredWidth,
PreferredHeight: integer; WithThemeSpace: Boolean);
begin
inherited CalculatePreferredSize(PreferredWidth, PreferredHeight,
@ -446,7 +460,7 @@ begin
PreferredWidth := PreferredWidth + 8;
end;
procedure TPackageTabLabel.MouseDown(Button: TMouseButton; Shift: TShiftState;
procedure TGroupTabLabel.MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
var
xPt: Types.TPoint;
@ -462,14 +476,14 @@ begin
end;
end;
procedure TPackageTabLabel.MouseEnter;
procedure TGroupTabLabel.MouseEnter;
begin
inherited MouseEnter;
Font.Style := Font.Style + [fsUnderline];
end;
procedure TPackageTabLabel.MouseLeave;
procedure TGroupTabLabel.MouseLeave;
begin
inherited MouseLeave;
@ -513,7 +527,7 @@ begin
FTabLabelMenu.Images := IDEImages.Images_16;
FTabLabelMenu.OnPopup := @TabLabelMenuPopup;
FTabLabelMenuCloseAllGroup := TMenuItem.Create(Self);
FTabLabelMenuCloseAllGroup.Caption := 'Close all'; // ToDo: localize
FTabLabelMenuCloseAllGroup.Caption := IDECommandList.FindIDECommand(ecCloseAll).LocalizedName;
FTabLabelMenuCloseAllGroup.OnClick := @TabLabelCloseAllGroupClick;
FTabLabelMenuCloseAllGroup.ImageIndex := IDEImages.LoadImage(16, 'menu_close_all');
FTabLabelMenu.Items.Add(FTabLabelMenuCloseAllGroup);
@ -521,30 +535,43 @@ begin
FTabLabelMenuPkgSep.Caption := '-';
FTabLabelMenu.Items.Add(FTabLabelMenuPkgSep);
FTabLabelMenuOpenPackage := TMenuItem.Create(Self);
FTabLabelMenuOpenPackage.Caption := 'Open package'; // ToDo: localize
FTabLabelMenuOpenPackage.Caption := sOpenPackage;
FTabLabelMenuOpenPackage.OnClick := @TabLabelMenuOpenPackageClick;
FTabLabelMenuOpenPackage.ImageIndex := IDEImages.LoadImage(16, 'pkg_open');
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.Images := IDEImages.Images_16;
FTabButtonMenu.OnPopup := @TabButtonMenuPopup;
FTabButtonMenuClose := TMenuItem.Create(Self);
FTabButtonMenuClose.Caption := 'Close'; // ToDo: localize
FTabButtonMenuClose.Caption := IDECommandList.FindIDECommand(ecClose).LocalizedName;
FTabButtonMenuClose.OnClick := @TabButtonMenuCloseClick;
FTabButtonMenuClose.ImageIndex := IDEImages.LoadImage(16, 'menu_close');
FTabButtonMenu.Items.Add(FTabButtonMenuClose);
FTabButtonMenuLock := TMenuItemCommand.Create(Self);
FTabButtonMenuLock.Caption := 'Lock Editor'; // ToDo: localize
FTabButtonMenuLock.Caption := IDECommandList.FindIDECommand(ecLockEditor).LocalizedName;
FTabButtonMenuLock.IDECommand := ecLockEditor;
FTabButtonMenuLock.OnClick := @MenuItemCommandClick;
FTabButtonMenu.Items.Add(FTabButtonMenuLock);
FTabButtonCopyToClipboard := TMenuItem.Create(Self);
FTabButtonCopyToClipboard.Caption := sCopyFilePathToClipboard;
FTabButtonCopyToClipboard.OnClick := @TabButtonCopyToClipboardClick;
FTabButtonMenu.Items.Add(FTabButtonCopyToClipboard);
FTabButtonMenuProjSep := TMenuItem.Create(Self);
FTabButtonMenuProjSep.Caption := '-';
FTabButtonMenu.Items.Add(FTabButtonMenuProjSep);
FTabButtonMenuAddToProject := TMenuItem.Create(Self);
FTabButtonMenuAddToProject.Caption := 'Add to project'; // ToDo: localize
FTabButtonMenuAddToProject.Caption := sAddToProject;
FTabButtonMenuAddToProject.OnClick := @TabButtonMenuAddToProjectClick;
FTabButtonMenuAddToProject.ImageIndex := IDEImages.LoadImage(16, 'menu_project_add');
FTabButtonMenu.Items.Add(FTabButtonMenuAddToProject);
@ -553,25 +580,25 @@ begin
FTabButtonMenuMoveCloneSep.Caption := '-';
FTabButtonMenu.Items.Add(FTabButtonMenuMoveCloneSep);
FTabButtonMenuMoveTo := TMenuItem.Create(Self);
FTabButtonMenuMoveTo.Caption := 'Move To'; // ToDo: localize
FTabButtonMenuMoveTo.Caption := sMoveTo;
FTabButtonMenu.Items.Add(FTabButtonMenuMoveTo);
FTabButtonMenuMoveToNew := TMenuItemCommand.Create(Self);
FTabButtonMenuMoveToNew.Caption := 'New Window'; // ToDo: localize
FTabButtonMenuMoveToNew.Caption := sNewWindow;
FTabButtonMenuMoveToNew.IDECommand := ecMoveEditorNewWindow;
FTabButtonMenuMoveToNew.NeedsActiveEditor := True;
FTabButtonMenuMoveToNew.OnClick := @MenuItemCommandClick;
FTabButtonMenuMoveTo.Add(FTabButtonMenuMoveToNew);
FTabButtonMenuCloneTo := TMenuItem.Create(Self);
FTabButtonMenuCloneTo.Caption := 'Clone To'; // ToDo: localize
FTabButtonMenuCloneTo.Caption := sCloneTo;
FTabButtonMenu.Items.Add(FTabButtonMenuCloneTo);
FTabButtonMenuCloneToNew := TMenuItemCommand.Create(Self);
FTabButtonMenuCloneToNew.Caption := 'New Window'; // ToDo: localize
FTabButtonMenuCloneToNew.Caption := sNewWindow;
FTabButtonMenuCloneToNew.IDECommand := ecCopyEditorNewWindow;
FTabButtonMenuCloneToNew.NeedsActiveEditor := True;
FTabButtonMenuCloneToNew.OnClick := @MenuItemCommandClick;
FTabButtonMenuCloneTo.Add(FTabButtonMenuCloneToNew);
FTabButtonMenuFindIn := TMenuItem.Create(Self);
FTabButtonMenuFindIn.Caption := 'Find In Other Window'; // ToDo: localize
FTabButtonMenuFindIn.Caption := sFindInOtherWindow;
FTabButtonMenu.Items.Add(FTabButtonMenuFindIn);
Application.AddOnIdleHandler(@AppOnIdle, False);
@ -692,7 +719,7 @@ var
xPackages: TStringList;
xPackage: TIDEPackage;
xEditor, xOldActive: TSourceEditorInterface;
xLbl: TPackageTabLabel;
xLbl: TGroupTabLabel;
xPkgItem: TPackageItem;
xPackageName: string;
begin
@ -723,7 +750,7 @@ begin
if (xPackage<>nil) and (xPackage.Name<>'') then
xPackageName := xPackage.Name
else
xPackageName := High(Char)+'Other'; // ToDo: localize, better sorting...
xPackageName := High(Char) + sOther; // ToDo: better sorting...
end;
xPkgIndex := xPackages.IndexOf(xPackageName);
if xPkgIndex < 0 then
@ -737,13 +764,31 @@ begin
xPkgItem := TPackageItem(xPackages.Objects[I]);
xPackageName := xPackages[I];
if xPackageName[1] in [Low(Char), High(Char)] then
Delete(xPackageName, 1, 1);
xLbl := TPackageTabLabel.Create(Self);
case xPackageName[1] of
Low(Char):
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.Parent := FPanel;
xLbl.PopupMenu := FTabLabelMenu;
xLbl.Package := xPkgItem.Package;
xLbl.Height := TPackageTabButton.GetControlClassDefaultSize.cy;
if FPanel is TPackageTabScrollBox then
begin
@ -841,6 +886,14 @@ begin
FSetActiveEditor := False;
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);
var
xBtn: TPackageTabButton;
@ -1011,6 +1064,22 @@ begin
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);
var
xLbl: TPackageTabLabel;
@ -1021,11 +1090,23 @@ end;
procedure TPackageTabPanel.TabLabelMenuPopup(Sender: TObject);
var
xLbl: TPackageTabLabel;
xLbl: TGroupTabLabel;
begin
xLbl := (FTabLabelMenu.PopupComponent as TPackageTabLabel);
FTabLabelMenuPkgSep.Visible := xLbl.Package<>nil;
FTabLabelMenuOpenPackage.Visible := xLbl.Package<>nil;
xLbl := (FTabLabelMenu.PopupComponent as TGroupTabLabel);
FTabLabelMenuOpenPackage.Visible := (xLbl is TPackageTabLabel);
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;
{ 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.