📄 synunidesignerform.pas
字号:
Label16: TLabel;
lbFormatVersion: TLabel;
tabInfo: TTabSheet;
tabStyles: TTabSheet;
Label3: TLabel;
Label5: TLabel;
edStylesFile: TEdit;
btStylesFile: TButton;
ComboBox2: TComboBox;
Button4: TButton;
GroupBox2: TGroupBox;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
edName: TEdit;
edExtensions: TEdit;
edAuthor: TEdit;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
edEmail: TEdit;
edWeb: TEdit;
edCopyright: TEdit;
edCompany: TEdit;
edRemark: TEdit;
Label26: TLabel;
edVersion: TEdit;
edRevision: TEdit;
udVersion: TUpDown;
udRevision: TUpDown;
Label28: TLabel;
popInfoMenu: TPopupMenu;
frBackColor: TFrameColor;
frForeColor: TFrameColor;
frSelectBackColor: TFrameColor;
frSelectForeColor: TFrameColor;
frActiveLineColor: TFrameColor;
tabCustomData: TTabSheet;
mmCustomData: TMemo;
btAdd: TButton;
btDelete: TButton;
popCustomDataMenu: TPopupMenu;
lbEntryCount: TLabel;
Label17: TLabel;
rb15: TRadioButton;
rb18: TRadioButton;
rb20: TRadioButton;
tabSkipRegion: TTabSheet;
SREdit2: TEdit;
SREdit3: TEdit;
SREdit4: TEdit;
Label27: TLabel;
Label29: TLabel;
Label30: TLabel;
Label31: TLabel;
Label32: TLabel;
SRComboBox1: TComboBox;
MenuItem13: TMenuItem;
Button5: TButton;
PopSkipRegionMenu: TPopupMenu;
MenuItem6: TMenuItem;
MenuItem9: TMenuItem;
//============================ M E T O D S ===================================
//=== Form events ============================================================
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); //SCHMaster 2004
//=== TreeView ===============================================================
procedure TreeEdited(Sender: TObject; Node: TTreeNode; var S: String);
procedure TreeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure TreeMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TreeMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TreeChange(Sender: TObject; Node: TTreeNode);
//=== Fill Tree with Rules ===================================================
procedure FillTree();
procedure SetNodeData(ANode: TTreeNode; AObject: TObject; Root: Boolean = False);
function TreeAddRule(ParentNode: TTreeNode; Rule: TSynRule;
AddKind: TAddKind = akAdd): TTreeNode;
{###function TreeAddRangeLink(Node: TTreeNode; RangeLink: TSynRangeLink;
AddKind: TAddKind = akAdd): TTreeNode;}
function TreeAddRange(Node: TTreeNode; Range: TSynRange;
AddKind: TAddKind = akAdd): TTreeNode;
function TreeAddKeyList(Node: TTreeNode; Keyword: TSynKeyList;
AddKind: TAddKind = akAdd): TTreeNode;
function TreeAddSet(Node: TTreeNode; SymbSet: TSynSet;
AddKind: TAddKind = akAdd): TTreeNode;
{$IFDEF CODEFOLDING}
function TreeAddSkipRegions(ANode: TTreeNode;
ASkipRegions: TSkipRegions): TTreeNode;
function TreeAddFoldRegions(ANode: TTreeNode; AFoldRegions: TFoldRegions;
AddKind: TAddKind = akAdd): TTreeNode;
function TreeAddFoldRegion(ANode: TTreeNode; AFoldRegion: TFoldRegionItem;
AddKind: TAddKind = akAdd): TTreeNode;
{$ENDIF}
//=== Adding RangeLink =======================================================
procedure DoAddRangeLinkToRoot(Sender: TObject);
procedure DoAddRangeLink(Sender: TObject);
//###procedure AddingRangeLink(ParentNode: TTreeNode);
//=== Adding Range ===========================================================
procedure DoAddRangeToRoot(Sender: TObject);
procedure DoAddRange(Sender: TObject);
procedure AddingRange(ParentNode: TTreeNode);
//=== Adding KeyList =========================================================
procedure DoAddKeywordToRoot(Sender:TObject);
procedure DoAddKeyword(Sender: TObject);
procedure AddingKeyWord(ParentNode: TTreeNode);
//=== Adding Set =============================================================
procedure DoAddSetToRoot(Sender:TObject);
procedure DoAddSet(Sender: TObject);
procedure AddingSet(ParentNode: TTreeNode);
//=== Adding Fold Region =====================================================
procedure DoAddFoldRegion(Sender: TObject);
{$IFDEF CODEFOLDING}
procedure AddingFoldRegion(ParentNode: TTreeNode);
procedure AddingSkipRegion(ParentNode: TTreeNode);
{$ENDIF}
//=== Delete and Rename Rules ================================================
procedure DoDeleteNode(Sender: TObject);
procedure DeleteNode(Node: TTreeNode; OnlyChilds: Boolean = False);
procedure DoRenameNode(Sender: TObject);
//=== Useful functions... ====================================================
function GetNodeType(Node: TTreeNode): TNodeType;
procedure TotalUpdate();
procedure Modified(State: Boolean = True);
//=== KeyList Tools ==========================================================
procedure btSort_oldClick(Sender: TObject);
procedure btLowerCase_oldClick(Sender: TObject);
procedure btSpacesToEol_oldClick(Sender: TObject);
//=== Finish buttons =========================================================
procedure btOkClick(Sender: TObject);
procedure btCancelClick(Sender: TObject);
procedure btApplyClick(Sender: TObject);
//=== Work with schemes ======================================================
{ procedure btNewSchemeClick(Sender: TObject);
procedure btDelSchemeClick(Sender: TObject);
procedure cbSchemeChange(Sender: TObject);
procedure cbSchemeSelect(Sender: TObject);}
//=== Rules changed ==========================================================
procedure InfoChange(Sender: TObject);
procedure VersionChange(Sender: TObject);
procedure CustomDataChange(Sender: TObject);
procedure RootChange(Sender: TObject);
procedure RangeChange(Sender: TObject);
procedure KeywordsChange(Sender: TObject);
procedure SetChange(Sender: TObject);
procedure FoldRegionChange(Sender: TObject);
//=== Wotk with Attributes ===================================================
procedure AttributesChanged(Sender: TObject);
procedure SetDefaultAttributes(Node: TTreeNode);
procedure SetControlAttributes(Node: TTreeNode; AlreadyUpdate: Boolean = False);
procedure SetAttributes(Node: TTreeNode);
//============================ D E S I G N ===================================
//=== Splitter CanResize =====================================================
procedure SplitterBottomCanResize(Sender: TObject;
var NewSize: Integer; var Accept: Boolean);
procedure SplitterCannotResize(Sender: TObject;
var NewSize: Integer; var Accept: Boolean);
//=== Label Mouse Leave/Enter ================================================
procedure LabelMouseLeave(Sender: TObject);
procedure LabelMouseEnter(Sender: TObject);
procedure LabelContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
//=== CheckBox ===============================================================
procedure CheckBoxMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure DontNeedContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
//=== Show/Hide panels =======================================================
procedure ShowHideTree(Sender: TObject);
procedure ShowHideProp(Sender: TObject);
procedure ShowHideAttr(Sender: TObject);
procedure ShowHideSamp(Sender: TObject);
procedure PanelDblClick(Sender: TObject);
//=== Middle panel Resize ====================================================
procedure pMiddleResize(Sender: TObject);
//=== Push label clicks ======================================================
procedure lbPropBackClick(Sender: TObject);
procedure lbRootMenuClick(Sender: TObject);
procedure lbRuleMenuClick(Sender: TObject);
procedure lbSampMaxClick(Sender: TObject);
//procedure lbSampRestoreClick(Sender: TObject);
procedure lbSampMinClick(Sender: TObject);
//============================ P O P U P S ===================================
//=== Standard PopupMenu =====================================================
procedure SetPopupMenuEnables(Edit: TCustomEdit; popMenu: TPopupMenu);
procedure EditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure EditContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
procedure popCopyClick(Sender: TObject);
procedure popUndoClick(Sender: TObject);
procedure popCutClick(Sender: TObject);
procedure popPasteClick(Sender: TObject);
procedure popDeleteClick(Sender: TObject);
procedure popSelectAllClick(Sender: TObject);
//=== Sample Memo PopupMenu ==================================================
procedure SetPopupMenuEnables2(Edit: TCustomSynEdit; popMenu: TPopupMenu);
procedure SampleMemoKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure SampleMemoMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Undo1Click(Sender: TObject);
procedure Cut1Click(Sender: TObject);
procedure Copy1Click(Sender: TObject);
procedure Paste1Click(Sender: TObject);
procedure Delete1Click(Sender: TObject);
procedure SelectAll1Click(Sender: TObject);
procedure AddselectedtoKeywords1Click(Sender: TObject);
procedure popSampleMemoMenuPopup(Sender: TObject);
//=== Tag Menu Clicks... =====================================================
procedure btTagMenuClick(Sender: TObject);
procedure miTagMenuClick(Sender: TObject);
procedure miOpenTagMenuClick(Sender: TObject);
procedure miCloseTagMenuClick(Sender: TObject);
//=== TabSheet showing =======================================================
procedure tabInfoShow(Sender: TObject);
procedure tabCustomDataShow(Sender: TObject);
procedure tabRootShow(Sender: TObject);
procedure tabRangeShow(Sender: TObject);
procedure tabKeywordsShow(Sender: TObject);
procedure tabSetShow(Sender: TObject);
//=== Work with files ========================================================
// procedure LoadFromFileClick(Sender: TObject);
procedure rootSaveToFileClick(Sender: TObject);
procedure rootLoadFromFileClick(Sender: TObject);
procedure rangeLoadFromFileClick(Sender: TObject);
procedure rangeSaveToFileClick(Sender: TObject);
//=== Clipboard ==============================================================
procedure StreamToClipboard(Stream: TStream);
function GetClipboardAsStream: TMemoryStream;
//=== Root range =============================================================
procedure rootCutClick(Sender: TObject);
procedure rootCopyClick(Sender: TObject);
procedure rootPasteInsideClick(Sender: TObject);
procedure rootPasteAndReplaceClick(Sender: TObject);
//=== Other rules ============================================================
procedure rangeCutClick(Sender: TObject);
procedure rangeCopyClick(Sender: TObject);
procedure rangePasteInsideClick(Sender: TObject);
procedure rangePasteAndReplaceClick(Sender: TObject);
procedure rangePasteNextToClick(Sender: TObject);
//=== NOT SORTED =============================================================
procedure rootInfoClick(Sender: TObject);
procedure TreeClick(Sender: TObject);
procedure btStylesFileClick(Sender: TObject);
procedure tabFoldRegionShow(Sender: TObject);
procedure tabFoldRootShow(Sender: TObject);
procedure SampleMemoChange(Sender: TObject);
procedure Addcoupletags1Click(Sender: TObject);
procedure Deletecoupletags1Click(Sender: TObject);
procedure cbWordChange(Sender: TObject);
procedure udQuantityClick(Sender: TObject; Button: TUDBtnType);
procedure lbFormatVersionClick(Sender: TObject);
procedure udVersionClick(Sender: TObject; Button: TUDBtnType);
procedure btAddClick(Sender: TObject);
procedure btDeleteClick(Sender: TObject);
procedure mmCustomDataKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormDestroy(Sender: TObject);
procedure lbEntryCountClick(Sender: TObject);
procedure SREdit3Change(Sender: TObject);
procedure AddSkip1Click(Sender: TObject);
procedure tabSkipRegionShow(Sender: TObject);
private
{ Private declarations }
function GetMultiTagIndex(): Integer;
procedure SetMultiTagIndex(Value: Integer);
property MultiTagIndex: Integer read GetMultiTagIndex write SetMultiTagIndex;
public
{ Public declarations }
{$IFDEF CODEFOLDING}
CodeFoldingNode: TTreeNode;
{$ENDIF}
popPropMenu: TPopupMenu;
OriginalSyn: TSynUniSyn;
ForceClose: Boolean;
UpdatingControls: Boolean;
ShowDialog: Boolean;
_Modified, _Confirm, _DeleteNode, _SaveChanges, _EnterName, _DeleteScheme,
_Lines, _Name, _Extensions, _Version, _Date, _Author, _Mail, _Web,
_Copyright, _Company, _Remark, _FormatVersion: string;
procedure SetAttributesEnable(AState: Boolean); overload;
procedure SetAttributesEnable(AState, AParentState: Boolean); overload;
end;
implementation
{$R *.dfm}
{$IFDEF SYN_CLX}
uses Qt;
const
VK_F1 = Key_F1;
VK_F2 = Key_F2;
VK_RETURN = Key_Return;
VK_DELETE = Key_Delete;
{$ENDIF}
uses SimpleXml;
const
_pTopHeight = 210;
function GetFontStyle(Bold, Italic, Underline, StrikeOut: Boolean): TFontStyles;
begin
Result := [];
if Bold then Result := Result + [fsBold];
if Italic then Result := Result + [fsItalic];
if Underline then Result := Result + [fsUnderline];
if Strikeout then Result := Result + [fsStrikeOut];
end;
(*procedure TSynUniDesigner.DelimDblClick(Sender: TObject);
begin
(Sender as TEdit).Text := Set2String( DefaultTermSymbols );
end;*)
//============================ M E T O D S ===================================
//=== Form events ============================================================
procedure TfmDesigner.FormCreate(Sender: TObject);
var
i: Integer;
procedure AddBitmap(ImageList: TImageList; aColor: TColor; aSize: Integer; aSymbol: string);
var Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create();
with Bitmap, Bitmap.Canvas do begin
Width := 16; Height := 16;
Font.Name := 'Marlett'; Font.Color := aColor;
Font.Size := aSize; TextOut(1, 1, aSymbol);
ImageList.AddMasked(Bitmap, clWhite);
end;
Bitmap.Free;
end;
begin
ForceClose := False;
UpdatingControls := False;
ShowDialog := True;
_DeleteNode := 'Are you sure you want to delete "%s"?';
_SaveChanges := 'Save changes in highlight rools?';
_EnterName := 'Enter Scheme Name:';
_DeleteScheme := 'Delete current color scheme?';
_Modified := 'Modified';
_Confirm := 'Confirm';
_Lines := 'Lines: %d';
_Name := 'Name: %s';
_Extensions := 'Extensions: %s';
_Version := 'Version: %s';
_Date := 'Date: %s';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -