libzypp 17.37.17
ztui Namespace Reference

Namespaces

namespace  ansi
namespace  csidetail
namespace  ctcdetail
namespace  env
namespace  mbs
namespace  out
namespace  table
namespace  text
namespace  utf8

Classes

class  AliveCursor
class  Application
struct  CCString
class  ColorStream
 Colored stream output if do_colors. More...
class  ColorString
 Colored string if do_colors. More...
class  Config
class  Out
 Base class for producing common (for now) zypper output. More...
class  OutNormal
class  PromptOptions
 Example: PromptOptions popts; popts.setOptions(_("y/n/p"), 0 / * default reply * /); popts.setOptionHelp(0, _("Help for option 'y'")); popts.setOptionHelp(1, _("Help for option 'n'")); ... zypper.out().prompt(PROMPT_YN_INST_REMOVE_CONTINUE, prompt_text, popts); unsigned reply = get_prompt_reply(zypper, PROMPT_YN_INST_REMOVE_CONTINUE, popts); More...
class  PropertyTable
 Aligned key/value with multiline support Key : value 1 LongKey : value 2 Multiline : line 1 line 2 Next Key : value 3. More...
class  Table
class  TableHeader
class  TableRow
struct  TermLine

Typedefs

using SolvableCSI = std::pair<zypp::sat::Solvable, zypp::ui::Selectable::picklist_size_type>
 Custom sort index type for table rows representing solvables (like detailed search results).
using DEFAULTString = CCString<ColorContext::DEFAULT>
using MSG_STATUSString = CCString<ColorContext::MSG_STATUS>
using MSG_ERRORString = CCString<ColorContext::MSG_ERROR>
using MSG_WARNINGString = CCString<ColorContext::MSG_WARNING>
using POSITIVEString = CCString<ColorContext::POSITIVE>
using CHANGEString = CCString<ColorContext::CHANGE>
using NEGATIVEString = CCString<ColorContext::NEGATIVE>
using HIGHLIGHTString = CCString<ColorContext::HIGHLIGHT>
using LOWLIGHTString = CCString<ColorContext::LOWLIGHT>

Enumerations

enum class  ProgressEnd { done , attention , error }
 ProgressBars default end tags. More...
enum  TableLineStyle {
  Ascii = 0 , Light , Heavy , Double ,
  Light3 , Heavy3 , LightHeavy , LightDouble ,
  HeavyLight , DoubleLight , Colon , none ,
  TLS_End
}
 table drawing style More...
enum class  ColorContext {
  DEFAULT , RESULT , MSG_STATUS , MSG_ERROR ,
  MSG_WARNING , PROMPT , PROMPT_OPTION , POSITIVE ,
  CHANGE , NEGATIVE , HIGHLIGHT , LOWLIGHT ,
  OSDEBUG
}
enum  tags {
  PARAGRAPH , PRE , BLOCKQUOTE , BOLD ,
  UNDERLINED , ANCHOR , HEADER1 , HEADER2 ,
  HEADER3 , BREAK_LINE , EM , ITALIC ,
  HR , LI , OL , UL ,
  TT , QT , BIG , CODE ,
  CENTER , UNKNOWN
}

Functions

 ZYPP_DECLARE_OPERATORS_FOR_FLAGS (TermLine::SplitFlags)
 ZYPP_DECLARE_OPERATORS_FOR_FLAGS (Out::Type)
std::ostream & PROGRESS_FLUSH (std::ostream &str)
const char * asYesNo (bool val_r)
template<class Tif_, class Telse_>
auto ColumnIf (bool condition_r, Tif_ &&if_r, Telse_ &&else_r) -> ctcdetail::ColumnIf< decltype(if_r()), decltype(else_r())>
 Conditional Table column factory.
template<class Tif_>
auto ColumnIf (bool condition_r, Tif_ &&if_r) -> ctcdetail::ColumnIf< decltype(if_r()), decltype(if_r())>
template<class Tp_>
TableRow && operator<< (TableRow &&tr, Tp_ &&val)
template<class Tif_, class Telse_>
TableRowoperator<< (TableRow &tr, const ctcdetail::ColumnIf< Tif_, Telse_ > &val)
template<class Tif_, class Telse_>
TableRowoperator<< (TableRow &tr, ctcdetail::ColumnIf< Tif_, Telse_ > &val)
template<class Tif_, class Telse_>
TableRowoperator<< (TableRow &tr, ctcdetail::ColumnIf< Tif_, Telse_ > &&val)
template<class Tif_>
TableRowoperator<< (TableRow &tr, const ctcdetail::ColumnIf< Tif_, Tif_ > &val)
template<class Tif_>
TableRowoperator<< (TableRow &tr, ctcdetail::ColumnIf< Tif_, Tif_ > &val)
template<class Tif_>
TableRowoperator<< (TableRow &tr, ctcdetail::ColumnIf< Tif_, Tif_ > &&val)
template<class Tp_>
TableHeader && operator<< (TableHeader &&th, Tp_ &&val)
Tableoperator<< (Table &table, TableRow tr)
Tableoperator<< (Table &table, TableHeader tr)
std::ostream & operator<< (std::ostream &stream, const Table &table)
bool do_ttyout ()
 True unless output is a dumb tty or file.
bool do_colors ()
 If output is done in colors (depends on config)
bool mayUseANSIEscapes ()
 Simple check whether stdout is a (not dumb) tty.
bool hasANSIColor ()
 Simple check whether stdout can handle colors.
ansi::ColorStream operator<< (ansi::Color color_r, std::ostream &(*omanip)(std::ostream &))
template<class CCC_, typename = ansi::EnableIfCustomColorCtor<CCC_>>
ansi::ColorStream operator<< (CCC_ &&color_r, std::ostream &(*omanip)(std::ostream &))
ansi::Color customColorCtor (ColorContext ctxt_r)
template<ColorContext _ctxt>
ansi::ColorStreamoperator<< (ansi::ColorStream &cstr_r, const CCString< _ctxt > &cstring_r)
std::string readline_getline ()
 Use readline to get line of input.
unsigned get_screen_width ()
 Reads COLUMNS environment variable or gets the screen width from readline, in that order.
void clear_keyboard_buffer ()
 Clear the keyboard buffer.
void fillTagmap ()
std::string closeTag (std::vector< tags > &tagStack)
std::string openTag (std::vector< tags > &tagStack, std::string &tag)
void fillAmpersmap ()
std::string getStringFromAmpr (const std::string &str)
std::string processRichText (const std::string &text)
std::ostream & printRichText (std::ostream &str, std::string text, unsigned indent_r=0U, unsigned width_r=0U)
 Print [Rich]Text optionally indented.
std::string printRichText (std::string text, unsigned indent_r=0U, unsigned width_r=0U)
 Return [Rich]Text optionally indented as string.
std::string mbs_substr_by_width (boost::string_ref text_r, std::string::size_type colpos_r=0, std::string::size_type collen_r=std::string::npos)
 Returns a substring of a multi-byte character string text_r starting at screen column cpos_r and being at most clen_r columns wide.
void mbs_write_wrapped (std::ostream &out, boost::string_ref text_r, size_t indent_r, size_t wrap_r, int indentFix_r=0)
 Wrap and indent given text and write it to the output stream out.
void mbs_write_wrapped (std::ostream &out, const zypp::str::Str &text_r, size_t indent_r, size_t wrap_r, int indentFix_r=0)
size_t mbs_width (boost::string_ref text_r)
 Returns the column width of a multi-byte character string text_r.
template<class Tp_>
TableRowoperator<< (TableRow &tr, Tp_ &&val)
 Add colummn.
template<class Tp_>
TableHeaderoperator<< (TableHeader &th, Tp_ &&val)
 Add column.

Variables

static constexpr int ZTUI_EXIT_OK = 0
static const char * lines [][3]
std::map< std::string, tags_rtTagmap
bool pre
bool ordered
unsigned count_list_items
std::map< std::string, std::string > ampersmap

Typedef Documentation

◆ SolvableCSI

Custom sort index type for table rows representing solvables (like detailed search results).

_("Yes") or _("No")

Definition at line 40 of file Table.h.

◆ DEFAULTString

Definition at line 77 of file colors.h.

◆ MSG_STATUSString

Definition at line 79 of file colors.h.

◆ MSG_ERRORString

Definition at line 80 of file colors.h.

◆ MSG_WARNINGString

◆ POSITIVEString

Definition at line 83 of file colors.h.

◆ CHANGEString

Definition at line 84 of file colors.h.

◆ NEGATIVEString

Definition at line 85 of file colors.h.

◆ HIGHLIGHTString

Definition at line 87 of file colors.h.

◆ LOWLIGHTString

Definition at line 88 of file colors.h.

Enumeration Type Documentation

◆ ProgressEnd

enum class ztui::ProgressEnd
strong

ProgressBars default end tags.

Enumerator
done 
attention 
error 

Definition at line 45 of file Out.h.

◆ TableLineStyle

table drawing style

Enumerator
Ascii 

| - +

Light 
Heavy 
Double 
Light3 
Heavy3 
LightHeavy 
LightDouble 
HeavyLight 
DoubleLight 
Colon 
none 
TLS_End 

sentinel

Definition at line 80 of file Table.h.

◆ ColorContext

enum class ztui::ColorContext
strong
Enumerator
DEFAULT 
RESULT 
MSG_STATUS 
MSG_ERROR 
MSG_WARNING 
PROMPT 
PROMPT_OPTION 
POSITIVE 
CHANGE 
NEGATIVE 
HIGHLIGHT 
LOWLIGHT 
OSDEBUG 

Definition at line 34 of file colors.h.

◆ tags

enum ztui::tags
Enumerator
PARAGRAPH 
PRE 
BLOCKQUOTE 
BOLD 
UNDERLINED 
ANCHOR 
HEADER1 
HEADER2 
HEADER3 
BREAK_LINE 
EM 
ITALIC 
HR 
LI 
OL 
UL 
TT 
QT 
BIG 
CODE 
CENTER 
UNKNOWN 

Definition at line 26 of file richtext.cc.

Function Documentation

◆ ZYPP_DECLARE_OPERATORS_FOR_FLAGS() [1/2]

ztui::ZYPP_DECLARE_OPERATORS_FOR_FLAGS ( TermLine::SplitFlags )

◆ ZYPP_DECLARE_OPERATORS_FOR_FLAGS() [2/2]

ztui::ZYPP_DECLARE_OPERATORS_FOR_FLAGS ( Out::Type )

◆ PROGRESS_FLUSH()

std::ostream & ztui::PROGRESS_FLUSH ( std::ostream & str)
inline

Definition at line 122 of file OutNormal.cc.

◆ asYesNo()

const char * ztui::asYesNo ( bool val_r)

Definition at line 32 of file Table.cc.

◆ ColumnIf() [1/2]

template<class Tif_, class Telse_>
auto ztui::ColumnIf ( bool condition_r,
Tif_ && if_r,
Telse_ && else_r ) -> ctcdetail::ColumnIf<decltype(if_r()),decltype(else_r())>

Conditional Table column factory.

Creates an conditional TableRow or TableHeader entry, depending on the value of condition_r. The columns content, if needed, is determined calling the function object matching the condition.

An empty function object will cause the column to be hidden and no content will be retrieved (see overloaded operator<<(TableRow &,..)).

<< "first"
<< ColumnIf( condition, [](){ return "second"; }, [](){ return "one but last"; } )
<< "last";
auto ColumnIf(bool condition_r, Tif_ &&if_r, Telse_ &&else_r) -> ctcdetail::ColumnIf< decltype(if_r()), decltype(else_r())>
Conditional Table column factory.
Definition Table.h:141

Definition at line 141 of file Table.h.

◆ ColumnIf() [2/2]

template<class Tif_>
auto ztui::ColumnIf ( bool condition_r,
Tif_ && if_r ) -> ctcdetail::ColumnIf<decltype(if_r()),decltype(if_r())>

Definition at line 145 of file Table.h.

◆ operator<<() [1/16]

template<class Tp_>
TableRow && ztui::operator<< ( TableRow && tr,
Tp_ && val )

Definition at line 257 of file Table.h.

◆ operator<<() [2/16]

template<class Tif_, class Telse_>
TableRow & ztui::operator<< ( TableRow & tr,
const ctcdetail::ColumnIf< Tif_, Telse_ > & val )

Definition at line 261 of file Table.h.

◆ operator<<() [3/16]

template<class Tif_, class Telse_>
TableRow & ztui::operator<< ( TableRow & tr,
ctcdetail::ColumnIf< Tif_, Telse_ > & val )

Definition at line 264 of file Table.h.

◆ operator<<() [4/16]

template<class Tif_, class Telse_>
TableRow & ztui::operator<< ( TableRow & tr,
ctcdetail::ColumnIf< Tif_, Telse_ > && val )

Definition at line 267 of file Table.h.

◆ operator<<() [5/16]

template<class Tif_>
TableRow & ztui::operator<< ( TableRow & tr,
const ctcdetail::ColumnIf< Tif_, Tif_ > & val )

Definition at line 271 of file Table.h.

◆ operator<<() [6/16]

template<class Tif_>
TableRow & ztui::operator<< ( TableRow & tr,
ctcdetail::ColumnIf< Tif_, Tif_ > & val )

Definition at line 274 of file Table.h.

◆ operator<<() [7/16]

template<class Tif_>
TableRow & ztui::operator<< ( TableRow & tr,
ctcdetail::ColumnIf< Tif_, Tif_ > && val )

Definition at line 277 of file Table.h.

◆ operator<<() [8/16]

template<class Tp_>
TableHeader && ztui::operator<< ( TableHeader && th,
Tp_ && val )

Definition at line 318 of file Table.h.

◆ operator<<() [9/16]

Table & ztui::operator<< ( Table & table,
TableRow tr )
inline

Definition at line 511 of file Table.h.

◆ operator<<() [10/16]

Table & ztui::operator<< ( Table & table,
TableHeader tr )
inline

Definition at line 514 of file Table.h.

◆ operator<<() [11/16]

std::ostream & ztui::operator<< ( std::ostream & stream,
const Table & table )
inline

Definition at line 518 of file Table.h.

◆ do_ttyout()

bool ztui::do_ttyout ( )

True unless output is a dumb tty or file.

In this case we should not use any ANSI Escape sequences moving the cursor.

Definition at line 27 of file colors.cc.

◆ do_colors()

bool ztui::do_colors ( )

If output is done in colors (depends on config)

Definition at line 32 of file colors.cc.

◆ mayUseANSIEscapes()

bool ztui::mayUseANSIEscapes ( )

Simple check whether stdout is a (not dumb) tty.

Definition at line 37 of file colors.cc.

◆ hasANSIColor()

bool ztui::hasANSIColor ( )

Simple check whether stdout can handle colors.

Definition at line 53 of file colors.cc.

◆ operator<<() [12/16]

ansi::ColorStream ztui::operator<< ( ansi::Color color_r,
std::ostream &(* omanip )(std::ostream &) )
inline

Definition at line 839 of file ansi.h.

◆ operator<<() [13/16]

template<class CCC_, typename = ansi::EnableIfCustomColorCtor<CCC_>>
ansi::ColorStream ztui::operator<< ( CCC_ && color_r,
std::ostream &(* omanip )(std::ostream &) )
inline

Definition at line 848 of file ansi.h.

◆ customColorCtor()

ansi::Color ztui::customColorCtor ( ColorContext ctxt_r)

Definition at line 125 of file colors.cc.

◆ operator<<() [14/16]

template<ColorContext _ctxt>
ansi::ColorStream & ztui::operator<< ( ansi::ColorStream & cstr_r,
const CCString< _ctxt > & cstring_r )
inline

Definition at line 74 of file colors.h.

◆ readline_getline()

std::string ztui::readline_getline ( )

Use readline to get line of input.

Definition at line 26 of file console.cc.

◆ get_screen_width()

unsigned ztui::get_screen_width ( )

Reads COLUMNS environment variable or gets the screen width from readline, in that order.

Falls back to 80 if all that fails.

\NOTE In case stdout is not connected to a terminal max. unsigned is returned. This should prevent clipping when output is redirected.

Definition at line 48 of file console.cc.

◆ clear_keyboard_buffer()

void ztui::clear_keyboard_buffer ( )

Clear the keyboard buffer.

Useful before showing the user prompt message to catch any unwanted <enter> key hits (bnc #649248).

\NOTE This will not clear characters typed after the last

Definition at line 74 of file console.cc.

◆ fillTagmap()

void ztui::fillTagmap ( )

Definition at line 58 of file richtext.cc.

◆ closeTag()

std::string ztui::closeTag ( std::vector< tags > & tagStack)

Definition at line 89 of file richtext.cc.

◆ openTag()

std::string ztui::openTag ( std::vector< tags > & tagStack,
std::string & tag )

Definition at line 111 of file richtext.cc.

◆ fillAmpersmap()

void ztui::fillAmpersmap ( )

Definition at line 166 of file richtext.cc.

◆ getStringFromAmpr()

std::string ztui::getStringFromAmpr ( const std::string & str)

Definition at line 176 of file richtext.cc.

◆ processRichText()

std::string ztui::processRichText ( const std::string & text)

Definition at line 205 of file richtext.cc.

◆ printRichText() [1/2]

std::ostream & ztui::printRichText ( std::ostream & str,
std::string text,
unsigned indent_r = 0U,
unsigned width_r = 0U )
inline

Print [Rich]Text optionally indented.

Richtext is introduced by a '' or '

'(bsc#935885) tag.

Definition at line 26 of file richtext.h.

◆ printRichText() [2/2]

std::string ztui::printRichText ( std::string text,
unsigned indent_r = 0U,
unsigned width_r = 0U )
inline

Return [Rich]Text optionally indented as string.

Definition at line 41 of file richtext.h.

◆ mbs_substr_by_width()

std::string ztui::mbs_substr_by_width ( boost::string_ref text_r,
std::string::size_type colpos_r = 0,
std::string::size_type collen_r = std::string::npos )

Returns a substring of a multi-byte character string text_r starting at screen column cpos_r and being at most clen_r columns wide.

The string is ' ' padded if multicolumn characters are clipped at start or end.

Definition at line 16 of file text.cc.

◆ mbs_write_wrapped() [1/2]

void ztui::mbs_write_wrapped ( std::ostream & out,
boost::string_ref text_r,
size_t indent_r,
size_t wrap_r,
int indentFix_r = 0 )
inline

Wrap and indent given text and write it to the output stream out.

TODO

  • delete whitespace at the end of lines
  • keep one-letter words with the next
Parameters
outoutput stream to write to
testtext to wrap
indentnumber of columns by which to indent the whole text
wrapnumber of columns the text should be wrapped into
indentFixadditional indent/outdent for the first line (default: 0)

Definition at line 631 of file text.h.

◆ mbs_write_wrapped() [2/2]

void ztui::mbs_write_wrapped ( std::ostream & out,
const zypp::str::Str & text_r,
size_t indent_r,
size_t wrap_r,
int indentFix_r = 0 )
inline

Definition at line 637 of file text.h.

◆ mbs_width()

size_t ztui::mbs_width ( boost::string_ref text_r)
inline

Returns the column width of a multi-byte character string text_r.

Definition at line 641 of file text.h.

Variable Documentation

◆ ZTUI_EXIT_OK

int ztui::ZTUI_EXIT_OK = 0
staticconstexpr

Definition at line 24 of file application.h.

◆ lines

const char* ztui::lines[][3]
static
Initial value:
= {
{ "|", "-", "+"},
{ "\xE2\x94\x82", "\xE2\x94\x80", "\xE2\x94\xBC" },
{ "\xE2\x94\x83", "\xE2\x94\x81", "\xE2\x95\x8B" },
{ "\xE2\x95\x91", "\xE2\x95\x90", "\xE2\x95\xAC" },
{ "\xE2\x94\x86", "\xE2\x94\x84", "\xE2\x94\xBC" },
{ "\xE2\x94\x87", "\xE2\x94\x85", "\xE2\x94\x8B" },
{ "\xE2\x94\x82", "\xE2\x94\x81", "\xE2\x94\xBF" },
{ "\xE2\x94\x82", "\xE2\x95\x90", "\xE2\x95\xAA" },
{ "\xE2\x94\x83", "\xE2\x94\x80", "\xE2\x95\x82" },
{ "\xE2\x95\x91", "\xE2\x94\x80", "\xE2\x95\xAB" },
{ ":", "-", "+" },
}

Definition at line 36 of file Table.cc.

◆ _rtTagmap

std::map<std::string,tags> ztui::_rtTagmap

Definition at line 52 of file richtext.cc.

◆ pre

bool ztui::pre

Definition at line 54 of file richtext.cc.

◆ ordered

bool ztui::ordered

Definition at line 55 of file richtext.cc.

◆ count_list_items

unsigned ztui::count_list_items

Definition at line 56 of file richtext.cc.

◆ ampersmap

std::map<std::string,std::string> ztui::ampersmap

Definition at line 164 of file richtext.cc.