MG: added tool: Convert DFM file to LFM

git-svn-id: trunk@1806 -
This commit is contained in:
lazarus 2002-07-31 15:21:52 +00:00
parent 195c4d2a20
commit 32cf125f6a
4 changed files with 106 additions and 0 deletions

View File

@ -80,6 +80,7 @@ const
ecSyntaxCheck = ecUserFirst + 103;
ecGuessUnclosedBlock = ecUserFirst + 104;
ecGuessMisplacedIFDEF = ecUserFirst + 105;
ecConvertDFM2LFM = ecUserFirst + 106;
ecNew = ecUserFirst + 201;
ecNewUnit = ecUserFirst + 202;
@ -502,6 +503,7 @@ begin
ecSyntaxCheck: Result:='syntax check';
ecGuessUnclosedBlock: Result:='guess unclosed block';
ecGuessMisplacedIFDEF: Result:='guess misplaced $IFDEF';
ecConvertDFM2LFM: Result:='convert DFM file to LFM';
ecFindDeclaration: Result:='find declaration';
ecFindBlockOtherEnd: Result:='find block other end';
ecFindBlockStart: Result:='find block start';
@ -1181,6 +1183,7 @@ begin
Add(C,'Syntax check',ecSyntaxCheck,VK_UNKNOWN,[],VK_UNKNOWN,[]);
Add(C,'Guess unclosed block',ecGuessUnclosedBlock,VK_UNKNOWN,[],VK_UNKNOWN,[]);
Add(C,'Guess misplaced $IFDEF',ecGuessMisplacedIFDEF,VK_UNKNOWN,[],VK_UNKNOWN,[]);
Add(C,'Convert DFM file to LFM',ecConvertDFM2LFM,VK_UNKNOWN,[],VK_UNKNOWN,[]);
Add(C,'Find procedure definiton',ecFindProcedureDefinition,
VK_UP,[ssShift,SSCtrl],VK_UNKNOWN,[]);
Add(C,'Find procedure method',ecFindProcedureMethod,

View File

@ -170,6 +170,7 @@ ResourceString
lisMenuQuickSyntaxCheck = 'Quick syntax check';
lisMenuGuessUnclosedBlock = 'Guess unclosed block';
lisMenuGuessMisplacedIFDEF = 'Guess misplaced IFDEF/ENDIF';
lisMenuConvertDFMtoLFM = 'Convert DFM file to LFM';
lisMenuBuildLazarus = 'Build Lazarus';
lisMenuConfigureBuildLazarus = 'Configure "Build Lazarus"';
@ -188,6 +189,7 @@ ResourceString
lisOpenFile = 'Open file';
lisOpenProjectFile = 'Open Project File';
lisSaveSpace = 'Save ';
lisSelectDFMFiles = 'Select Delphi form files (*.dfm)';
// dialogs
lisSaveChangesToProject = 'Save changes to project?';

View File

@ -139,6 +139,7 @@ type
procedure mnuToolSyntaxCheckClicked(Sender : TObject);
procedure mnuToolGuessUnclosedBlockClicked(Sender : TObject);
procedure mnuToolGuessMisplacedIFDEFClicked(Sender : TObject);
procedure mnuToolConvertDFMtoLFMClicked(Sender : TObject);
procedure mnuToolBuildLazarusClicked(Sender : TObject);
procedure mnuToolConfigBuildLazClicked(Sender : TObject);
@ -357,6 +358,9 @@ type
// edit menu
procedure DoEditMenuCommand(EditorCommand: integer);
// tools
function DoConvertDFMtoLFM: TModalResult;
// external tools
function DoRunExternalTool(Index: integer): TModalResult;
function DoBuildLazarus: TModalResult;
@ -384,6 +388,7 @@ type
procedure UpdateDefaultPascalFileExtensions;
function CreateSrcEditPageName(const AnUnitName, AFilename: string;
IgnorePageIndex: integer): string;
function DoConvertDFMFileToLFMFile(const DFMFilename: string): TModalResult;
// methods for codetools
procedure InitCodeToolBoss;
@ -1663,6 +1668,12 @@ begin
itmToolGuessMisplacedIFDEF.OnClick := @mnuToolGuessMisplacedIFDEFClicked;
mnuTools.Add(itmToolGuessMisplacedIFDEF);
itmToolConvertDFMtoLFM := TMenuItem.Create(Self);
itmToolConvertDFMtoLFM.Name:='itmToolConvertDFMtoLFM';
itmToolConvertDFMtoLFM.Caption := lisMenuConvertDFMtoLFM;
itmToolConvertDFMtoLFM.OnClick := @mnuToolConvertDFMtoLFMClicked;
mnuTools.Add(itmToolConvertDFMtoLFM);
itmToolBuildLazarus := TMenuItem.Create(Self);
itmToolBuildLazarus.Name:='itmToolBuildLazarus';
itmToolBuildLazarus.Caption := lisMenuBuildLazarus;
@ -1972,6 +1983,9 @@ begin
ecGuessMisplacedIFDEF:
DoJumpToGuessedMisplacedIFDEF(true);
ecConvertDFM2LFM:
DoConvertDFMtoLFM;
ecBuildLazarus:
DoBuildLazarus;
@ -2265,6 +2279,11 @@ begin
DoJumpToGuessedMisplacedIFDEF(true);
end;
procedure TMainIDE.mnuToolConvertDFMtoLFMClicked(Sender : TObject);
begin
DoConvertDFMtoLFM;
end;
procedure TMainIDE.mnuToolBuildLazarusClicked(Sender : TObject);
begin
DoBuildLazarus;
@ -2323,6 +2342,54 @@ begin
Result:=SourceNoteBook.FindUniquePageName(Result,IgnorePageIndex);
end;
function TMainIDE.DoConvertDFMFileToLFMFile(const DFMFilename: string
): TModalResult;
var DFMStream, LFMStream: TMemoryStream;
LFMFilename: string;
begin
Result:=mrOk;
DFMStream:=TMemoryStream.Create;
LFMStream:=TMemoryStream.Create;
try
try
DFMStream.LoadFromFile(DFMFilename);
except
on E: Exception do begin
Result:=MessageDlg('Read error','Unable to read file "'+DFMFilename+'"'#13
+'Error: '+E.Message,
mtError,[mbIgnore,mbAbort],0);
exit;
end;
end;
try
FormDataToText(DFMStream,LFMStream);
except
on E: Exception do begin
Result:=MessageDlg('Format error',
'Unable to convert file "'+DFMFilename+'"'#13
+'Error: '+E.Message,
mtError,[mbIgnore,mbAbort],0);
exit;
end;
end;
LFMFilename:=ChangeFileExt(DFMFilename,'.lfm');
try
LFMStream.SaveToFile(LFMFilename);
except
on E: Exception do begin
Result:=MessageDlg('Write error',
'Unable to write file "'+LFMFilename+'"'#13
+'Error: '+E.Message,
mtError,[mbIgnore,mbAbort],0);
exit;
end;
end;
finally
LFMSTream.Free;
DFMStream.Free;
end;
end;
procedure TMainIDE.OnLoadEnvironmentSettings(Sender: TObject;
TheEnvironmentOptions: TEnvironmentOptions);
begin
@ -4823,6 +4890,35 @@ begin
EnvironmentOptions.ExternalTools,MacroList);
end;
function TMainIDE.DoConvertDFMtoLFM: TModalResult;
var
OpenDialog: TOpenDialog;
i: integer;
AFilename: string;
begin
Result:=mrOk;
OpenDialog:=TOpenDialog.Create(Self);
try
InputHistories.ApplyFileDialogSettings(OpenDialog);
OpenDialog.Title:=lisSelectDFMFiles;
OpenDialog.Options:=OpenDialog.Options+[ofAllowMultiSelect];
if OpenDialog.Execute and (OpenDialog.Files.Count>0) then begin
For I := 0 to OpenDialog.Files.Count-1 do begin
AFilename:=ExpandFilename(OpenDialog.Files.Strings[i]);
if DoConvertDFMFileToLFMFile(AFilename)=mrAbort then begin
Result:=mrAbort;
break;
end else
Result:=mrOk;
end;
SaveEnvironment;
end;
InputHistories.StoreFileDialogSettings(OpenDialog);
finally
OpenDialog.Free;
end;
end;
function TMainIDE.DoCheckSyntax: TModalResult;
var
ActiveUnitInfo:TUnitInfo;
@ -6657,6 +6753,7 @@ begin
itmToolSyntaxCheck.ShortCut:=CommandToShortCut(ecSyntaxCheck);
itmToolGuessUnclosedBlock.ShortCut:=CommandToShortCut(ecGuessUnclosedBlock);
itmToolGuessMisplacedIFDEF.ShortCut:=CommandToShortCut(ecGuessMisplacedIFDEF);
itmToolConvertDFMtoLFM.ShortCut:=CommandToShortCut(ecConvertDFM2LFM);
itmToolBuildLazarus.ShortCut:=CommandToShortCut(ecBuildLazarus);
itmToolConfigureBuildLazarus.ShortCut:=CommandToShortCut(ecConfigBuildLazarus);
@ -6704,6 +6801,9 @@ end.
{ =============================================================================
$Log$
Revision 1.329 2002/07/31 15:21:50 lazarus
MG: added tool: Convert DFM file to LFM
Revision 1.328 2002/07/31 09:00:03 lazarus
MG: fixed undefined editor topline on codetool error

View File

@ -188,6 +188,7 @@ type
itmToolSyntaxCheck: TMenuItem;
itmToolGuessUnclosedBlock: TMenuItem;
itmToolGuessMisplacedIFDEF: TMenuItem;
itmToolConvertDFMtoLFM: TMenuItem;
itmToolBuildLazarus: TMenuItem;
itmToolConfigureBuildLazarus: TMenuItem;