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

View File

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

View File

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

View File

@ -120,6 +120,8 @@ function ParseUnit(out Tool: TCodeTool; out CleanPos: integer;
TilCursor: boolean = false): TCUParseError;
procedure OpenCodyHelp(Path: string);
function GetPatternValue1(const Pattern, PlaceHolder, Src: string; out Value1: string): boolean;
implementation
procedure ExplodeAWithBlockCmd(Sender: TObject);
@ -384,6 +386,35 @@ begin
OpenURL(BasePath+Path);
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 }
procedure TCodyClipboardSrcData.SetSourcePos(const SrcPos: TCodeXYPosition);

View File

@ -43,6 +43,10 @@ msgstr "Bereits definiert bei %s"
msgid "... and %s more identifiers"
msgstr "... und %s weitere Bezeichner"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: 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."
msgstr ""
@ -175,6 +179,10 @@ msgstr ""
msgid "Code Node Information"
msgstr ""
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary"
msgstr "Bezeichnerwörterbuch"
@ -494,6 +502,18 @@ msgstr "Keine Unit ausgewählt"
msgid "On clipboard"
msgstr ""
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions
msgid "Options"
msgstr "Einstellungen"

View File

@ -44,6 +44,10 @@ msgstr "Déjà défini à %s"
msgid "... and %s more identifiers"
msgstr "... et %s identificateurs"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: 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."
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"
msgstr "Information de nœud de code"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary"
msgstr "Dictionnaire des identificateurs"
@ -495,6 +503,18 @@ msgstr "Aucune unité sélectionnée"
msgid "On clipboard"
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
msgid "Options"
msgstr "Options"

View File

@ -44,6 +44,10 @@ msgstr "Már definiálva van itt: %s"
msgid "... and %s more identifiers"
msgstr "... és további %s azonosító"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: 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."
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"
msgstr "Kód-csomópont információ"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary"
msgstr "Azonosítók szótára"
@ -495,6 +503,18 @@ msgstr "Nincs unit kiválasztva"
msgid "On clipboard"
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
msgid "Options"
msgstr "Beállítások"

View File

@ -45,6 +45,10 @@ msgstr "Già definito in %s"
msgid "... and %s more identifiers"
msgstr "... e altri %s identificatori"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: 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."
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"
msgstr "Informazioni sul nodo di codice"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary"
msgstr "Dizionario Identificatori"
@ -496,6 +504,18 @@ msgstr "Nessuna unit selezionata"
msgid "On clipboard"
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
msgid "Options"
msgstr "Opzioni"

View File

@ -44,6 +44,10 @@ msgstr "Jau įgyvendinta ties %s"
msgid "... and %s more identifiers"
msgstr "… dar liko identifikatorių: %s"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: 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."
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"
msgstr "Informacija apie kodo mazgą"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary"
msgstr "Identifikatorių žodynas"
@ -495,6 +503,18 @@ msgstr "Nėra pažymėtų modulių"
msgid "On clipboard"
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
msgid "Options"
msgstr "Parinktys"

View File

@ -34,6 +34,10 @@ msgstr ""
msgid "... and %s more identifiers"
msgstr ""
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: 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."
msgstr ""
@ -166,6 +170,10 @@ msgstr ""
msgid "Code Node Information"
msgstr ""
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary"
msgstr ""
@ -485,6 +493,18 @@ msgstr ""
msgid "On clipboard"
msgstr ""
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions
msgid "Options"
msgstr ""

View File

@ -46,6 +46,10 @@ msgstr "Já definido em %s"
msgid "... and %s more identifiers"
msgstr "... e mais %s identificadores"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: 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."
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"
msgstr "Informação Nó de Código"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary
#| msgid "Cody Identifier Dictionary"
msgid "Identifier Dictionary"
@ -503,6 +511,18 @@ msgstr "Nenhuma unidade selecionada"
msgid "On clipboard"
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
msgid "Options"
msgstr "Opções"

View File

@ -45,6 +45,10 @@ msgstr "Уже объявлена (%s)"
msgid "... and %s more identifiers"
msgstr "... дополнительно идентификаторов: %s"
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: 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."
msgstr "Окно для среды Lazarus. Может быть пристыковано подобно обозревателю кода или редактору FPDoc. Помимо окна, будет создан пункт в меню Вид с комбинацией клавиш."
@ -177,6 +181,10 @@ msgstr "Буферы кода"
msgid "Code Node Information"
msgstr "Сведения об элементе кода"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary
#| msgid "Cody Identifier Dictionary"
msgid "Identifier Dictionary"
@ -503,6 +511,18 @@ msgstr "Модуль не выбран"
msgid "On clipboard"
msgstr "В буфере обмена"
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions
msgid "Options"
msgstr "Параметры"

View File

@ -46,6 +46,10 @@ msgstr "Вже визначений в %s"
msgid "... and %s more identifiers"
msgstr ""
#: codystrconsts.crsany
msgid "Any"
msgstr ""
#: 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."
msgstr ""
@ -178,6 +182,10 @@ msgstr ""
msgid "Code Node Information"
msgstr "Інформація про Вузол Коду"
#: codystrconsts.crscodyfindoverloads
msgid "Cody - Find Overloads"
msgstr ""
#: codystrconsts.crscodyidentifierdictionary
msgid "Identifier Dictionary"
msgstr ""
@ -505,6 +513,18 @@ msgstr "Модуль не вибраний"
msgid "On clipboard"
msgstr "На буфер обміну"
#: codystrconsts.crsonlydescendantsof
msgid "Only descendants of %s"
msgstr ""
#: codystrconsts.crsonlymethods
msgid "Only methods"
msgstr ""
#: codystrconsts.crsonlynonmethods
msgid "Only non methods"
msgstr ""
#: codystrconsts.crsoptions
msgid "Options"
msgstr "Параметри"