mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
RichText, Doc: Added table of content to QTF and integrate it in Qtf designer.
git-svn-id: svn://ultimatepp.org/upp/trunk@15399 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
1a53effaf4
commit
6a4ea3cfef
3 changed files with 92 additions and 82 deletions
|
|
@ -1,5 +1,4 @@
|
|||
topic "Informative Dialogs";
|
||||
[2 $$0,0#00000000000000000000000000000000:Default]
|
||||
[i448;a25;kKO9;2 $$1,0#37138531426314131252341829483380:class]
|
||||
[l288;2 $$2,2#27521748481378242620020725143825:desc]
|
||||
[0 $$3,0#96390100711032703541132217272105:end]
|
||||
|
|
@ -10,6 +9,7 @@ topic "Informative Dialogs";
|
|||
[i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam]
|
||||
[b42;ph2 $$9,9#13035079074754324216151401829390:normal]
|
||||
[b42;a42;ph2 $$10,10#E71D914572A169C91BE52E3FB27F810F:text]
|
||||
[2 $$0,0#00000000000000000000000000000000:Default]
|
||||
[{_}%EN-US
|
||||
[ {{10000@(113.42.0) [s0; [*@7;4 Informative Dialogs]]}}&]
|
||||
[s10; Sometimes programmer needs to display simply informative dialog
|
||||
|
|
@ -26,12 +26,12 @@ error in the application.&]
|
|||
for your needs, you can compose your own dialog using build in
|
||||
functions. This functions is used to create all dialogs mentions
|
||||
in this reference.&]
|
||||
[s10; The message to informative dialog is passed by QTF format. It
|
||||
means that you can for example embed hyper`-link. But, on the
|
||||
other hand it can leads to troubles in displaying text. For example
|
||||
we have symbols that are special for QTF `- this situation can
|
||||
happened while displaying directory path. In this case we need
|
||||
to deqtf our text.using [*^topic`:`/`/RichText`/src`/Utilities`$en`-us`#Upp`:`:DeQtf`(const char`*`)^ D
|
||||
[s10; The message to informative dialog is passed by [*^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us^ Q
|
||||
TF] format. It means that you can for example embed hyper`-link.
|
||||
But, on the other hand it can leads to troubles in displaying
|
||||
text. For example we have symbols that are special for QTF `-
|
||||
this situation can happened while displaying directory path.
|
||||
In this case we need to deqtf our text.using [*^topic`:`/`/RichText`/src`/Utilities`$en`-us`#Upp`:`:DeQtf`(const char`*`)^ D
|
||||
eQtf][* ]function from RichText package. Below is the code that
|
||||
presenting how to solve such issue:&]
|
||||
[s10;l160; [/@(28.42.150) PromptOK(DeQtf(`"C:`\Program Files`\Upp`\theide`"));]&]
|
||||
|
|
|
|||
|
|
@ -1,36 +1,58 @@
|
|||
topic "QTF";
|
||||
[@(128.0.255)2 $$1,0#65874547464505293575048467215454:QTF Chr]
|
||||
[*/+117 $$2,0#07143242482611002448121871408047:title]
|
||||
[*C@3+75 $$3,3#36268203433472503231438721581057:code]
|
||||
[*C@3+75 $$2,2#36268203433472503231438721581057:code]
|
||||
[a83;*R6 $$3,0#31310162474203024125188417583966:caption]
|
||||
[H4;b83;*4 $$4,0#07864147445237544204411237157677:title]
|
||||
[b42;a42;ph2 $$5,5#45413000475342174754091244180557:text]
|
||||
[b83;*+117 $$6,6#1546C2CD4112BAB0A26C534D6F11ED13:subtitle]
|
||||
[2 $$0,0#00000000000000000000000000000000:Default]
|
||||
[{_}%EN-US
|
||||
[s0;= [*8 QTF]&]
|
||||
[s3; QTF&]
|
||||
[s4; Table of contents&]
|
||||
[s0; &]
|
||||
[s0; QTF is the native format of Ultimate`+`+ rich texts (formatted
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#1^ 1. Definition]&]
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#2^ 2. Format overview]&]
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#2`_1^ 2.1 Symbols]&]
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#2`_2^ 2.2 Colors]&]
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#2`_3^ 2.3 Basic
|
||||
QTF codes]&]
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#2`_4^ 2.4 Character
|
||||
and paragraph formatting]&]
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#2`_5^ 2.5 Styles]&]
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#2`_6^ 2.6 Objects]&]
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#2`_7^ 2.7 iml
|
||||
format]&]
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#2`_8^ 2.8 Fields]&]
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#2`_9^ 2.9 Tables]&]
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#2`_10^ 2.10 Global
|
||||
Header and Footer]&]
|
||||
[s0; [^topic`:`/`/RichText`/srcdoc`/QTF`_en`-us`#3^ 3. Examples]&]
|
||||
[s0; &]
|
||||
[s4;:1: 1. Definition&]
|
||||
[s5; QTF is the native format of Ultimate`+`+ rich texts (formatted
|
||||
texts).&]
|
||||
[s0; &]
|
||||
[s0; It is byte oriented format. Bytes with values 2`-31 are ignored.
|
||||
[s5; It is byte oriented format. Bytes with values 2`-31 are ignored.
|
||||
Other values are interpreted as characters or formatting commands.&]
|
||||
[s0; &]
|
||||
[s0; Letters ([@4 a]`-[@4 zA]`-[@4 Z]), numbers ([@4 0]`-[@4 9]), space (32)
|
||||
[s4;:2: 2. Format overview&]
|
||||
[s6;:2`_1: 2.1 Symbols&]
|
||||
[s5; Letters ([@4 a]`-[@4 zA]`-[@4 Z]), numbers ([@4 0]`-[@4 9]), space (32)
|
||||
and characters&]
|
||||
[s0; &]
|
||||
[s0; [*@4 . , ; ! ? % ( ) / < > #]&]
|
||||
[s0; &]
|
||||
[s0; and bytes greater than 127 are guaranteed to be never used as
|
||||
[s5; and bytes greater than 127 are guaranteed to be never used as
|
||||
command characters (not even in future versions of QTF). Other
|
||||
characters should be prefixed with escape character `` (reverse
|
||||
apostrophe). Group of characters can be escaped using byte 1.
|
||||
Example:&]
|
||||
[s0; &]
|
||||
[s3; `"`\1a`[x`]`\1`[`* bold`]`"&]
|
||||
[s2; `"`\1a`[x`]`\1`[`* bold`]`"&]
|
||||
[s0; &]
|
||||
[s0; Byte 0 represents the end of input sequence.&]
|
||||
[s0; &]
|
||||
[s0; Dimension units of QTF are dots `- one dot is defined as 1/600
|
||||
[s5; Byte 0 represents the end of input sequence.&]
|
||||
[s5; Dimension units of QTF are dots `- one dot is defined as 1/600
|
||||
of inch.&]
|
||||
[s0; &]
|
||||
[s0; Colors are described as either number [@(128.0.255) 0]`-[@(128.0.255) 9],
|
||||
[s6;:2`_2: 2.2 Colors&]
|
||||
[s5; Colors are described as either number [@(128.0.255) 0]`-[@(128.0.255) 9],
|
||||
with meaning&]
|
||||
[s0; &]
|
||||
[ {{1000:1000:1000:1000:1000:1000:1000:1000:1000:1000<96;>96;f4; [s0;%- [* 0]]
|
||||
|
|
@ -140,10 +162,8 @@ umber][@(128.0.255) )]&]
|
|||
[s0; [@(128.0.255) N]&]
|
||||
[s0;@(128.0.255) &]
|
||||
[s0; used in place of color designates transparent color.&]
|
||||
[s0; &]
|
||||
[s0; &]
|
||||
[s2; Basic QTF codes&]
|
||||
[s0; &]
|
||||
[s6;:2`_3: 2.3 Basic QTF codes&]
|
||||
[s5; Basic QTF codes are:&]
|
||||
[s0; &]
|
||||
[ {{2003:7997<96;>96; [s0; [C@(128.0.255) `_]]
|
||||
:: [s0; Hard`-space `- space that cannot be divided at the end of line.]
|
||||
|
|
@ -154,8 +174,7 @@ umber][@(128.0.255) )]&]
|
|||
:: [s0;%- [%%C@(128.0.255) `@`$][%%*C@(0.0.255) hex][C@(128.0.255) ;]]
|
||||
:: [s0; Unicode character as hexadecimal number.]}}&]
|
||||
[s0; &]
|
||||
[s0; &]
|
||||
[s2; Character and paragraph formatting&]
|
||||
[s6;:2`_4: 2.4 Character and paragraph formatting&]
|
||||
[s0; &]
|
||||
[s0; Character and paragraph formatting starts with&]
|
||||
[s0;@(128.0.255) &]
|
||||
|
|
@ -409,17 +428,15 @@ code. Example: [*C@3 `"`[l200;4 `"]]
|
|||
QTF representing header/footer. This QTF can contain field[@5
|
||||
`{:VALUE:PAGENUMBER:`} ]to represent page number and[@5 `{:VALUE:PAGECOUNT:`}]
|
||||
to represent total number of pages.]}}&]
|
||||
[s0;3 &]
|
||||
[s0;3 &]
|
||||
[s2; Styles&]
|
||||
[s0; &]
|
||||
[s0; Paragraph styles are defined using normal character/paragraph
|
||||
[s6;:2`_5: 2.5 Styles&]
|
||||
[s5; Paragraph styles are defined using normal character/paragraph
|
||||
formatting sequence with&]
|
||||
[s0; &]
|
||||
[s0; [@(128.0.255) `$`$][/@(0.0.255) number][@(128.0.255) ,][/@(0.0.255) nnumber][@(128.0.255) #
|
||||
][/@(0.0.255) uuid][@(128.0.255) :][/@(0.0.255) name]&]
|
||||
[s0; &]
|
||||
[s0; instead of text, where&]
|
||||
[s5; instead of text, where&]
|
||||
[s0; &]
|
||||
[ {{1879:8121^ [s0;%- [@(0.0.255) number]]
|
||||
:: [s0; Number of style `- can be used with [@(128.0.255) s] paragraph
|
||||
|
|
@ -433,15 +450,13 @@ when inserting paragraphs.]
|
|||
:: [s0; Name of style, displayed by editors. Can also be used with [@(128.0.255) s]
|
||||
paragraph format command code.]}}&]
|
||||
[s0; &]
|
||||
[s0; Style with [@(0.0.255) number] `= 0 and [@(0.0.255) uuid `= ]00000000000000000000000
|
||||
[s5; Style with [@(0.0.255) number] `= 0 and [@(0.0.255) uuid `= ]00000000000000000000000
|
||||
000000000 is [*/ default] style.&]
|
||||
[s0; &]
|
||||
[s0; Example:&]
|
||||
[s0; &]
|
||||
[s0; [C@3 `"`[`*/`+117 `$`$2,0#07143242482611002448121871408047:title`]`"]&]
|
||||
[s0;@(0.0.255) &]
|
||||
[s0;@(0.0.255) &]
|
||||
[s2; Objects&]
|
||||
[s6;:2`_6: 2.6 Objects&]
|
||||
[s0;@(0.0.255) &]
|
||||
[s0; Object plays the role of the single character and is displayed
|
||||
according to its type. It is started with a header in the form&]
|
||||
|
|
@ -465,42 +480,35 @@ By default, RichText recognizes the PNG format and [*/ iml] format
|
|||
:: [s0; [@(0.0.255) cy]]
|
||||
:: [s0; Height of object in dots.]}}&]
|
||||
[s0;@(0.0.255) &]
|
||||
[s0; First form with `'[@(128.0.255) `&]`' activates `"keep aspect
|
||||
[s5; First form with `'[@(128.0.255) `&]`' activates `"keep aspect
|
||||
ratio`" for the object, second form with `'[@(128.0.255) `*]`'
|
||||
leaves this option inactive.&]
|
||||
[s0; &]
|
||||
[s0; Optionally, there can be 3rd number, separated by `'[@(128.0.255) /]`'
|
||||
[s5; Optionally, there can be 3rd number, separated by `'[@(128.0.255) /]`'
|
||||
character. This number represent vertical placement of object,
|
||||
default value 0 means that bottom border of object is aligned
|
||||
with baseline of text.&]
|
||||
[s0; &]
|
||||
[s0; If header is followed by `'```' character, object data are in
|
||||
[s5; If header is followed by `'```' character, object data are in
|
||||
text format. In that case, object data are terminated with another
|
||||
`'```' character. If there needs to be `'```' in the text, `'`````'
|
||||
can be used as escape sequence.&]
|
||||
[s0; &]
|
||||
[s0; If header is followed by `'(`', it countains BASE64 encoded
|
||||
[s5; If header is followed by `'(`', it countains BASE64 encoded
|
||||
binary data, ending with `')`'. [* This is default format for binary
|
||||
data].&]
|
||||
[s0; &]
|
||||
[s0; If there is no `'```' nor `'(`', header is in binary 7 bit format.
|
||||
[s5; If there is no `'```' nor `'(`', header is in binary 7 bit format.
|
||||
Bit 7 of data bytes is always 1, so that actual data bytes are
|
||||
in range 128`-255. First byte in range 32`-127 ends data sequence.
|
||||
Data are encoded in 7 byte groups, which corresponds to 8 bytes
|
||||
of encoded format. First byte of this 8 bytes block always contains
|
||||
eight bits of following bytes, LSB (that is bit 0) being the
|
||||
eight bit for first byte in block. [/ This format is deprecated.]&]
|
||||
[s0; &]
|
||||
[s0; [*/3 iml][*3 format]&]
|
||||
[s0;* &]
|
||||
[s0; [*/ iml][* ]format is text format of rich object where text data
|
||||
reference existing .iml based Image as pair [@(0.0.255) iml`_class`_name]:[@(0.0.255) i
|
||||
mage`_name]. Example of full object definition in [*/ iml] format:&]
|
||||
[s6;:2`_7: 2.7 iml format&]
|
||||
[s5; iml format is text format of rich object where text data reference
|
||||
existing .iml based Image as pair [@(0.0.255) iml`_class`_name]:[@(0.0.255) image`_nam
|
||||
e]. Example of full object definition in iml format:&]
|
||||
[s0; &]
|
||||
[s0; [*C@3 `"`@`@iml:400`*400``CtrlImg:exclamation```"]&]
|
||||
[s0;@(0.0.255) &]
|
||||
[s0;@(0.0.255) &]
|
||||
[s2; Fields&]
|
||||
[s6;:2`_8: 2.8 Fields&]
|
||||
[s0;@(0.0.255) &]
|
||||
[s0; Fields are special elements of text that are evaluated by client
|
||||
code into rich text. QTF format for fields is&]
|
||||
|
|
@ -515,32 +523,29 @@ derived instances and registred using RichPara`::Register function.]
|
|||
:: [s0; Additional string parameter that gets passed to FieldType`::Evaluate
|
||||
method]}}&]
|
||||
[s0;@(128.0.255) &]
|
||||
[s0;@(0.0.255) &]
|
||||
[s0;3 &]
|
||||
[s2; Tables&]
|
||||
[s0; &]
|
||||
[s0; Table definition starts with&]
|
||||
[s6;:2`_9: 2.9 Tables&]
|
||||
[s5; Table definition starts with&]
|
||||
[s0;3 &]
|
||||
[s0; [@(128.0.255) `{`{]&]
|
||||
[s0;@(128.0.255) &]
|
||||
[s0; pair, followed by set of numbers separated with&]
|
||||
[s5; pair, followed by set of numbers separated with&]
|
||||
[s0; &]
|
||||
[s0; [@(128.0.255) :]&]
|
||||
[s0;@(128.0.255) &]
|
||||
[s0; Numbers represent ratios of column widths; count of numbers
|
||||
[s5; Numbers represent ratios of column widths; count of numbers
|
||||
is equivalent to count of columns. Next there is [/ table/cell
|
||||
formatting sequence] ended with single space character. Cells
|
||||
are separated with&]
|
||||
[s0; &]
|
||||
[s0; [@(128.0.255) `::]&]
|
||||
[s0;@(128.0.255) &]
|
||||
[s0; characters and another table/cell formating sequence (to setup
|
||||
[s5; characters and another table/cell formating sequence (to setup
|
||||
format for each individual cell). Formating of cells is inherited
|
||||
from previous cells. Table ends with&]
|
||||
[s0; &]
|
||||
[s0; [@(128.0.255) `}`}]&]
|
||||
[s0;@(128.0.255) &]
|
||||
[s0; pair.&]
|
||||
[s5; pair.&]
|
||||
[s0; &]
|
||||
[ {{1993:8007^@(229.229.248)-1 [s0; [*/ Table/cell formating sequence]]
|
||||
::=@2 [s0;%- ]
|
||||
|
|
@ -635,26 +640,19 @@ in dots.]
|
|||
QTF representing header/footer. This QTF can contain field[@5
|
||||
`{:VALUE:PAGENUMBER:`} ]to represent page number and[@5 `{:VALUE:PAGECOUNT:`}]
|
||||
to represent total number of pages.]}}&]
|
||||
[s0;3 &]
|
||||
[s0; Note: There is also legacy support for old table format (from
|
||||
[s5; Note: There is also legacy support for old table format (from
|
||||
previous QTF version) that is based on [@(128.0.255) `+`+ ]pair
|
||||
as table start/stop and [@(128.0.255) `|`| `-`-] to divide cells/lines.
|
||||
&]
|
||||
[s0;3 &]
|
||||
[s0;3 &]
|
||||
[s2; Global Header and Footer&]
|
||||
[s0; &]
|
||||
[s0; Global text header is defined using [%-C@(128.0.255) `^H][%-/C@(0.0.255) qtf`_text][%-C@(128.0.255) `^
|
||||
[s6;:2`_10: 2.10 Global Header and Footer&]
|
||||
[s5; Global text header is defined using [%-C@(128.0.255) `^H][%-/C@(0.0.255) qtf`_text][%-C@(128.0.255) `^
|
||||
`^], footer [%-C@(128.0.255) `^F][%-/C@(0.0.255) qtf`_text][%-C@(128.0.255) `^`^],
|
||||
where [%-/C@(0.0.255) qtf`_text] is complete embeded QTF representing
|
||||
header/footer. This QTF can contain field[@5 `{:VALUE:PAGENUMBER:`}
|
||||
]to represent page number and[@5 `{:VALUE:PAGECOUNT:`}] to represent
|
||||
total number of pages. Global page header and footer can be changed
|
||||
by paragraph attributes.&]
|
||||
[s0;3 &]
|
||||
[s0;3 &]
|
||||
[s0;3 &]
|
||||
[s2; [3 Examples]&]
|
||||
[s4;:3: 3. Examples&]
|
||||
[s0; &]
|
||||
[ {{10000 [s0; [*C@3;1 `"Normal `[`* bold`] `[/ italic`] `[`_ underline`] `[``
|
||||
superscript`] `[, subscript`]`"]]
|
||||
|
|
|
|||
|
|
@ -6,12 +6,11 @@ INITBLOCK {
|
|||
}
|
||||
|
||||
class QtfDlg : public TopWindow {
|
||||
typedef QtfDlg CLASSNAME;
|
||||
|
||||
void Text();
|
||||
void Clear();
|
||||
void Copy();
|
||||
void Editor();
|
||||
void OnHelpLink(const String& link);
|
||||
|
||||
public:
|
||||
Splitter leftSplit, mainSplit;
|
||||
|
|
@ -78,11 +77,21 @@ void QtfDlg::Editor()
|
|||
StoreToGlobal(dlg, "QTF-designer-editor");
|
||||
}
|
||||
|
||||
void QtfDlg::OnHelpLink(const String& link)
|
||||
{
|
||||
auto label_idx = link.ReverseFind("#");
|
||||
if (label_idx == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
help.GotoLabel(link.Mid(label_idx + 1));
|
||||
}
|
||||
|
||||
QtfDlg::QtfDlg()
|
||||
{
|
||||
Title("QTF designer");
|
||||
CtrlLayout(qtfText);
|
||||
qtfText.text <<= THISBACK(Text);
|
||||
qtfText.text << [=] { Text(); };
|
||||
qtf.SetFrame(ViewFrame());
|
||||
qtf.Background(SColorPaper);
|
||||
Sizeable().Zoomable();
|
||||
|
|
@ -92,14 +101,17 @@ QtfDlg::QtfDlg()
|
|||
|
||||
help.Margins(Rect(12, 0, 12, 0));
|
||||
String path = AppendFileName(AppendFileName(PackageDirectory("RichText"), "srcdoc.tpp"), "QTF_en-us.tpp");
|
||||
if(FileExists(path))
|
||||
if(FileExists(path)) {
|
||||
help.SetQTF(ReadTopic(LoadFile(path)).text);
|
||||
else
|
||||
}
|
||||
else {
|
||||
help <<= "[= &&&QTF documentation not found";
|
||||
}
|
||||
help.WhenLink = [=] (const String& link) { OnHelpLink(link); };
|
||||
|
||||
qtfText.clear <<= THISBACK(Clear);
|
||||
qtfText.copy <<= THISBACK(Copy);
|
||||
qtfText.editor <<= THISBACK(Editor);
|
||||
qtfText.clear << [=] { Clear(); };
|
||||
qtfText.copy << [=] { Copy(); };
|
||||
qtfText.editor << [=] { Editor(); };
|
||||
|
||||
leftSplit.Vert(qtfText, qtf).SetPos(4000);
|
||||
mainSplit.Horz(leftSplit, help).SetPos(3500);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue