IDE: Export as HTML

git-svn-id: trunk@36523 -
This commit is contained in:
martin 2012-04-02 15:35:22 +00:00
parent eb22eb28b9
commit db25fe4136
5 changed files with 52 additions and 0 deletions

View File

@ -61,6 +61,7 @@ resourcestring
lisDlgSave = 'Save ...';
lisSaveAs = 'Save As';
lisSaveAll = 'Save All';
lisExportHtml = 'Export as HTML';
lisCloseAll = 'Close All';
lisFile = 'File';
lisNew = 'New';

View File

@ -202,6 +202,7 @@ type
procedure mnuSaveClicked(Sender: TObject);
procedure mnuSaveAsClicked(Sender: TObject);
procedure mnuSaveAllClicked(Sender: TObject);
procedure mnuExportHtml(Sender: TObject);
procedure mnuCloseClicked(Sender: TObject);
procedure mnuCloseAllClicked(Sender: TObject);
procedure mnuCleanDirectoryClicked(Sender: TObject);
@ -2470,6 +2471,7 @@ begin
itmFileSave.OnClick := @mnuSaveClicked;
itmFileSaveAs.OnClick := @mnuSaveAsClicked;
itmFileSaveAll.OnClick := @mnuSaveAllClicked;
itmFileExportHtml.OnClick := @mnuExportHtml;
itmFileClose.Enabled := False;
itmFileClose.OnClick := @mnuCloseClicked;
itmFileCloseAll.Enabled := False;
@ -2958,6 +2960,35 @@ begin
DoSaveAll([sfCheckAmbiguousFiles]);
end;
procedure TMainIDE.mnuExportHtml(Sender: TObject);
var
SrcEdit: TSourceEditor;
AnUnitInfo: TUnitInfo;
Filename: string;
SaveDialog: TSaveDialog;
begin
GetCurrentUnit(SrcEdit,AnUnitInfo);
if SrcEdit = nil then exit;
SaveDialog:=TSaveDialog.Create(nil);
try
SaveDialog.Title:=lisSaveSpace;
SaveDialog.FileName:=SrcEdit.PageName+'.html';
SaveDialog.Filter := ' (*.html;*.htm)|*.html;*.htm';
SaveDialog.Options := [ofOverwritePrompt, ofPathMustExist, ofNoReadOnlyReturn];
// show save dialog
if (not SaveDialog.Execute) or (ExtractFileName(SaveDialog.Filename)='')
then begin
exit;
end;
Filename:=ExpandFileNameUTF8(SaveDialog.Filename);
finally
SaveDialog.Free;
end;
SrcEdit.ExportAsHtml(Filename);
end;
procedure TMainIDE.mnuCloseClicked(Sender: TObject);
var
PageIndex: integer;
@ -8031,6 +8062,7 @@ begin
MainIDEBar.itmFileSave.Enabled :=
((SrcEdit<>nil) and SrcEdit.Modified)
or ((AnUnitInfo<>nil) and (AnUnitInfo.IsVirtual));
MainIDEBar.itmFileExportHtml.Enabled := (SrcEdit<>nil);
if UpdateSaveAll then
MainIDEBar.itmFileSaveAll.Enabled := MainIDEBar.itmProjectSave.Enabled;
// toolbar buttons

View File

@ -95,6 +95,7 @@ type
itmFileSave: TIDEMenuCommand;
itmFileSaveAs: TIDEMenuCommand;
itmFileSaveAll: TIDEMenuCommand;
itmFileExportHtml: TIDEMenuCommand;
itmFileClose: TIDEMenuCommand;
itmFileCloseAll: TIDEMenuCommand;
//itmFileDirectories: TIDEMenuSection;

View File

@ -390,6 +390,7 @@ begin
CreateMenuItem(ParentMI,itmFileSave,'itmFileSave',lisMenuSave,'laz_save');
CreateMenuItem(ParentMI,itmFileSaveAs,'itmFileSaveAs',lisMenuSaveAs,'menu_saveas');
CreateMenuItem(ParentMI,itmFileSaveAll,'itmFileSaveAll',lisSaveAll,'menu_save_all');
CreateMenuItem(ParentMI,itmFileExportHtml,'itmFileExportHtml',lisExportHtml,'menu_export_html');
CreateMenuItem(ParentMI,itmFileClose,'itmFileClose',lisClose,'menu_close',false);
CreateMenuItem(ParentMI,itmFileCloseAll,'itmFileCloseAll',lisMenuCloseAll,'menu_close_all',false);

View File

@ -54,6 +54,7 @@ uses
SynEditMiscClasses, SynEditMarkupHighAll, SynEditMarks,
SynBeautifier, SynEditTextBase, LazSynEditText,
SynPluginSyncronizedEditBase, SourceSynEditor, SynMacroRecorder,
SynExportHTML,
// Intf
SrcEditorIntf, MenuIntf, LazIDEIntf, PackageIntf, IDEHelpIntf, IDEImagesIntf,
IDEWindowIntf, ProjectIntf,
@ -417,6 +418,8 @@ type
procedure CopyToClipboard; override;
procedure CutToClipboard; override;
procedure ExportAsHtml(AFileName: String);
// context help
procedure FindHelpForSourceAtCursor;
@ -3663,6 +3666,20 @@ begin
FEditor.CutToClipboard;
end;
procedure TSourceEditor.ExportAsHtml(AFileName: String);
var
Html: TSynExporterHTML;
begin
Html := TSynExporterHTML.Create(nil);
Html.Clear;
Html.ExportAsText := True;
Html.Highlighter := FEditor.Highlighter;
Html.Title := PageName;
Html.ExportAll(FEditor.Lines);
Html.SaveToFile(AFileName);
Html.Free;
end;
procedure TSourceEditor.FindHelpForSourceAtCursor;
begin
//DebugLn('TSourceEditor.FindHelpForSourceAtCursor A');