RichText — Static text with HTML-like formatting
RichText
( |
string
text
) ; |
plainText
don't interpret text as HTML
autoScrollDown
automatically scroll down for each text change
shrinkable
make the widget very small
A RichText
is a text area with two major differences to a Label
: The amount of data it can contain is not restricted by the layout and a number of control sequences are allowed, which control the layout of the text.
// Example for a RichText widget { UI::OpenDialog( `opt(`defaultsize), `VBox( `RichText( "<h3>RichText example</h3>" + "<p>This is a <i>RichText</i> widget.</p>" + "<p>It's very much like <i>HTML</i>, but not quite as powerful.</p>" + "<p><b>bold</b> and <i>italic</i> you can rely on.</p>" + "<p>" + "<font color=blue>colored </font>" + "<font color=red> text </font>" + "<font color=green> might </font>" + "<font color=magenta> or </font>" + "<font color=cyan> might </font>" + "<font color=blue> not </font>" + "<font color=red> be </font>" + "<font color=green> available,</font>" + "<font color=magenta> depending </font>" + "<font color=cyan> on </font>" + "<font color=blue> the </font>" + "<font color=red> UI. </font>" + "</p>" + "<p>The product name is automatically replaced by the UI. " + "Use the special macro <b>&product;</b> for that." + "</p><p>" + "The current product name is <b>&product;</b>." + "</p>" ), `PushButton(`opt(`default), "&OK") ) ); UI::UserInput(); UI::CloseDialog(); }
// Example for a RichText widget { UI::OpenDialog( `opt(`defaultsize), `VBox( `RichText(`opt(`plainText), "This is a RichText in plainText mode.\n" +"No HTML tags are supported here, but line breaks\n" +"are output literally - as are HTML tags like <b> or <i> or &product;." ), `PushButton(`opt(`default), "&OK") ) ); UI::UserInput(); UI::CloseDialog(); }
// Example for a RichText widget { UI::OpenDialog( `opt(`defaultsize), `VBox( `RichText( "<h3>RichText example</h3>" + "<p>This is a <i>RichText</i> widget. The ncurses UI wraps lines automatically - Qt breaks lines and uses a vertical scroll bar.</p>" + "<p>It's very much like <i>HTML</i>, but not quite as powerful.</p>" + "<p>Text in <b>pre</b> tags preserves newlines and spaces.</p>" + "<pre>" + " host ip adress host ip adress\n" + " sturm 10.10.0.159 sturm 10.10.0.159\n" + "Lines are not wrapped; in text mode HTML tags are <b>not</b> removed if the pre tag is used.\n" + "</pre>" + "<p>After <b>/pre</b> the text is <i>HTML</i> text like before.</p>" + "<p>Much much more text .............. continous" + " much much more text .... follows " + " much much more text .................</p>" + "<p>" + "<pre>another pre t t </pre>" + "and much more text hopefully now displayed correctly" + "</p>" + "<pre>" + " host ip adress host ip adress\n" + " sturm 10.10.0.159 sturm 10.10.0.159\n" + "Lines are not wrapped; in text mode HTML tags are <b>not</b> removed if the pre tag is used.\n" + "</pre>" + "<p>and even much more text but now not wrapped at old place but with new layout of the pad widget which is underlying the richtext widget</p>" + "<p><pre>And another short pre</pre></p>" ), `PushButton(`opt(`default), "&OK") ) ); UI::UserInput(); UI::CloseDialog(); }
// Example for a RichText widget with hyperlinks { UI::OpenDialog( `opt(`defaultsize), `VBox( `RichText( "<h3>RichText example</h3>" + "<p>RichText may contain <a href=\"hyper\">hyperlinks</a>," + "very much like HTML.</p>" + "<p>Clicking on a <a href=\"link\">link</a> will make " + "<a href=\"user_input\">UI::UserInput()</a> return " + "with the <i>href</i> part of the hyperlink " + "as a (string) return value.</p>" + "<h3>Known (HTML-like) entities</h3>" + "<ul>" + "<li><b>&product;</b> for the product name (<b>&product;</b>)" + "<li><b>&amp;</b> for <b>&</b>" + "<li><b>&lt;</b> for <b><</b>" + "<li><b>&gt;</b> for <b>></b>" + "</ul>" ), `HBox( `Label( "You clicked: " ), `Label(`id(`val), `opt(`outputField, `hstretch), "" ) ), `PushButton(`id(`close), `opt(`default), "&Close") ) ); any ret = nil; repeat { ret = UI::UserInput(); if ( ret != nil ) { string val = sformat( "%1", ret ); UI::ChangeWidget(`id(`val), `Value, val ); } } until ( ret == `close ); UI::CloseDialog(); }