`
22 | ~~Strike~~
23 | ++Ins++
24 | Subscript~text~
25 | Superscript^text^
26 | ==Mark==
27 |
28 | Tables
29 | ------
30 | | First Header | Second Header | Third Header |
31 | | :----------- | :-----------: | -----------: |
32 | | Left | Center | Right |
33 | | Second row | **strong** | *italic* |
34 |
35 | Formulas
36 | --------
37 | It is possible to use the [Google Chart API] using `TeX` language,
38 | but the translated formula can only to be seen using a browser,
39 | for insert a formula using `TeX` enclose the code between `$`
40 | without `spaces`:
41 |
42 | Quadratic formula |Zeta formula
43 | ---------------------------|-----------------------------
44 | $x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$ | $\zeta(s)=\sum_{n=1}^\infty\frac{1}{n^s}$
45 |
46 | [Google Chart API]:https://developers.google.com/chart/infographics/docs/formulas
47 |
48 |
49 |
--------------------------------------------------------------------------------
/mdEditor.lpi:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Mozilla Public License Version 2.0
2 | ==================================
3 |
4 | 1. Definitions
5 | --------------
6 |
7 | 1.1. "Contributor"
8 | means each individual or legal entity that creates, contributes to
9 | the creation of, or owns Covered Software.
10 |
11 | 1.2. "Contributor Version"
12 | means the combination of the Contributions of others (if any) used
13 | by a Contributor and that particular Contributor's Contribution.
14 |
15 | 1.3. "Contribution"
16 | means Covered Software of a particular Contributor.
17 |
18 | 1.4. "Covered Software"
19 | means Source Code Form to which the initial Contributor has attached
20 | the notice in Exhibit A, the Executable Form of such Source Code
21 | Form, and Modifications of such Source Code Form, in each case
22 | including portions thereof.
23 |
24 | 1.5. "Incompatible With Secondary Licenses"
25 | means
26 |
27 | (a) that the initial Contributor has attached the notice described
28 | in Exhibit B to the Covered Software; or
29 |
30 | (b) that the Covered Software was made available under the terms of
31 | version 1.1 or earlier of the License, but not also under the
32 | terms of a Secondary License.
33 |
34 | 1.6. "Executable Form"
35 | means any form of the work other than Source Code Form.
36 |
37 | 1.7. "Larger Work"
38 | means a work that combines Covered Software with other material, in
39 | a separate file or files, that is not Covered Software.
40 |
41 | 1.8. "License"
42 | means this document.
43 |
44 | 1.9. "Licensable"
45 | means having the right to grant, to the maximum extent possible,
46 | whether at the time of the initial grant or subsequently, any and
47 | all of the rights conveyed by this License.
48 |
49 | 1.10. "Modifications"
50 | means any of the following:
51 |
52 | (a) any file in Source Code Form that results from an addition to,
53 | deletion from, or modification of the contents of Covered
54 | Software; or
55 |
56 | (b) any new file in Source Code Form that contains any Covered
57 | Software.
58 |
59 | 1.11. "Patent Claims" of a Contributor
60 | means any patent claim(s), including without limitation, method,
61 | process, and apparatus claims, in any patent Licensable by such
62 | Contributor that would be infringed, but for the grant of the
63 | License, by the making, using, selling, offering for sale, having
64 | made, import, or transfer of either its Contributions or its
65 | Contributor Version.
66 |
67 | 1.12. "Secondary License"
68 | means either the GNU General Public License, Version 2.0, the GNU
69 | Lesser General Public License, Version 2.1, the GNU Affero General
70 | Public License, Version 3.0, or any later versions of those
71 | licenses.
72 |
73 | 1.13. "Source Code Form"
74 | means the form of the work preferred for making modifications.
75 |
76 | 1.14. "You" (or "Your")
77 | means an individual or a legal entity exercising rights under this
78 | License. For legal entities, "You" includes any entity that
79 | controls, is controlled by, or is under common control with You. For
80 | purposes of this definition, "control" means (a) the power, direct
81 | or indirect, to cause the direction or management of such entity,
82 | whether by contract or otherwise, or (b) ownership of more than
83 | fifty percent (50%) of the outstanding shares or beneficial
84 | ownership of such entity.
85 |
86 | 2. License Grants and Conditions
87 | --------------------------------
88 |
89 | 2.1. Grants
90 |
91 | Each Contributor hereby grants You a world-wide, royalty-free,
92 | non-exclusive license:
93 |
94 | (a) under intellectual property rights (other than patent or trademark)
95 | Licensable by such Contributor to use, reproduce, make available,
96 | modify, display, perform, distribute, and otherwise exploit its
97 | Contributions, either on an unmodified basis, with Modifications, or
98 | as part of a Larger Work; and
99 |
100 | (b) under Patent Claims of such Contributor to make, use, sell, offer
101 | for sale, have made, import, and otherwise transfer either its
102 | Contributions or its Contributor Version.
103 |
104 | 2.2. Effective Date
105 |
106 | The licenses granted in Section 2.1 with respect to any Contribution
107 | become effective for each Contribution on the date the Contributor first
108 | distributes such Contribution.
109 |
110 | 2.3. Limitations on Grant Scope
111 |
112 | The licenses granted in this Section 2 are the only rights granted under
113 | this License. No additional rights or licenses will be implied from the
114 | distribution or licensing of Covered Software under this License.
115 | Notwithstanding Section 2.1(b) above, no patent license is granted by a
116 | Contributor:
117 |
118 | (a) for any code that a Contributor has removed from Covered Software;
119 | or
120 |
121 | (b) for infringements caused by: (i) Your and any other third party's
122 | modifications of Covered Software, or (ii) the combination of its
123 | Contributions with other software (except as part of its Contributor
124 | Version); or
125 |
126 | (c) under Patent Claims infringed by Covered Software in the absence of
127 | its Contributions.
128 |
129 | This License does not grant any rights in the trademarks, service marks,
130 | or logos of any Contributor (except as may be necessary to comply with
131 | the notice requirements in Section 3.4).
132 |
133 | 2.4. Subsequent Licenses
134 |
135 | No Contributor makes additional grants as a result of Your choice to
136 | distribute the Covered Software under a subsequent version of this
137 | License (see Section 10.2) or under the terms of a Secondary License (if
138 | permitted under the terms of Section 3.3).
139 |
140 | 2.5. Representation
141 |
142 | Each Contributor represents that the Contributor believes its
143 | Contributions are its original creation(s) or it has sufficient rights
144 | to grant the rights to its Contributions conveyed by this License.
145 |
146 | 2.6. Fair Use
147 |
148 | This License is not intended to limit any rights You have under
149 | applicable copyright doctrines of fair use, fair dealing, or other
150 | equivalents.
151 |
152 | 2.7. Conditions
153 |
154 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
155 | in Section 2.1.
156 |
157 | 3. Responsibilities
158 | -------------------
159 |
160 | 3.1. Distribution of Source Form
161 |
162 | All distribution of Covered Software in Source Code Form, including any
163 | Modifications that You create or to which You contribute, must be under
164 | the terms of this License. You must inform recipients that the Source
165 | Code Form of the Covered Software is governed by the terms of this
166 | License, and how they can obtain a copy of this License. You may not
167 | attempt to alter or restrict the recipients' rights in the Source Code
168 | Form.
169 |
170 | 3.2. Distribution of Executable Form
171 |
172 | If You distribute Covered Software in Executable Form then:
173 |
174 | (a) such Covered Software must also be made available in Source Code
175 | Form, as described in Section 3.1, and You must inform recipients of
176 | the Executable Form how they can obtain a copy of such Source Code
177 | Form by reasonable means in a timely manner, at a charge no more
178 | than the cost of distribution to the recipient; and
179 |
180 | (b) You may distribute such Executable Form under the terms of this
181 | License, or sublicense it under different terms, provided that the
182 | license for the Executable Form does not attempt to limit or alter
183 | the recipients' rights in the Source Code Form under this License.
184 |
185 | 3.3. Distribution of a Larger Work
186 |
187 | You may create and distribute a Larger Work under terms of Your choice,
188 | provided that You also comply with the requirements of this License for
189 | the Covered Software. If the Larger Work is a combination of Covered
190 | Software with a work governed by one or more Secondary Licenses, and the
191 | Covered Software is not Incompatible With Secondary Licenses, this
192 | License permits You to additionally distribute such Covered Software
193 | under the terms of such Secondary License(s), so that the recipient of
194 | the Larger Work may, at their option, further distribute the Covered
195 | Software under the terms of either this License or such Secondary
196 | License(s).
197 |
198 | 3.4. Notices
199 |
200 | You may not remove or alter the substance of any license notices
201 | (including copyright notices, patent notices, disclaimers of warranty,
202 | or limitations of liability) contained within the Source Code Form of
203 | the Covered Software, except that You may alter any license notices to
204 | the extent required to remedy known factual inaccuracies.
205 |
206 | 3.5. Application of Additional Terms
207 |
208 | You may choose to offer, and to charge a fee for, warranty, support,
209 | indemnity or liability obligations to one or more recipients of Covered
210 | Software. However, You may do so only on Your own behalf, and not on
211 | behalf of any Contributor. You must make it absolutely clear that any
212 | such warranty, support, indemnity, or liability obligation is offered by
213 | You alone, and You hereby agree to indemnify every Contributor for any
214 | liability incurred by such Contributor as a result of warranty, support,
215 | indemnity or liability terms You offer. You may include additional
216 | disclaimers of warranty and limitations of liability specific to any
217 | jurisdiction.
218 |
219 | 4. Inability to Comply Due to Statute or Regulation
220 | ---------------------------------------------------
221 |
222 | If it is impossible for You to comply with any of the terms of this
223 | License with respect to some or all of the Covered Software due to
224 | statute, judicial order, or regulation then You must: (a) comply with
225 | the terms of this License to the maximum extent possible; and (b)
226 | describe the limitations and the code they affect. Such description must
227 | be placed in a text file included with all distributions of the Covered
228 | Software under this License. Except to the extent prohibited by statute
229 | or regulation, such description must be sufficiently detailed for a
230 | recipient of ordinary skill to be able to understand it.
231 |
232 | 5. Termination
233 | --------------
234 |
235 | 5.1. The rights granted under this License will terminate automatically
236 | if You fail to comply with any of its terms. However, if You become
237 | compliant, then the rights granted under this License from a particular
238 | Contributor are reinstated (a) provisionally, unless and until such
239 | Contributor explicitly and finally terminates Your grants, and (b) on an
240 | ongoing basis, if such Contributor fails to notify You of the
241 | non-compliance by some reasonable means prior to 60 days after You have
242 | come back into compliance. Moreover, Your grants from a particular
243 | Contributor are reinstated on an ongoing basis if such Contributor
244 | notifies You of the non-compliance by some reasonable means, this is the
245 | first time You have received notice of non-compliance with this License
246 | from such Contributor, and You become compliant prior to 30 days after
247 | Your receipt of the notice.
248 |
249 | 5.2. If You initiate litigation against any entity by asserting a patent
250 | infringement claim (excluding declaratory judgment actions,
251 | counter-claims, and cross-claims) alleging that a Contributor Version
252 | directly or indirectly infringes any patent, then the rights granted to
253 | You by any and all Contributors for the Covered Software under Section
254 | 2.1 of this License shall terminate.
255 |
256 | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all
257 | end user license agreements (excluding distributors and resellers) which
258 | have been validly granted by You or Your distributors under this License
259 | prior to termination shall survive termination.
260 |
261 | ************************************************************************
262 | * *
263 | * 6. Disclaimer of Warranty *
264 | * ------------------------- *
265 | * *
266 | * Covered Software is provided under this License on an "as is" *
267 | * basis, without warranty of any kind, either expressed, implied, or *
268 | * statutory, including, without limitation, warranties that the *
269 | * Covered Software is free of defects, merchantable, fit for a *
270 | * particular purpose or non-infringing. The entire risk as to the *
271 | * quality and performance of the Covered Software is with You. *
272 | * Should any Covered Software prove defective in any respect, You *
273 | * (not any Contributor) assume the cost of any necessary servicing, *
274 | * repair, or correction. This disclaimer of warranty constitutes an *
275 | * essential part of this License. No use of any Covered Software is *
276 | * authorized under this License except under this disclaimer. *
277 | * *
278 | ************************************************************************
279 |
280 | ************************************************************************
281 | * *
282 | * 7. Limitation of Liability *
283 | * -------------------------- *
284 | * *
285 | * Under no circumstances and under no legal theory, whether tort *
286 | * (including negligence), contract, or otherwise, shall any *
287 | * Contributor, or anyone who distributes Covered Software as *
288 | * permitted above, be liable to You for any direct, indirect, *
289 | * special, incidental, or consequential damages of any character *
290 | * including, without limitation, damages for lost profits, loss of *
291 | * goodwill, work stoppage, computer failure or malfunction, or any *
292 | * and all other commercial damages or losses, even if such party *
293 | * shall have been informed of the possibility of such damages. This *
294 | * limitation of liability shall not apply to liability for death or *
295 | * personal injury resulting from such party's negligence to the *
296 | * extent applicable law prohibits such limitation. Some *
297 | * jurisdictions do not allow the exclusion or limitation of *
298 | * incidental or consequential damages, so this exclusion and *
299 | * limitation may not apply to You. *
300 | * *
301 | ************************************************************************
302 |
303 | 8. Litigation
304 | -------------
305 |
306 | Any litigation relating to this License may be brought only in the
307 | courts of a jurisdiction where the defendant maintains its principal
308 | place of business and such litigation shall be governed by laws of that
309 | jurisdiction, without reference to its conflict-of-law provisions.
310 | Nothing in this Section shall prevent a party's ability to bring
311 | cross-claims or counter-claims.
312 |
313 | 9. Miscellaneous
314 | ----------------
315 |
316 | This License represents the complete agreement concerning the subject
317 | matter hereof. If any provision of this License is held to be
318 | unenforceable, such provision shall be reformed only to the extent
319 | necessary to make it enforceable. Any law or regulation which provides
320 | that the language of a contract shall be construed against the drafter
321 | shall not be used to construe this License against a Contributor.
322 |
323 | 10. Versions of the License
324 | ---------------------------
325 |
326 | 10.1. New Versions
327 |
328 | Mozilla Foundation is the license steward. Except as provided in Section
329 | 10.3, no one other than the license steward has the right to modify or
330 | publish new versions of this License. Each version will be given a
331 | distinguishing version number.
332 |
333 | 10.2. Effect of New Versions
334 |
335 | You may distribute the Covered Software under the terms of the version
336 | of the License under which You originally received the Covered Software,
337 | or under the terms of any subsequent version published by the license
338 | steward.
339 |
340 | 10.3. Modified Versions
341 |
342 | If you create software not governed by this License, and you want to
343 | create a new license for such software, you may create and use a
344 | modified version of this License if you rename the license and remove
345 | any references to the name of the license steward (except to note that
346 | such modified license differs from this License).
347 |
348 | 10.4. Distributing Source Code Form that is Incompatible With Secondary
349 | Licenses
350 |
351 | If You choose to distribute Source Code Form that is Incompatible With
352 | Secondary Licenses under the terms of this version of the License, the
353 | notice described in Exhibit B of this License must be attached.
354 |
355 | Exhibit A - Source Code Form License Notice
356 | -------------------------------------------
357 |
358 | This Source Code Form is subject to the terms of the Mozilla Public
359 | License, v. 2.0. If a copy of the MPL was not distributed with this
360 | file, You can obtain one at http://mozilla.org/MPL/2.0/.
361 |
362 | If it is not possible or desirable to put the notice in a particular
363 | file, then You may include the notice in a location (such as a LICENSE
364 | file in a relevant directory) where a recipient would be likely to look
365 | for such a notice.
366 |
367 | You may add additional accurate notices of copyright ownership.
368 |
369 | Exhibit B - "Incompatible With Secondary Licenses" Notice
370 | ---------------------------------------------------------
371 |
372 | This Source Code Form is "Incompatible With Secondary Licenses", as
373 | defined by the Mozilla Public License, v. 2.0.
374 |
--------------------------------------------------------------------------------
/mainformu.pas:
--------------------------------------------------------------------------------
1 | unit mainformu;
2 |
3 | interface
4 |
5 | uses
6 | Classes, SysUtils, LazFileUtils, SynEdit, SynHighlighterHTML,
7 | SynExportHTMLCSS, SynEditTypes, SynHighlighterPas, SynHighlighterCpp,
8 | dbugintf, SynHighlighterJScript, SynHighlighterJava, SynHighlighterXML,
9 | synhighlighterunixshellscript, SynPopupMenu, Forms, Controls, Graphics,
10 | Dialogs, StdCtrls, ExtCtrls, Clipbrd, MarkdownProcessor, MarkdownUtils,
11 | LCLIntf, ComCtrls, Buttons, StrUtils, HtmlView, HtmlGlobals, HTMLUn2,
12 | SynHighlighterVHDL, SynHighlighterJSON, SynHighlighterSmali,
13 | SynHighlighterMarkdown, SynHighlighterRuby, SynEditMarkupHighAll,
14 | SynHighlighterCss, SynHighlighterPython, ssl_openssl, httpsend,
15 | BGRABitmap, BGRASvg, IniPropStorage, Menus, ActnList, FileCtrl;
16 |
17 | type
18 |
19 | { TMainForm }
20 |
21 | TMainForm = class(TForm)
22 | A_SearchFind: TAction;
23 | A_SaveFile: TAction;
24 | A_OpenFile: TAction;
25 | A_SaveAs: TAction;
26 | A_CopyAll: TAction;
27 | A_Paste: TAction;
28 | A_Convert: TAction;
29 | A_View: TAction;
30 | ActionList1: TActionList;
31 | B_Convert: TBitBtn;
32 | B_Copy: TBitBtn;
33 | B_OpenFile: TBitBtn;
34 | B_Paste: TBitBtn;
35 | B_Find: TBitBtn;
36 | B_Save: TBitBtn;
37 | B_ViewBrowser: TBitBtn;
38 | ChkB_DownloadfromWeb: TCheckBox;
39 | FindDialog1: TFindDialog;
40 | HtmlViewer: THtmlViewer;
41 | ImageList1: TImageList;
42 | IniPropStorage1: TIniPropStorage;
43 | CopyHTLMViewer: TMenuItem;
44 | M_SearchFind: TMenuItem;
45 | OpenDialog1: TOpenDialog;
46 | PageControl1: TPageControl;
47 | Panel1: TPanel;
48 | PopupMenu1: TPopupMenu;
49 | SaveDialog1: TSaveDialog;
50 | SE_MarkDown: TSynEdit;
51 | SE_HTML: TSynEdit;
52 | Splitter1: TSplitter;
53 | SynCppSyn1: TSynCppSyn;
54 | SynCssSyn1: TSynCssSyn;
55 | SynFreePascalSyn1: TSynFreePascalSyn;
56 | SynHTMLSyn1: TSynHTMLSyn;
57 | SynJavaSyn1: TSynJavaSyn;
58 | SynJScriptSyn1: TSynJScriptSyn;
59 | SynJSONSyn1: TSynJSONSyn;
60 | SynMarkdownSyn1: TSynMarkdownSyn;
61 | SynPopupMenu1: TSynPopupMenu;
62 | SynPythonSyn1: TSynPythonSyn;
63 | SynRubySyn1: TSynRubySyn;
64 | SynSmaliSyn1: TSynSmaliSyn;
65 | SynUNIXShellScriptSyn1: TSynUNIXShellScriptSyn;
66 | SynVHDLSyn1: TSynVHDLSyn;
67 | SynXMLSyn1: TSynXMLSyn;
68 | TS_MarkDown: TTabSheet;
69 | TS_HTML: TTabSheet;
70 | SynExporter: TSynExporterHTMLCSS;
71 | procedure A_SearchFindExecute(Sender: TObject);
72 | procedure HtmlViewerEnter(Sender: TObject);
73 | procedure onFind(Sender: TObject);
74 | procedure B_CopyClick(Sender: TObject);
75 | procedure B_PasteClick(Sender: TObject);
76 | procedure B_ViewBrowserClick(Sender: TObject);
77 | procedure B_OpenFileClick(Sender: TObject);
78 | procedure B_ConvertClick(Sender: TObject);
79 | procedure B_SaveAsClick(Sender: TObject);
80 | procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
81 | procedure FormCreate(Sender: TObject);
82 | procedure FormDestroy(Sender: TObject);
83 | procedure HtmlViewerHotSpotClick(Sender: TObject; const SRC: ThtString;
84 | var Handled: Boolean);
85 | procedure HtmlViewerHotSpotTargetClick(Sender: TObject; const Target,
86 | URL: ThtString; var Handled: boolean);
87 | procedure HtmlViewerImageRequest(Sender: TObject; const SRC: ThtString;
88 | var Stream: TStream);
89 | procedure CopyHTLMViewerClick(Sender: TObject);
90 | procedure A_SaveFileExecute(Sender: TObject);
91 | procedure PageControl1Enter(Sender: TObject);
92 | procedure SE_HTMLChange(Sender: TObject);
93 | procedure SE_MarkDownChange(Sender: TObject);
94 | private
95 | procedure CheckParams;
96 | function getStreamData(Path: TFileName): TStream;
97 | function OpenFile(Path: TFileName): boolean;
98 | function SaveAs: boolean;
99 | procedure SaveToFile;
100 | procedure OpenInBrowser;
101 | procedure SetPreview;
102 | end;
103 |
104 | { TCodeEmiter }
105 |
106 | TCodeEmiter = class(TBlockEmitter)
107 | public
108 | procedure emitBlock(out_: TStringBuilder; lines: TStringList; meta: String); override;
109 | end;
110 |
111 | var
112 | MainForm: TMainForm;
113 |
114 | implementation
115 |
116 | {$R *.lfm}
117 |
118 | var
119 | RootPath,f,FileName:TFileName;
120 | md:TMarkdownProcessor=nil;
121 | MStream:TMemoryStream=nil;
122 | SynMarkup: TSynEditMarkupHighlightAllCaret;
123 | PreviousFocusedControl:TWinControl=nil;
124 |
125 | const
126 | CSSDecoration = ''#10;
160 |
161 | { TCodeEmiter }
162 |
163 | procedure TCodeEmiter.emitBlock(out_: TStringBuilder; lines: TStringList;
164 | meta: String);
165 | var
166 | s:string;
167 |
168 | procedure exportlines;
169 | var
170 | sstream: TStringStream;
171 | begin
172 | MainForm.SynExporter.ExportAll(lines);
173 | try
174 | sstream:=TStringStream.Create('');
175 | MainForm.SynExporter.SaveToStream(sstream);
176 | out_.Append(sstream.DataString);
177 | finally
178 | if assigned(sstream) then freeandnil(sstream);
179 | end;
180 | end;
181 |
182 | begin
183 | case meta of
184 | 'vhdl': MainForm.SynExporter.Highlighter:=MainForm.SynVHDLSyn1;
185 | 'html': MainForm.SynExporter.Highlighter:=MainForm.SynHTMLSyn1;
186 | 'js','jscript','javascript': MainForm.SynExporter.Highlighter:=MainForm.SynJScriptSyn1;
187 | 'java': MainForm.SynExporter.Highlighter:=MainForm.SynJavaSyn1;
188 | 'json': MainForm.SynExporter.Highlighter:=MainForm.SynJSONSyn1;
189 | 'fpc','pas','pascal': MainForm.SynExporter.Highlighter:=MainForm.SynFreePascalSyn1;
190 | 'cmd','shell','bash': MainForm.SynExporter.Highlighter:=MainForm.SynUNIXShellScriptSyn1;
191 | 'cpp','c++','c': MainForm.SynExporter.Highlighter:=MainForm.SynCppSyn1;
192 | 'css': MainForm.SynExporter.Highlighter:=MainForm.SynCssSyn1;
193 | 'xml': MainForm.SynExporter.Highlighter:=MainForm.SynXMLSyn1;
194 | 'markdown','md': MainForm.SynExporter.Highlighter:=MainForm.SynMarkdownSyn1;
195 | 'ruby': MainForm.SynExporter.Highlighter:=MainForm.SynRubySyn1;
196 | 'python', 'py': MainForm.SynExporter.Highlighter:=MainForm.SynPythonSyn1;
197 | 'smali': MainForm.SynExporter.Highlighter:=MainForm.SynSmaliSyn1;
198 | else
199 | begin
200 | if meta='' then out_.append('')
201 | else out_.append('');
202 | for s in lines do
203 | begin
204 | TUtils.appendValue(out_,s,0,Length(s));
205 | out_.append(#10);
206 | end;
207 | out_.append('
'#10);
208 | exit;
209 | end;
210 | end;
211 | MainForm.SynExporter.CodeClass:=meta;
212 | exportlines;
213 | end;
214 |
215 |
216 | { TMainForm }
217 |
218 | procedure TMainForm.SetPreview;
219 | begin
220 | if SE_HTML.Modified then
221 | begin
222 | HtmlViewer.LoadFromString(SE_HTML.Text);
223 | SE_HTML.Modified:=false;
224 | end;
225 | end;
226 |
227 | procedure TMainForm.B_ConvertClick(Sender: TObject);
228 | begin
229 | SE_HTML.Text:=CSSDecoration+md.process(SE_MarkDown.Text);
230 | SE_HTML.Modified:=true;
231 | SetPreview;
232 | end;
233 |
234 | procedure TMainForm.SaveToFile;
235 | begin
236 | try
237 | SE_MarkDown.Lines.SaveToFile(FileName);
238 | SE_MarkDown.Modified:=false;
239 | SE_MarkDownChange(self);
240 | except on E: Exception do
241 | ShowMessage('Can not save the file: '+E.Message);
242 | end;
243 | end;
244 |
245 | function TMainForm.SaveAs:boolean;
246 | begin
247 | SaveDialog1.InitialDir:=ExtractFilePath(FileName);
248 | SaveDialog1.FileName:=ExtractFileName(FileName);
249 | if savedialog1.Execute then
250 | begin
251 | FileName:=savedialog1.FileName;
252 | SaveToFile;
253 | result:=true;
254 | end else
255 | result:=false;
256 | end;
257 |
258 | procedure TMainForm.B_SaveAsClick(Sender: TObject);
259 | begin
260 | PageControl1.ActivePageIndex:=0;
261 | SaveAs;
262 | end;
263 |
264 | procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
265 | var
266 | response : Integer;
267 | begin
268 | CanClose := not SE_MarkDown.Modified;
269 | If not CanClose then
270 | begin
271 | response := MessageDlg(
272 | 'Do you want to save changes?',
273 | mtConfirmation,
274 | [mbYes, mbNo, mbCancel],
275 | 0);
276 | case response of
277 | mrYes: CanClose := SaveAs;
278 | mrNo: CanClose := true;
279 | mrCancel: CanClose := false;
280 | end;
281 | end;
282 | end;
283 |
284 | procedure TMainForm.FormCreate(Sender: TObject);
285 | var
286 | i:integer;
287 | begin
288 | FileName := 'untitled.md';
289 | MStream := TMemoryStream.Create;
290 | SynExporter:= TSynExporterHTMLCSS.Create(Mainform);
291 | SynExporter.Options:= SynExporter.Options + [heoFragmentOnly];
292 | md := TMarkdownProcessor.createDialect(mdCommonMark);
293 | md.UnSafe := false;
294 | md.config.codeBlockEmitter:=TCodeEmiter.Create;
295 | RootPath:=GetTempDir;
296 | I:=0;
297 | Repeat
298 | f:=Format('%s%.3d.html',['markdown',I]);
299 | Inc(I);
300 | Until not FileExists(RootPath+f);
301 | SynMarkup := TSynEditMarkupHighlightAllCaret(SE_MarkDown.MarkupByClass[TSynEditMarkupHighlightAllCaret]);
302 | SynMarkup.MarkupInfo.Background := clSkyBlue;
303 | SynMarkup.WaitTime := 1000; // ms
304 | SynMarkup.Trim := True;
305 | SynMarkup.FullWord:= True;
306 | PageControl1.ActivePageIndex:=0;
307 | HtmlViewer.DefBackground:=clWhite;
308 | HtmlViewer.DefFontColor:=clBlack;
309 | HtmlViewer.DefFontName:='Helvetica';
310 | HtmlViewer.DefFontSize:=10;
311 | HtmlViewer.DefPreFontName:='Courier';
312 | HtmlViewer.ServerRoot:=RootPath;
313 | // HtmlViewer.OnHotSpotTargetClick:=@HtmlViewerHotSpotTargetClick;
314 | HtmlViewer.OnHotSpotClick:=@HtmlViewerHotSpotClick;
315 | HtmlViewer.OnImageRequest:=@HtmlViewerImageRequest;
316 | HtmlViewer.LoadFromString(CSSDecoration);
317 | PreviousFocusedControl := PageControl1.ActivePage;
318 | CheckParams;
319 | end;
320 |
321 | procedure TMainForm.CheckParams;
322 | begin
323 | If (ParamCount=1) and FileExists(ParamStr(1)) then OpenFile(ParamStr(1));
324 | end;
325 |
326 | procedure TMainForm.FormDestroy(Sender: TObject);
327 | begin
328 | if FileExists(RootPath+f) then DeleteFile(RootPath+f);
329 | if assigned(md) then md.Free;
330 | if Assigned(MStream) then freeandnil(MStream);
331 | end;
332 |
333 | procedure TMainForm.HtmlViewerHotSpotClick(Sender: TObject;
334 | const SRC: ThtString; var Handled: Boolean);
335 | begin
336 | Handled:=OpenUrl(SRC);
337 | end;
338 |
339 | procedure TMainForm.HtmlViewerHotSpotTargetClick(Sender: TObject;
340 | const Target, URL: ThtString; var Handled: boolean);
341 | begin
342 | Handled:=OpenUrl(URL);
343 | end;
344 |
345 | procedure ConvertSVG(FileName:string);
346 | var
347 | bmp: TBGRABitmap;
348 | svg: TBGRASVG;
349 | begin
350 | if (pos('.svg',lowercase(FileName))>0) then
351 | begin
352 | try
353 | MStream.Position:=0;
354 | svg:= TBGRASVG.Create(MStream);
355 | try
356 | bmp:=TBGRABitmap.Create(trunc(svg.Width.value),trunc(svg.Height.value));
357 | svg.Draw(bmp.Canvas2D,0,0);
358 | MStream.Clear;
359 | bmp.Bitmap.SaveToStream(MStream);
360 | finally
361 | if assigned(bmp) then FreeAndNil(bmp);
362 | end;
363 | finally
364 | if assigned(svg) then FreeAndNil(svg);
365 | end;
366 | end;
367 | end;
368 |
369 | function TMainForm.getStreamData(Path: TFileName):TStream;
370 | var
371 | sl : TStringList;
372 | bFail : Boolean;
373 | bTryAgain : Boolean;
374 | Begin
375 | Result:=nil;
376 | MStream.Clear;
377 | with THTTPSend.Create do
378 | Begin
379 | sl := TStringList.Create;
380 | if HTTPMethod('GET',Path) then
381 | Begin
382 | MStream.CopyFrom(Document, 0);
383 | // Need To check For Failed Retrieval...
384 | MStream.Position:= 0;
385 | sl.LoadFromStream(MStream);
386 | bTryAgain := False;
387 | bFail := False;
388 | if Length(sl.Text) = 0 then bFail:= True;
389 | if MStream.Size = 0 then bFail:= True;
390 |
391 | if MStream.Size < 1024 then
392 | Begin
393 | if Pos('not found', LowerCase(sl.Text)) > 0 then bFail:= True;
394 | if (Pos('301 moved permanently', LowerCase(sl.Text)) > 0) or
395 | (Pos('', LowerCase(sl.Text)) > 0) then
396 | Begin
397 | if Pos('RootPath then
534 | begin
535 | SE_HTML.Clear;
536 | HtmlViewer.Clear;
537 | if FileExists(RootPath+f) then DeleteFile(RootPath+f);
538 | HtmlViewer.ServerRoot:=NewPath;
539 | RootPath:=NewPath;
540 | end;
541 | FileName:=Path;
542 | SE_MarkDownChange(self);
543 | PageControl1.ActivePageIndex:=0;
544 | Result:=true;
545 | except
546 | Result:=false;
547 | end;
548 | end;
549 |
550 | procedure TMainForm.B_OpenFileClick(Sender: TObject);
551 | var CanClose:boolean;
552 | begin
553 | CanClose:= false;
554 | FormCloseQuery(self, CanClose);
555 | if CanClose and OpenDialog1.Execute then OpenFile(OpenDialog1.FileName);
556 | end;
557 |
558 | procedure TMainForm.OpenInBrowser;
559 | var p:string;
560 | begin
561 | p:=IfThen(DirectoryIsWritable(RootPath),RootPath+f,GetTempDir+f);
562 | try
563 | SE_HTML.Lines.SaveToFile(p);
564 | OpenURL(p);
565 | except
566 | ShowMessage('Can not create and open the temp file');
567 | end;
568 | end;
569 |
570 |
571 | end.
572 |
573 |
--------------------------------------------------------------------------------
/mainformu.lfm:
--------------------------------------------------------------------------------
1 | object MainForm: TMainForm
2 | Left = 0
3 | Height = 721
4 | Top = 0
5 | Width = 982
6 | Caption = 'Simple Markdown Editor'
7 | ClientHeight = 721
8 | ClientWidth = 982
9 | Constraints.MinHeight = 288
10 | Constraints.MinWidth = 662
11 | DesignTimePPI = 120
12 | SessionProperties = 'Height;Left;PageControl1.Width;Top;Width'
13 | LCLVersion = '4.3.0.0'
14 | OnCloseQuery = FormCloseQuery
15 | OnCreate = FormCreate
16 | OnDestroy = FormDestroy
17 | object Panel1: TPanel
18 | Left = 0
19 | Height = 42
20 | Top = 0
21 | Width = 982
22 | Align = alTop
23 | AutoSize = True
24 | ChildSizing.LeftRightSpacing = 5
25 | ChildSizing.TopBottomSpacing = 5
26 | ChildSizing.HorizontalSpacing = 2
27 | ChildSizing.VerticalSpacing = 5
28 | ChildSizing.Layout = cclLeftToRightThenTopToBottom
29 | ChildSizing.ControlsPerLine = 7
30 | ClientHeight = 42
31 | ClientWidth = 982
32 | TabOrder = 0
33 | object B_OpenFile: TBitBtn
34 | Left = 6
35 | Height = 30
36 | Top = 6
37 | Width = 109
38 | Action = A_OpenFile
39 | Default = True
40 | Images = ImageList1
41 | ImageIndex = 0
42 | TabOrder = 0
43 | OnClick = B_OpenFileClick
44 | end
45 | object B_Save: TBitBtn
46 | Left = 117
47 | Height = 30
48 | Top = 6
49 | Width = 122
50 | Action = A_SaveAs
51 | Images = ImageList1
52 | ImageIndex = 1
53 | TabOrder = 1
54 | end
55 | object B_Find: TBitBtn
56 | Left = 241
57 | Height = 30
58 | Top = 6
59 | Width = 83
60 | Action = A_SearchFind
61 | Images = ImageList1
62 | ImageIndex = 6
63 | TabOrder = 7
64 | end
65 | object B_Copy: TBitBtn
66 | Left = 326
67 | Height = 30
68 | Top = 6
69 | Width = 102
70 | Action = A_CopyAll
71 | Images = ImageList1
72 | ImageIndex = 2
73 | TabOrder = 2
74 | OnClick = B_CopyClick
75 | end
76 | object B_Paste: TBitBtn
77 | Left = 430
78 | Height = 30
79 | Top = 6
80 | Width = 80
81 | Action = A_Paste
82 | Images = ImageList1
83 | ImageIndex = 3
84 | TabOrder = 3
85 | OnClick = B_PasteClick
86 | end
87 | object B_Convert: TBitBtn
88 | Left = 512
89 | Height = 30
90 | Top = 6
91 | Width = 97
92 | Action = A_Convert
93 | Images = ImageList1
94 | ImageIndex = 4
95 | TabOrder = 4
96 | OnClick = B_ConvertClick
97 | end
98 | object B_ViewBrowser: TBitBtn
99 | Left = 611
100 | Height = 30
101 | Top = 6
102 | Width = 151
103 | Action = A_View
104 | Images = ImageList1
105 | ImageIndex = 5
106 | TabOrder = 5
107 | OnClick = B_ViewBrowserClick
108 | end
109 | object ChkB_DownloadfromWeb: TCheckBox
110 | Left = 808
111 | Height = 30
112 | Top = 6
113 | Width = 161
114 | Align = alRight
115 | BorderSpacing.Right = 12
116 | Caption = 'Download from Web'
117 | TabOrder = 6
118 | end
119 | end
120 | object PageControl1: TPageControl
121 | Left = 0
122 | Height = 679
123 | Top = 42
124 | Width = 484
125 | ActivePage = TS_MarkDown
126 | Align = alLeft
127 | PopupMenu = SynPopupMenu1
128 | TabIndex = 0
129 | TabOrder = 1
130 | OnEnter = PageControl1Enter
131 | object TS_MarkDown: TTabSheet
132 | Caption = 'MarkDown'
133 | ClientHeight = 646
134 | ClientWidth = 476
135 | inline SE_MarkDown: TSynEdit
136 | Left = 0
137 | Height = 646
138 | Top = 0
139 | Width = 476
140 | Align = alClient
141 | Font.Height = -16
142 | Font.Name = 'Courier New'
143 | Font.Pitch = fpFixed
144 | Font.Quality = fqNonAntialiased
145 | ParentColor = False
146 | ParentFont = False
147 | PopupMenu = SynPopupMenu1
148 | TabOrder = 0
149 | Gutter.Width = 72
150 | Gutter.MouseActions = <>
151 | RightGutter.Width = 0
152 | RightGutter.MouseActions = <>
153 | Highlighter = SynMarkdownSyn1
154 | Keystrokes = <
155 | item
156 | Command = ecUp
157 | ShortCut = 38
158 | end
159 | item
160 | Command = ecSelUp
161 | ShortCut = 8230
162 | end
163 | item
164 | Command = ecScrollUp
165 | ShortCut = 16422
166 | end
167 | item
168 | Command = ecDown
169 | ShortCut = 40
170 | end
171 | item
172 | Command = ecSelDown
173 | ShortCut = 8232
174 | end
175 | item
176 | Command = ecScrollDown
177 | ShortCut = 16424
178 | end
179 | item
180 | Command = ecLeft
181 | ShortCut = 37
182 | end
183 | item
184 | Command = ecSelLeft
185 | ShortCut = 8229
186 | end
187 | item
188 | Command = ecWordLeft
189 | ShortCut = 16421
190 | end
191 | item
192 | Command = ecSelWordLeft
193 | ShortCut = 24613
194 | end
195 | item
196 | Command = ecRight
197 | ShortCut = 39
198 | end
199 | item
200 | Command = ecSelRight
201 | ShortCut = 8231
202 | end
203 | item
204 | Command = ecWordRight
205 | ShortCut = 16423
206 | end
207 | item
208 | Command = ecSelWordRight
209 | ShortCut = 24615
210 | end
211 | item
212 | Command = ecPageDown
213 | ShortCut = 34
214 | end
215 | item
216 | Command = ecSelPageDown
217 | ShortCut = 8226
218 | end
219 | item
220 | Command = ecPageBottom
221 | ShortCut = 16418
222 | end
223 | item
224 | Command = ecSelPageBottom
225 | ShortCut = 24610
226 | end
227 | item
228 | Command = ecPageUp
229 | ShortCut = 33
230 | end
231 | item
232 | Command = ecSelPageUp
233 | ShortCut = 8225
234 | end
235 | item
236 | Command = ecPageTop
237 | ShortCut = 16417
238 | end
239 | item
240 | Command = ecSelPageTop
241 | ShortCut = 24609
242 | end
243 | item
244 | Command = ecLineStart
245 | ShortCut = 36
246 | end
247 | item
248 | Command = ecSelLineStart
249 | ShortCut = 8228
250 | end
251 | item
252 | Command = ecEditorTop
253 | ShortCut = 16420
254 | end
255 | item
256 | Command = ecSelEditorTop
257 | ShortCut = 24612
258 | end
259 | item
260 | Command = ecLineEnd
261 | ShortCut = 35
262 | end
263 | item
264 | Command = ecSelLineEnd
265 | ShortCut = 8227
266 | end
267 | item
268 | Command = ecEditorBottom
269 | ShortCut = 16419
270 | end
271 | item
272 | Command = ecSelEditorBottom
273 | ShortCut = 24611
274 | end
275 | item
276 | Command = ecToggleMode
277 | ShortCut = 45
278 | end
279 | item
280 | Command = ecCopy
281 | ShortCut = 16429
282 | end
283 | item
284 | Command = ecPaste
285 | ShortCut = 8237
286 | end
287 | item
288 | Command = ecDeleteChar
289 | ShortCut = 46
290 | end
291 | item
292 | Command = ecCut
293 | ShortCut = 8238
294 | end
295 | item
296 | Command = ecDeleteLastChar
297 | ShortCut = 8
298 | end
299 | item
300 | Command = ecDeleteLastChar
301 | ShortCut = 8200
302 | end
303 | item
304 | Command = ecDeleteLastWord
305 | ShortCut = 16392
306 | end
307 | item
308 | Command = ecUndo
309 | ShortCut = 32776
310 | end
311 | item
312 | Command = ecRedo
313 | ShortCut = 40968
314 | end
315 | item
316 | Command = ecLineBreak
317 | ShortCut = 13
318 | end
319 | item
320 | Command = ecSelectAll
321 | ShortCut = 16449
322 | end
323 | item
324 | Command = ecCopy
325 | ShortCut = 16451
326 | end
327 | item
328 | Command = ecBlockIndent
329 | ShortCut = 24649
330 | end
331 | item
332 | Command = ecLineBreak
333 | ShortCut = 16461
334 | end
335 | item
336 | Command = ecInsertLine
337 | ShortCut = 16462
338 | end
339 | item
340 | Command = ecDeleteWord
341 | ShortCut = 16468
342 | end
343 | item
344 | Command = ecBlockUnindent
345 | ShortCut = 24661
346 | end
347 | item
348 | Command = ecPaste
349 | ShortCut = 16470
350 | end
351 | item
352 | Command = ecCut
353 | ShortCut = 16472
354 | end
355 | item
356 | Command = ecDeleteLine
357 | ShortCut = 16473
358 | end
359 | item
360 | Command = ecDeleteEOL
361 | ShortCut = 24665
362 | end
363 | item
364 | Command = ecUndo
365 | ShortCut = 16474
366 | end
367 | item
368 | Command = ecRedo
369 | ShortCut = 24666
370 | end
371 | item
372 | Command = ecGotoMarker0
373 | ShortCut = 16432
374 | end
375 | item
376 | Command = ecGotoMarker1
377 | ShortCut = 16433
378 | end
379 | item
380 | Command = ecGotoMarker2
381 | ShortCut = 16434
382 | end
383 | item
384 | Command = ecGotoMarker3
385 | ShortCut = 16435
386 | end
387 | item
388 | Command = ecGotoMarker4
389 | ShortCut = 16436
390 | end
391 | item
392 | Command = ecGotoMarker5
393 | ShortCut = 16437
394 | end
395 | item
396 | Command = ecGotoMarker6
397 | ShortCut = 16438
398 | end
399 | item
400 | Command = ecGotoMarker7
401 | ShortCut = 16439
402 | end
403 | item
404 | Command = ecGotoMarker8
405 | ShortCut = 16440
406 | end
407 | item
408 | Command = ecGotoMarker9
409 | ShortCut = 16441
410 | end
411 | item
412 | Command = ecSetMarker0
413 | ShortCut = 24624
414 | end
415 | item
416 | Command = ecSetMarker1
417 | ShortCut = 24625
418 | end
419 | item
420 | Command = ecSetMarker2
421 | ShortCut = 24626
422 | end
423 | item
424 | Command = ecSetMarker3
425 | ShortCut = 24627
426 | end
427 | item
428 | Command = ecSetMarker4
429 | ShortCut = 24628
430 | end
431 | item
432 | Command = ecSetMarker5
433 | ShortCut = 24629
434 | end
435 | item
436 | Command = ecSetMarker6
437 | ShortCut = 24630
438 | end
439 | item
440 | Command = ecSetMarker7
441 | ShortCut = 24631
442 | end
443 | item
444 | Command = ecSetMarker8
445 | ShortCut = 24632
446 | end
447 | item
448 | Command = ecSetMarker9
449 | ShortCut = 24633
450 | end
451 | item
452 | Command = EcFoldLevel1
453 | ShortCut = 41009
454 | end
455 | item
456 | Command = EcFoldLevel2
457 | ShortCut = 41010
458 | end
459 | item
460 | Command = EcFoldLevel3
461 | ShortCut = 41011
462 | end
463 | item
464 | Command = EcFoldLevel4
465 | ShortCut = 41012
466 | end
467 | item
468 | Command = EcFoldLevel5
469 | ShortCut = 41013
470 | end
471 | item
472 | Command = EcFoldLevel6
473 | ShortCut = 41014
474 | end
475 | item
476 | Command = EcFoldLevel7
477 | ShortCut = 41015
478 | end
479 | item
480 | Command = EcFoldLevel8
481 | ShortCut = 41016
482 | end
483 | item
484 | Command = EcFoldLevel9
485 | ShortCut = 41017
486 | end
487 | item
488 | Command = EcFoldLevel0
489 | ShortCut = 41008
490 | end
491 | item
492 | Command = EcFoldCurrent
493 | ShortCut = 41005
494 | end
495 | item
496 | Command = EcUnFoldCurrent
497 | ShortCut = 41003
498 | end
499 | item
500 | Command = EcToggleMarkupWord
501 | ShortCut = 32845
502 | end
503 | item
504 | Command = ecNormalSelect
505 | ShortCut = 24654
506 | end
507 | item
508 | Command = ecColumnSelect
509 | ShortCut = 24643
510 | end
511 | item
512 | Command = ecLineSelect
513 | ShortCut = 24652
514 | end
515 | item
516 | Command = ecTab
517 | ShortCut = 9
518 | end
519 | item
520 | Command = ecShiftTab
521 | ShortCut = 8201
522 | end
523 | item
524 | Command = ecMatchBracket
525 | ShortCut = 24642
526 | end
527 | item
528 | Command = ecColSelUp
529 | ShortCut = 40998
530 | end
531 | item
532 | Command = ecColSelDown
533 | ShortCut = 41000
534 | end
535 | item
536 | Command = ecColSelLeft
537 | ShortCut = 40997
538 | end
539 | item
540 | Command = ecColSelRight
541 | ShortCut = 40999
542 | end
543 | item
544 | Command = ecColSelPageDown
545 | ShortCut = 40994
546 | end
547 | item
548 | Command = ecColSelPageBottom
549 | ShortCut = 57378
550 | end
551 | item
552 | Command = ecColSelPageUp
553 | ShortCut = 40993
554 | end
555 | item
556 | Command = ecColSelPageTop
557 | ShortCut = 57377
558 | end
559 | item
560 | Command = ecColSelLineStart
561 | ShortCut = 40996
562 | end
563 | item
564 | Command = ecColSelLineEnd
565 | ShortCut = 40995
566 | end
567 | item
568 | Command = ecColSelEditorTop
569 | ShortCut = 57380
570 | end
571 | item
572 | Command = ecColSelEditorBottom
573 | ShortCut = 57379
574 | end>
575 | MouseActions = <>
576 | MouseTextActions = <>
577 | MouseSelActions = <>
578 | Options = [eoAutoIndent, eoBracketHighlight, eoGroupUndo, eoShowSpecialChars, eoSmartTabs, eoTabsToSpaces]
579 | MouseOptions = [emAltSetsColumnMode]
580 | VisibleSpecialChars = [vscSpace, vscTabAtLast]
581 | ScrollBars = ssAutoBoth
582 | SelectedColor.BackPriority = 50
583 | SelectedColor.ForePriority = 50
584 | SelectedColor.FramePriority = 50
585 | SelectedColor.BoldPriority = 50
586 | SelectedColor.ItalicPriority = 50
587 | SelectedColor.UnderlinePriority = 50
588 | SelectedColor.StrikeOutPriority = 50
589 | BracketHighlightStyle = sbhsBoth
590 | BracketMatchColor.Background = clNone
591 | BracketMatchColor.Foreground = clNone
592 | BracketMatchColor.Style = [fsBold]
593 | FoldedCodeColor.Background = clNone
594 | FoldedCodeColor.Foreground = clGray
595 | FoldedCodeColor.FrameColor = clGray
596 | MouseLinkColor.Background = clNone
597 | MouseLinkColor.Foreground = clBlue
598 | LineHighlightColor.Background = clCream
599 | LineHighlightColor.Foreground = clNone
600 | TabWidth = 4
601 | OnChange = SE_MarkDownChange
602 | inline SynLeftGutterPartList1: TSynGutterPartList
603 | object SynGutterMarks1: TSynGutterMarks
604 | Width = 30
605 | MouseActions = <>
606 | MaxExtraMarksColums = 0
607 | Options = [sgmoDeDuplicateMarksOnOverflow]
608 | MarkupInfo.Background = clBtnFace
609 | MarkupInfo.Foreground = clNone
610 | end
611 | object SynGutterLineNumber1: TSynGutterLineNumber
612 | Width = 21
613 | MouseActions = <>
614 | MarkupInfo.Background = clBtnFace
615 | MarkupInfo.Foreground = clNone
616 | DigitCount = 2
617 | ShowOnlyLineNumbersMultiplesOf = 1
618 | ZeroStart = False
619 | LeadingZeros = False
620 | end
621 | object SynGutterChanges1: TSynGutterChanges
622 | Width = 5
623 | MouseActions = <>
624 | ModifiedColor = 59900
625 | SavedColor = clGreen
626 | MarkupInfo.Background = clNone
627 | MarkupInfo.Foreground = clGreen
628 | MarkupInfo.FrameColor = 59900
629 | end
630 | object SynGutterSeparator1: TSynGutterSeparator
631 | Width = 3
632 | MouseActions = <>
633 | MarkupInfo.Background = clWhite
634 | MarkupInfo.Foreground = clGray
635 | end
636 | object SynGutterCodeFolding1: TSynGutterCodeFolding
637 | Width = 13
638 | MouseActions = <>
639 | MarkupInfo.Background = clNone
640 | MarkupInfo.Foreground = clGray
641 | MouseActionsExpanded = <>
642 | MouseActionsCollapsed = <>
643 | end
644 | end
645 | end
646 | end
647 | object TS_HTML: TTabSheet
648 | Caption = 'HTML'
649 | ClientHeight = 646
650 | ClientWidth = 476
651 | inline SE_HTML: TSynEdit
652 | Left = 0
653 | Height = 646
654 | Top = 0
655 | Width = 476
656 | Align = alClient
657 | Font.Height = -16
658 | Font.Name = 'Courier New'
659 | Font.Pitch = fpFixed
660 | Font.Quality = fqNonAntialiased
661 | ParentColor = False
662 | ParentFont = False
663 | PopupMenu = SynPopupMenu1
664 | TabOrder = 0
665 | Gutter.Width = 72
666 | Gutter.MouseActions = <>
667 | RightGutter.Width = 0
668 | RightGutter.MouseActions = <>
669 | Highlighter = SynHTMLSyn1
670 | Keystrokes = <
671 | item
672 | Command = ecUp
673 | ShortCut = 38
674 | end
675 | item
676 | Command = ecSelUp
677 | ShortCut = 8230
678 | end
679 | item
680 | Command = ecScrollUp
681 | ShortCut = 16422
682 | end
683 | item
684 | Command = ecDown
685 | ShortCut = 40
686 | end
687 | item
688 | Command = ecSelDown
689 | ShortCut = 8232
690 | end
691 | item
692 | Command = ecScrollDown
693 | ShortCut = 16424
694 | end
695 | item
696 | Command = ecLeft
697 | ShortCut = 37
698 | end
699 | item
700 | Command = ecSelLeft
701 | ShortCut = 8229
702 | end
703 | item
704 | Command = ecWordLeft
705 | ShortCut = 16421
706 | end
707 | item
708 | Command = ecSelWordLeft
709 | ShortCut = 24613
710 | end
711 | item
712 | Command = ecRight
713 | ShortCut = 39
714 | end
715 | item
716 | Command = ecSelRight
717 | ShortCut = 8231
718 | end
719 | item
720 | Command = ecWordRight
721 | ShortCut = 16423
722 | end
723 | item
724 | Command = ecSelWordRight
725 | ShortCut = 24615
726 | end
727 | item
728 | Command = ecPageDown
729 | ShortCut = 34
730 | end
731 | item
732 | Command = ecSelPageDown
733 | ShortCut = 8226
734 | end
735 | item
736 | Command = ecPageBottom
737 | ShortCut = 16418
738 | end
739 | item
740 | Command = ecSelPageBottom
741 | ShortCut = 24610
742 | end
743 | item
744 | Command = ecPageUp
745 | ShortCut = 33
746 | end
747 | item
748 | Command = ecSelPageUp
749 | ShortCut = 8225
750 | end
751 | item
752 | Command = ecPageTop
753 | ShortCut = 16417
754 | end
755 | item
756 | Command = ecSelPageTop
757 | ShortCut = 24609
758 | end
759 | item
760 | Command = ecLineStart
761 | ShortCut = 36
762 | end
763 | item
764 | Command = ecSelLineStart
765 | ShortCut = 8228
766 | end
767 | item
768 | Command = ecEditorTop
769 | ShortCut = 16420
770 | end
771 | item
772 | Command = ecSelEditorTop
773 | ShortCut = 24612
774 | end
775 | item
776 | Command = ecLineEnd
777 | ShortCut = 35
778 | end
779 | item
780 | Command = ecSelLineEnd
781 | ShortCut = 8227
782 | end
783 | item
784 | Command = ecEditorBottom
785 | ShortCut = 16419
786 | end
787 | item
788 | Command = ecSelEditorBottom
789 | ShortCut = 24611
790 | end
791 | item
792 | Command = ecToggleMode
793 | ShortCut = 45
794 | end
795 | item
796 | Command = ecCopy
797 | ShortCut = 16429
798 | end
799 | item
800 | Command = ecPaste
801 | ShortCut = 8237
802 | end
803 | item
804 | Command = ecDeleteChar
805 | ShortCut = 46
806 | end
807 | item
808 | Command = ecCut
809 | ShortCut = 8238
810 | end
811 | item
812 | Command = ecDeleteLastChar
813 | ShortCut = 8
814 | end
815 | item
816 | Command = ecDeleteLastChar
817 | ShortCut = 8200
818 | end
819 | item
820 | Command = ecDeleteLastWord
821 | ShortCut = 16392
822 | end
823 | item
824 | Command = ecUndo
825 | ShortCut = 32776
826 | end
827 | item
828 | Command = ecRedo
829 | ShortCut = 40968
830 | end
831 | item
832 | Command = ecLineBreak
833 | ShortCut = 13
834 | end
835 | item
836 | Command = ecSelectAll
837 | ShortCut = 16449
838 | end
839 | item
840 | Command = ecCopy
841 | ShortCut = 16451
842 | end
843 | item
844 | Command = ecBlockIndent
845 | ShortCut = 24649
846 | end
847 | item
848 | Command = ecLineBreak
849 | ShortCut = 16461
850 | end
851 | item
852 | Command = ecInsertLine
853 | ShortCut = 16462
854 | end
855 | item
856 | Command = ecDeleteWord
857 | ShortCut = 16468
858 | end
859 | item
860 | Command = ecBlockUnindent
861 | ShortCut = 24661
862 | end
863 | item
864 | Command = ecPaste
865 | ShortCut = 16470
866 | end
867 | item
868 | Command = ecCut
869 | ShortCut = 16472
870 | end
871 | item
872 | Command = ecDeleteLine
873 | ShortCut = 16473
874 | end
875 | item
876 | Command = ecDeleteEOL
877 | ShortCut = 24665
878 | end
879 | item
880 | Command = ecUndo
881 | ShortCut = 16474
882 | end
883 | item
884 | Command = ecRedo
885 | ShortCut = 24666
886 | end
887 | item
888 | Command = ecGotoMarker0
889 | ShortCut = 16432
890 | end
891 | item
892 | Command = ecGotoMarker1
893 | ShortCut = 16433
894 | end
895 | item
896 | Command = ecGotoMarker2
897 | ShortCut = 16434
898 | end
899 | item
900 | Command = ecGotoMarker3
901 | ShortCut = 16435
902 | end
903 | item
904 | Command = ecGotoMarker4
905 | ShortCut = 16436
906 | end
907 | item
908 | Command = ecGotoMarker5
909 | ShortCut = 16437
910 | end
911 | item
912 | Command = ecGotoMarker6
913 | ShortCut = 16438
914 | end
915 | item
916 | Command = ecGotoMarker7
917 | ShortCut = 16439
918 | end
919 | item
920 | Command = ecGotoMarker8
921 | ShortCut = 16440
922 | end
923 | item
924 | Command = ecGotoMarker9
925 | ShortCut = 16441
926 | end
927 | item
928 | Command = ecSetMarker0
929 | ShortCut = 24624
930 | end
931 | item
932 | Command = ecSetMarker1
933 | ShortCut = 24625
934 | end
935 | item
936 | Command = ecSetMarker2
937 | ShortCut = 24626
938 | end
939 | item
940 | Command = ecSetMarker3
941 | ShortCut = 24627
942 | end
943 | item
944 | Command = ecSetMarker4
945 | ShortCut = 24628
946 | end
947 | item
948 | Command = ecSetMarker5
949 | ShortCut = 24629
950 | end
951 | item
952 | Command = ecSetMarker6
953 | ShortCut = 24630
954 | end
955 | item
956 | Command = ecSetMarker7
957 | ShortCut = 24631
958 | end
959 | item
960 | Command = ecSetMarker8
961 | ShortCut = 24632
962 | end
963 | item
964 | Command = ecSetMarker9
965 | ShortCut = 24633
966 | end
967 | item
968 | Command = EcFoldLevel1
969 | ShortCut = 41009
970 | end
971 | item
972 | Command = EcFoldLevel2
973 | ShortCut = 41010
974 | end
975 | item
976 | Command = EcFoldLevel3
977 | ShortCut = 41011
978 | end
979 | item
980 | Command = EcFoldLevel4
981 | ShortCut = 41012
982 | end
983 | item
984 | Command = EcFoldLevel5
985 | ShortCut = 41013
986 | end
987 | item
988 | Command = EcFoldLevel6
989 | ShortCut = 41014
990 | end
991 | item
992 | Command = EcFoldLevel7
993 | ShortCut = 41015
994 | end
995 | item
996 | Command = EcFoldLevel8
997 | ShortCut = 41016
998 | end
999 | item
1000 | Command = EcFoldLevel9
1001 | ShortCut = 41017
1002 | end
1003 | item
1004 | Command = EcFoldLevel0
1005 | ShortCut = 41008
1006 | end
1007 | item
1008 | Command = EcFoldCurrent
1009 | ShortCut = 41005
1010 | end
1011 | item
1012 | Command = EcUnFoldCurrent
1013 | ShortCut = 41003
1014 | end
1015 | item
1016 | Command = EcToggleMarkupWord
1017 | ShortCut = 32845
1018 | end
1019 | item
1020 | Command = ecNormalSelect
1021 | ShortCut = 24654
1022 | end
1023 | item
1024 | Command = ecColumnSelect
1025 | ShortCut = 24643
1026 | end
1027 | item
1028 | Command = ecLineSelect
1029 | ShortCut = 24652
1030 | end
1031 | item
1032 | Command = ecTab
1033 | ShortCut = 9
1034 | end
1035 | item
1036 | Command = ecShiftTab
1037 | ShortCut = 8201
1038 | end
1039 | item
1040 | Command = ecMatchBracket
1041 | ShortCut = 24642
1042 | end
1043 | item
1044 | Command = ecColSelUp
1045 | ShortCut = 40998
1046 | end
1047 | item
1048 | Command = ecColSelDown
1049 | ShortCut = 41000
1050 | end
1051 | item
1052 | Command = ecColSelLeft
1053 | ShortCut = 40997
1054 | end
1055 | item
1056 | Command = ecColSelRight
1057 | ShortCut = 40999
1058 | end
1059 | item
1060 | Command = ecColSelPageDown
1061 | ShortCut = 40994
1062 | end
1063 | item
1064 | Command = ecColSelPageBottom
1065 | ShortCut = 57378
1066 | end
1067 | item
1068 | Command = ecColSelPageUp
1069 | ShortCut = 40993
1070 | end
1071 | item
1072 | Command = ecColSelPageTop
1073 | ShortCut = 57377
1074 | end
1075 | item
1076 | Command = ecColSelLineStart
1077 | ShortCut = 40996
1078 | end
1079 | item
1080 | Command = ecColSelLineEnd
1081 | ShortCut = 40995
1082 | end
1083 | item
1084 | Command = ecColSelEditorTop
1085 | ShortCut = 57380
1086 | end
1087 | item
1088 | Command = ecColSelEditorBottom
1089 | ShortCut = 57379
1090 | end>
1091 | MouseActions = <>
1092 | MouseTextActions = <>
1093 | MouseSelActions = <>
1094 | Options = [eoAutoIndent, eoBracketHighlight, eoGroupUndo, eoSmartTabs, eoTabsToSpaces]
1095 | VisibleSpecialChars = [vscSpace, vscTabAtLast]
1096 | ScrollBars = ssAutoBoth
1097 | SelectedColor.BackPriority = 50
1098 | SelectedColor.ForePriority = 50
1099 | SelectedColor.FramePriority = 50
1100 | SelectedColor.BoldPriority = 50
1101 | SelectedColor.ItalicPriority = 50
1102 | SelectedColor.UnderlinePriority = 50
1103 | SelectedColor.StrikeOutPriority = 50
1104 | BracketHighlightStyle = sbhsBoth
1105 | BracketMatchColor.Background = clNone
1106 | BracketMatchColor.Foreground = clNone
1107 | BracketMatchColor.Style = [fsBold]
1108 | FoldedCodeColor.Background = clNone
1109 | FoldedCodeColor.Foreground = clGray
1110 | FoldedCodeColor.FrameColor = clGray
1111 | MouseLinkColor.Background = clNone
1112 | MouseLinkColor.Foreground = clBlue
1113 | LineHighlightColor.Background = clNone
1114 | LineHighlightColor.Foreground = clNone
1115 | OnChange = SE_HTMLChange
1116 | inline SynLeftGutterPartList1: TSynGutterPartList
1117 | object SynGutterMarks1: TSynGutterMarks
1118 | Width = 30
1119 | MouseActions = <>
1120 | MaxExtraMarksColums = 0
1121 | Options = [sgmoDeDuplicateMarksOnOverflow]
1122 | MarkupInfo.Background = clBtnFace
1123 | MarkupInfo.Foreground = clNone
1124 | end
1125 | object SynGutterLineNumber1: TSynGutterLineNumber
1126 | Width = 21
1127 | MouseActions = <>
1128 | MarkupInfo.Background = clBtnFace
1129 | MarkupInfo.Foreground = clNone
1130 | DigitCount = 2
1131 | ShowOnlyLineNumbersMultiplesOf = 1
1132 | ZeroStart = False
1133 | LeadingZeros = False
1134 | end
1135 | object SynGutterChanges1: TSynGutterChanges
1136 | Width = 5
1137 | MouseActions = <>
1138 | ModifiedColor = 59900
1139 | SavedColor = clGreen
1140 | MarkupInfo.Background = clNone
1141 | MarkupInfo.Foreground = clGreen
1142 | MarkupInfo.FrameColor = 59900
1143 | end
1144 | object SynGutterSeparator1: TSynGutterSeparator
1145 | Width = 3
1146 | MouseActions = <>
1147 | MarkupInfo.Background = clWhite
1148 | MarkupInfo.Foreground = clGray
1149 | end
1150 | object SynGutterCodeFolding1: TSynGutterCodeFolding
1151 | Width = 13
1152 | MouseActions = <>
1153 | MarkupInfo.Background = clNone
1154 | MarkupInfo.Foreground = clGray
1155 | MouseActionsExpanded = <>
1156 | MouseActionsCollapsed = <>
1157 | end
1158 | end
1159 | end
1160 | end
1161 | end
1162 | object Splitter1: TSplitter
1163 | Left = 484
1164 | Height = 679
1165 | Top = 42
1166 | Width = 6
1167 | end
1168 | object HtmlViewer: THtmlViewer
1169 | Left = 490
1170 | Height = 679
1171 | Top = 42
1172 | Width = 492
1173 | BorderStyle = htSingle
1174 | DefBackground = clWhite
1175 | HistoryMaxCount = 0
1176 | ImageCacheCount = 10
1177 | NoSelect = False
1178 | PrintMarginBottom = 2
1179 | PrintMarginLeft = 2
1180 | PrintMarginRight = 2
1181 | PrintMarginTop = 2
1182 | PrintScale = 1
1183 | QuirksMode = qmDetect
1184 | Align = alClient
1185 | PopupMenu = PopupMenu1
1186 | TabOrder = 3
1187 | OnEnter = HtmlViewerEnter
1188 | end
1189 | object SynHTMLSyn1: TSynHTMLSyn
1190 | DefaultFilter = 'Documento HTML (*.htm,*.html)|*.htm;*.html'
1191 | Enabled = False
1192 | KeyAttri.Foreground = clMaroon
1193 | KeyAttri.Style = []
1194 | Left = 392
1195 | Top = 128
1196 | end
1197 | object OpenDialog1: TOpenDialog
1198 | DefaultExt = '.*.md'
1199 | Filter = 'MarkDown|*.md; *.text|TextFile|*.txt|All Files|*.*'
1200 | Options = [ofFileMustExist, ofEnableSizing, ofViewDetail]
1201 | Left = 90
1202 | Top = 140
1203 | end
1204 | object SaveDialog1: TSaveDialog
1205 | DefaultExt = '.*.md'
1206 | Filter = 'MarkDown|*.md;*.text|Text file|*.txt|All files|*.*'
1207 | Options = [ofPathMustExist, ofEnableSizing, ofViewDetail]
1208 | Left = 90
1209 | Top = 230
1210 | end
1211 | object SynFreePascalSyn1: TSynFreePascalSyn
1212 | Enabled = False
1213 | CommentAttri.Foreground = clGreen
1214 | NumberAttri.Foreground = clNavy
1215 | StringAttri.Foreground = clBlue
1216 | SymbolAttri.Foreground = clRed
1217 | CompilerMode = pcmObjFPC
1218 | NestedComments = True
1219 | TypeHelpers = False
1220 | StringMultilineMode = []
1221 | Left = 392
1222 | Top = 60
1223 | end
1224 | object SynCppSyn1: TSynCppSyn
1225 | DefaultFilter = 'Ficheros C++ (*.c,*.cpp,*.h,*.hpp,*.hh)|*.c;*.cpp;*.h;*.hpp;*.hh'
1226 | Enabled = False
1227 | CommentAttri.Foreground = clGreen
1228 | DirecAttri.Foreground = clNavy
1229 | IdentifierAttri.Foreground = 12615680
1230 | KeyAttri.Foreground = clRed
1231 | NumberAttri.Foreground = clGreen
1232 | StringAttri.Foreground = clBlue
1233 | Left = 392
1234 | Top = 200
1235 | end
1236 | object SynVHDLSyn1: TSynVHDLSyn
1237 | DefaultFilter = 'VHDL Files (*.vhd;*.vhdl)|*.vhd;*.vhdl'
1238 | Enabled = False
1239 | Left = 392
1240 | Top = 272
1241 | end
1242 | object ImageList1: TImageList
1243 | Left = 90
1244 | Top = 330
1245 | Bitmap = {
1246 | 4C7A0700000010000000100000006C0800000000000078DAED996B5094D719C7
1247 | F99074FAC162C0860F4147300CD6D112EFC5D27651D3494B1C302618B9A8C488
1248 | 225A1D05D144E22242101554C098A412C4869B68A222220A2C1188012F542962
1249 | C0DD75D94524DC417145EABFCF73D877B322905DEB4C3A4E77E637FB72DEE7F7
1250 | 9CEB7BF6EC626535F82B6EDF5EC4EDDB23D8BD770F76ED89436CFC6EECD8BD13
1251 | 31BB62111DBB03513B626035949FB017BDBDBD82070F1E40AFD7A3A7A707DDDD
1252 | DDE8E8E8406B6B2BB6C77C3CACFFF0E143819483FDBB77EF1AFDC88FA387F6F7
1253 | 0DEE73FD9D9D9D686B6BC3B6E8A861FC3D43D62FF91151919897A00A7EFBC02D
1254 | 7DC0211D020E6905FC378F99D47F6660FFD9976FDF26620B347DB8D0047C7B07
1255 | 286D04F26FF561D7DE7851A73476F7EFDF177577757519FBBF3532025CEF77E4
1256 | 5610E53FA03F0FB1333E4E3812F7EEDD33F6BDBDBD5DF81F6DEBF78BEAFBF09E
1257 | 68BB6E10B458CAA4D46349B206FE07D558F8A90AA159F508DF2617F7134B3BB1
1258 | E77C87683F53C6FD30F4E59BDB4091B60F67553DC8B9DE86A397B5D89B5F87F8
1259 | 3C2DC223E422F79AAC46E42A7B71DE105F6C40D10014EA1EE1ECAD87C8ADBD8B
1260 | AFAA9A9159A14148E64D145D6B247F2B9650BB96A56A51A8D1A340F340C4E613
1261 | 67883C752F4EABF4C8A9BD87AFFFD58ECCCBB771F85B25961C54A2A1B1095BC8
1262 | F7F95C8D2D271A70FA463B4EDDE8C0C99A4E1C27BEBEDECFB1EA76645F6B41C6
1263 | 25722FA8B1BFA0163E71A5A26EE6ADFD2A7C52A4C1B12B3A645F6940D6E50611
1264 | CBA45F6C405A850EFFF84E8343654A247FF33D361FF95EAC19699DD175138FA7
1265 | DFDF7FC477209FABA89D4AF87CA68467A2EA1E39D656CFE8F565E074F8F8745B
1266 | 0C7BCFCA6FA167C152FEEF3F3BFF6979D6FEE9C2B34362AE3F549EE7D8F7FE6F
1267 | C6AFB8B8F8B941317A74ED356BEB1635D145E888EBC465C21C9FDD86868604B5
1268 | 5A1DBE72E5CA6EA55219AAD56A77554D9E5C638ECFF5B27BE4C891889090901F
1269 | 72727222E9EF8FEAA74FD799E3739B6B6A6A1653DD618E8E8E080B0B5B565757
1270 | B7BAC7D5B5C71C9FFB7BE9D2A5C98B162D8AD5F8FB479FA5F168F4F0486EB4B1
1271 | 6912EF0686F279ACAE529D17895E5B5BFA34EE7F9D3A750AC697A72786F2AF1C
1272 | 3830B32229C9ED02A1B7B3D3488A9B9B9B59BE293D63C6DCE0F0E4E464F8FAFA
1273 | 223636F6A9FCF9F3E7A7A954AA727F7FFF043EF358EA5756568A6AABABABC559
1274 | CC5C5F1914145A4FF33018CFD333F73FBF27D09A36C5227FEDDABF9D193912E7
1275 | 66CE2C297FFDF56AC50B2F3C28A6356EB64FCF11AD9B776A6B6B83E9DC5ECE7B
1276 | CBE9A953AB7FB2CDB4F618F6A5B2FAFAFAD8B2B2B25185AEAE85C3BAF4DC5DF4
1277 | F6AEC84B4B436A6A74CAA64D9B024CFD33D3A6550EE7A705079FA37DA7C2C3C3
1278 | E3E839B91C2792E695E4A5A7BB497ECE6BAF6986F3BF78FFFD9AF31B36DC9A3B
1279 | 77EE95345B5BA89292EA8A693F90FCE39326B50EE7D77CF861DD3A990C95A1A1
1280 | 28A6BD2A77E3C6C8FCFC7C7BC9CF9D3CB96EB8FDDF77E1427C4A7EC94B2F41F1
1281 | E28BFAE2BCBC11A6FD2F9A352BEF09D7D77707E7DDEFED8DC4C4C468A9FCD49B
1282 | 6F9E3B3A7E3C4C391B1414FD3C3D1FB4B5FDACC8698DC9E55646647219AC68FE
1283 | E87313E6FA038B398742A130DB97A50440AE703716733B2CF1AD222220777787
1284 | C2C1814AC8B7B2CC67C7144B7DB9C19190197C7373F0584BF1122929297C3E84
1285 | 8CE6A27F8C2D9F5B763987186399D563F34C0DC7D2A54BF1D36B432EDAC38EE9
1286 | 6D056470777737BB5D5614CB73AC503B188B2DF5650101629EA579B2C4970F98
1287 | 634B7DD98039965BE80F36C78CE96F01050505888989A1339327E6FC89BED77B
1288 | F5C3D75CC6F73866B0DF11688FC6F2E5CBE1E4F80A562C188BDC7817D4664F17
1289 | F03597F13D8EE15853F7C48913D8F05E0096BFFC4BF42C7005D62E073E206203
1290 | 014504D0F105D09884CC7D5E701C638B55AB82C08EE4D379193EBFB5C7CD1923
1291 | 80153EE4AE013CA600EF8E07FEE90F347F0074A7026D3B10B77912FEF03B67B0
1292 | C32E8F81B3B3333ED938115D87670001BF07A21703F90140DE5F801B6F014DAB
1293 | A80DDB81D675682E9F83DD61CEC26197CFC6B6F43977BBDC03B8B30028980B1C
1294 | A07939E745AE2750F167A0C58F5CCAD9F2B688D1964C110EBB9999991849670C
1295 | B42C01BAA8CFDDF47E93BC432E409213B06A14707002A07903E87C87629601BA
1296 | 99C261F7F0E1C3B0B6B6067AA8CFF7D701BDAB013D8D5B33B525615CFF5A1B41
1297 | 848C052ECEA3832CB5A36D8670D84D4D4DEDAFBF6B3DD0B71978B89158DFDF96
1298 | 8333815F19FC577E01CCA11CABFF48B9A709875DC6CECE0ECA2AEAE3BFB7D252
1299 | DB497922892D40FD0A1ACF89C0381BC06534E02703E2BD5059325138EC721B5C
1300 | 5C5CB026E837E8BC4D7522D54012F585CEFCD9D4DF7954E7BA4540D576B4D5BC
1301 | 8BA57EF6C26197C760F1E2C5183B762C42D64E30B4E118719CFC34E064141019
1302 | 0694C689BE05073AC181F66976D8E539888A8A82979717ECEDEDE1F1C6ABB85C
1303 | B2926233683C4F02B99F51BA68F4AA698D79BF2A6238961D76790D646464203C
1304 | 3C1C746682939313468DB2C538071BAC0A188D2DEB1D3063CAAF61F7B28DB8C7
1305 | 311CCB8EF4FC151616223D3D5D947BD31964F6ECD9E23BD3AC59B3047CCD657C
1306 | 8F6338961DD367A8A8A808D9D9D9888B8B43289D9D82828210181828E06B2EE3
1307 | 7B1CC3B19237D47EE1BEFFAF038181C7CA39363FD1DF149862EA8F7FE4FE440E
1308 | C937BC03776F0A4CEA3332BED74D609AC3A47E3CEAAC459F3A43C031CE5DAE43
1309 | 22E590EAED6BAD81FEFA21237CDFA979EA90F875AE143192DFDB5485EE4B078C
1310 | F03DBFE6158FE1A89B24E0EB81F5EB6F5F457BC93E2383F5DF4139017E779689
1311 | EBD2D252D3FEE3BEAE12AD45F183C2F7447B743FBA03FCFE36345E454759E263
1312 | 7099611E879D7FE338B6DD780C2ED36AB568696941565616A47562BAD6865B3F
1313 | ECF0FF3F06E618C67F82C17258E29BE6E0DF009EC697720CD6FE9F93FF005FED
1314 | A351
1315 | }
1316 | end
1317 | object IniPropStorage1: TIniPropStorage
1318 | StoredValues = <>
1319 | Left = 90
1320 | Top = 430
1321 | end
1322 | object SynJScriptSyn1: TSynJScriptSyn
1323 | Enabled = False
1324 | CommentAttri.Foreground = clGray
1325 | IdentifierAttri.Foreground = 12615680
1326 | KeyAttri.Foreground = clRed
1327 | NumberAttri.Foreground = clGreen
1328 | StringAttri.Foreground = clBlue
1329 | Left = 392
1330 | Top = 344
1331 | end
1332 | object SynJSONSyn1: TSynJSONSyn
1333 | DefaultFilter = 'JSON Files (*.json)|*.json'
1334 | Enabled = False
1335 | Left = 392
1336 | Top = 488
1337 | end
1338 | object SynJavaSyn1: TSynJavaSyn
1339 | DefaultFilter = 'Java Files (*.java)|*.java'
1340 | Enabled = False
1341 | Left = 392
1342 | Top = 416
1343 | end
1344 | object SynSmaliSyn1: TSynSmaliSyn
1345 | Enabled = False
1346 | Left = 392
1347 | Top = 560
1348 | end
1349 | object SynXMLSyn1: TSynXMLSyn
1350 | DefaultFilter = 'XML Document (*.xml,*.xsd,*.xsl,*.xslt,*.dtd)|*.xml;*.xsd;*.xsl;*.xslt;*.dtd'
1351 | Enabled = False
1352 | WantBracesParsed = False
1353 | Left = 248
1354 | Top = 128
1355 | end
1356 | object SynUNIXShellScriptSyn1: TSynUNIXShellScriptSyn
1357 | DefaultFilter = 'UNIX Shell Scripts (*.sh)|*.sh'
1358 | Enabled = False
1359 | Left = 248
1360 | Top = 60
1361 | end
1362 | object PopupMenu1: TPopupMenu
1363 | Images = ImageList1
1364 | Left = 528
1365 | Top = 64
1366 | object CopyHTLMViewer: TMenuItem
1367 | Caption = 'Copy'
1368 | ImageIndex = 2
1369 | ShortCut = 16451
1370 | OnClick = CopyHTLMViewerClick
1371 | end
1372 | object M_SearchFind: TMenuItem
1373 | Action = A_SearchFind
1374 | end
1375 | end
1376 | object SynPopupMenu1: TSynPopupMenu
1377 | Left = 90
1378 | Top = 64
1379 | end
1380 | object ActionList1: TActionList
1381 | Images = ImageList1
1382 | Left = 248
1383 | Top = 200
1384 | object A_OpenFile: TAction
1385 | Caption = 'Open File'
1386 | ImageIndex = 0
1387 | ShortCut = 16463
1388 | OnExecute = B_OpenFileClick
1389 | end
1390 | object A_SaveFile: TAction
1391 | Caption = 'Save File'
1392 | ImageIndex = 1
1393 | ShortCut = 16467
1394 | OnExecute = A_SaveFileExecute
1395 | end
1396 | object A_SaveAs: TAction
1397 | Caption = 'Save to File'
1398 | ImageIndex = 1
1399 | OnExecute = B_SaveAsClick
1400 | end
1401 | object A_CopyAll: TAction
1402 | Caption = 'Copy All'
1403 | ImageIndex = 2
1404 | OnExecute = B_CopyClick
1405 | end
1406 | object A_Paste: TAction
1407 | Caption = 'Paste'
1408 | ImageIndex = 3
1409 | OnExecute = B_PasteClick
1410 | end
1411 | object A_Convert: TAction
1412 | Caption = 'Convert'
1413 | ImageIndex = 4
1414 | OnExecute = B_ConvertClick
1415 | end
1416 | object A_View: TAction
1417 | Caption = 'View in Browser'
1418 | ImageIndex = 5
1419 | OnExecute = B_ViewBrowserClick
1420 | end
1421 | object A_SearchFind: TAction
1422 | Caption = 'Find...'
1423 | ImageIndex = 6
1424 | ShortCut = 16454
1425 | OnExecute = A_SearchFindExecute
1426 | end
1427 | end
1428 | object SynMarkdownSyn1: TSynMarkdownSyn
1429 | Enabled = False
1430 | CodeBlockAttri.Style = [fsItalic]
1431 | SpaceAttri.Foreground = clSilver
1432 | SpaceAttri.ForePriority = 10
1433 | Left = 392
1434 | Top = 640
1435 | end
1436 | object FindDialog1: TFindDialog
1437 | Options = [frDown, frHideWholeWord, frEntireScope]
1438 | OnFind = onFind
1439 | Left = 624
1440 | Top = 60
1441 | end
1442 | object SynRubySyn1: TSynRubySyn
1443 | Enabled = False
1444 | Left = 248
1445 | Top = 272
1446 | end
1447 | object SynCssSyn1: TSynCssSyn
1448 | DefaultFilter = 'Cascading Stylesheets (*.css)|*.css'
1449 | Enabled = False
1450 | CommentAttri.Foreground = clGreen
1451 | IdentifierAttri.Foreground = 12615680
1452 | KeyAttri.Foreground = clRed
1453 | NumberAttri.Foreground = clGreen
1454 | StringAttri.Foreground = clBlue
1455 | Left = 248
1456 | Top = 344
1457 | end
1458 | object SynPythonSyn1: TSynPythonSyn
1459 | DefaultFilter = 'Python Files (*.py)|*.py'
1460 | Enabled = False
1461 | CommentAttri.Foreground = clGreen
1462 | IdentifierAttri.Foreground = 12615680
1463 | KeyAttri.Foreground = clRed
1464 | Left = 248
1465 | Top = 416
1466 | end
1467 | end
1468 |
--------------------------------------------------------------------------------