PIP  0.4.0_beta2
Platform-Independent Primitives
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PIConsole Class Reference

Console output class. More...

+ Inheritance diagram for PIConsole:

Public Types

enum  Format {
  Normal = 0x01, Bold = 0x02 , Underline = 0x10, Blink = 0x20,
  Inverse = 0x40, Black = 0x100, Red = 0x200, Green = 0x400,
  Yellow = 0x800, Blue = 0x1000, Magenta = 0x2000, Cyan = 0x4000,
  White = 0x8000, BackBlack = 0x10000, BackRed = 0x20000, BackGreen = 0x40000,
  BackYellow = 0x80000, BackBlue = 0x100000, BackMagenta = 0x200000, BackCyan = 0x400000,
  BackWhite = 0x800000, Dec = 0x1000000, Hex = 0x2000000, Oct = 0x4000000,
  Bin = 0x8000000, Scientific = 0x10000000, SystemTimeSplit = 0x20000000, SystemTimeSeconds = 0x40000000
}
 Variables output format. More...
 
enum  Alignment { Nothing, Left, Right }
 Column labels alignment. More...
 
- Public Types inherited from PIThread
enum  Priority {
  piHighest, piHigh, piNormal, piLow,
  piLowerst
}
 Priority of thread. More...
 

Public Member Functions

 PIConsole (bool startNow=true, KBFunc slot=0)
 Constructs PIConsole with key handler "slot" and if "startNow" start it.
 
void addString (const PIString &name, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" string "name" with format "format".
 
void addVariable (const PIString &name, const PIString *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const char *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const bool *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const short *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const int *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const long *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const llong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const uchar *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const ushort *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const uint *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const ulong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const ullong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const float *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const double *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const PISystemTime *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
 
void addVariable (const PIString &name, const PIProtocol *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format". More...
 
void addVariable (const PIString &name, const PIDiagnostics *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format". More...
 
void addBitVariable (const PIString &name, const void *ptr, int fromBit, int bitsCount, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
 Add to current tab to column "column" bits field with label "name", pointer "ptr" and format "format".
 
void addEmptyLine (int column=1, uint count=1)
 Add to current tab to column "column" "count" empty lines.
 
uint tabsCount () const
 Returns tabs count.
 
PIString currentTab () const
 Returns current tab name.
 
int addTab (const PIString &name, char bind_key=0)
 Add new tab with name "name", bind key "bind_key" and returns this tab index.
 
void removeTab (uint index)
 Remove tab with index "index".
 
void removeTab (const PIString &name)
 Remove tab with name "name".
 
bool setTab (uint index)
 Set current tab to tab with index "index", returns if tab exists.
 
bool setTab (const PIString &name)
 Set current tab to tab with name "name", returns if tab exists.
 
bool setTabBindKey (uint index, char bind_key)
 Set tab with index "index" bind key to "bind_key", returns if tab exists.
 
bool setTabBindKey (const PIString &name, char bind_key)
 Set tab with name "name" bind key to "bind_key", returns if tab exists.
 
void clearTabs (bool clearScreen=true)
 Remove all tabs and if "clearScreen" clear the screen.
 
void addCustomStatus (const PIString &str)
 Set custom status text of current tab to "str".
 
void clearCustomStatus ()
 Clear custom status text of current tab.
 
Alignment defaultAlignment () const
 Returns default alignment.
 
void setDefaultAlignment (Alignment align)
 Set default alignment to "align".
 
void setColumnAlignment (int col, Alignment align)
 Set column "col" alignment to "align".
 
void setColumnAlignmentToAll (Alignment align)
 Set all columns of all tabs alignment to "align".
 
void enableExitCapture (char key= 'Q')
 Directly call function from PIKbdListener.
 
void disableExitCapture ()
 Directly call function from PIKbdListener.
 
bool exitCaptured () const
 Directly call function from PIKbdListener.
 
char exitKey () const
 Directly call function from PIKbdListener.
 
- Public Member Functions inherited from PIThread
 PIThread (void *data, ThreadFunc func, bool startNow=false, int timer_delay=-1)
 Contructs thread with custom data "data", external function "func" and main cycle delay "timer_delay".
 
 PIThread (bool startNow=false, int timer_delay=-1)
 Contructs thread with main cycle delay "timer_delay".
 
void setData (void *d)
 Set common data passed to external function.
 
void setSlot (ThreadFunc func)
 Set external function that will be executed after every run()
 
void setPriority (PIThread::Priority prior)
 Set priority of thread.
 
PIThread::Priority priority () const
 Return priority of thread.
 
bool isRunning () const
 Return true if thread is running.
 
void needLockRun (bool need)
 Set necessity of lock every run with internal mutex.
 
PIMutexmutex ()
 Return internal mutex.
 
bool start (int timer_delay)
 Start thread. More...
 
bool start (ThreadFunc func, int timer_delay)
 Start thread. More...
 
bool startOnce ()
 Start thread without internal loop. More...
 
bool startOnce (ThreadFunc func)
 Start thread without internal loop. More...
 
void stop (bool wait)
 Stop thread. More...
 
void terminate ()
 Strongly stop thread. More...
 
bool waitForStart (int timeout_msecs)
 Wait for thread start. More...
 
bool waitForFinish (int timeout_msecs)
 Wait for thread finish. More...
 
void lock ()
 Lock internal mutex.
 
void unlock ()
 Unlock internal mutex.
 
void started ()
 Raise on thread start.
 
void stopped ()
 Raise on thread stop.
 
- Public Member Functions inherited from PIObject
 PIObject (const PIString &name=PIString())
 Contructs PIObject with name "name".
 
PIString name () const
 Returns object name.
 
virtual const char * className () const
 Returns object class name.
 
bool debug () const
 Return if debug of this object is active.
 
void setName (const PIString &name)
 Set object name.
 
void setDebug (bool debug)
 Set object debug active.
 
const PIMap< PIString,
PIVariant > & 
properties () const
 Returns properties of the object.
 
int propertiesCount () const
 Returns properties count of the object.
 
PIVariant property (const PIString &name) const
 Returns property with name "name".
 
void setProperty (const PIString &name, const PIVariant &value)
 Set property with name "name" to "value". If there is no such property in object it will be added.
 
bool isPropertyExists (const PIString &name) const
 Returns if property with name "name" exists.
 

Handlers

void clearVariables (bool clearScreen)
 Remove all columns at current tab and if "clearScreen" clear the screen.
 
void waitForFinish ()
 block until finished (exit key will be pressed)
 
void start (bool wait)
 Start console output and if "wait" block until finished (exit key will be pressed)
 
void stop (bool clear)
 Stop console output and if "clear" clear the screen.
 

Events

void keyPressed (char key, void *data)
 Raise on key "key" pressed, "data" is pointer to PIConsole object.
 

Additional Inherited Members

- Static Public Member Functions inherited from PIObject
static void piDisconnect (PIObject *src, const PIString &sig)
 Disconnect object "src" from all connections with event name "sig".
 
static void piDisconnect (PIObject *src)
 Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 
- Protected Member Functions inherited from PIThread
virtual void end ()
 Function executed once at the end of thread.
 
- Protected Member Functions inherited from PIObject
PIObjectemitter () const
 Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
 
virtual void propertyChanged (const PIString &name)
 Virtual function executes after property with name "name" has been changed.
 

Detailed Description

Console output class.

Synopsis

This class provides output to console with automatic alignment and update. It supports tabs, keyboard listening, formats and colors.

Layout

PIConsole works with variable pointers. You should add your variables with functions addVariable() which receives label name, pointer to variable and optional column and format. Columns count is dynamically increased if new column used. E.g. if you add variable to empty tab to column 3, columns count will be increased to 3, but two firsts columns will be empty. Each column filled from top to bottom, but you can add just string with function addString() or add empty line with function addEmptyLine(). Layout scheme:

piconsole_layout.png

Keyboard usage

PIConsole should to be single in application. PIConsole aggregate PIKbdListener which grab keyboard and automatic switch tabs by theirs bind keys. If there is no tab binded to pressed key external function "slot" will be called

Member Enumeration Documentation

Variables output format.

Enumerator
Normal 

Default console format

Bold 

Bold text

Underline 

Underlined text

Blink 

Blinked text

Inverse 

Swap text and background colors

Black 

Black text

Red 

Red text

Green 

Green text

Yellow 

Yellow text

Blue 

Blue text

Magenta 

Magenta text

Cyan 

Cyan text

White 

White text

BackBlack 

Black background

BackRed 

Red background

BackGreen 

Green background

BackYellow 

Yellow background

BackBlue 

Blue background

BackMagenta 

Magenta background

BackCyan 

Cyan background

BackWhite 

White background

Dec 

Decimal base for integers

Hex 

Hexadecimal base for integers

Oct 

Octal base for integers

Bin 

Binary base for integers

Scientific 

Scientific representation of floats

SystemTimeSplit 

PISystemTime split representation (* s, * ns)

SystemTimeSeconds 

PISystemTime seconds representation (*.* s)

Column labels alignment.

Enumerator
Nothing 

No alignment

Left 

Labels align left and variables align left

Right 

Labels align right and variables align left

Member Function Documentation

void PIConsole::addVariable ( const PIString name,
const PIProtocol ptr,
int  col = 1,
PIFlags< PIConsole::Format format = PIConsole::Normal 
)

Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".

This function add to column "column" next lines:

  • "protocol <name>"
  • "Rec - receiverDeviceName": PIProtocol::receiverDeviceState
  • "Send - senderDeviceName": PIProtocol::senderDeviceState
  • "Received count": PIProtocol::receiveCount
  • "Invalid count": PIProtocol::wrongCount
  • "Missed count": PIProtocol::missedCount
  • "Sended count": PIProtocol::sendCount
  • "Immediate Frequency, Hz": PIProtocol::immediateFrequency
  • "Integral Frequency, Hz": PIProtocol::integralFrequency
  • "Receive speed": PIProtocol::receiveSpeed
  • "Send speed": PIProtocol::sendSpeed
  • "Receiver history size": PIProtocol::receiverHistorySize
  • "Sender history size": PIProtocol::senderHistorySize
  • "Disconnect Timeout, s": PIProtocol::disconnectTimeout
  • "Quality": PIProtocol::quality
void PIConsole::addVariable ( const PIString name,
const PIDiagnostics ptr,
int  col = 1,
PIFlags< PIConsole::Format format = PIConsole::Normal 
)

Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".

This function add to column "column" next lines: