---
title: "ClikaRT::progress::ProgressGroup"
sidebar_label: "ProgressGroup"
description: "Owns and renders several bars as one block: it controls the whole region and its cursor, so parallel bars never interleave or jump."
---

<!-- Generated by tools/doxygen2mdx from Doxygen XML. Do not edit. -->

<span class="api-kind api-kind--class">class</span>

**Header:** `ClikaRT/progress/progress.h`

Owns and renders several bars as one block: it controls the whole region and its cursor, so parallel bars never interleave or jump. [`print_above`](./ProgressGroup.md#print_above) emits a line above the live bars without corrupting them (raw on a terminal; routed through the default logging channel ([`logging::logger()`](../logging/index.md#logger)) when output isn't a terminal, so a handler installed there receives it). Writes to stdout.

## Member functions

### ProgressGroup() {#ProgressGroup}

<div class="api-signature">

**`ProgressGroup`**()

</div>

an empty group; add bars with [add\_bar()](./ProgressGroup.md#add_bar)

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 190

</div>

### \~ProgressGroup() {#ProgressGroup-2}

<div class="api-signature">

**`~ProgressGroup`**()

</div>

destructor

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 191

</div>

### ProgressGroup(ProgressGroup) {#ProgressGroup-3}

<div class="api-signature">

**`ProgressGroup`**(`ProgressGroup&&` `other`) `noexcept`

</div>

move-construct

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 192

</div>

### operator=(ProgressGroup) {#operator-assign}

<div class="api-signature">

[`ProgressGroup`](./ProgressGroup.md)`&` **`operator=`**([`ProgressGroup`](./ProgressGroup.md)`&&` `other`) `noexcept`

</div>

move-assign

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 193

</div>

### ProgressGroup(ProgressGroup) {#ProgressGroup-4}

<div class="api-signature">

**`ProgressGroup`**(`const ProgressGroup&`) `=delete`

</div>

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 194

</div>

### operator=(ProgressGroup) {#operator-assign-2}

<div class="api-signature">

[`ProgressGroup`](./ProgressGroup.md)`&` **`operator=`**(`const` [`ProgressGroup`](./ProgressGroup.md)`&`) `=delete`

</div>

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 195

</div>

### add\_bar() {#add_bar}

<div class="api-signature">

[`Bar`](./Bar.md) **`add_bar`**()

</div>

Add a managed bar; configure the returned handle, then drive it. May be called at any time, before the first refresh or while earlier bars are already rendering (a bar-per-work-item loop adds each bar as its item starts).

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 201

</div>

### print\_above() {#print_above}

<div class="api-signature">

`void` **`print_above`**(`std::string_view` `text`)

</div>

Emit `text` above the live bars (clean; it never corrupts them).

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 204

</div>

### refresh() {#refresh}

<div class="api-signature">

`void` **`refresh`**()

</div>

Repaint all bars now.

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 207

</div>

### start\_auto\_refresh() {#start_auto_refresh}

<div class="api-signature">

`void` **`start_auto_refresh`**()

</div>

Repaint on a background thread until [stop\_auto\_refresh()](./ProgressGroup.md#stop_auto_refresh)/done().

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 209

</div>

### stop\_auto\_refresh() {#stop_auto_refresh}

<div class="api-signature">

`void` **`stop_auto_refresh`**()

</div>

stop the background repaint thread

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 210

</div>

### done() {#done}

<div class="api-signature">

`void` **`done`**()

</div>

Finalize: stop the driver and leave the final bars (or erase if transient).

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 212

</div>

### all\_completed() {#all_completed}

<div class="api-signature">

`bool` **`all_completed`**() `const`

</div>

whether every added bar completed

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 214

</div>
