source: trunk/Forms/FormTargetCode.pas@ 181

Last change on this file since 181 was 157, checked in by chronos, 9 months ago
  • Added: Allow to hide main toolbar.
  • Fixed: Update cursor position in status bar.
  • Fixed: Memory leak in target code form.
File size: 2.8 KB
Line 
1unit FormTargetCode;
2
3interface
4
5uses
6 Classes, SysUtils, FileUtil, SynEdit, SynHighlighterAny, SynHighlighterPas,
7 SynHighlighterCpp, SynHighlighterPHP, SynHighlighterJava, FormEx,
8 SynHighlighterPython, SynHighlighterJScript, Forms, Controls, Graphics,
9 Dialogs, Menus, ActnList, strutils;
10
11type
12
13 { TFormTargetCode }
14
15 TFormTargetCode = class(TFormEx)
16 AShrinkCode: TAction;
17 AFormatCode: TAction;
18 ActionList1: TActionList;
19 MenuItem1: TMenuItem;
20 MenuItem20: TMenuItem;
21 PopupMenuTarget: TPopupMenu;
22 SynEditTarget: TSynEdit;
23 procedure AFormatCodeExecute(Sender: TObject);
24 procedure AShrinkCodeExecute(Sender: TObject);
25 procedure FormDestroy(Sender: TObject);
26 public
27 procedure SetHighlighter(SourceExt: string);
28 end;
29
30
31implementation
32
33{$R *.lfm}
34
35{ TFormTargetCode }
36
37procedure TFormTargetCode.AFormatCodeExecute(Sender: TObject);
38var
39 Source: string;
40 NewSource: string;
41 Indent: Integer;
42 I: Integer;
43const
44 IndentText = ' ';
45begin
46 Source := SynEditTarget.Text;
47 NewSource := '';
48 Indent := 0;
49 for I := 1 to Length(Source) do begin
50 if Source[I] = '[' then begin
51 NewSource := NewSource + LineEnding + DupeString(IndentText, Indent) + Source[I] + LineEnding ;
52 Inc(Indent);
53 NewSource := NewSource + DupeString(IndentText, Indent);
54 end
55 else if Source[I] = ']' then begin
56 Dec(Indent);
57 NewSource := NewSource + LineEnding + DupeString(IndentText, Indent) + Source[I] + LineEnding + DupeString(IndentText, Indent);
58 end
59 else if Ord(Source[I]) > $20 then
60 NewSource := NewSource + Source[I];
61 end;
62 SynEditTarget.Text := NewSource;
63end;
64
65procedure TFormTargetCode.AShrinkCodeExecute(Sender: TObject);
66var
67 Source: string;
68 Pos: Integer;
69 I: Integer;
70begin
71 Source := SynEditTarget.Text;
72 Pos := 1;
73 for I := 1 to Length(Source) do begin
74 if Source[I] > ' ' then begin
75 Source[Pos] := Source[I];
76 Inc(Pos);
77 end;
78 end;
79 SetLength(Source, Pos - 1);
80 SynEditTarget.Text := Source;
81end;
82
83procedure TFormTargetCode.FormDestroy(Sender: TObject);
84begin
85 if Assigned(SynEditTarget.Highlighter) then
86 SynEditTarget.Highlighter.Free;
87end;
88
89procedure TFormTargetCode.SetHighlighter(SourceExt: string);
90begin
91 if Assigned(SynEditTarget.Highlighter) then
92 SynEditTarget.Highlighter.Free;
93 if SourceExt = '.pas' then SynEditTarget.Highlighter := TSynPasSyn.Create(nil)
94 else if SourceExt = '.c' then SynEditTarget.Highlighter := TSynCppSyn.Create(nil)
95 else if SourceExt = '.php' then SynEditTarget.Highlighter := TSynPhpSyn.Create(nil)
96 else if SourceExt = '.java' then SynEditTarget.Highlighter := TSynJavaSyn.Create(nil)
97 else if SourceExt = '.py' then SynEditTarget.Highlighter := TSynPythonSyn.Create(nil)
98 else if SourceExt = '.js' then SynEditTarget.Highlighter := TSynJScriptSyn.Create(nil);
99end;
100
101end.
102
Note: See TracBrowser for help on using the repository browser.