source: trunk/Forms/FormTargetCode.pas

Last change on this file was 145, checked in by chronos, 11 months ago
  • Modified: Remove U prefix from unit names.
  • Modified: Updated Common package.
File size: 2.8 KB
Line 
1unit FormTargetCode;
2
3interface
4
5uses
6 Classes, SysUtils, FileUtil, SynEdit, SynHighlighterAny, SynHighlighterPas,
7 SynHighlighterCpp, SynHighlighterPHP, SynHighlighterJava,
8 SynHighlighterPython, SynHighlighterJScript, Forms, Controls, Graphics,
9 Dialogs, Menus, ActnList, strutils;
10
11type
12
13 { TFormTargetCode }
14
15 TFormTargetCode = class(TForm)
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 FormCreate(Sender: TObject);
26 public
27 procedure SetHighlighter(SourceExt: string);
28 end;
29
30
31implementation
32
33{$R *.lfm}
34
35uses
36 Core;
37
38{ TFormTargetCode }
39
40procedure TFormTargetCode.AFormatCodeExecute(Sender: TObject);
41var
42 Source: string;
43 NewSource: string;
44 Indent: Integer;
45 I: Integer;
46const
47 IndentText = ' ';
48begin
49 Source := SynEditTarget.Text;
50 NewSource := '';
51 Indent := 0;
52 for I := 1 to Length(Source) do begin
53 if Source[I] = '[' then begin
54 NewSource := NewSource + LineEnding + DupeString(IndentText, Indent) + Source[I] + LineEnding ;
55 Inc(Indent);
56 NewSource := NewSource + DupeString(IndentText, Indent);
57 end
58 else if Source[I] = ']' then begin
59 Dec(Indent);
60 NewSource := NewSource + LineEnding + DupeString(IndentText, Indent) + Source[I] + LineEnding + DupeString(IndentText, Indent);
61 end
62 else if Ord(Source[I]) > $20 then
63 NewSource := NewSource + Source[I];
64 end;
65 SynEditTarget.Text := NewSource;
66end;
67
68procedure TFormTargetCode.AShrinkCodeExecute(Sender: TObject);
69var
70 Source: string;
71 Pos: Integer;
72 I: Integer;
73begin
74 Source := SynEditTarget.Text;
75 Pos := 1;
76 for I := 1 to Length(Source) do begin
77 if Source[I] > ' ' then begin
78 Source[Pos] := Source[I];
79 Inc(Pos);
80 end;
81 end;
82 SetLength(Source, Pos - 1);
83 SynEditTarget.Text := Source;
84end;
85
86procedure TFormTargetCode.FormCreate(Sender: TObject);
87begin
88 Core.Core.Translator.TranslateComponentRecursive(Self);
89 Core.Core.ThemeManager.UseTheme(Self);
90end;
91
92procedure TFormTargetCode.SetHighlighter(SourceExt: string);
93begin
94 if Assigned(SynEditTarget.Highlighter) then
95 SynEditTarget.Highlighter.Free;
96 if SourceExt = '.pas' then SynEditTarget.Highlighter := TSynPasSyn.Create(nil)
97 else if SourceExt = '.c' then SynEditTarget.Highlighter := TSynCppSyn.Create(nil)
98 else if SourceExt = '.php' then SynEditTarget.Highlighter := TSynPhpSyn.Create(nil)
99 else if SourceExt = '.java' then SynEditTarget.Highlighter := TSynJavaSyn.Create(nil)
100 else if SourceExt = '.py' then SynEditTarget.Highlighter := TSynPythonSyn.Create(nil)
101 else if SourceExt = '.js' then SynEditTarget.Highlighter := TSynJScriptSyn.Create(nil);
102end;
103
104end.
105
Note: See TracBrowser for help on using the repository browser.