cody: find overloads: filter for ancestor

git-svn-id: trunk@50001 -
This commit is contained in:
mattias 2015-10-08 16:54:06 +00:00
parent df3a859c32
commit 72ea4f33b2
13 changed files with 345 additions and 23 deletions

View File

@ -68,6 +68,7 @@ object CodyFindOverloadsWindow: TCodyFindOverloadsWindow
Top = 0 Top = 0
Width = 181 Width = 181
Caption = 'CompatibleParamsCheckBox' Caption = 'CompatibleParamsCheckBox'
OnChange = CompatibleParamsCheckBoxChange
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabOrder = 0 TabOrder = 0
@ -98,6 +99,7 @@ object CodyFindOverloadsWindow: TCodyFindOverloadsWindow
BorderSpacing.Left = 6 BorderSpacing.Left = 6
BorderSpacing.Right = 6 BorderSpacing.Right = 6
ItemHeight = 0 ItemHeight = 0
OnChange = RelationComboBoxChange
Style = csDropDownList Style = csDropDownList
TabOrder = 1 TabOrder = 1
end end
@ -110,6 +112,7 @@ object CodyFindOverloadsWindow: TCodyFindOverloadsWindow
Top = 53 Top = 53
Width = 152 Width = 152
Caption = 'HideAbstractCheckBox' Caption = 'HideAbstractCheckBox'
OnChange = HideAbstractCheckBoxChange
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabOrder = 2 TabOrder = 2

View File

@ -69,12 +69,14 @@ type
Compatibility: TTypeCompatibility; Compatibility: TTypeCompatibility;
Distance: integer; Distance: integer;
ShortestPathNode: TCFONode; ShortestPathNode: TCFONode;
// for ctnClass
TheClassName: string;
end; end;
TCFOEdgeType = ( TCFOEdgeType = (
cfoetReachable, // FromNode (proc) is reachable by ToNode(program) cfoetReachable, // FromNode (proc) is reachable by ToNode(program)
cfoetMethodOf, // FromNode (proc) is method of ToNode (class) cfoetMethodOf, // FromNode (proc) is method of ToNode (class)
cfoetDescendantOf // FromNode (class) is descendant of ToNode (class) cfoetDescendantOf // FromNode (descendant class) is descendant of ToNode (ancestor class)
); );
TCFOEdge = class(TCodeGraphEdge) TCFOEdge = class(TCodeGraphEdge)
@ -94,6 +96,13 @@ type
Compatibility: TTypeCompatibility; Compatibility: TTypeCompatibility;
end; end;
TCFOFilterRelation = (
cfofrAny, // no filtering
cfofrOnlyNonMethods,
cfofrOnlyMethods,
cfofrOnlyDescendantsOf
);
type type
TCFOFlag = ( TCFOFlag = (
cfofParsing, cfofParsing,
@ -116,12 +125,15 @@ type
ResultsGroupBox: TGroupBox; ResultsGroupBox: TGroupBox;
ResultsStringGrid: TStringGrid; ResultsStringGrid: TStringGrid;
Timer1: TTimer; Timer1: TTimer;
procedure CompatibleParamsCheckBoxChange(Sender: TObject);
procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject); procedure FormDestroy(Sender: TObject);
procedure HideAbstractCheckBoxChange(Sender: TObject);
procedure JumpToButtonClick(Sender: TObject); procedure JumpToButtonClick(Sender: TObject);
procedure OnIdle(Sender: TObject; var Done: Boolean); procedure OnIdle(Sender: TObject; var Done: Boolean);
procedure RefreshButtonClick(Sender: TObject); procedure RefreshButtonClick(Sender: TObject);
procedure RelationComboBoxChange(Sender: TObject);
procedure ResultsStringGridColRowExchanged(Sender: TObject; procedure ResultsStringGridColRowExchanged(Sender: TObject;
IsColumn: Boolean; sIndex, tIndex: Integer); IsColumn: Boolean; sIndex, tIndex: Integer);
procedure ResultsStringGridCompareCells(Sender: TObject; ACol, ARow, BCol, procedure ResultsStringGridCompareCells(Sender: TObject; ACol, ARow, BCol,
@ -129,6 +141,9 @@ type
procedure ResultsStringGridDblClick(Sender: TObject); procedure ResultsStringGridDblClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject); procedure Timer1Timer(Sender: TObject);
private private
FFilterAncestor: string;
FFilterRelation: TCFOFilterRelation;
FHideAbstractMethods: Boolean;
FIdleConnected: boolean; FIdleConnected: boolean;
FFlags: TCFOFlags; FFlags: TCFOFlags;
FProcList: TObjectList; FProcList: TObjectList;
@ -138,6 +153,7 @@ type
FUsesGraph: TUsesGraph; FUsesGraph: TUsesGraph;
function GetProcCount: integer; function GetProcCount: integer;
function GetProcs(Index: integer): TCFOProc; function GetProcs(Index: integer): TCFOProc;
procedure ReadRelationComboBox;
procedure SetIdleConnected(AValue: boolean); procedure SetIdleConnected(AValue: boolean);
procedure CreateUsesGraph(out TheUsesGraph: TUsesGraph); procedure CreateUsesGraph(out TheUsesGraph: TUsesGraph);
procedure StartParsing; procedure StartParsing;
@ -145,8 +161,9 @@ type
procedure AddStartAndTargetUnits; procedure AddStartAndTargetUnits;
procedure GatherProcsOfAllUnits; procedure GatherProcsOfAllUnits;
procedure GatherProcsOfUnit(NodeGraph: TCodeGraph; ProgNode: TCodeTreeNode; procedure GatherProcsOfUnit(NodeGraph: TCodeGraph; ProgNode: TCodeTreeNode;
CurUnit: TCFOUnit; ExcludeAbstractProcs: boolean; CurUnit: TCFOUnit; var TargetGraphNode: TCFONode);
var TargetGraphNode: TCFONode); function IsClassNodeDescendantOf(NodeGraph: TCodeGraph;
GraphClassNode: TCFONode; Ancestor: string): boolean;
procedure CalcDistances(NodeGraph: TCodeGraph; TargetGraphNode: TCFONode); procedure CalcDistances(NodeGraph: TCodeGraph; TargetGraphNode: TCFONode);
procedure CreateProcList(NodeGraph: TCodeGraph; TargetGraphNode: TCFONode); procedure CreateProcList(NodeGraph: TCodeGraph; TargetGraphNode: TCFONode);
procedure FillGrid; procedure FillGrid;
@ -154,6 +171,7 @@ type
function GetDefaultCaption: string; function GetDefaultCaption: string;
procedure FillFilterControls(ProcTool: TFindDeclarationTool; procedure FillFilterControls(ProcTool: TFindDeclarationTool;
ProcNode: TCodeTreeNode); ProcNode: TCodeTreeNode);
procedure FilterChanged;
protected protected
procedure UpdateShowing; override; procedure UpdateShowing; override;
public public
@ -166,6 +184,9 @@ type
property TargetName: string read FTargetName; property TargetName: string read FTargetName;
property TargetPath: string read FTargetPath; property TargetPath: string read FTargetPath;
property UsesGraph: TUsesGraph read FUsesGraph; property UsesGraph: TUsesGraph read FUsesGraph;
property FilterRelation: TCFOFilterRelation read FFilterRelation;
property FilterAncestor: string read FFilterAncestor;
property HideAbstractMethods: Boolean read FHideAbstractMethods;
end; end;
var var
@ -213,6 +234,7 @@ end;
procedure TCodyFindOverloadsWindow.FormCreate(Sender: TObject); procedure TCodyFindOverloadsWindow.FormCreate(Sender: TObject);
begin begin
AbortParsing;
FProcList:=TObjectList.Create(true); FProcList:=TObjectList.Create(true);
Caption:=GetDefaultCaption; Caption:=GetDefaultCaption;
@ -232,6 +254,12 @@ begin
FreeAndNil(FProcList); FreeAndNil(FProcList);
end; end;
procedure TCodyFindOverloadsWindow.HideAbstractCheckBoxChange(Sender: TObject);
begin
fHideAbstractMethods:=HideAbstractCheckBox.Checked;
FilterChanged;
end;
procedure TCodyFindOverloadsWindow.FormClose(Sender: TObject; procedure TCodyFindOverloadsWindow.FormClose(Sender: TObject;
var CloseAction: TCloseAction); var CloseAction: TCloseAction);
begin begin
@ -239,6 +267,12 @@ begin
FreeUsesGraph; FreeUsesGraph;
end; end;
procedure TCodyFindOverloadsWindow.CompatibleParamsCheckBoxChange(
Sender: TObject);
begin
FilterChanged;
end;
procedure TCodyFindOverloadsWindow.JumpToButtonClick(Sender: TObject); procedure TCodyFindOverloadsWindow.JumpToButtonClick(Sender: TObject);
begin begin
JumpToIdentifier; JumpToIdentifier;
@ -266,6 +300,12 @@ begin
Init; Init;
end; end;
procedure TCodyFindOverloadsWindow.RelationComboBoxChange(Sender: TObject);
begin
ReadRelationComboBox;
FilterChanged;
end;
procedure TCodyFindOverloadsWindow.ResultsStringGridColRowExchanged( procedure TCodyFindOverloadsWindow.ResultsStringGridColRowExchanged(
Sender: TObject; IsColumn: Boolean; sIndex, tIndex: Integer); Sender: TObject; IsColumn: Boolean; sIndex, tIndex: Integer);
begin begin
@ -332,6 +372,23 @@ begin
Result:=TCFOProc(FProcList[Index]); Result:=TCFOProc(FProcList[Index]);
end; end;
procedure TCodyFindOverloadsWindow.ReadRelationComboBox;
var
RelationText: TCaption;
begin
RelationText:=RelationComboBox.Text;
if RelationText=crsOnlyMethods then
FFilterRelation:=cfofrOnlyMethods
else if RelationText=crsOnlyNonMethods then
FFilterRelation:=cfofrOnlyNonMethods
else if GetPatternValue1(crsOnlyDescendantsOf, '%s', RelationText,
FFilterAncestor)
then begin
FFilterRelation:=cfofrOnlyDescendantsOf;
end else
FFilterRelation:=cfofrAny;
end;
procedure TCodyFindOverloadsWindow.CreateUsesGraph(out TheUsesGraph: TUsesGraph procedure TCodyFindOverloadsWindow.CreateUsesGraph(out TheUsesGraph: TUsesGraph
); );
begin begin
@ -366,7 +423,9 @@ begin
FFlags:=[]; FFlags:=[];
IdleConnected:=false; IdleConnected:=false;
ProgressBar1.Visible:=false; ProgressBar1.Visible:=false;
if not (csDestroying in ComponentState) then
RefreshButton.Enabled:=true; RefreshButton.Enabled:=true;
FreeUsesGraph;
end; end;
procedure TCodyFindOverloadsWindow.AddStartAndTargetUnits; procedure TCodyFindOverloadsWindow.AddStartAndTargetUnits;
@ -386,7 +445,6 @@ var
CurUnit: TCFOUnit; CurUnit: TCFOUnit;
NodeGraph: TCodeGraph; NodeGraph: TCodeGraph;
ProgNode: TCodeTreeNode; ProgNode: TCodeTreeNode;
ExcludeAbstractProcs: Boolean;
TargetGraphNode: TCFONode; TargetGraphNode: TCFONode;
begin begin
Exclude(FFlags,cfofGatherProcs); Exclude(FFlags,cfofGatherProcs);
@ -400,7 +458,10 @@ begin
exit; exit;
debugln(['TCodyFindOverloadsWindow.GatherProcsOfAllUnits START']); debugln(['TCodyFindOverloadsWindow.GatherProcsOfAllUnits START']);
ExcludeAbstractProcs:=HideAbstractCheckBox.Checked; // get filter
FHideAbstractMethods:=HideAbstractCheckBox.Checked;
ReadRelationComboBox;
ProgNode:=TCodeTreeNode.Create; ProgNode:=TCodeTreeNode.Create;
NodeGraph:=TCodeGraph.Create(TCFONode,TCFOEdge); NodeGraph:=TCodeGraph.Create(TCFONode,TCFOEdge);
try try
@ -410,8 +471,7 @@ begin
FileNode:=FUsesGraph.FilesTree.FindLowest; FileNode:=FUsesGraph.FilesTree.FindLowest;
while FileNode<>nil do begin while FileNode<>nil do begin
CurUnit:=TCFOUnit(FileNode.Data); CurUnit:=TCFOUnit(FileNode.Data);
GatherProcsOfUnit(NodeGraph,ProgNode,CurUnit,ExcludeAbstractProcs, GatherProcsOfUnit(NodeGraph,ProgNode,CurUnit,TargetGraphNode);
TargetGraphNode);
FileNode:=FUsesGraph.FilesTree.FindSuccessor(FileNode); FileNode:=FUsesGraph.FilesTree.FindSuccessor(FileNode);
end; end;
@ -431,8 +491,7 @@ begin
end; end;
procedure TCodyFindOverloadsWindow.GatherProcsOfUnit(NodeGraph: TCodeGraph; procedure TCodyFindOverloadsWindow.GatherProcsOfUnit(NodeGraph: TCodeGraph;
ProgNode: TCodeTreeNode; CurUnit: TCFOUnit; ExcludeAbstractProcs: boolean; ProgNode: TCodeTreeNode; CurUnit: TCFOUnit; var TargetGraphNode: TCFONode);
var TargetGraphNode: TCFONode);
procedure AddAncestors(Tool: TFindDeclarationTool; ClassNode: TCodeTreeNode); forward; procedure AddAncestors(Tool: TFindDeclarationTool; ClassNode: TCodeTreeNode); forward;
@ -447,6 +506,7 @@ procedure TCodyFindOverloadsWindow.GatherProcsOfUnit(NodeGraph: TCodeGraph;
//debugln(['AddClassNode ',Tool.ExtractClassName(ClassNode,false)]); //debugln(['AddClassNode ',Tool.ExtractClassName(ClassNode,false)]);
Result:=TCFONode(NodeGraph.AddGraphNode(ClassNode)); Result:=TCFONode(NodeGraph.AddGraphNode(ClassNode));
Result.Tool:=Tool; Result.Tool:=Tool;
Result.TheClassName:=Tool.ExtractClassName(ClassNode,false);
// create edge "reachable", so that all nodes are reachable // create edge "reachable", so that all nodes are reachable
Edge:=TCFOEdge(NodeGraph.AddEdge(ClassNode,ProgNode)); Edge:=TCFOEdge(NodeGraph.AddEdge(ClassNode,ProgNode));
Edge.Typ:=cfoetReachable; Edge.Typ:=cfoetReachable;
@ -485,7 +545,7 @@ procedure TCodyFindOverloadsWindow.GatherProcsOfUnit(NodeGraph: TCodeGraph;
TargetCleanPos: integer); TargetCleanPos: integer);
var var
CurProcName: String; CurProcName: String;
GraphProcNode: TCFONode; GraphProcNode, GraphClassNode: TCFONode;
ClassNode: TCodeTreeNode; ClassNode: TCodeTreeNode;
Edge: TCFOEdge; Edge: TCFOEdge;
Compatibility: TTypeCompatibility; Compatibility: TTypeCompatibility;
@ -504,10 +564,17 @@ procedure TCodyFindOverloadsWindow.GatherProcsOfUnit(NodeGraph: TCodeGraph;
ClassNode:=ClassNode.Parent; ClassNode:=ClassNode.Parent;
end; end;
if ClassNode<>nil then begin if ClassNode<>nil then begin
if ExcludeAbstractProcs then begin // a method
if HideAbstractMethods then begin
if ClassNode.Desc in AllClassInterfaces then exit; if ClassNode.Desc in AllClassInterfaces then exit;
if Tool.ProcNodeHasSpecifier(ProcNode,psABSTRACT) then exit; if Tool.ProcNodeHasSpecifier(ProcNode,psABSTRACT) then exit;
end; end;
if FilterRelation=cfofrOnlyNonMethods then
exit;
end else begin
// a non method
if FilterRelation in [cfofrOnlyMethods,cfofrOnlyDescendantsOf] then
exit;
end; end;
Compatibility:=tcExact; Compatibility:=tcExact;
@ -532,7 +599,13 @@ procedure TCodyFindOverloadsWindow.GatherProcsOfUnit(NodeGraph: TCodeGraph;
// add edges // add edges
if ClassNode<>nil then begin if ClassNode<>nil then begin
// create nodes for class and ancestors // create nodes for class and ancestors
AddClassNode(Tool,ClassNode); GraphClassNode:=AddClassNode(Tool,ClassNode);
if (FilterRelation=cfofrOnlyDescendantsOf)
and (not IsClassNodeDescendantOf(NodeGraph,GraphClassNode,FilterAncestor)) then begin
NodeGraph.DeleteGraphNode(ProcNode);
exit;
end;
// create edge "is method of" // create edge "is method of"
Edge:=TCFOEdge(NodeGraph.AddEdge(ProcNode,ClassNode)); Edge:=TCFOEdge(NodeGraph.AddEdge(ProcNode,ClassNode));
Edge.Typ:=cfoetMethodOf; Edge.Typ:=cfoetMethodOf;
@ -566,6 +639,26 @@ begin
end; end;
end; end;
function TCodyFindOverloadsWindow.IsClassNodeDescendantOf(
NodeGraph: TCodeGraph; GraphClassNode: TCFONode; Ancestor: string): boolean;
var
AVLNode: TAVLTreeNode;
Edge: TCFOEdge;
begin
if CompareText(Ancestor,GraphClassNode.TheClassName)=0 then exit(true);
if GraphClassNode.OutTree=nil then exit(false);
AVLNode:=GraphClassNode.OutTree.FindLowest;
while AVLNode<>nil do begin
Edge:=TCFOEdge(AVLNode.Data);
if Edge.Typ=cfoetDescendantOf then begin
if IsClassNodeDescendantOf(NodeGraph,TCFONode(Edge.ToNode),Ancestor) then
exit(true);
end;
AVLNode:=GraphClassNode.OutTree.FindSuccessor(AVLNode);
end;
Result:=false;
end;
procedure TCodyFindOverloadsWindow.CalcDistances(NodeGraph: TCodeGraph; procedure TCodyFindOverloadsWindow.CalcDistances(NodeGraph: TCodeGraph;
TargetGraphNode: TCFONode); TargetGraphNode: TCFONode);
var var
@ -615,7 +708,7 @@ var
AVLNode: TAVLTreeNode; AVLNode: TAVLTreeNode;
GraphNode: TCFONode; GraphNode: TCFONode;
begin begin
debugln(['TCodyFindOverloadsWindow.CalcDistances ']); //debugln(['TCodyFindOverloadsWindow.CalcDistances ']);
Unvisited:=TAVLTree.Create(@CompareCFONodeByDistance); Unvisited:=TAVLTree.Create(@CompareCFONodeByDistance);
try try
@ -733,7 +826,7 @@ end;
function TCodyFindOverloadsWindow.GetDefaultCaption: string; function TCodyFindOverloadsWindow.GetDefaultCaption: string;
begin begin
Result:='Cody - Find Overloads'; Result:=crsCodyFindOverloads;
end; end;
procedure TCodyFindOverloadsWindow.FillFilterControls( procedure TCodyFindOverloadsWindow.FillFilterControls(
@ -762,28 +855,37 @@ begin
if ListOfPFindContext<>nil then begin if ListOfPFindContext<>nil then begin
for i:=0 to ListOfPFindContext.Count-1 do begin for i:=0 to ListOfPFindContext.Count-1 do begin
aContext:=PFindContext(ListOfPFindContext[i]); aContext:=PFindContext(ListOfPFindContext[i]);
sl.Add('Only descendants of '+aContext^.Tool.ExtractClassName(aContext^.Node,false)); sl.Add(Format(crsOnlyDescendantsOf, [aContext^.Tool.ExtractClassName
(aContext^.Node, false)]));
end; end;
end else begin end else begin
sl.Add('Only descendants of '+ProcTool.ExtractClassName(ClassNode,false)); sl.Add(Format(crsOnlyDescendantsOf, [ProcTool.ExtractClassName(
ClassNode, false)]));
end; end;
finally finally
FreeListOfPFindContext(ListOfPFindContext); FreeListOfPFindContext(ListOfPFindContext);
end; end;
sl.Add('Only methods'); sl.Add(crsOnlyMethods);
end else begin end else begin
// procedure, non method // procedure, non method
sl.Add('Only non methods'); sl.Add(crsOnlyNonMethods);
end; end;
sl.Add('Any'); sl.Add(crsAny);
RelationComboBox.Items:=sl; RelationComboBox.Items:=sl;
if sl.IndexOf(RelationComboBox.Text)<0 then if sl.IndexOf(RelationComboBox.Text)<0 then
RelationComboBox.Text:='Any'; RelationComboBox.Text:=crsAny;
finally finally
sl.Free; sl.Free;
end; end;
end; end;
procedure TCodyFindOverloadsWindow.FilterChanged;
begin
if csDestroying in ComponentState then exit;
AbortParsing;
StartParsing;
end;
procedure TCodyFindOverloadsWindow.UpdateShowing; procedure TCodyFindOverloadsWindow.UpdateShowing;
begin begin
inherited UpdateShowing; inherited UpdateShowing;
@ -871,9 +973,10 @@ var
TargetTool: TFindDeclarationTool; TargetTool: TFindDeclarationTool;
begin begin
Result:=false; Result:=false;
Caption:=GetDefaultCaption;
AbortParsing; AbortParsing;
if csDestroying in ComponentState then exit;
Caption:=GetDefaultCaption;
ResultsStringGrid.Visible:=false; ResultsStringGrid.Visible:=false;
JumpToButton.Enabled:=false; JumpToButton.Enabled:=false;
FTargetName:=''; FTargetName:='';

View File

@ -266,6 +266,11 @@ resourcestring
crsExactly = 'exactly'; crsExactly = 'exactly';
crsCompatible = 'compatible'; crsCompatible = 'compatible';
crsIncompatible = 'incompatible'; crsIncompatible = 'incompatible';
crsCodyFindOverloads = 'Cody - Find Overloads';
crsOnlyMethods = 'Only methods';
crsOnlyDescendantsOf = 'Only descendants of %s';
crsOnlyNonMethods = 'Only non methods';
crsAny = 'Any';
crsFilter2 = 'Filter'; crsFilter2 = 'Filter';
crsJumpTo2 = 'Jump to'; crsJumpTo2 = 'Jump to';

View File

@ -120,6 +120,8 @@ function ParseUnit(out Tool: TCodeTool; out CleanPos: integer;
TilCursor: boolean = false): TCUParseError; TilCursor: boolean = false): TCUParseError;
procedure OpenCodyHelp(Path: string); procedure OpenCodyHelp(Path: string);
function GetPatternValue1(const Pattern, PlaceHolder, Src: string; out Value1: string): boolean;
implementation implementation
procedure ExplodeAWithBlockCmd(Sender: TObject); procedure ExplodeAWithBlockCmd(Sender: TObject);
@ -384,6 +386,35 @@ begin
OpenURL(BasePath+Path); OpenURL(BasePath+Path);
end; end;
function GetPatternValue1(const Pattern, PlaceHolder, Src: string; out
Value1: string): boolean;
{ Pattern: 'Descendant of %1'
PlaceHolder: '%1'
Src: 'Descendant of TWinControl'
Value1: 'TWinControl'
}
var
PatLen, SrcLen, PHLen, l: Integer;
p: SizeInt;
begin
Value1:='';
Result:=false;
PatLen:=length(Pattern);
PHLen:=length(PlaceHolder);
SrcLen:=length(Src);
if SrcLen<PatLen-PHLen then exit;
p:=Pos(PlaceHolder,Pattern);
if p<1 then exit;
// check start pattern
if (p>1) and (not CompareMem(Pointer(Src),Pointer(Pattern),p-1)) then exit;
// check end pattern
l:=PatLen-p-PHLen;
if (l>0)
and (not CompareMem(Pointer(Src)+SrcLen-l,Pointer(Pattern)+p+PHLen,l)) then exit;
Value1:=copy(Src,p,SrcLen-PatLen+PHLen);
Result:=true;
end;
{ TCodyClipboardSrcData } { TCodyClipboardSrcData }
procedure TCodyClipboardSrcData.SetSourcePos(const SrcPos: TCodeXYPosition); procedure TCodyClipboardSrcData.SetSourcePos(const SrcPos: TCodeXYPosition);

View File

@ -43,6 +43,10 @@ msgstr "Bereits definiert bei %s"
msgid "... and %s more identifiers" msgid "... and %s more identifiers"
msgstr "... und %s weitere Bezeichner" msgstr "... und %s weitere Bezeichner"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp
msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut."
msgstr "" msgstr ""
@ -175,6 +179,10 @@ msgstr ""
msgid "Code Node Information" msgid "Code Node Information"
msgstr "" msgstr ""
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary #: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary" msgid "Identifier Dictionary"
msgstr "Bezeichnerwörterbuch" msgstr "Bezeichnerwörterbuch"
@ -494,6 +502,18 @@ msgstr "Keine Unit ausgewählt"
msgid "On clipboard" msgid "On clipboard"
msgstr "" msgstr ""
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions #: codystrconsts.crsoptions
msgid "Options" msgid "Options"
msgstr "Einstellungen" msgstr "Einstellungen"

View File

@ -44,6 +44,10 @@ msgstr "Déjà défini à %s"
msgid "... and %s more identifiers" msgid "... and %s more identifiers"
msgstr "... et %s identificateurs" msgstr "... et %s identificateurs"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp
msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut."
msgstr "Une fenêtre pour l'EDI Lazarus. Elle peut être amarrée comme l'explorateur de code ou l'éditeur \"FPDoc\". Elle crée aussi un élément dans le menu \"Voir\" et un raccourci." msgstr "Une fenêtre pour l'EDI Lazarus. Elle peut être amarrée comme l'explorateur de code ou l'éditeur \"FPDoc\". Elle crée aussi un élément dans le menu \"Voir\" et un raccourci."
@ -176,6 +180,10 @@ msgstr "Buffers de code"
msgid "Code Node Information" msgid "Code Node Information"
msgstr "Information de nœud de code" msgstr "Information de nœud de code"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary #: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary" msgid "Identifier Dictionary"
msgstr "Dictionnaire des identificateurs" msgstr "Dictionnaire des identificateurs"
@ -495,6 +503,18 @@ msgstr "Aucune unité sélectionnée"
msgid "On clipboard" msgid "On clipboard"
msgstr "Dans le presse-papier" msgstr "Dans le presse-papier"
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions #: codystrconsts.crsoptions
msgid "Options" msgid "Options"
msgstr "Options" msgstr "Options"

View File

@ -44,6 +44,10 @@ msgstr "Már definiálva van itt: %s"
msgid "... and %s more identifiers" msgid "... and %s more identifiers"
msgstr "... és további %s azonosító" msgstr "... és további %s azonosító"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp
msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut."
msgstr "Egy ablak a Lazarus IDE számára. Dokkolható mint a Kódböngésző vagy az FPDoc Szerkesztő. Létrehoz egy menüelemet a Nézet menüben és egy gyorsbillentyűt is." msgstr "Egy ablak a Lazarus IDE számára. Dokkolható mint a Kódböngésző vagy az FPDoc Szerkesztő. Létrehoz egy menüelemet a Nézet menüben és egy gyorsbillentyűt is."
@ -176,6 +180,10 @@ msgstr "Kódpufferek"
msgid "Code Node Information" msgid "Code Node Information"
msgstr "Kód-csomópont információ" msgstr "Kód-csomópont információ"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary #: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary" msgid "Identifier Dictionary"
msgstr "Azonosítók szótára" msgstr "Azonosítók szótára"
@ -495,6 +503,18 @@ msgstr "Nincs unit kiválasztva"
msgid "On clipboard" msgid "On clipboard"
msgstr "A vágólapon" msgstr "A vágólapon"
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions #: codystrconsts.crsoptions
msgid "Options" msgid "Options"
msgstr "Beállítások" msgstr "Beállítások"

View File

@ -45,6 +45,10 @@ msgstr "Già definito in %s"
msgid "... and %s more identifiers" msgid "... and %s more identifiers"
msgstr "... e altri %s identificatori" msgstr "... e altri %s identificatori"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp
msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut."
msgstr "Una finestra per l' IDE di Lazarus. Può essere \"docked\"come il Code Explorer o l'editor di FPDoc. Crea anche una voce nel menu \"Visualizza\" e una scorciatoia da tastiera." msgstr "Una finestra per l' IDE di Lazarus. Può essere \"docked\"come il Code Explorer o l'editor di FPDoc. Crea anche una voce nel menu \"Visualizza\" e una scorciatoia da tastiera."
@ -177,6 +181,10 @@ msgstr "CodeBuffers"
msgid "Code Node Information" msgid "Code Node Information"
msgstr "Informazioni sul nodo di codice" msgstr "Informazioni sul nodo di codice"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary #: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary" msgid "Identifier Dictionary"
msgstr "Dizionario Identificatori" msgstr "Dizionario Identificatori"
@ -496,6 +504,18 @@ msgstr "Nessuna unit selezionata"
msgid "On clipboard" msgid "On clipboard"
msgstr "Negli appunti" msgstr "Negli appunti"
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions #: codystrconsts.crsoptions
msgid "Options" msgid "Options"
msgstr "Opzioni" msgstr "Opzioni"

View File

@ -44,6 +44,10 @@ msgstr "Jau įgyvendinta ties %s"
msgid "... and %s more identifiers" msgid "... and %s more identifiers"
msgstr "… dar liko identifikatorių: %s" msgstr "… dar liko identifikatorių: %s"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp
msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut."
msgstr "Langas, skirta Lazarus IKA. Jis gali būti pritvirtintas kaip ir „Kodo tyrinėtojas“ arba „FPDoc rengyklė“. Šiam langui bus sukurtas menių „Rodymas“ papunktis ir sparčiųjų klavišų derinys." msgstr "Langas, skirta Lazarus IKA. Jis gali būti pritvirtintas kaip ir „Kodo tyrinėtojas“ arba „FPDoc rengyklė“. Šiam langui bus sukurtas menių „Rodymas“ papunktis ir sparčiųjų klavišų derinys."
@ -176,6 +180,10 @@ msgstr "CodeBuffers"
msgid "Code Node Information" msgid "Code Node Information"
msgstr "Informacija apie kodo mazgą" msgstr "Informacija apie kodo mazgą"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary #: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary" msgid "Identifier Dictionary"
msgstr "Identifikatorių žodynas" msgstr "Identifikatorių žodynas"
@ -495,6 +503,18 @@ msgstr "Nėra pažymėtų modulių"
msgid "On clipboard" msgid "On clipboard"
msgstr "Iškarpinėje" msgstr "Iškarpinėje"
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions #: codystrconsts.crsoptions
msgid "Options" msgid "Options"
msgstr "Parinktys" msgstr "Parinktys"

View File

@ -34,6 +34,10 @@ msgstr ""
msgid "... and %s more identifiers" msgid "... and %s more identifiers"
msgstr "" msgstr ""
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp
msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut."
msgstr "" msgstr ""
@ -166,6 +170,10 @@ msgstr ""
msgid "Code Node Information" msgid "Code Node Information"
msgstr "" msgstr ""
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary #: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary" msgid "Identifier Dictionary"
msgstr "" msgstr ""
@ -485,6 +493,18 @@ msgstr ""
msgid "On clipboard" msgid "On clipboard"
msgstr "" msgstr ""
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions #: codystrconsts.crsoptions
msgid "Options" msgid "Options"
msgstr "" msgstr ""

View File

@ -46,6 +46,10 @@ msgstr "Já definido em %s"
msgid "... and %s more identifiers" msgid "... and %s more identifiers"
msgstr "... e mais %s identificadores" msgstr "... e mais %s identificadores"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp
msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut."
msgstr "Uma janela para a IDE Lazarus. Ela pode ser ancorada como o Explorador de Código ou o Editor FPDoc. Isto também cria um item de menu no menu Exibir e um atalho." msgstr "Uma janela para a IDE Lazarus. Ela pode ser ancorada como o Explorador de Código ou o Editor FPDoc. Isto também cria um item de menu no menu Exibir e um atalho."
@ -178,6 +182,10 @@ msgstr "CodeBuffers"
msgid "Code Node Information" msgid "Code Node Information"
msgstr "Informação Nó de Código" msgstr "Informação Nó de Código"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary #: codystrconsts.crscodyidentifierdictionary
#| msgid "Cody Identifier Dictionary" #| msgid "Cody Identifier Dictionary"
msgid "Identifier Dictionary" msgid "Identifier Dictionary"
@ -503,6 +511,18 @@ msgstr "Nenhuma unidade selecionada"
msgid "On clipboard" msgid "On clipboard"
msgstr "Na área de transferência" msgstr "Na área de transferência"
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions #: codystrconsts.crsoptions
msgid "Options" msgid "Options"
msgstr "Opções" msgstr "Opções"

View File

@ -45,6 +45,10 @@ msgstr "Уже объявлена (%s)"
msgid "... and %s more identifiers" msgid "... and %s more identifiers"
msgstr "... дополнительно идентификаторов: %s" msgstr "... дополнительно идентификаторов: %s"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp
msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut."
msgstr "Окно для среды Lazarus. Может быть пристыковано подобно обозревателю кода или редактору FPDoc. Помимо окна, будет создан пункт в меню Вид с комбинацией клавиш." msgstr "Окно для среды Lazarus. Может быть пристыковано подобно обозревателю кода или редактору FPDoc. Помимо окна, будет создан пункт в меню Вид с комбинацией клавиш."
@ -177,6 +181,10 @@ msgstr "Буферы кода"
msgid "Code Node Information" msgid "Code Node Information"
msgstr "Сведения об элементе кода" msgstr "Сведения об элементе кода"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary #: codystrconsts.crscodyidentifierdictionary
#| msgid "Cody Identifier Dictionary" #| msgid "Cody Identifier Dictionary"
msgid "Identifier Dictionary" msgid "Identifier Dictionary"
@ -503,6 +511,18 @@ msgstr "Модуль не выбран"
msgid "On clipboard" msgid "On clipboard"
msgstr "В буфере обмена" msgstr "В буфере обмена"
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions #: codystrconsts.crsoptions
msgid "Options" msgid "Options"
msgstr "Параметры" msgstr "Параметры"

View File

@ -46,6 +46,10 @@ msgstr "Вже визначений в %s"
msgid "... and %s more identifiers" msgid "... and %s more identifiers"
msgstr "" msgstr ""
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp
msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut."
msgstr "" msgstr ""
@ -178,6 +182,10 @@ msgstr ""
msgid "Code Node Information" msgid "Code Node Information"
msgstr "Інформація про Вузол Коду" msgstr "Інформація про Вузол Коду"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary #: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary" msgid "Identifier Dictionary"
msgstr "" msgstr ""
@ -505,6 +513,18 @@ msgstr "Модуль не вибраний"
msgid "On clipboard" msgid "On clipboard"
msgstr "На буфер обміну" msgstr "На буфер обміну"
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions #: codystrconsts.crsoptions
msgid "Options" msgid "Options"
msgstr "Параметри" msgstr "Параметри"