codetools: AddLocalVariable: insert in front of MaxPos

git-svn-id: trunk@30892 -
This commit is contained in:
mattias 2011-05-24 21:42:15 +00:00
parent fee523b4c5
commit 3ce75c3558
8 changed files with 309 additions and 41 deletions

View File

@ -177,7 +177,8 @@ type
function AddLocalVariable(CleanCursorPos: integer; OldTopLine: integer;
VariableName, VariableType, VariableTypeUnitName: string;
out NewPos: TCodeXYPosition; out NewTopLine: integer;
SourceChangeCache: TSourceChangeCache): boolean;
SourceChangeCache: TSourceChangeCache;
MaxCleanPos: integer = 0): boolean;
procedure AdjustCursor(OldCodePos: TCodePosition; OldTopLine: integer;
out NewPos: TCodeXYPosition; out NewTopLine: integer);
function AddVariable(CursorNode: TCodeTreeNode;
@ -326,7 +327,7 @@ type
out NewExprType: TExpressionType; out NewType: string): boolean; // false = not at an identifier
function DeclareVariable(InsertPos: TCodeXYPosition;
const VariableName, NewType, NewUnitName: string;
Visibility: TCodeTreeNodeDesc;
Visibility: TCodeTreeNodeDesc; MaxPos: TCodeXYPosition;
SourceChangeCache: TSourceChangeCache): boolean;
// custom class completion
@ -969,11 +970,11 @@ begin
Result:=TermAtom.EndPos>TermAtom.StartPos;
end;
function TCodeCompletionCodeTool.AddLocalVariable(
CleanCursorPos: integer; OldTopLine: integer;
VariableName, VariableType, VariableTypeUnitName: string;
out NewPos: TCodeXYPosition;
out NewTopLine: integer; SourceChangeCache: TSourceChangeCache): boolean;
function TCodeCompletionCodeTool.AddLocalVariable(CleanCursorPos: integer;
OldTopLine: integer; VariableName, VariableType,
VariableTypeUnitName: string; out NewPos: TCodeXYPosition;
out NewTopLine: integer; SourceChangeCache: TSourceChangeCache;
MaxCleanPos: integer): boolean;
var
CursorNode, BeginNode, VarSectionNode, VarNode: TCodeTreeNode;
Indent, InsertPos: integer;
@ -1001,11 +1002,16 @@ begin
DebugLn('TCodeCompletionCodeTool.AddLocalVariable - Not in Begin Block');
exit;
end;
if MaxCleanPos<1 then MaxCleanPos:=SrcLen+1;
// find last 'var' section node
// find last 'var' section node in front of MaxCleanPos
VarSectionNode:=BeginNode;
while (VarSectionNode<>nil) and (VarSectionNode.Desc<>ctnVarSection) do
while (VarSectionNode<>nil) do begin
if (VarSectionNode.Desc=ctnVarSection)
and (VarSectionNode.EndPos<=MaxCleanPos) then
break;
VarSectionNode:=VarSectionNode.PriorBrother;
end;
InsertTxt:=VariableName+':'+VariableType+';';
//DebugLn('TCodeCompletionCodeTool.AddLocalVariable C ',InsertTxt,' ');
@ -1013,6 +1019,7 @@ begin
if (VarSectionNode<>nil) and (VarSectionNode.FirstChild<>nil) then begin
// there is already a var section
// -> append variable
//debugln(['TCodeCompletionCodeTool.AddLocalVariable insert into existing var section']);
VarNode:=VarSectionNode.FirstChild;
// search last variable in var section
while (VarNode.NextBrother<>nil) do
@ -1024,11 +1031,40 @@ begin
end else begin
// there is no var section yet
// -> create a new var section and append variable
Indent:=GetLineIndent(Src,BeginNode.StartPos);
if BeginNode.StartPos>MaxCleanPos then begin
Node:=BeginNode;
while (Node<>nil) and (not (Node.Desc in AllDefinitionSections)) do
Node:=Node.PriorBrother;
if Node<>nil then begin
// there is a type/const section in front
// => put the var section below
//debugln(['TCodeCompletionCodeTool.AddLocalVariable start a new var section below '+Node.DescAsString]);
InsertPos:=Node.EndPos;
Indent:=GetLineIndent(Src,Node.StartPos);
end else begin
// there is no var/type/const section in front
// => insert at first possible position
Node:=BeginNode.Parent.FirstChild;
if Node.Desc in [ctnProcedureHead,ctnUsesSection] then begin
// insert behind uses section / procedure header
//debugln(['TCodeCompletionCodeTool.AddLocalVariable start a new var section below '+Node.DescAsString]);
InsertPos:=Node.EndPos;
end else begin
// insert behind section keyword
//debugln(['TCodeCompletionCodeTool.AddLocalVariable start a new var section at start of '+BeginNode.Parent.DescAsString]);
InsertPos:=Node.StartPos;
end;
Indent:=GetLineIndent(Src,InsertPos);
end;
end else begin
// default: add the var section directly in front of the begin
//debugln(['TCodeCompletionCodeTool.AddLocalVariable start a new var section in front of begin block']);
InsertPos:=BeginNode.StartPos;
Indent:=GetLineIndent(Src,InsertPos);
end;
InsertTxt:='var'+SourceChangeCache.BeautifyCodeOptions.LineEnd
+GetIndentStr(Indent+SourceChangeCache.BeautifyCodeOptions.Indent)
+InsertTxt;
InsertPos:=BeginNode.StartPos;
end;
// insert new code
@ -5426,8 +5462,8 @@ end;
function TCodeCompletionCodeTool.DeclareVariable(InsertPos: TCodeXYPosition;
const VariableName, NewType, NewUnitName: string;
Visibility: TCodeTreeNodeDesc; SourceChangeCache: TSourceChangeCache
): boolean;
Visibility: TCodeTreeNodeDesc; MaxPos: TCodeXYPosition;
SourceChangeCache: TSourceChangeCache): boolean;
var
CleanCursorPos: integer;
CursorNode: TCodeTreeNode;
@ -5435,24 +5471,28 @@ var
NewTopLine: integer;
Node: TCodeTreeNode;
ClassPart: TNewClassPart;
MaxCleanPos: integer;
begin
Result:=false;
debugln(['TCodeCompletionCodeTool.DeclareVariable InsertPos=',dbgs(InsertPos),' Name="',VariableName,'" Type="',NewType,'" Unit=',NewUnitName]);
BuildTreeAndGetCleanPos(InsertPos,CleanCursorPos);
CursorNode:=FindDeepestNodeAtPos(CleanCursorPos,true);
CaretToCleanPos(MaxPos,MaxCleanPos);
SourceChangeCache.MainScanner:=Scanner;
Node:=CursorNode;
while Node<>nil do begin
if Node.Desc=ctnBeginBlock then begin
// local variable
Result:=AddLocalVariable(Node.StartPos, 1,
VariableName,NewType,NewUnitName,NewPos,NewTopLine,SourceChangeCache);
VariableName,NewType,NewUnitName,NewPos,NewTopLine,SourceChangeCache,
MaxCleanPos);
exit;
end else if Node.Desc=ctnProcedure then begin
// local variable
if (Node.LastChild<>nil) and (Node.LastChild.Desc=ctnBeginBlock) then begin
Result:=AddLocalVariable(Node.LastChild.StartPos, 1,
VariableName,NewType,NewUnitName,NewPos,NewTopLine,SourceChangeCache);
VariableName,NewType,NewUnitName,NewPos,NewTopLine,SourceChangeCache,
MaxCleanPos);
exit;
end else
exit;

View File

@ -517,7 +517,9 @@ type
out NewExprType: TExpressionType; out NewType: string): boolean; // false = not at an identifier or syntax error
function DeclareVariable(Code: TCodeBuffer; X,Y: integer;
const VariableName, NewType, NewUnitName: string;
Visibility: TCodeTreeNodeDesc): boolean;
Visibility: TCodeTreeNodeDesc;
MaxPosCode: TCodeBuffer = nil; MaxPosX: integer = 0; MaxPosY: integer = 0
): boolean;
function FindRedefinitions(Code: TCodeBuffer;
out TreeOfCodeTreeNodeExt: TAVLTree; WithEnums: boolean): boolean;
function RemoveRedefinitions(Code: TCodeBuffer;
@ -3656,21 +3658,25 @@ end;
function TCodeToolManager.DeclareVariable(Code: TCodeBuffer; X, Y: integer;
const VariableName, NewType, NewUnitName: string;
Visibility: TCodeTreeNodeDesc): boolean;
Visibility: TCodeTreeNodeDesc; MaxPosCode: TCodeBuffer; MaxPosX: integer;
MaxPosY: integer): boolean;
var
CursorPos: TCodeXYPosition;
CursorPos, MaxPos: TCodeXYPosition;
begin
{$IFDEF CTDEBUG}
DebugLn(['TCodeToolManager.DeclareVariable A ',Code.Filename,' X=',X,' Y=',Y]);
{$ENDIF}
Result:=false;
if not InitCurCodeTool(Code) then exit;
CursorPos.Code:=Code;
CursorPos.X:=X;
CursorPos.Y:=Y;
CursorPos.Code:=Code;
MaxPos.Code:=MaxPosCode;
MaxPos.X:=MaxPosX;
MaxPos.Y:=MaxPosY;
try
Result:=FCurCodeTool.DeclareVariable(CursorPos,VariableName,
NewType,NewUnitName,Visibility,SourceChangeCache);
NewType,NewUnitName,Visibility,MaxPos,SourceChangeCache);
except
on e: Exception do Result:=HandleException(e);
end;

View File

@ -48,6 +48,7 @@ resourcestring
crsUnits = 'Units';
crsLinkedFiles = 'Linked files';
crsType = 'Type';
crsWhere = 'Where';
crsFile = 'File';
crsFlags = 'Flags';
crsPackage = 'Package';
@ -78,9 +79,21 @@ resourcestring
crsRemoveWithBlock = 'Remove With block';
crsCWError = 'Error';
crsPleaseSpecifyAType = 'Please specify a type';
crsPleaseSpecifyALocation = 'Please specify a location';
crsPleasePlaceTheCursorOfTheSourceEditorAtAnIdentifie = 'Please place the '
+'cursor of the source editor at an identifier in a statement.%sFor '
+'example:%sMyVar:=3;';
crsDeclareVariable3 = 'Declare variable "%s"';
crsAlreadyDefined = 'Already defined';
crsLocalVariableOf = 'Local variable of %s';
crsAlreadyDefinedAt = 'Already defined at %s';
crsPrivate = 'Private';
crsProtected = 'Protected';
crsPublic = 'Public';
crsPublished = 'Published';
crsMemberOf = '%s member of %s %s';
crsTheIdentifierIsAlreadyDefined = 'The identifier "%s" is already defined.';
crsCWPleasePlaceTheCursorOfTheSourceEditorOnAWithVariab = 'Please place the '
+'cursor of the source editor on a With variable.';

View File

@ -30,8 +30,6 @@
- guess parameter
- guess j:=<i>
- Extend uses section when adding to a class
- Fix bug: adding types with comments
- Fix bug: insert at beginning of proc, if identifier is in sub proc
- Target implementation
- Target interface
- Target program
@ -206,9 +204,6 @@ end;
procedure TCodyDeclareVarDialog.FormCreate(Sender: TObject);
begin
Targets:=TObjectList.create(true);
Caption:='Declare a new variable';
WhereRadioGroup.Caption:='Where';
TypeEdit.Caption:='Type';
ButtonPanel1.OKButton.OnClick:=@OKButtonClick;
ButtonPanel1.HelpButton.OnClick:=@HelpButtonClick;
end;
@ -219,7 +214,7 @@ var
begin
NewType:=Trim(TypeEdit.Text);
if NewType='' then begin
IDEMessageDialog('Error','Please specify a type',mtError,[mbCancel]);
IDEMessageDialog(crsCWError, crsPleaseSpecifyAType, mtError, [mbCancel]);
exit;
end;
if CompareTextIgnoringSpace(NewType,RecommendedType,false)<>0 then begin
@ -227,7 +222,8 @@ begin
UnitOfType:='';
end;
if WhereRadioGroup.ItemIndex<0 then begin
IDEMessageDialog('Error','Please specify a location',mtError,[mbCancel]);
IDEMessageDialog(crsCWError, crsPleaseSpecifyALocation, mtError, [mbCancel
]);
exit;
end;
ModalResult:=mrOk;
@ -251,16 +247,16 @@ function TCodyDeclareVarDialog.Run: boolean;
s: String;
begin
case Visibility of
ctnClassPrivate: s:='Private';
ctnClassProtected: s:='Protected';
ctnClassPublic: s:='Public';
ctnClassPublished: s:='Published';
ctnClassPrivate: s:=crsPrivate;
ctnClassProtected: s:=crsProtected;
ctnClassPublic: s:=crsPublic;
ctnClassPublished: s:=crsPublished;
else exit;
end;
Target:=TCodyDeclareVarTarget.Create(Context);
Target.Visibility:=Visibility;
s:=s+' member of '+Context.Node.DescAsString+' '+
Context.Tool.ExtractClassName(Context.Node,false,true);
s:=Format(crsMemberOf, [s, Context.Node.DescAsString, Context.Tool.
ExtractClassName(Context.Node, false, true)]);
Target.Caption:=s;
Targets.Add(Target);
end;
@ -285,8 +281,9 @@ begin
if ExistingDefinition.Node<>nil then begin
RedefineLabel.Visible:=true;
RedefineLabel.Caption:='Already defined at '+ExistingDefinition.Tool.CleanPosToRelativeStr(
ExistingDefinition.Node.StartPos,CodePos.Code.Filename);
RedefineLabel.Caption:=Format(crsAlreadyDefinedAt, [ExistingDefinition.
Tool.CleanPosToRelativeStr(
ExistingDefinition.Node.StartPos, CodePos.Code.Filename)]);
end else begin
RedefineLabel.Visible:=false;
end;
@ -296,7 +293,8 @@ begin
Context:=PFindContext(PossibleContexts[i])^;
if Context.Node.Desc=ctnProcedure then begin
Target:=TCodyDeclareVarTarget.Create(Context);
Target.Caption:='Local variable of '+Context.Tool.ExtractProcName(Context.Node,[]);
Target.Caption:=Format(crsLocalVariableOf, [Context.Tool.
ExtractProcName(Context.Node, [])]);
Targets.Add(Target);
end else if Context.Node.Desc in AllClassObjects then begin
AddClassTarget(Context,ctnClassPrivate);
@ -311,15 +309,17 @@ begin
end;
if Targets.Count=0 then begin
IDEMessageDialog('Already defined',
'The identifier "'+Identifier+'" is already defined.',mtError,[mbCancel]);
IDEMessageDialog(crsAlreadyDefined,
Format(crsTheIdentifierIsAlreadyDefined, [Identifier]), mtError, [mbCancel
]);
exit;
end;
Caption:='Declare variable "'+Identifier+'"';
TypeLabel.Caption:='Type';
Caption:=Format(crsDeclareVariable3, [Identifier]);
TypeLabel.Caption:=crsType;
TypeEdit.Text:=RecommendedType;
WhereRadioGroup.Caption:=crsWhere;
for i:=0 to Targets.Count-1 do begin
Target:=TCodyDeclareVarTarget(Targets[i]);
WhereRadioGroup.Items.Add(Target.Caption);
@ -339,7 +339,8 @@ begin
LazarusIDE.OpenEditorsOnCodeToolChange:=true;
if not CodeToolBoss.DeclareVariable(Target.NodeStartPos.Code,
Target.NodeStartPos.X,Target.NodeStartPos.Y,
Identifier,NewType,UnitOfType,Target.Visibility)
Identifier,NewType,UnitOfType,Target.Visibility,
CodePos.Code,CodePos.X,CodePos.Y)
then begin
debugln(['TCodyDeclareVarDialog.Run Error']);
LazarusIDE.DoJumpToCodeToolBossError;

View File

@ -22,6 +22,14 @@ msgstr ""
msgid "Add call inherited"
msgstr ""
#: codystrconsts.crsalreadydefined
msgid "Already defined"
msgstr ""
#: codystrconsts.crsalreadydefinedat
msgid "Already defined at %s"
msgstr ""
#: codystrconsts.crsbtncancel
msgid "Cancel"
msgstr ""
@ -182,6 +190,10 @@ msgstr ""
msgid "Declare Variable ..."
msgstr ""
#: codystrconsts.crsdeclarevariable3
msgid "Declare variable \"%s\""
msgstr ""
#: codystrconsts.crsfile
msgid "File"
msgstr ""
@ -214,6 +226,10 @@ msgstr "Kbyte"
msgid "Linked files"
msgstr ""
#: codystrconsts.crslocalvariableof
msgid "Local variable of %s"
msgstr ""
#: codystrconsts.crsmainsourcefile
msgid "Main source file: %s"
msgstr "File sorgente principale: %s"
@ -222,6 +238,10 @@ msgstr "File sorgente principale: %s"
msgid "Mbytes"
msgstr "Mbyte"
#: codystrconsts.crsmemberof
msgid "%s member of %s %s"
msgstr ""
#: codystrconsts.crsmissing
msgid "missing ..."
msgstr "mancante..."
@ -262,6 +282,14 @@ msgstr "Aprire un progetto prima."
msgid "Please place the cursor of the source editor at an identifier in a statement.%sFor example:%sMyVar:=3;"
msgstr ""
#: codystrconsts.crspleasespecifyalocation
msgid "Please specify a location"
msgstr ""
#: codystrconsts.crspleasespecifyatype
msgid "Please specify a type"
msgstr ""
#: codystrconsts.crsppu
msgid "PPU: %s"
msgstr ""
@ -270,6 +298,10 @@ msgstr ""
msgid "PPU files of project \"%s\""
msgstr "File PPU del progetto \"%s\""
#: codystrconsts.crsprivate
msgid "Private"
msgstr ""
#: codystrconsts.crsprojecthasnomainsourcefile
msgid "Project has no main source file."
msgstr "Il progetto non ha un sorgente principale."
@ -278,6 +310,18 @@ msgstr "Il progetto non ha un sorgente principale."
msgid "Project output"
msgstr "Output del progetto"
#: codystrconsts.crsprotected
msgid "Protected"
msgstr ""
#: codystrconsts.crspublic
msgid "Public"
msgstr ""
#: codystrconsts.crspublished
msgid "Published"
msgstr ""
#: codystrconsts.crsrefresh
msgid "Refresh"
msgstr ""
@ -316,6 +360,10 @@ msgstr "Dimensione del file .ppu"
msgid "Source: %s"
msgstr "Sorgente: %s"
#: codystrconsts.crstheidentifierisalreadydefined
msgid "The identifier \"%s\" is already defined."
msgstr ""
#: codystrconsts.crstotal
msgid "Total"
msgstr "Totale"
@ -360,6 +408,10 @@ msgstr ""
msgid "Virtual unit"
msgstr "Unit virtuale"
#: codystrconsts.crswhere
msgid "Where"
msgstr ""
#: codystrconsts.liscogeneral
msgid "General"
msgstr "Generale"

View File

@ -13,6 +13,14 @@ msgstr ""
msgid "Add call inherited"
msgstr ""
#: codystrconsts.crsalreadydefined
msgid "Already defined"
msgstr ""
#: codystrconsts.crsalreadydefinedat
msgid "Already defined at %s"
msgstr ""
#: codystrconsts.crsbtncancel
msgid "Cancel"
msgstr ""
@ -173,6 +181,10 @@ msgstr ""
msgid "Declare Variable ..."
msgstr ""
#: codystrconsts.crsdeclarevariable3
msgid "Declare variable \"%s\""
msgstr ""
#: codystrconsts.crsfile
msgid "File"
msgstr ""
@ -205,6 +217,10 @@ msgstr ""
msgid "Linked files"
msgstr ""
#: codystrconsts.crslocalvariableof
msgid "Local variable of %s"
msgstr ""
#: codystrconsts.crsmainsourcefile
msgid "Main source file: %s"
msgstr ""
@ -213,6 +229,10 @@ msgstr ""
msgid "Mbytes"
msgstr ""
#: codystrconsts.crsmemberof
msgid "%s member of %s %s"
msgstr ""
#: codystrconsts.crsmissing
msgid "missing ..."
msgstr ""
@ -253,6 +273,14 @@ msgstr ""
msgid "Please place the cursor of the source editor at an identifier in a statement.%sFor example:%sMyVar:=3;"
msgstr ""
#: codystrconsts.crspleasespecifyalocation
msgid "Please specify a location"
msgstr ""
#: codystrconsts.crspleasespecifyatype
msgid "Please specify a type"
msgstr ""
#: codystrconsts.crsppu
msgid "PPU: %s"
msgstr ""
@ -261,6 +289,10 @@ msgstr ""
msgid "PPU files of project \"%s\""
msgstr ""
#: codystrconsts.crsprivate
msgid "Private"
msgstr ""
#: codystrconsts.crsprojecthasnomainsourcefile
msgid "Project has no main source file."
msgstr ""
@ -269,6 +301,18 @@ msgstr ""
msgid "Project output"
msgstr ""
#: codystrconsts.crsprotected
msgid "Protected"
msgstr ""
#: codystrconsts.crspublic
msgid "Public"
msgstr ""
#: codystrconsts.crspublished
msgid "Published"
msgstr ""
#: codystrconsts.crsrefresh
msgid "Refresh"
msgstr ""
@ -305,6 +349,10 @@ msgstr ""
msgid "Source: %s"
msgstr ""
#: codystrconsts.crstheidentifierisalreadydefined
msgid "The identifier \"%s\" is already defined."
msgstr ""
#: codystrconsts.crstotal
msgid "Total"
msgstr ""
@ -349,6 +397,10 @@ msgstr ""
msgid "Virtual unit"
msgstr ""
#: codystrconsts.crswhere
msgid "Where"
msgstr ""
#: codystrconsts.liscogeneral
msgid "General"
msgstr ""

View File

@ -21,6 +21,14 @@ msgstr "Adicionar método \"Assign\" ..."
msgid "Add call inherited"
msgstr "Adicionar chamada \"inherited\""
#: codystrconsts.crsalreadydefined
msgid "Already defined"
msgstr ""
#: codystrconsts.crsalreadydefinedat
msgid "Already defined at %s"
msgstr ""
#: codystrconsts.crsbtncancel
msgid "Cancel"
msgstr "Cancelar"
@ -181,6 +189,10 @@ msgstr "Declarar Variável"
msgid "Declare Variable ..."
msgstr "Declarar Variável ..."
#: codystrconsts.crsdeclarevariable3
msgid "Declare variable \"%s\""
msgstr ""
#: codystrconsts.crsfile
msgid "File"
msgstr ""
@ -213,6 +225,10 @@ msgstr "kbytes"
msgid "Linked files"
msgstr ""
#: codystrconsts.crslocalvariableof
msgid "Local variable of %s"
msgstr ""
#: codystrconsts.crsmainsourcefile
msgid "Main source file: %s"
msgstr "Arquivo fonte principal: %s"
@ -221,6 +237,10 @@ msgstr "Arquivo fonte principal: %s"
msgid "Mbytes"
msgstr "Mbytes"
#: codystrconsts.crsmemberof
msgid "%s member of %s %s"
msgstr ""
#: codystrconsts.crsmissing
msgid "missing ..."
msgstr "faltando ..."
@ -261,6 +281,14 @@ msgstr "Favor abrir um projeto primeiro."
msgid "Please place the cursor of the source editor at an identifier in a statement.%sFor example:%sMyVar:=3;"
msgstr ""
#: codystrconsts.crspleasespecifyalocation
msgid "Please specify a location"
msgstr ""
#: codystrconsts.crspleasespecifyatype
msgid "Please specify a type"
msgstr ""
#: codystrconsts.crsppu
msgid "PPU: %s"
msgstr "PPU: %s"
@ -269,6 +297,10 @@ msgstr "PPU: %s"
msgid "PPU files of project \"%s\""
msgstr "Arquivos PPU do projeto \"%s\""
#: codystrconsts.crsprivate
msgid "Private"
msgstr ""
#: codystrconsts.crsprojecthasnomainsourcefile
msgid "Project has no main source file."
msgstr "Projeto não tem arquivo fonte principal."
@ -277,6 +309,18 @@ msgstr "Projeto não tem arquivo fonte principal."
msgid "Project output"
msgstr "Saída do Projeto"
#: codystrconsts.crsprotected
msgid "Protected"
msgstr ""
#: codystrconsts.crspublic
msgid "Public"
msgstr ""
#: codystrconsts.crspublished
msgid "Published"
msgstr ""
#: codystrconsts.crsrefresh
msgid "Refresh"
msgstr ""
@ -314,6 +358,10 @@ msgstr "Tamanho do arquivo .ppu"
msgid "Source: %s"
msgstr "Fonte: %s"
#: codystrconsts.crstheidentifierisalreadydefined
msgid "The identifier \"%s\" is already defined."
msgstr ""
#: codystrconsts.crstotal
msgid "Total"
msgstr "Total"
@ -358,6 +406,10 @@ msgstr "\"Uses\""
msgid "Virtual unit"
msgstr "Unidade Virtual"
#: codystrconsts.crswhere
msgid "Where"
msgstr ""
#: codystrconsts.liscogeneral
msgid "General"
msgstr "Geral"

View File

@ -21,6 +21,14 @@ msgstr "Добавить метод Assign ..."
msgid "Add call inherited"
msgstr "Добавить вызов унаследованного метода"
#: codystrconsts.crsalreadydefined
msgid "Already defined"
msgstr ""
#: codystrconsts.crsalreadydefinedat
msgid "Already defined at %s"
msgstr ""
#: codystrconsts.crsbtncancel
msgid "Cancel"
msgstr "Отмена"
@ -181,6 +189,10 @@ msgstr "Объявить переменную"
msgid "Declare Variable ..."
msgstr "Объявить переменную ..."
#: codystrconsts.crsdeclarevariable3
msgid "Declare variable \"%s\""
msgstr ""
#: codystrconsts.crsfile
msgid "File"
msgstr "Файл"
@ -213,6 +225,10 @@ msgstr "кБ"
msgid "Linked files"
msgstr "Скомпонованные файлы"
#: codystrconsts.crslocalvariableof
msgid "Local variable of %s"
msgstr ""
#: codystrconsts.crsmainsourcefile
msgid "Main source file: %s"
msgstr "Главный файл исходного кода: %s"
@ -221,6 +237,10 @@ msgstr "Главный файл исходного кода: %s"
msgid "Mbytes"
msgstr "МБ"
#: codystrconsts.crsmemberof
msgid "%s member of %s %s"
msgstr ""
#: codystrconsts.crsmissing
msgid "missing ..."
msgstr "отсутствует ..."
@ -262,6 +282,14 @@ msgstr "Сначала необходимо открыть проект."
msgid "Please place the cursor of the source editor at an identifier in a statement.%sFor example:%sMyVar:=3;"
msgstr "Расположите курсор редактора исходного кода на идентификаторе в операторе.%sНапример:%sMyVar:=3;"
#: codystrconsts.crspleasespecifyalocation
msgid "Please specify a location"
msgstr ""
#: codystrconsts.crspleasespecifyatype
msgid "Please specify a type"
msgstr ""
#: codystrconsts.crsppu
msgid "PPU: %s"
msgstr "PPU: %s"
@ -270,6 +298,10 @@ msgstr "PPU: %s"
msgid "PPU files of project \"%s\""
msgstr "Файлы PPU проекта \"%s\""
#: codystrconsts.crsprivate
msgid "Private"
msgstr ""
#: codystrconsts.crsprojecthasnomainsourcefile
msgid "Project has no main source file."
msgstr "В проекте отсутствует главный файл исходного кода."
@ -278,6 +310,18 @@ msgstr "В проекте отсутствует главный файл исх
msgid "Project output"
msgstr "Вывод проекта"
#: codystrconsts.crsprotected
msgid "Protected"
msgstr ""
#: codystrconsts.crspublic
msgid "Public"
msgstr ""
#: codystrconsts.crspublished
msgid "Published"
msgstr ""
#: codystrconsts.crsrefresh
msgid "Refresh"
msgstr "Обновить"
@ -315,6 +359,10 @@ msgstr "Размер файла .ppu"
msgid "Source: %s"
msgstr "Файл исходного кода: %s"
#: codystrconsts.crstheidentifierisalreadydefined
msgid "The identifier \"%s\" is already defined."
msgstr ""
#: codystrconsts.crstotal
msgid "Total"
msgstr "Всего"
@ -359,6 +407,10 @@ msgstr "Использует"
msgid "Virtual unit"
msgstr "Виртуальный модуль"
#: codystrconsts.crswhere
msgid "Where"
msgstr ""
#: codystrconsts.liscogeneral
msgid "General"
msgstr "Общие"