diff --git a/samples/multiple_bars.cpp b/samples/multiple_bars.cpp index 81fd6ba..4e6b257 100644 --- a/samples/multiple_bars.cpp +++ b/samples/multiple_bars.cpp @@ -42,6 +42,7 @@ int main() { // Hide cursor std::cout << "\e[?25l"; + std::cout << "\n\n"; {} @@ -50,7 +51,7 @@ int main() { // indica::ProgressBar p1; p1.set_bar_width(50); - p1.start_bar_with("["); + p1.start_bar_with(" ["); p1.fill_bar_progress_with("■"); p1.lead_bar_progress_with("■"); p1.fill_bar_remainder_with(" "); @@ -86,7 +87,7 @@ int main() { // indica::ProgressBar p3; p3.set_bar_width(40); - p3.set_prefix_text("Reading package list... "); + p3.set_prefix_text(" Reading package list... "); p3.start_bar_with(""); p3.fill_bar_progress_with(""); p3.lead_bar_progress_with(""); @@ -96,9 +97,10 @@ int main() { p3.hide_percentage(); auto job3 = [&p3]() { while (true) { - p3.set_prefix_text("Reading package list... " + std::to_string(p3.current()) + "% "); + p3.set_prefix_text(" Reading package list... " + + std::to_string(p3.current()) + "% "); if (p3.current() + 2 >= 100) - p3.set_prefix_text("Reading package list... Done"); + p3.set_prefix_text(" Reading package list... Done"); p3.tick(); if (p3.is_completed()) { break; @@ -114,7 +116,7 @@ int main() { // indica::ProgressBar p2; p2.set_bar_width(50); - p2.start_bar_with("["); + p2.start_bar_with(" ["); p2.fill_bar_progress_with("="); p2.lead_bar_progress_with(">"); p2.fill_bar_remainder_with(" "); @@ -144,9 +146,10 @@ int main() { // // PROGRESS BAR 4 // - std::vector lead_spinner{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"}; + std::vector lead_spinner{"⠋", "⠙", "⠹", "⠸", "⠼", + "⠴", "⠦", "⠧", "⠇", "⠏"}; indica::ProgressBar p4; - p4.set_bar_width(50); + p4.set_bar_width(40); p4.start_bar_with(""); p4.fill_bar_progress_with("⠸"); p4.lead_bar_progress_with(""); @@ -158,18 +161,18 @@ int main() { std::atomic index4{0}; auto job4 = [&p4, &index4, &lead_spinner]() { while (true) { - p4.set_prefix_text("{ " + std::to_string(p4.current()) + "% } "); + p4.set_prefix_text(" { " + std::to_string(p4.current()) + "% } "); p4.lead_bar_progress_with(lead_spinner[index4 % lead_spinner.size()]); index4 += 1; if (p4.current() + 2 >= 100) { - std::cout << std::endl; + std::cout << std::endl; p4.set_foreground_color(indica::Color::RED); - p4.set_prefix_text("{ ERROR }"); - p4.start_bar_with(""); - p4.fill_bar_progress_with(""); - p4.lead_bar_progress_with(""); - p4.fill_bar_remainder_with(""); - p4.end_bar_with(""); + p4.set_prefix_text(" { ERROR }"); + p4.start_bar_with(""); + p4.fill_bar_progress_with(""); + p4.lead_bar_progress_with(""); + p4.fill_bar_remainder_with(""); + p4.end_bar_with(""); p4.show_percentage(); p4.set_postfix_text("Failed to restore system"); p4.mark_as_completed(); @@ -190,7 +193,7 @@ int main() { // indica::ProgressBar p; p.set_bar_width(50); - p.start_bar_with("["); + p.start_bar_with(" ["); p.fill_bar_progress_with("■"); p.lead_bar_progress_with("■"); p.fill_bar_remainder_with("-"); @@ -214,9 +217,10 @@ int main() { std::thread thread(job); thread.join(); } - + { - indica::ProgressSpinner p; + indica::ProgressSpinner p; + p.set_prefix_text(" "); p.set_postfix_text("Checking credentials"); p.set_foreground_color(indica::Color::YELLOW); p.set_spinner_states({"⠈", "⠐", "⠠", "⢀", "⡀", "⠄", "⠂", "⠁"}); @@ -224,119 +228,121 @@ int main() { while (true) { if (p.is_completed()) { p.set_foreground_color(indica::Color::GREEN); - p.set_prefix_text("✔"); - p.hide_spinner(); + p.set_prefix_text(" ✔"); + p.hide_spinner(); p.hide_percentage(); p.set_postfix_text("Authenticated!"); p.mark_as_completed(); break; - } - else - p.tick(); + } else + p.tick(); std::this_thread::sleep_for(std::chrono::milliseconds(40)); } }; std::thread thread(job); - thread.join(); - } + thread.join(); + } - std::cout << "Compiling mission\n"; + std::cout << " Compiling mission\n"; { indica::ProgressSpinner p; - p.set_prefix_text(" - "); + p.set_prefix_text(" - "); p.set_postfix_text("Searching for the Moon"); - p.set_foreground_color(indica::Color::WHITE); + p.set_foreground_color(indica::Color::WHITE); p.set_spinner_states({"▖", "▘", "▝", "▗"}); p.hide_percentage(); auto job = [&p]() { while (true) { - auto current = p.current(); - if (current == 24) { - p.set_prefix_text(" - ✔"); - p.hide_spinner(); - } - else if (current == 25) { - std::cout << std::endl; - p.show_spinner(); - p.set_prefix_text(" - "); - p.set_postfix_text("Designing spaceship"); - } - else if (current == 49) { - p.set_prefix_text(" - ✔"); - p.hide_spinner(); - } - else if (current == 50) { - std::cout << std::endl; - p.show_spinner(); - p.set_prefix_text(" - "); - p.set_postfix_text("Contacting Elon Musk"); - } - else if (current == 74) { - p.set_prefix_text(" - ✔"); - p.hide_spinner(); - } - else if (current == 75) { - std::cout << std::endl; - p.show_spinner(); - p.set_prefix_text(" - "); - p.set_postfix_text("Launching rocket"); - } - else if (current == 95) { - p.set_prefix_text(" - ✔"); - p.hide_spinner(); + auto current = p.current(); + if (current == 24) { + p.set_prefix_text(" - ✔"); + p.hide_spinner(); + } else if (current == 25) { + std::cout << std::endl; + p.show_spinner(); + p.set_prefix_text(" - "); + p.set_postfix_text("Contacting Kerbal headquarters"); + } else if (current == 49) { + p.set_prefix_text(" - ✔"); + p.hide_spinner(); + } else if (current == 50) { + std::cout << std::endl; + p.show_spinner(); + p.set_prefix_text(" - "); + p.set_postfix_text("Designing spaceship"); + } else if (current == 74) { + p.set_prefix_text(" - ✔"); + p.hide_spinner(); + } else if (current == 75) { + std::cout << std::endl; + p.show_spinner(); + p.set_prefix_text(" - "); + p.set_postfix_text("Launching rocket"); + } else if (current == 95) { + p.set_prefix_text(" - ✔"); + p.hide_spinner(); + } else if (current == 99) { + std::cout << std::endl; + // + // NESTED PROGRESS BAR + // + indica::ProgressBar p2; + p2.set_bar_width(30); + p2.set_prefix_text(" - "); + p2.start_bar_with("[🌎"); + p2.fill_bar_progress_with(" "); + p2.lead_bar_progress_with("⠁⠂⠄🚀"); + p2.fill_bar_remainder_with(" "); + p2.end_bar_with("🌑]"); + p2.set_postfix_text("Achieved low-Earth orbit"); + p2.set_foreground_color(indica::Color::WHITE); + std::vector ship_trail{"⠁", "⠂", "⠄", "⡀", "⢀", "⠠", "⠐", "⠈"}; + std::atomic ship_trail_index{0}; + auto job2 = [&p2, &ship_trail_index, &ship_trail]() { + while (true) { + auto ticks = p2.current(); + if (ticks > 20 && ticks < 50) + p2.set_postfix_text("Switching to trans-lunar trajectory"); + else if (ticks > 50 && ticks < 80) + p2.set_postfix_text("Transfered to Lunar lander"); + else if (ticks > 80 && ticks < 98) + p2.set_postfix_text("Almost there"); + else if (ticks >= 98) + p2.set_postfix_text("Landed on the Moon"); + p2.lead_bar_progress_with( + ship_trail[(ship_trail_index - 3) % ship_trail.size()] + + ship_trail[(ship_trail_index - 2) % ship_trail.size()] + + ship_trail[(ship_trail_index - 1) % ship_trail.size()] + + ship_trail[ship_trail_index % ship_trail.size()] + + "🚀"); + p2.tick(); + ship_trail_index += 1; + if (p2.is_completed()) + break; + std::this_thread::sleep_for(std::chrono::milliseconds(80)); + } + }; + std::thread thread2(job2); + thread2.join(); + p.set_postfix_text("Mission successful!"); + p.mark_as_completed(); + break; } - else if (current == 99) { - std::cout << std::endl; - // - // NESTED PROGRESS BAR - // - indica::ProgressBar p2; - p2.set_bar_width(30); - p2.set_prefix_text(" - "); - p2.start_bar_with("[🌎"); - p2.fill_bar_progress_with(" "); - p2.lead_bar_progress_with("🚀"); - p2.fill_bar_remainder_with(" "); - p2.end_bar_with("🌑]"); - p2.set_postfix_text("Achieved low-Earth orbit"); - p2.set_foreground_color(indica::Color::WHITE); - auto job2 = [&p2]() { - while (true) { - auto ticks = p2.current(); - if (ticks > 20 && ticks < 50) - p2.set_postfix_text("Switching to trans-lunar trajectory"); - else if (ticks > 50 && ticks < 80) - p2.set_postfix_text("Transfered to Lunar lander"); - else if (ticks > 80 && ticks < 98) - p2.set_postfix_text("Almost there"); - else if (ticks >= 98) - p2.set_postfix_text("Landed on the Moon"); - p2.tick(); - if (p2.is_completed()) - break; - std::this_thread::sleep_for(std::chrono::milliseconds(80)); - } - }; - std::thread thread2(job2); - thread2.join(); - p.set_postfix_text("Mission successful!"); - p.mark_as_completed(); - break; - } - p.tick(); - if (p.is_completed()) - break; + p.tick(); + if (p.is_completed()) + break; std::this_thread::sleep_for(std::chrono::milliseconds(60)); } }; std::thread thread(job); - thread.join(); - } + thread.join(); + } std::this_thread::sleep_for(std::chrono::milliseconds(5000)); // Show cursor std::cout << "\e[?25h"; + std::cout << "\n\n"; return 0; }