📄 synuniformatnativexml15.pas
字号:
{
@abstract(Provides Old Format 1.5 highlighters import)
@authors(Vitalik [just_vitalik@yahoo.com])
@created(2005)
@lastmod(2006-07-23)
}
{$IFNDEF QSynUniFormatNativeXml15}
unit SynUniFormatNativeXml15;
{$ENDIF}
{$I SynUniHighlighter.inc}
interface
uses
{$IFDEF SYN_CLX}
QClasses,
QGraphics,
QSynUniFormat,
QSynUniClasses,
QSynUniRules,
QSynUniHighlighter
{$ELSE}
Classes,
Graphics,
{$IFDEF SYN_COMPILER_6_UP}
Variants,
{$ENDIF}
SynUniFormat,
SynUniFormatNativeXml,
SynUniClasses,
SynUniRules,
SynUniHighlighter,
{$ENDIF}
SysUtils,
Dialogs,
{XMLIntf; } // DW
SimpleXML;
type
TSynUniFormatNativeXml15 = class(TSynUniFormatNativeXml)
class function ImportInfo(AInfo: TSynInfo; ANode: IXMLNode): Boolean; override;
class function ExportInfo(AInfo: TSynInfo; ANode: IXMLNode): Boolean; override;
class function ImportEditorProperties(AEditorProperties: TEditorProperties; ANode: IXMLNode): Boolean; override;
class function ExportEditorProperties(AEditorProperties: TEditorProperties; ANode: IXMLNode): Boolean; override;
class function ImportAttributes(Attributes: TSynAttributes; ANode: IXMLNode): Boolean; override;
class function ExportAttributes(Attributes: TSynAttributes; ANode: IXMLNode): Boolean; override;
class function ImportSchemes(ASchemes: TSynUniSchemes; ANode: IXMLNode): Boolean; override;
class function ExportSchemes(ASchemes: TSynUniSchemes; ANode: IXMLNode): Boolean; override;
class function ImportToken(AToken: TSynMultiToken; ANode: IXMLNode; Kind: string = ''): Boolean;
class function ExportToken(AToken: TSynMultiToken; ANode: IXMLNode; Kind: string = ''): Boolean;
class function ImportKeyList(AKeyList: TSynKeyList; ANode: IXMLNode): Boolean; override;
class function ExportKeyList(AKeyList: TSynKeyList; ANode: IXMLNode): Boolean; override;
class function ImportSet(ASet: TSynSet; ANode: IXMLNode): Boolean; override;
class function ExportSet(ASet: TSynSet; ANode: IXMLNode): Boolean; override;
class function ImportRange(ARange: TSynRange; ANode: IXMLNode): Boolean; override;
class function ExportRange(ARange: TSynRange; ANode: IXMLNode): Boolean; override;
class function ImportHighlighter(SynUniSyn: TSynUniSyn; ANode: IXMLNode): Boolean; override;
class function ExportHighlighter(SynUniSyn: TSynUniSyn; ANode: IXMLNode): Boolean; override;
class function ImportFromStream(AObject: TObject; AStream: TStream): Boolean; override;
class function ExportToStream(AObject: TObject; AStream: TStream): Boolean; override;
class function ImportFromFile(AObject: TObject; AFileName: string): Boolean; override;
class function ExportToFile(AObject: TObject; AFileName: string): Boolean; override;
end;
implementation
{$IFNDEF SYN_COMPILER_7_UP}
function StrToBoolDef(const S: string; const Default: Boolean): Boolean;
begin
if (S = 'True') or (S = '1') or (S = '-1') then
Result := True
else if (S = 'False') or (S = '0') then
Result := False
else
Result := Default;
end;
{$ENDIF}
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ImportInfo(AInfo: TSynInfo; ANode: IXMLNode): Boolean;
var
i: integer;
begin
with ANode, AInfo do
begin
with EnsureChild('General'), General do
begin
Name := EnsureChild('Name').Text;
Extensions := EnsureChild('FileTypeName').Text;
EnsureChild('Layout').Text;
end;
with EnsureChild('Author'), Author do
begin
Name := EnsureChild('Name').Text;
Email := EnsureChild('Email').Text;
Web := EnsureChild('Web').Text;
Copyright := EnsureChild('Copyright').Text;
Company := EnsureChild('Company').Text;
Remark := EnsureChild('Remark').Text;
end;
with EnsureChild('Version'), General do
begin
Version := StrToInt(EnsureChild('Version').Text);
Revision := StrToInt(EnsureChild('Revision').Text);
EnsureChild('Date').Text;
EnsureChild('Type').Text;
end;
with EnsureChild('Sample'), General do
for i := 0 to ChildNodes.Count-1 do
Sample := Sample + ChildNodes[i].Text + #13#10;
with EnsureChild('History'), General do
for i := 0 to ChildNodes.Count-1 do
History := History + ChildNodes[i].Text + #13#10;
end;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ExportInfo(AInfo: TSynInfo; ANode: IXMLNode): Boolean;
var
i: Integer;
Buffer: TStringList;
Node: IXMLNode;
begin
with AInfo, ANode do
begin
with General, AppendElement('General') do
begin
AppendElement('Name').Text := Name;
AppendElement('FileTypeName').Text := Extensions;
end;
with Author, AppendElement('Author') do
begin
AppendElement('Name').Text := Name;
AppendElement('Email').Text := Email;
AppendElement('Web').Text := Web;
AppendElement('Copyright').Text := Copyright;
AppendElement('Company').Text := Company;
AppendElement('Remark').Text := Remark;
end;
with General, AppendElement('Version') do
begin
AppendElement('Version').Text := IntToStr(Version);
AppendElement('Revision').Text := IntToStr(Revision);
end;
Buffer := TStringList.Create();
with General, AppendElement('History') do
begin
Text := #13#10;
Buffer.Text := History;
for i := 0 to Buffer.Count-1 do
begin
Node := AppendElement('H');
Node.Text := Buffer[i];
end;
end;
with General, AppendElement('Sample') do
begin
Text := ' ';
Buffer.Text := Sample;
for i := 0 to Buffer.Count-1 do
begin
Node := AppendElement('S');
Node.Text := Buffer[i];
end;
end;
FreeAndNil(Buffer);
end;
Result := True;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ImportEditorProperties(AEditorProperties:
TEditorProperties; ANode: IXMLNode): Boolean;
begin
// 纛痨囹 礤 镱滗屦骅忄弪
Result := True;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ExportEditorProperties(AEditorProperties:
TEditorProperties; ANode: IXMLNode): Boolean;
begin
// 纛痨囹 礤 镱滗屦骅忄弪
Result := True;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ImportAttributes(Attributes: TSynAttributes;
ANode: IXMLNode): Boolean;
begin
with Attributes, ANode do begin
if EnsureChild('Fore').Text <> '' then
Foreground := StringToColor(EnsureChild('Fore').Text);
if EnsureChild('Back').Text <> '' then
Background := StringToColor(EnsureChild('Back').Text);
Style := StrToFontStyle(EnsureChild('Style').Text);
ParentForeground := StrToBoolDef(EnsureChild('ParentForeground').Text, False);
ParentBackground := StrToBoolDef(EnsureChild('ParentBackground').Text, False);
end;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ExportAttributes(Attributes: TSynAttributes;
ANode: IXMLNode): Boolean;
begin
with Attributes, ANode do
begin
AppendElement('Back').Text := IntToStr(Background);
AppendElement('Fore').Text := IntToStr(Foreground);
AppendElement('Style').Text := FontStyleToStr(Style);
AppendElement('ParentForeground').Text := BoolToStr(ParentForeground,True);
AppendElement('ParentBackground').Text := BoolToStr(ParentBackground,True);
end;
Result := True;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ImportSchemes(ASchemes: TSynUniSchemes; ANode: IXMLNode): Boolean;
begin
//TODO: Add implementation here
Result := True;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ExportSchemes(ASchemes: TSynUniSchemes; ANode: IXMLNode): Boolean;
begin
ANode.AppendElement('S').Text := 'Default';
Result := True;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ImportKeyList(AKeyList: TSynKeyList; ANode: IXMLNode): Boolean;
var
i: integer;
begin
with AKeyList, ANode do begin
Name := VarToStr(GetVarAttr('Name',''));
ImportAttributes(AKeyList.Attributes, ChildNodes[0{%SchemeIndex}]); //TODO: 锐镳噔栩? //???Enabled := StrToBoolDef(EnsureChild('Enabled').Text, True);
for i := 0 to ChildNodes.Count-1 do
if ChildNodes[i].NodeName = 'W' then
KeyList.Add(ChildNodes[i].Text);
end;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ExportKeyList(AKeyList: TSynKeyList; ANode: IXMLNode): Boolean;
var
i: Integer;
Buffer: TStringList;
Node: IXMLNode;
begin
with AKeyList, ANode do
begin
SetVarAttr('Name',Name);
ExportAttributes(AKeyList.Attributes, AppendElement('Attri'));
//???AppendElement('Enabled').Text := BoolToStr(Enabled, True);
Buffer := TStringList.Create();
Buffer.Text := KeyList.Text;
for i := 0 to Buffer.Count-1 do
AppendElement('W').Text := Buffer[i];
FreeAndNil(Buffer);
end;
Result := True;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ImportSet(ASet: TSynSet; ANode: IXMLNode): Boolean;
begin
with ASet, ANode do begin
Name := VarToStr(GetVarAttr('Name',''));
ImportAttributes(ASet.Attributes, ChildNodes[0{%SchemeIndex}]); //TODO: 锐镳噔栩? //???Enabled := StrToBoolDef(EnsureChild('Enabled').Text, True);
CharSet := StrToSet(EnsureChild('S').Text);
end;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ExportSet(ASet: TSynSet; ANode: IXMLNode): Boolean;
begin
with ASet, ANode do
begin
SetVarAttr('Name', Name);
ExportAttributes(ASet.Attributes, AppendElement('Attri'));
//???AppendElement('Enabled').Text := BoolToStr(Enabled, True);
AppendElement('S').Text := SetToStr(CharSet);
end;
Result := True;
end;
class function TSynUniFormatNativeXml15.ImportToken(AToken: TSynMultiToken; ANode: IXMLNode; Kind: string): Boolean;
begin
with AToken, ANode do begin
FinishOnEol := StrToBoolDef(EnsureChild(Kind+'FinishOnEol').Text, False);
StartLine := StrToStartLine(EnsureChild(Kind+'StartLine').Text);
StartType := StrToStartType(EnsureChild(Kind+'PartOfTerm').Text);
BreakType := StrToBreakType(EnsureChild(Kind+'PartOfTerm').Text);
end;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ExportToken(AToken: TSynMultiToken; ANode: IXMLNode; Kind: string = ''): Boolean;
begin
with AToken, ANode do
begin
end;
Result := True;
end;
//----------------------------------------------------------------------------
class function TSynUniFormatNativeXml15.ImportRange(ARange: TSynRange; ANode: IXMLNode): Boolean;
var
i: integer;
NewRange: TSynRange;
NewKeyList: TSynKeyList;
NewSet: TSynSet;
begin
with ARange, ANode do begin
Name := VarToStr(GetVarAttr('Name',''));
//TODO: 唁咫囹?聍栩
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -