⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 synunidesignerform.pas

📁 SynEditStudio delphi 代码编辑器
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    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 + -