source: trunk/Forms/FormSourceCode.pas

Last change on this file was 147, checked in by chronos, 11 months ago
  • Modified: Code cleanup.
File size: 5.8 KB
Line 
1unit FormSourceCode;
2
3interface
4
5uses
6 Classes, SysUtils, FileUtil, SynEdit, SynHighlighterIni, Forms, Controls,
7 Graphics, Dialogs, Menus, ActnList,
8 SynEditHighlighter, SynHighlighterAny, SynHighlighterJava, BFHighlighter;
9
10type
11
12 { TFormSourceCode }
13
14 TFormSourceCode = class(TForm)
15 AGenerateText: TAction;
16 ACutToClipboard: TAction;
17 ASelectAll: TAction;
18 APasteFromClipboard: TAction;
19 ACopyToClipboard: TAction;
20 AClear: TAction;
21 AFormatSource: TAction;
22 AShrinkSource: TAction;
23 AGenerateNumber: TAction;
24 ActionList1: TActionList;
25 MenuItem1: TMenuItem;
26 MenuItem2: TMenuItem;
27 MenuItem21: TMenuItem;
28 MenuItem23: TMenuItem;
29 MenuItem26: TMenuItem;
30 MenuItem29: TMenuItem;
31 MenuItem3: TMenuItem;
32 MenuItem36: TMenuItem;
33 MenuItem4: TMenuItem;
34 MenuItem5: TMenuItem;
35 MenuItem6: TMenuItem;
36 MenuItem7: TMenuItem;
37 Separator1: TMenuItem;
38 PopupMenuSource: TPopupMenu;
39 SynEditSource: TSynEdit;
40 SynJavaSyn1: TSynJavaSyn;
41 procedure AClearExecute(Sender: TObject);
42 procedure ACopyToClipboardExecute(Sender: TObject);
43 procedure ACutToClipboardExecute(Sender: TObject);
44 procedure AFormatSourceExecute(Sender: TObject);
45 procedure AGenerateNumberExecute(Sender: TObject);
46 procedure AGenerateTextExecute(Sender: TObject);
47 procedure APasteFromClipboardExecute(Sender: TObject);
48 procedure ASelectAllExecute(Sender: TObject);
49 procedure AShrinkSourceExecute(Sender: TObject);
50 procedure FormCreate(Sender: TObject);
51 procedure FormDestroy(Sender: TObject);
52 procedure MemoSourceChange(Sender: TObject);
53 procedure MemoSourceKeyDown(Sender: TObject; var Key: Word;
54 Shift: TShiftState);
55 procedure MemoSourceKeyPress(Sender: TObject; var Key: char);
56 procedure MemoSourceKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState
57 );
58 procedure MemoSourceMouseDown(Sender: TObject; Button: TMouseButton;
59 Shift: TShiftState; X, Y: Integer);
60 private
61 BFHighlighter: TSynBrainFuckHl;
62 FOnUpdateInterface: TNotifyEvent;
63 FOnUpdateStatusBar: TNotifyEvent;
64 public
65 procedure UpdateInterface;
66 procedure UpdateTheme;
67 property OnUpdateStatusBar: TNotifyEvent read FOnUpdateStatusBar
68 write FOnUpdateStatusBar;
69 property OnUpdateInterface: TNotifyEvent read FOnUpdateInterface
70 write FOnUpdateInterface;
71 end;
72
73
74implementation
75
76{$R *.lfm}
77
78uses
79 Core, BFCodeTools;
80
81resourcestring
82 SNumberGeneration = 'Number generation';
83 SEnterNumber = 'Enter number';
84 STextGeneration = 'Text generation';
85 SEnterText = 'Enter text';
86
87{ TFormSourceCode }
88
89procedure TFormSourceCode.AGenerateNumberExecute(Sender: TObject);
90var
91 Number: Integer;
92 NumberText: string;
93begin
94 NumberText := InputBox(SNumberGeneration, SEnterNumber, '1');
95 if TryStrToInt(NumberText, Number) then begin
96 SynEditSource.SelText := GenerateNumber(Number);
97 end;
98end;
99
100procedure TFormSourceCode.AGenerateTextExecute(Sender: TObject);
101var
102 Text: string;
103begin
104 Text := InputBox(STextGeneration, SEnterText, '');
105 SynEditSource.SelText := GenerateText(Text);
106end;
107
108procedure TFormSourceCode.APasteFromClipboardExecute(Sender: TObject);
109begin
110 SynEditSource.PasteFromClipboard;
111end;
112
113procedure TFormSourceCode.ASelectAllExecute(Sender: TObject);
114begin
115 SynEditSource.SelectAll;
116end;
117
118procedure TFormSourceCode.AFormatSourceExecute(Sender: TObject);
119begin
120 SynEditSource.Text := FormatCode(SynEditSource.Text);
121 MemoSourceChange(nil);
122end;
123
124procedure TFormSourceCode.ACopyToClipboardExecute(Sender: TObject);
125begin
126 SynEditSource.CopyToClipboard;
127end;
128
129procedure TFormSourceCode.ACutToClipboardExecute(Sender: TObject);
130begin
131 SynEditSource.CutToClipboard;
132end;
133
134procedure TFormSourceCode.AClearExecute(Sender: TObject);
135begin
136 SynEditSource.Clear;
137end;
138
139procedure TFormSourceCode.AShrinkSourceExecute(Sender: TObject);
140begin
141 SynEditSource.Text := ShrinkCode(SynEditSource.Text);
142 MemoSourceChange(nil);
143end;
144
145procedure TFormSourceCode.FormCreate(Sender: TObject);
146begin
147 Core.Core.Translator.TranslateComponentRecursive(Self);
148 Core.Core.ThemeManager.UseTheme(Self);
149
150 BFHighlighter := TSynBrainFuckHl.Create(nil);
151 SynEditSource.Highlighter := BFHighlighter;
152end;
153
154procedure TFormSourceCode.FormDestroy(Sender: TObject);
155begin
156 SynEditSource.Highlighter := nil;
157 FreeAndNil(BFHighlighter);
158end;
159
160procedure TFormSourceCode.UpdateInterface;
161begin
162end;
163
164procedure TFormSourceCode.UpdateTheme;
165const
166 clLightBlue = TColor($FF8080);
167 clLightGreen = TColor($80FF80);
168 clLightRed = TColor($8080FF);
169begin
170 if Core.Core.ThemeManager.Theme.Name = 'Dark' then begin
171 BFHighlighter.IoAttri.Foreground := clWhite;
172 BFHighlighter.LoopAttri.Foreground := clLightRed;
173 BFHighlighter.PointerAttri.Foreground := clLightBlue;
174 BFHighlighter.MemoryAttri.Foreground := clLightGreen;
175 end else begin
176 BFHighlighter.IoAttri.Foreground := clBlack;
177 BFHighlighter.LoopAttri.Foreground := clRed;
178 BFHighlighter.PointerAttri.Foreground := clBlue;
179 BFHighlighter.MemoryAttri.Foreground := clGreen;
180 end;
181end;
182
183procedure TFormSourceCode.MemoSourceChange(Sender: TObject);
184begin
185 Core.Core.Project.Modified := True;
186 Core.Core.CurrentTarget.Compiled := False;
187 if Assigned(FOnUpdateInterface) then
188 OnUpdateInterface(Self);
189end;
190
191procedure TFormSourceCode.MemoSourceKeyDown(Sender: TObject; var Key: Word;
192 Shift: TShiftState);
193begin
194end;
195
196procedure TFormSourceCode.MemoSourceKeyPress(Sender: TObject; var Key: char);
197begin
198end;
199
200procedure TFormSourceCode.MemoSourceKeyUp(Sender: TObject; var Key: Word;
201 Shift: TShiftState);
202begin
203 if Assigned(FOnUpdateStatusBar) then
204 FOnUpdateStatusBar(Self);
205end;
206
207procedure TFormSourceCode.MemoSourceMouseDown(Sender: TObject; Button: TMouseButton;
208 Shift: TShiftState; X, Y: Integer);
209begin
210 if Assigned(FOnUpdateStatusBar) then
211 FOnUpdateStatusBar(Self);
212end;
213
214end.
215
Note: See TracBrowser for help on using the repository browser.