mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-09 08:19:32 +01:00
IDE: codebrowser: menu item add package to package of unit in src editor
git-svn-id: trunk@21513 -
This commit is contained in:
parent
a9ffff9a88
commit
31ed9af15f
@ -1,7 +1,7 @@
|
|||||||
object CodeBrowserView: TCodeBrowserView
|
object CodeBrowserView: TCodeBrowserView
|
||||||
Left = 315
|
Left = 325
|
||||||
Height = 563
|
Height = 563
|
||||||
Top = 203
|
Top = 251
|
||||||
Width = 623
|
Width = 623
|
||||||
ActiveControl = ScopeComboBox
|
ActiveControl = ScopeComboBox
|
||||||
Caption = 'CodeBrowserView'
|
Caption = 'CodeBrowserView'
|
||||||
@ -394,6 +394,10 @@ object CodeBrowserView: TCodeBrowserView
|
|||||||
Caption = 'AddPkgToProjectMenuItem'
|
Caption = 'AddPkgToProjectMenuItem'
|
||||||
OnClick = AddPkgToProjectMenuItemClick
|
OnClick = AddPkgToProjectMenuItemClick
|
||||||
end
|
end
|
||||||
|
object AddPkgToCurUnitMenuItem: TMenuItem
|
||||||
|
Caption = 'AddPkgToCurUnitMenuItem'
|
||||||
|
OnClick = AddPkgToCurUnitMenuItemClick
|
||||||
|
end
|
||||||
object UseSeparatorMenuItem: TMenuItem
|
object UseSeparatorMenuItem: TMenuItem
|
||||||
Caption = '-'
|
Caption = '-'
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
{ This is an automatically generated lazarus resource file }
|
{ This is an automatically generated lazarus resource file }
|
||||||
|
|
||||||
LazarusResources.Add('TCodeBrowserView','FORMDATA',[
|
LazarusResources.Add('TCodeBrowserView','FORMDATA',[
|
||||||
'TPF0'#16'TCodeBrowserView'#15'CodeBrowserView'#4'Left'#3';'#1#6'Height'#3'3'
|
'TPF0'#16'TCodeBrowserView'#15'CodeBrowserView'#4'Left'#3'E'#1#6'Height'#3'3'
|
||||||
+#2#3'Top'#3#203#0#5'Width'#3'o'#2#13'ActiveControl'#7#13'ScopeComboBox'#7'Ca'
|
+#2#3'Top'#3#251#0#5'Width'#3'o'#2#13'ActiveControl'#7#13'ScopeComboBox'#7'Ca'
|
||||||
+'ption'#6#15'CodeBrowserView'#12'ClientHeight'#3'3'#2#11'ClientWidth'#3'o'#2
|
+'ption'#6#15'CodeBrowserView'#12'ClientHeight'#3'3'#2#11'ClientWidth'#3'o'#2
|
||||||
+#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#10'LCLVersion'#6
|
+#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#10'LCLVersion'#6
|
||||||
+#6'0.9.29'#0#9'TGroupBox'#13'ScopeGroupBox'#4'Left'#2#6#6'Height'#2'<'#3'Top'
|
+#6'0.9.29'#0#9'TGroupBox'#13'ScopeGroupBox'#4'Left'#2#6#6'Height'#2'<'#3'Top'
|
||||||
@ -146,22 +146,24 @@ LazarusResources.Add('TCodeBrowserView','FORMDATA',[
|
|||||||
+'dentifierMenuItem'#7'OnClick'#7#27'CopyIdentifierMenuItemClick'#0#0#9'TMenu'
|
+'dentifierMenuItem'#7'OnClick'#7#27'CopyIdentifierMenuItemClick'#0#0#9'TMenu'
|
||||||
+'Item'#21'CopySeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#23'AddPk'
|
+'Item'#21'CopySeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#23'AddPk'
|
||||||
+'gToProjectMenuItem'#7'Caption'#6#23'AddPkgToProjectMenuItem'#7'OnClick'#7#28
|
+'gToProjectMenuItem'#7'Caption'#6#23'AddPkgToProjectMenuItem'#7'OnClick'#7#28
|
||||||
+'AddPkgToProjectMenuItemClick'#0#0#9'TMenuItem'#20'UseSeparatorMenuItem'#7'C'
|
+'AddPkgToProjectMenuItemClick'#0#0#9'TMenuItem'#23'AddPkgToCurUnitMenuItem'#7
|
||||||
+'aption'#6#1'-'#0#0#9'TMenuItem'#25'ExpandAllPackagesMenuItem'#7'Caption'#6
|
+'Caption'#6#23'AddPkgToCurUnitMenuItem'#7'OnClick'#7#28'AddPkgToCurUnitMenuI'
|
||||||
+#25'ExpandAllPackagesMenuItem'#7'OnClick'#7#30'ExpandAllPackagesMenuItemClic'
|
+'temClick'#0#0#9'TMenuItem'#20'UseSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9
|
||||||
+'k'#0#0#9'TMenuItem'#27'CollapseAllPackagesMenuItem'#7'Caption'#6#27'Collaps'
|
+'TMenuItem'#25'ExpandAllPackagesMenuItem'#7'Caption'#6#25'ExpandAllPackagesM'
|
||||||
+'eAllPackagesMenuItem'#7'OnClick'#7' CollapseAllPackagesMenuItemClick'#0#0#9
|
+'enuItem'#7'OnClick'#7#30'ExpandAllPackagesMenuItemClick'#0#0#9'TMenuItem'#27
|
||||||
+'TMenuItem'#28'AllPackagesSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuIt'
|
+'CollapseAllPackagesMenuItem'#7'Caption'#6#27'CollapseAllPackagesMenuItem'#7
|
||||||
+'em'#22'ExpandAllUnitsMenuItem'#7'Caption'#6#22'ExpandAllUnitsMenuItem'#7'On'
|
+'OnClick'#7' CollapseAllPackagesMenuItemClick'#0#0#9'TMenuItem'#28'AllPackag'
|
||||||
+'Click'#7#27'ExpandAllUnitsMenuItemClick'#0#0#9'TMenuItem'#24'CollapseAllUni'
|
+'esSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#22'ExpandAllUnitsMe'
|
||||||
+'tsMenuItem'#7'Caption'#6#24'CollapseAllUnitsMenuItem'#7'OnClick'#7#29'Colla'
|
+'nuItem'#7'Caption'#6#22'ExpandAllUnitsMenuItem'#7'OnClick'#7#27'ExpandAllUn'
|
||||||
+'pseAllUnitsMenuItemClick'#0#0#9'TMenuItem'#25'AllUnitsSeparatorMenuItem'#7
|
+'itsMenuItemClick'#0#0#9'TMenuItem'#24'CollapseAllUnitsMenuItem'#7'Caption'#6
|
||||||
+'Caption'#6#1'-'#0#0#9'TMenuItem'#24'ExpandAllClassesMenuItem'#7'Caption'#6
|
+#24'CollapseAllUnitsMenuItem'#7'OnClick'#7#29'CollapseAllUnitsMenuItemClick'
|
||||||
+#24'ExpandAllClassesMenuItem'#7'OnClick'#7#29'ExpandAllClassesMenuItemClick'
|
+#0#0#9'TMenuItem'#25'AllUnitsSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMen'
|
||||||
+#0#0#9'TMenuItem'#26'CollapseAllClassesMenuItem'#7'Caption'#6#26'CollapseAll'
|
+'uItem'#24'ExpandAllClassesMenuItem'#7'Caption'#6#24'ExpandAllClassesMenuIte'
|
||||||
+'ClassesMenuItem'#7'OnClick'#7#31'CollapseAllClassesMenuItemClick'#0#0#9'TMe'
|
+'m'#7'OnClick'#7#29'ExpandAllClassesMenuItemClick'#0#0#9'TMenuItem'#26'Colla'
|
||||||
+'nuItem'#27'AllClassesSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'
|
+'pseAllClassesMenuItem'#7'Caption'#6#26'CollapseAllClassesMenuItem'#7'OnClic'
|
||||||
+#14'ExportMenuItem'#7'Caption'#6#14'ExportMenuItem'#7'OnClick'#7#19'ExportMe'
|
+'k'#7#31'CollapseAllClassesMenuItemClick'#0#0#9'TMenuItem'#27'AllClassesSepa'
|
||||||
+'nuItemClick'#0#0#0#10'TIdleTimer'#10'IdleTimer1'#7'OnTimer'#7#15'IdleTimer1'
|
+'ratorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#14'ExportMenuItem'#7'Capt'
|
||||||
+'Timer'#4'left'#3'^'#1#3'top'#3#196#0#0#0#0
|
+'ion'#6#14'ExportMenuItem'#7'OnClick'#7#19'ExportMenuItemClick'#0#0#0#10'TId'
|
||||||
|
+'leTimer'#10'IdleTimer1'#7'OnTimer'#7#15'IdleTimer1Timer'#4'left'#3'^'#1#3't'
|
||||||
|
+'op'#3#196#0#0#0#0
|
||||||
]);
|
]);
|
||||||
|
|||||||
@ -52,8 +52,8 @@ uses
|
|||||||
CodeToolManager, PascalParserTool, LinkScanner, FileProcs, CodeIndex,
|
CodeToolManager, PascalParserTool, LinkScanner, FileProcs, CodeIndex,
|
||||||
StdCodeTools,
|
StdCodeTools,
|
||||||
// IDEIntf
|
// IDEIntf
|
||||||
IDEDialogs, LazConfigStorage, Project, PackageIntf, IDECommands, LazIDEIntf,
|
SrcEditorIntf, IDEDialogs, LazConfigStorage, Project, PackageIntf,
|
||||||
DialogProcs,
|
IDECommands, LazIDEIntf, DialogProcs,
|
||||||
// IDE
|
// IDE
|
||||||
PackageSystem, PackageDefs, LazarusIDEStrConsts, IDEOptionDefs,
|
PackageSystem, PackageDefs, LazarusIDEStrConsts, IDEOptionDefs,
|
||||||
BasePkgManager, AddToProjectDlg, EnvironmentOpts, Menus;
|
BasePkgManager, AddToProjectDlg, EnvironmentOpts, Menus;
|
||||||
@ -172,6 +172,7 @@ type
|
|||||||
BrowseTreeView: TTreeView;
|
BrowseTreeView: TTreeView;
|
||||||
IdleTimer1: TIdleTimer;
|
IdleTimer1: TIdleTimer;
|
||||||
AddPkgToProjectMenuItem: TMenuItem;
|
AddPkgToProjectMenuItem: TMenuItem;
|
||||||
|
AddPkgToCurUnitMenuItem: TMenuItem;
|
||||||
UseSeparatorMenuItem: TMenuItem;
|
UseSeparatorMenuItem: TMenuItem;
|
||||||
ShowEmptyNodesCheckBox: TCheckBox;
|
ShowEmptyNodesCheckBox: TCheckBox;
|
||||||
CollapseAllClassesMenuItem: TMenuItem;
|
CollapseAllClassesMenuItem: TMenuItem;
|
||||||
@ -208,6 +209,7 @@ type
|
|||||||
UnitFilterBeginsSpeedButton: TSpeedButton;
|
UnitFilterBeginsSpeedButton: TSpeedButton;
|
||||||
UnitFilterContainsSpeedButton: TSpeedButton;
|
UnitFilterContainsSpeedButton: TSpeedButton;
|
||||||
UnitFilterEdit: TEdit;
|
UnitFilterEdit: TEdit;
|
||||||
|
procedure AddPkgToCurUnitMenuItemClick(Sender: TObject);
|
||||||
procedure AddPkgToProjectMenuItemClick(Sender: TObject);
|
procedure AddPkgToProjectMenuItemClick(Sender: TObject);
|
||||||
procedure BrowseTreeViewMouseDown(Sender: TOBject; Button: TMouseButton;
|
procedure BrowseTreeViewMouseDown(Sender: TOBject; Button: TMouseButton;
|
||||||
Shift: TShiftState; X, Y: Integer);
|
Shift: TShiftState; X, Y: Integer);
|
||||||
@ -316,6 +318,7 @@ type
|
|||||||
procedure CopyNode(TVNode: TTreeNode; NodeType: TCopyNodeType);
|
procedure CopyNode(TVNode: TTreeNode; NodeType: TCopyNodeType);
|
||||||
procedure InvalidateStage(AStage: TCodeBrowserWorkStage);
|
procedure InvalidateStage(AStage: TCodeBrowserWorkStage);
|
||||||
function GetSelectedPackage: TLazPackage;
|
function GetSelectedPackage: TLazPackage;
|
||||||
|
function GetCurPackageInSrcEditor: TLazPackage;
|
||||||
procedure OpenTVNode(TVNode: TTreeNode);
|
procedure OpenTVNode(TVNode: TTreeNode);
|
||||||
public
|
public
|
||||||
procedure BeginUpdate;
|
procedure BeginUpdate;
|
||||||
@ -409,7 +412,8 @@ begin
|
|||||||
ExportMenuItem.Caption:=lisExport;
|
ExportMenuItem.Caption:=lisExport;
|
||||||
OpenMenuItem.Caption:=lisHintOpen;
|
OpenMenuItem.Caption:=lisHintOpen;
|
||||||
AddPkgToProjectMenuItem.Caption:=lisAddPackageDependencyToProject;
|
AddPkgToProjectMenuItem.Caption:=lisAddPackageDependencyToProject;
|
||||||
|
AddPkgToCurUnitMenuItem.Caption:=lisAddPackageDependencyToActiveUnit;
|
||||||
|
|
||||||
PackageFilterBeginsSpeedButton.Caption:=lisBegins;
|
PackageFilterBeginsSpeedButton.Caption:=lisBegins;
|
||||||
PackageFilterBeginsSpeedButton.Hint:=lisPackageNameBeginsWith;
|
PackageFilterBeginsSpeedButton.Hint:=lisPackageNameBeginsWith;
|
||||||
PackageFilterContainsSpeedButton.Caption:=lisContains;
|
PackageFilterContainsSpeedButton.Caption:=lisContains;
|
||||||
@ -466,6 +470,8 @@ var
|
|||||||
UnitList: TCodeBrowserUnitList;
|
UnitList: TCodeBrowserUnitList;
|
||||||
EnableAddPkgToProject: Boolean;
|
EnableAddPkgToProject: Boolean;
|
||||||
APackage: TLazPackage;
|
APackage: TLazPackage;
|
||||||
|
EnableAddPkgToCurUnit: Boolean;
|
||||||
|
TargetPackage: TLazPackage;
|
||||||
begin
|
begin
|
||||||
ExpandAllPackagesMenuItem.Visible:=Options.HasLevel(cblPackages);
|
ExpandAllPackagesMenuItem.Visible:=Options.HasLevel(cblPackages);
|
||||||
CollapseAllPackagesMenuItem.Visible:=ExpandAllPackagesMenuItem.Visible;
|
CollapseAllPackagesMenuItem.Visible:=ExpandAllPackagesMenuItem.Visible;
|
||||||
@ -482,8 +488,9 @@ begin
|
|||||||
TVNode:=BrowseTreeView.Selected;
|
TVNode:=BrowseTreeView.Selected;
|
||||||
Node:=nil;
|
Node:=nil;
|
||||||
if TVNode<>nil then
|
if TVNode<>nil then
|
||||||
Node:=TOBject(TVNode.Data);
|
Node:=TObject(TVNode.Data);
|
||||||
EnableAddPkgToProject:=false;
|
EnableAddPkgToProject:=false;
|
||||||
|
EnableAddPkgToCurUnit:=false;
|
||||||
if Node<>nil then begin
|
if Node<>nil then begin
|
||||||
if Node is TCodeBrowserNode then
|
if Node is TCodeBrowserNode then
|
||||||
Identifier:=TCodeBrowserNode(Node).Identifier
|
Identifier:=TCodeBrowserNode(Node).Identifier
|
||||||
@ -502,8 +509,22 @@ begin
|
|||||||
// package
|
// package
|
||||||
APackage:=PackageGraph.FindAPackageWithName(UnitList.Owner,nil);
|
APackage:=PackageGraph.FindAPackageWithName(UnitList.Owner,nil);
|
||||||
if APackage<>nil then begin
|
if APackage<>nil then begin
|
||||||
if Project1.FindDependencyByName(APackage.Name)=nil then
|
// check if package can be added to project
|
||||||
|
if Project1.FindDependencyByName(APackage.Name)=nil then begin
|
||||||
EnableAddPkgToProject:=true;
|
EnableAddPkgToProject:=true;
|
||||||
|
AddPkgToProjectMenuItem.Caption:=Format(lisAddPackageToProject, [
|
||||||
|
APackage.Name]);
|
||||||
|
end;
|
||||||
|
// check if package can be added to package of src editor unit
|
||||||
|
TargetPackage:=GetCurPackageInSrcEditor;
|
||||||
|
if (TargetPackage<>nil)
|
||||||
|
and (SysUtils.CompareText(TargetPackage.Name,APackage.Name)<>0)
|
||||||
|
and (TargetPackage.FindDependencyByName(APackage.Name)=nil) then begin
|
||||||
|
EnableAddPkgToCurUnit:=true;
|
||||||
|
AddPkgToCurUnitMenuItem.Caption:=Format(
|
||||||
|
lisAddPackageToPackage, [APackage.Name,
|
||||||
|
TargetPackage.Name]);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -516,12 +537,15 @@ begin
|
|||||||
CopySeparatorMenuItem.Visible:=true;
|
CopySeparatorMenuItem.Visible:=true;
|
||||||
AddPkgToProjectMenuItem.Enabled:=EnableAddPkgToProject;
|
AddPkgToProjectMenuItem.Enabled:=EnableAddPkgToProject;
|
||||||
AddPkgToProjectMenuItem.Visible:=true;
|
AddPkgToProjectMenuItem.Visible:=true;
|
||||||
|
AddPkgToCurUnitMenuItem.Enabled:=EnableAddPkgToCurUnit;
|
||||||
|
AddPkgToCurUnitMenuItem.Visible:=true;
|
||||||
end else begin
|
end else begin
|
||||||
OpenMenuItem.Visible:=false;
|
OpenMenuItem.Visible:=false;
|
||||||
CopyDescriptionMenuItem.Visible:=false;
|
CopyDescriptionMenuItem.Visible:=false;
|
||||||
CopyIdentifierMenuItem.Visible:=false;
|
CopyIdentifierMenuItem.Visible:=false;
|
||||||
CopySeparatorMenuItem.Visible:=false;
|
CopySeparatorMenuItem.Visible:=false;
|
||||||
AddPkgToProjectMenuItem.Visible:=false;
|
AddPkgToProjectMenuItem.Visible:=false;
|
||||||
|
AddPkgToCurUnitMenuItem.Visible:=false;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2214,6 +2238,29 @@ begin
|
|||||||
Result:=PackageGraph.FindAPackageWithName(UnitList.Owner,nil);
|
Result:=PackageGraph.FindAPackageWithName(UnitList.Owner,nil);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCodeBrowserView.GetCurPackageInSrcEditor: TLazPackage;
|
||||||
|
var
|
||||||
|
SrcEdit: TSourceEditorInterface;
|
||||||
|
Owners: TFPList;
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
Result:=nil;
|
||||||
|
SrcEdit:=SourceEditorWindow.ActiveEditor;
|
||||||
|
if SrcEdit=nil then exit;
|
||||||
|
Owners:=PkgBoss.GetOwnersOfUnit(SrcEdit.FileName);
|
||||||
|
try
|
||||||
|
if (Owners=nil) then exit;
|
||||||
|
for i:=0 to Owners.Count-1 do begin
|
||||||
|
if TObject(Owners[i]) is TLazPackage then begin
|
||||||
|
Result:=TLazPackage(Owners[i]);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
Owners.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCodeBrowserView.OpenTVNode(TVNode: TTreeNode);
|
procedure TCodeBrowserView.OpenTVNode(TVNode: TTreeNode);
|
||||||
var
|
var
|
||||||
NodeData: TObject;
|
NodeData: TObject;
|
||||||
@ -2417,6 +2464,27 @@ begin
|
|||||||
PkgBoss.AddProjectDependency(Project1,APackage);
|
PkgBoss.AddProjectDependency(Project1,APackage);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCodeBrowserView.AddPkgToCurUnitMenuItemClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
APackage: TLazPackage;
|
||||||
|
TargetPackage: TLazPackage;
|
||||||
|
List: TFPList;
|
||||||
|
begin
|
||||||
|
APackage:=GetSelectedPackage;
|
||||||
|
if APackage=nil then exit;
|
||||||
|
TargetPackage:=GetCurPackageInSrcEditor;
|
||||||
|
if TargetPackage=nil then exit;
|
||||||
|
List:=TFPList.Create;
|
||||||
|
try
|
||||||
|
List.Add(TargetPackage);
|
||||||
|
if PkgBoss.AddDependencyToOwners(List,APackage)=mrOk then begin
|
||||||
|
PackageEditingInterface.DoOpenPackageWithName(TargetPackage.Name,[],false);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
List.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TCodeBrowserViewOptions }
|
{ TCodeBrowserViewOptions }
|
||||||
|
|
||||||
procedure TCodeBrowserViewOptions.SetModified(const AValue: boolean);
|
procedure TCodeBrowserViewOptions.SetModified(const AValue: boolean);
|
||||||
|
|||||||
@ -4465,6 +4465,9 @@ resourcestring
|
|||||||
lisInsertPrintShortTag = 'Insert PrintShort tag';
|
lisInsertPrintShortTag = 'Insert PrintShort tag';
|
||||||
lisAutomaticallyInvokeAfterPoint = 'Automatically invoke after point';
|
lisAutomaticallyInvokeAfterPoint = 'Automatically invoke after point';
|
||||||
lisShowEmptyUnitsPackages = 'Show empty units/packages';
|
lisShowEmptyUnitsPackages = 'Show empty units/packages';
|
||||||
|
lisAddPackageDependencyToActiveUnit = 'Add package dependency to active unit';
|
||||||
|
lisAddPackageToProject = 'Add package %s to project';
|
||||||
|
lisAddPackageToPackage = 'Add package %s to package %s';
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user