API reference - Class AbsoluteProgress

Notation used in Ruby API documentation

Description: A progress reporter counting progress in absolute units

Class hierarchy: AbsoluteProgress » Progress

An absolute progress reporter counts from 0 upwards without a known limit. A unit value is used to convert the value to a bar value. One unit corresponds to 100% on the bar. For formatted output, a format string can be specified as well as a unit value by which the current value is divided before it is formatted.

The progress can be configured to have a description text, a title and a format. The "inc" method increments the value, the "set" or "value=" methods set the value to a specific value.

While one of these three methods is called, they will run the event loop in regular intervals. That makes the application respond to mouse clicks, specifically the Cancel button on the progress bar. If that button is clicked, an exception will be raised by these methods.

The progress object must be destroyed explicitly in order to remove the progress status bar.

The following sample code creates a progress bar which displays the current count as "Megabytes". For the progress bar, one percent corresponds to 16 kByte:

p = RBA::AbsoluteProgress::new("test")
p.format = "%.2f MBytes"
p.unit = 1024*16
p.format_unit = 1024*1024
begin
  10000000.times { p.inc }
ensure
  p.destroy
end

This class has been introduced in version 0.23.

Public constructors

new AbsoluteProgressnew(string desc)Creates a relative progress reporter with the given description and maximum value
new AbsoluteProgressnew(string desc,
unsigned int max_value)
Creates a relative progress reporter with the given description and maximum value

Public methods

voidcreateEnsures the C++ object is created
voiddestroyExplicitly destroy the object
[const]booldestroyed?Returns a value indicating whether the object was already destroyed
voidformat=(string format)sets the output format (sprintf notation) for the progress text
voidformat_unit=(double unit)Sets the format unit
AbsoluteProgressincIncrements the progress value
[const]boolis_const_object?Returns a value indicating whether the reference is a const reference
voidresolution=(double res)Sets the resolution for the output (granularity)
voidset(unsigned int value,
bool force_yield)
Sets the progress value
voidunit=(double unit)Sets the unit
voidvalue=(unsigned int value)Sets the progress value

Detailed description

void create

Description: Ensures the C++ object is created

Use this method to ensure the C++ object is created, for example to ensure that resources are allocated. Usually C++ objects are created on demand and not necessarily when the script object is created.

void destroy

Description: Explicitly destroy the object

Explicitly destroy the object on C++ side if it was owned by the Ruby interpreter. Subsequent access to this object will throw an exception. If the object is not owned by Ruby, this method will do nothing.

[const] bool destroyed?

Description: Returns a value indicating whether the object was already destroyed

This method returns true, if the object was destroyed, either explicitly or by the C++ side. The latter may happen, if the object is owned by a C++ object which got destroyed itself.

void format=(string format)

Description: sets the output format (sprintf notation) for the progress text

void format_unit=(double unit)

Description: Sets the format unit

This is the unit used for formatted output. The current count is divided by the format unit to render the value passed to the format string.

AbsoluteProgress inc

Description: Increments the progress value

[const] bool is_const_object?

Description: Returns a value indicating whether the reference is a const reference

This method returns true, if self is a const reference. In that case, only const methods may be called on self.

[static] new AbsoluteProgress new(string desc)

Description: Creates a relative progress reporter with the given description and maximum value

The reported progress will be 0 to 100% for values between 0 and the maximum value. The values are always integers. Double values cannot be used properly.

[static] new AbsoluteProgress new(string desc,unsigned int max_value)

Description: Creates a relative progress reporter with the given description and maximum value

The reported progress will be 0 to 100% for values between 0 and the maximum value. The values are always integers. Double values cannot be used properly.

The yield interval specifies, how often the event loop will be triggered. When the yield interval is 10 for example, the event loop will be executed every tenth call of inc or set.

void resolution=(double res)

Description: Sets the resolution for the output (granularity)

This setting is independent of the format and controls the update frequency. It is the step by which the ratio count/unit must increase before a new value is reported.

void set(unsigned int value,bool force_yield)

Description: Sets the progress value

This method is equivalent to value=, but it allows to force the event loop to be triggered. If "force_yield" is true, the event loop will be triggered always, irregardless of the yield interval specified in the constructor.

void unit=(double unit)

Description: Sets the unit

Specifies the count value corresponding to 1 percent on the progress bar. By default, the current value divided by the unit is used to create the formatted value from the output string. Another attribute is provided (format_unit=) to specify a separate unit for that purpose.

void value=(unsigned int value)

Description: Sets the progress value