Open CASCADE Technology 6.6.0
Public Member Functions | Protected Member Functions
Message_ProgressIndicator Class Reference

Defines abstract interface from program to the "user".
That includes progress indication and user break mechanisms

The interface to progress indicator represents it as a scale
for each range and step can be defined by the program that uses it.
The scale can be made "infinite", which means it will grow
non-linearly, end of scale will be approached asymptotically at
infinite number of steps. In that case value of scale range
gives a number of steps corresponding to position at 1/2 of scale.
The current position can be either set directly (in a range from
current position to maximum scale value), or incremented step
by step.

Progress indication mechanism is adapted for convenient
usage in hiererchical processes that require indication of
progress at several (sub)levels of the process.
For that purpose, it is possible to create restricted sub-scope of
indication by specifying part of a current scale that is to be
used by the subprocess.
When subprocess works with progress indicator in the restricted
scope, it has the same interface to a scale, while actually it
deals only with part of the whole scale.

NOTE:
Currently there is no support for concurrent progress
indicator that could be useful in multithreaded applications.
The main reason for this is that such implementation would be
too complex regarding forecasted lack of real need for such
support.
To support this it would require that ProgressScale keep its
own position and take care of incrementing main ProgressIndicator
in destructor. This would also require having cross-references
between nested instances of ProgressScale, ie. potential
problems with memory management.
In case of need of concurrent progress indicator two things can
be suggested: either creation of single spane with summary number
of steps, or usage of infinite scale.

The user break is implemented as virtual function that might
return True in case if break signal from the user is obtained.

The derived classes should take care of visualisation of the
progress indicator (e.g. show total position at the graphical bar,
and/or print all scopes in text mode), and for implementation
of user break mechanism (if defined).

#include <Message_ProgressIndicator.hxx>

Inheritance diagram for Message_ProgressIndicator:
Inheritance graph
[legend]

Public Member Functions

virtual void Reset ()
 Drops all scopes and sets scale from 0 to 100, step 1
This scale has name "Step"

void SetName (const Standard_CString name)
void SetName (const Handle< TCollection_HAsciiString > &name)
 Set (optional) name for scale

void SetRange (const Standard_Real min, const Standard_Real max)
 Set range for current scale

void SetStep (const Standard_Real step)
 Set step for current scale

void SetInfinite (const Standard_Boolean isInf=Standard_True)
 Set or drop infinite mode for the current scale

void SetScale (const Standard_CString name, const Standard_Real min, const Standard_Real max, const Standard_Real step, const Standard_Boolean isInf=Standard_False)
void SetScale (const Standard_Real min, const Standard_Real max, const Standard_Real step, const Standard_Boolean isInf=Standard_False)
 Set all parameters for current scale

void GetScale (Standard_Real &min, Standard_Real &max, Standard_Real &step, Standard_Boolean &isInf) const
 Returns all parameters for current scale

void SetValue (const Standard_Real val)
Standard_Real GetValue () const
 Set and get progress value at current scale
If the value to be set is more than currently set one, or out
of range for the current scale, it is limited by that range

void Increment ()
void Increment (const Standard_Real step)
 Increment the progress value by the default of specified step

Standard_Boolean NewScope (const Standard_CString name=0)
Standard_Boolean NewScope (const Handle< TCollection_HAsciiString > &name)
Standard_Boolean NewScope (const Standard_Real span, const Standard_CString name=0)
Standard_Boolean NewScope (const Standard_Real span, const Handle< TCollection_HAsciiString > &name)
 Creates new scope on a part of a current scale from current
position with span either equal to default step, or specified
The scale for the new scope will have specified name and
ranged from 0 to 100 with step 1
Returns False if something is wrong in arguments or in current
position of progress indicator; scope is opened anyway

Standard_Boolean EndScope ()
 Close the current scope and thus return to previous scale
Updates position to be at the end of the closing scope
Returns False if no scope is opened

Standard_Boolean NextScope (const Standard_CString name=0)
Standard_Boolean NextScope (const Standard_Real span, const Standard_CString name=0)
 Optimized version of { return EndScope() && NewScope(); }

virtual Standard_Boolean UserBreak ()
 Should return True if user has send a break signal.
Default implementation returns False.

virtual Standard_Boolean Show (const Standard_Boolean force=Standard_True)=0
 Update presentation of the progress indicator
Called when progress position is changed
Flag force is intended for forcing update in case if it is
optimized; all internal calls from ProgressIndicator are
done with this flag equal to False

Standard_Real GetPosition () const
 Returns total progress position on the basic scale
ranged from 0. to 1.

Standard_Integer GetNbScopes () const
 Returns current number of opened scopes
This number is always >=1 as top-level scale is always present

const Message_ProgressScaleGetScope (const Standard_Integer index) const
 Returns data for scale of index-th scope
The first scope is current one, the last is the top-level one

Protected Member Functions

 Message_ProgressIndicator ()
 Constructor, just calls own Reset() (not yet redefined)


Constructor & Destructor Documentation

Message_ProgressIndicator::Message_ProgressIndicator ( ) [protected]

Member Function Documentation

Standard_Boolean Message_ProgressIndicator::EndScope ( )
Standard_Integer Message_ProgressIndicator::GetNbScopes ( ) const
Standard_Real Message_ProgressIndicator::GetPosition ( ) const
void Message_ProgressIndicator::GetScale ( Standard_Real min,
Standard_Real max,
Standard_Real step,
Standard_Boolean isInf 
) const
const Message_ProgressScale& Message_ProgressIndicator::GetScope ( const Standard_Integer  index) const
Standard_Real Message_ProgressIndicator::GetValue ( ) const
void Message_ProgressIndicator::Increment ( const Standard_Real  step)
void Message_ProgressIndicator::Increment ( )
Standard_Boolean Message_ProgressIndicator::NewScope ( const Standard_Real  span,
const Handle< TCollection_HAsciiString > &  name 
)
Standard_Boolean Message_ProgressIndicator::NewScope ( const Standard_Real  span,
const Standard_CString  name = 0 
)
Standard_Boolean Message_ProgressIndicator::NewScope ( const Standard_CString  name = 0)
Standard_Boolean Message_ProgressIndicator::NewScope ( const Handle< TCollection_HAsciiString > &  name)
Standard_Boolean Message_ProgressIndicator::NextScope ( const Standard_CString  name = 0)
Standard_Boolean Message_ProgressIndicator::NextScope ( const Standard_Real  span,
const Standard_CString  name = 0 
)
virtual void Message_ProgressIndicator::Reset ( ) [virtual]

Reimplemented in Draw_ProgressIndicator.

void Message_ProgressIndicator::SetInfinite ( const Standard_Boolean  isInf = Standard_True)
void Message_ProgressIndicator::SetName ( const Standard_CString  name)
void Message_ProgressIndicator::SetName ( const Handle< TCollection_HAsciiString > &  name)
void Message_ProgressIndicator::SetRange ( const Standard_Real  min,
const Standard_Real  max 
)
void Message_ProgressIndicator::SetScale ( const Standard_Real  min,
const Standard_Real  max,
const Standard_Real  step,
const Standard_Boolean  isInf = Standard_False 
)
void Message_ProgressIndicator::SetScale ( const Standard_CString  name,
const Standard_Real  min,
const Standard_Real  max,
const Standard_Real  step,
const Standard_Boolean  isInf = Standard_False 
)
void Message_ProgressIndicator::SetStep ( const Standard_Real  step)
void Message_ProgressIndicator::SetValue ( const Standard_Real  val)
virtual Standard_Boolean Message_ProgressIndicator::Show ( const Standard_Boolean  force = Standard_True) [pure virtual]

Implemented in Draw_ProgressIndicator.

virtual Standard_Boolean Message_ProgressIndicator::UserBreak ( ) [virtual]

Reimplemented in Draw_ProgressIndicator.


The documentation for this class was generated from the following file:
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines