ratatui_ruby 0.7.1 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.builds/ruby-3.2.yml +1 -1
- data/.builds/ruby-3.3.yml +1 -1
- data/.builds/ruby-3.4.yml +1 -1
- data/.builds/ruby-4.0.0.yml +1 -1
- data/AGENTS.md +12 -4
- data/CHANGELOG.md +49 -0
- data/README.md +7 -7
- data/Rakefile +1 -1
- data/doc/{application_architecture.md → concepts/application_architecture.md} +30 -0
- data/doc/{application_testing.md → concepts/application_testing.md} +4 -2
- data/doc/{event_handling.md → concepts/event_handling.md} +1 -1
- data/doc/contributors/auditing/parity.md +233 -0
- data/doc/contributors/developing_examples.md +10 -10
- data/doc/contributors/upstream_requests/tab_rects.md +173 -0
- data/doc/contributors/upstream_requests/title_rects.md +132 -0
- data/doc/contributors/v1.0.0_blockers.md +54 -747
- data/doc/{quickstart.md → getting_started/quickstart.md} +26 -26
- data/doc/{why.md → getting_started/why.md} +1 -1
- data/doc/index.md +23 -9
- data/doc/{terminal_limitations.md → troubleshooting/terminal_limitations.md} +33 -0
- data/doc/troubleshooting/tui_output.md +76 -0
- data/examples/app_all_events/README.md +1 -0
- data/examples/app_all_events/app.rb +2 -0
- data/examples/app_all_events/model/app_model.rb +2 -0
- data/examples/app_all_events/model/event_color_cycle.rb +2 -0
- data/examples/app_all_events/model/event_entry.rb +2 -0
- data/examples/app_all_events/model/msg.rb +2 -0
- data/examples/app_all_events/model/timestamp.rb +2 -0
- data/examples/app_all_events/update.rb +2 -0
- data/examples/app_all_events/view/app_view.rb +2 -0
- data/examples/app_all_events/view/controls_view.rb +2 -0
- data/examples/app_all_events/view/counts_view.rb +2 -0
- data/examples/app_all_events/view/live_view.rb +2 -0
- data/examples/app_all_events/view/log_view.rb +2 -0
- data/examples/app_all_events/view.rb +2 -0
- data/examples/app_color_picker/README.md +2 -0
- data/examples/app_color_picker/app.rb +2 -0
- data/examples/app_color_picker/clipboard.rb +2 -0
- data/examples/app_color_picker/color.rb +2 -0
- data/examples/app_color_picker/controls.rb +2 -0
- data/examples/app_color_picker/copy_dialog.rb +2 -0
- data/examples/app_color_picker/export_pane.rb +2 -0
- data/examples/app_color_picker/harmony.rb +2 -0
- data/examples/app_color_picker/input.rb +2 -0
- data/examples/app_color_picker/main_container.rb +2 -0
- data/examples/app_color_picker/palette.rb +2 -0
- data/examples/app_login_form/README.md +3 -0
- data/examples/app_login_form/app.rb +2 -0
- data/examples/app_stateful_interaction/README.md +2 -0
- data/examples/app_stateful_interaction/app.rb +2 -0
- data/examples/timeout_demo.rb +2 -0
- data/examples/verify_quickstart_dsl/README.md +2 -2
- data/examples/verify_quickstart_dsl/app.rb +2 -0
- data/examples/verify_quickstart_layout/README.md +2 -2
- data/examples/verify_quickstart_layout/app.rb +2 -0
- data/examples/verify_quickstart_lifecycle/README.md +2 -2
- data/examples/verify_quickstart_lifecycle/app.rb +2 -0
- data/examples/verify_readme_usage/app.rb +2 -0
- data/examples/{widget_barchart_demo → widget_barchart}/README.md +5 -3
- data/examples/{widget_barchart_demo → widget_barchart}/app.rb +7 -5
- data/examples/{widget_block_demo → widget_block}/README.md +5 -3
- data/examples/{widget_block_demo → widget_block}/app.rb +6 -4
- data/examples/{widget_box_demo → widget_box}/README.md +7 -4
- data/examples/{widget_box_demo → widget_box}/app.rb +7 -5
- data/examples/{widget_calendar_demo → widget_calendar}/README.md +6 -3
- data/examples/{widget_calendar_demo → widget_calendar}/app.rb +6 -4
- data/examples/{widget_canvas_demo → widget_canvas}/README.md +2 -2
- data/examples/{widget_canvas_demo → widget_canvas}/app.rb +6 -4
- data/examples/{widget_cell_demo → widget_cell}/README.md +6 -3
- data/examples/{widget_cell_demo → widget_cell}/app.rb +7 -5
- data/examples/{widget_center_demo → widget_center}/README.md +2 -2
- data/examples/{widget_center_demo → widget_center}/app.rb +6 -4
- data/examples/{widget_chart_demo → widget_chart}/README.md +7 -4
- data/examples/{widget_chart_demo → widget_chart}/app.rb +7 -5
- data/examples/{widget_gauge_demo → widget_gauge}/README.md +6 -3
- data/examples/{widget_gauge_demo → widget_gauge}/app.rb +7 -5
- data/examples/widget_layout_split/README.md +5 -2
- data/examples/widget_layout_split/app.rb +3 -1
- data/examples/{widget_line_gauge_demo → widget_line_gauge}/README.md +6 -3
- data/examples/{widget_line_gauge_demo → widget_line_gauge}/app.rb +7 -5
- data/examples/{widget_list_demo → widget_list}/README.md +7 -4
- data/examples/{widget_list_demo → widget_list}/app.rb +7 -5
- data/examples/{widget_map_demo → widget_map}/README.md +7 -4
- data/examples/{widget_map_demo → widget_map}/app.rb +4 -2
- data/examples/{widget_overlay_demo → widget_overlay}/README.md +6 -3
- data/examples/{widget_overlay_demo → widget_overlay}/app.rb +5 -3
- data/examples/{widget_popup_demo → widget_popup}/README.md +7 -4
- data/examples/{widget_popup_demo → widget_popup}/app.rb +6 -4
- data/examples/{widget_ratatui_logo_demo → widget_ratatui_logo}/README.md +6 -3
- data/examples/{widget_ratatui_logo_demo → widget_ratatui_logo}/app.rb +8 -6
- data/examples/{widget_ratatui_mascot_demo → widget_ratatui_mascot}/README.md +6 -3
- data/examples/{widget_ratatui_mascot_demo → widget_ratatui_mascot}/app.rb +6 -4
- data/examples/widget_rect/README.md +5 -2
- data/examples/widget_rect/app.rb +2 -0
- data/examples/widget_render/README.md +4 -1
- data/examples/widget_render/app.rb +2 -0
- data/examples/widget_rich_text/README.md +4 -1
- data/examples/widget_rich_text/app.rb +2 -0
- data/examples/widget_scroll_text/README.md +4 -1
- data/examples/widget_scroll_text/app.rb +3 -1
- data/examples/{widget_scrollbar_demo → widget_scrollbar}/README.md +7 -4
- data/examples/{widget_scrollbar_demo → widget_scrollbar}/app.rb +6 -4
- data/examples/{widget_sparkline_demo → widget_sparkline}/README.md +6 -3
- data/examples/{widget_sparkline_demo → widget_sparkline}/app.rb +7 -5
- data/examples/widget_style_colors/README.md +4 -1
- data/examples/widget_style_colors/app.rb +2 -0
- data/examples/{widget_table_demo → widget_table}/README.md +7 -4
- data/examples/{widget_table_demo → widget_table}/app.rb +4 -2
- data/examples/{widget_tabs_demo → widget_tabs}/README.md +6 -3
- data/examples/{widget_tabs_demo → widget_tabs}/app.rb +7 -5
- data/examples/widget_text_width/README.md +5 -2
- data/examples/widget_text_width/app.rb +2 -0
- data/exe/.gitkeep +0 -0
- data/ext/ratatui_ruby/Cargo.lock +1 -1
- data/ext/ratatui_ruby/Cargo.toml +1 -1
- data/ext/ratatui_ruby/extconf.rb +2 -0
- data/ext/ratatui_ruby/src/lib.rs +2 -2
- data/ext/ratatui_ruby/src/rendering.rs +9 -0
- data/ext/ratatui_ruby/src/style.rs +22 -2
- data/ext/ratatui_ruby/src/text.rs +26 -0
- data/ext/ratatui_ruby/src/widgets/barchart.rs +8 -6
- data/ext/ratatui_ruby/src/widgets/chart.rs +31 -4
- data/ext/ratatui_ruby/src/widgets/table.rs +13 -5
- data/ext/ratatui_ruby/src/widgets/tabs.rs +49 -9
- data/lib/ratatui_ruby/buffer/cell.rb +2 -0
- data/lib/ratatui_ruby/buffer.rb +2 -0
- data/lib/ratatui_ruby/cell.rb +2 -0
- data/lib/ratatui_ruby/event/focus_gained.rb +2 -0
- data/lib/ratatui_ruby/event/focus_lost.rb +2 -0
- data/lib/ratatui_ruby/event/key/character.rb +2 -0
- data/lib/ratatui_ruby/event/key/media.rb +2 -0
- data/lib/ratatui_ruby/event/key/modifier.rb +2 -0
- data/lib/ratatui_ruby/event/key/navigation.rb +2 -0
- data/lib/ratatui_ruby/event/key/system.rb +2 -0
- data/lib/ratatui_ruby/event/key.rb +2 -0
- data/lib/ratatui_ruby/event/mouse.rb +2 -0
- data/lib/ratatui_ruby/event/none.rb +2 -0
- data/lib/ratatui_ruby/event/paste.rb +2 -0
- data/lib/ratatui_ruby/event/resize.rb +2 -0
- data/lib/ratatui_ruby/event.rb +2 -0
- data/lib/ratatui_ruby/frame.rb +2 -0
- data/lib/ratatui_ruby/layout/constraint.rb +2 -0
- data/lib/ratatui_ruby/layout/layout.rb +2 -0
- data/lib/ratatui_ruby/layout/rect.rb +2 -0
- data/lib/ratatui_ruby/layout.rb +2 -0
- data/lib/ratatui_ruby/list_state.rb +2 -0
- data/lib/ratatui_ruby/schema/bar_chart/bar.rb +2 -0
- data/lib/ratatui_ruby/schema/bar_chart/bar_group.rb +2 -0
- data/lib/ratatui_ruby/schema/bar_chart.rb +4 -2
- data/lib/ratatui_ruby/schema/block.rb +4 -2
- data/lib/ratatui_ruby/schema/calendar.rb +4 -2
- data/lib/ratatui_ruby/schema/canvas.rb +2 -0
- data/lib/ratatui_ruby/schema/center.rb +2 -0
- data/lib/ratatui_ruby/schema/chart.rb +4 -2
- data/lib/ratatui_ruby/schema/clear.rb +2 -0
- data/lib/ratatui_ruby/schema/constraint.rb +2 -0
- data/lib/ratatui_ruby/schema/cursor.rb +2 -0
- data/lib/ratatui_ruby/schema/draw.rb +2 -0
- data/lib/ratatui_ruby/schema/gauge.rb +4 -2
- data/lib/ratatui_ruby/schema/layout.rb +2 -0
- data/lib/ratatui_ruby/schema/line_gauge.rb +4 -2
- data/lib/ratatui_ruby/schema/list.rb +3 -1
- data/lib/ratatui_ruby/schema/list_item.rb +2 -0
- data/lib/ratatui_ruby/schema/overlay.rb +2 -0
- data/lib/ratatui_ruby/schema/paragraph.rb +2 -0
- data/lib/ratatui_ruby/schema/ratatui_logo.rb +4 -2
- data/lib/ratatui_ruby/schema/ratatui_mascot.rb +4 -2
- data/lib/ratatui_ruby/schema/rect.rb +2 -0
- data/lib/ratatui_ruby/schema/row.rb +2 -0
- data/lib/ratatui_ruby/schema/scrollbar.rb +4 -2
- data/lib/ratatui_ruby/schema/shape/label.rb +2 -0
- data/lib/ratatui_ruby/schema/sparkline.rb +4 -2
- data/lib/ratatui_ruby/schema/style.rb +2 -0
- data/lib/ratatui_ruby/schema/table.rb +2 -0
- data/lib/ratatui_ruby/schema/tabs.rb +4 -2
- data/lib/ratatui_ruby/schema/text.rb +2 -0
- data/lib/ratatui_ruby/scrollbar_state.rb +2 -0
- data/lib/ratatui_ruby/style/style.rb +3 -0
- data/lib/ratatui_ruby/style.rb +2 -0
- data/lib/ratatui_ruby/table_state.rb +2 -0
- data/lib/ratatui_ruby/test_helper/event_injection.rb +2 -0
- data/lib/ratatui_ruby/test_helper/snapshot.rb +62 -21
- data/lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.ansi +24 -0
- data/lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.txt +24 -0
- data/lib/ratatui_ruby/test_helper/snapshots/barchart_styled_label.ansi +5 -0
- data/lib/ratatui_ruby/test_helper/snapshots/barchart_styled_label.txt +5 -0
- data/lib/ratatui_ruby/test_helper/snapshots/chart_rendering.ansi +24 -0
- data/lib/ratatui_ruby/test_helper/snapshots/chart_rendering.txt +24 -0
- data/lib/ratatui_ruby/test_helper/snapshots/half_block_marker.ansi +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/half_block_marker.txt +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_bottom.ansi +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_bottom.txt +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_left.ansi +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_left.txt +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_right.ansi +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_right.txt +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_top.ansi +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/legend_position_top.txt +12 -0
- data/lib/ratatui_ruby/test_helper/snapshots/my_snapshot.txt +1 -0
- data/lib/ratatui_ruby/test_helper/snapshots/styled_axis_title.ansi +10 -0
- data/lib/ratatui_ruby/test_helper/snapshots/styled_axis_title.txt +10 -0
- data/lib/ratatui_ruby/test_helper/snapshots/styled_dataset_name.ansi +10 -0
- data/lib/ratatui_ruby/test_helper/snapshots/styled_dataset_name.txt +10 -0
- data/lib/ratatui_ruby/test_helper/style_assertions.rb +2 -0
- data/lib/ratatui_ruby/test_helper/terminal.rb +5 -0
- data/lib/ratatui_ruby/test_helper/test_doubles.rb +2 -0
- data/lib/ratatui_ruby/test_helper.rb +6 -4
- data/lib/ratatui_ruby/tui/buffer_factories.rb +2 -0
- data/lib/ratatui_ruby/tui/canvas_factories.rb +2 -0
- data/lib/ratatui_ruby/tui/core.rb +2 -0
- data/lib/ratatui_ruby/tui/layout_factories.rb +2 -0
- data/lib/ratatui_ruby/tui/state_factories.rb +2 -0
- data/lib/ratatui_ruby/tui/style_factories.rb +2 -0
- data/lib/ratatui_ruby/tui/text_factories.rb +2 -0
- data/lib/ratatui_ruby/tui/widget_factories.rb +2 -0
- data/lib/ratatui_ruby/tui.rb +2 -0
- data/lib/ratatui_ruby/version.rb +3 -1
- data/lib/ratatui_ruby/widgets/bar_chart/bar.rb +2 -0
- data/lib/ratatui_ruby/widgets/bar_chart/bar_group.rb +2 -0
- data/lib/ratatui_ruby/widgets/bar_chart.rb +7 -4
- data/lib/ratatui_ruby/widgets/block.rb +46 -2
- data/lib/ratatui_ruby/widgets/calendar.rb +4 -2
- data/lib/ratatui_ruby/widgets/canvas.rb +2 -0
- data/lib/ratatui_ruby/widgets/cell.rb +2 -0
- data/lib/ratatui_ruby/widgets/center.rb +2 -0
- data/lib/ratatui_ruby/widgets/chart.rb +13 -6
- data/lib/ratatui_ruby/widgets/clear.rb +2 -0
- data/lib/ratatui_ruby/widgets/cursor.rb +2 -0
- data/lib/ratatui_ruby/widgets/gauge.rb +4 -2
- data/lib/ratatui_ruby/widgets/line_gauge.rb +4 -2
- data/lib/ratatui_ruby/widgets/list.rb +3 -1
- data/lib/ratatui_ruby/widgets/list_item.rb +2 -0
- data/lib/ratatui_ruby/widgets/overlay.rb +2 -0
- data/lib/ratatui_ruby/widgets/paragraph.rb +2 -0
- data/lib/ratatui_ruby/widgets/ratatui_logo.rb +4 -2
- data/lib/ratatui_ruby/widgets/ratatui_mascot.rb +4 -2
- data/lib/ratatui_ruby/widgets/row.rb +2 -0
- data/lib/ratatui_ruby/widgets/scrollbar.rb +4 -2
- data/lib/ratatui_ruby/widgets/shape/label.rb +2 -0
- data/lib/ratatui_ruby/widgets/sparkline.rb +7 -4
- data/lib/ratatui_ruby/widgets/table.rb +2 -0
- data/lib/ratatui_ruby/widgets/tabs.rb +12 -8
- data/lib/ratatui_ruby/widgets.rb +2 -0
- data/lib/ratatui_ruby.rb +130 -9
- data/tasks/autodoc/examples.rb +2 -0
- data/tasks/autodoc/member.rb +2 -0
- data/tasks/autodoc/name.rb +2 -0
- data/tasks/autodoc.rake +2 -0
- data/tasks/bump/cargo_lockfile.rb +2 -0
- data/tasks/bump/changelog.rb +2 -0
- data/tasks/bump/header.rb +2 -0
- data/tasks/bump/history.rb +2 -0
- data/tasks/bump/links.rb +2 -0
- data/tasks/bump/manifest.rb +2 -0
- data/tasks/bump/ruby_gem.rb +2 -0
- data/tasks/bump/sem_ver.rb +2 -0
- data/tasks/bump/unreleased_section.rb +2 -0
- data/tasks/bump.rake +2 -0
- data/tasks/doc.rake +268 -0
- data/tasks/extension.rake +2 -0
- data/tasks/lint.rake +115 -0
- data/tasks/rdoc_config.rb +18 -4
- data/tasks/sourcehut.rake +2 -0
- data/tasks/terminal_preview/app_screenshot.rb +2 -0
- data/tasks/terminal_preview/crash_report.rb +2 -0
- data/tasks/terminal_preview/example_app.rb +2 -0
- data/tasks/terminal_preview/launcher_script.rb +2 -0
- data/tasks/terminal_preview/preview_collection.rb +2 -0
- data/tasks/terminal_preview/preview_timing.rb +2 -0
- data/tasks/terminal_preview/safety_confirmation.rb +2 -0
- data/tasks/terminal_preview/saved_screenshot.rb +2 -0
- data/tasks/terminal_preview/system_appearance.rb +2 -0
- data/tasks/terminal_preview/terminal_window.rb +2 -0
- data/tasks/terminal_preview/window_id.rb +2 -0
- data/tasks/terminal_preview.rake +2 -0
- data/tasks/test.rake +2 -0
- data/tasks/website/index_page.rb +2 -0
- data/tasks/website/version.rb +12 -2
- data/tasks/website/version_menu.rb +2 -0
- data/tasks/website/versioned_documentation.rb +2 -0
- data/tasks/website/website.rb +2 -0
- data/tasks/website.rake +2 -0
- metadata +97 -75
- data/doc/contributors/architectural_overhaul/chat_conversations.md +0 -4952
- data/doc/contributors/architectural_overhaul/implementation_plan.md +0 -60
- data/doc/contributors/architectural_overhaul/task.md +0 -37
- /data/doc/{async.md → concepts/async.md} +0 -0
- /data/doc/{interactive_design.md → concepts/interactive_design.md} +0 -0
- /data/doc/images/{widget_barchart_demo.png → widget_barchart.png} +0 -0
- /data/doc/images/{widget_block_demo.png → widget_block.png} +0 -0
- /data/doc/images/{widget_box_demo.png → widget_box.png} +0 -0
- /data/doc/images/{widget_calendar_demo.png → widget_calendar.png} +0 -0
- /data/doc/images/{widget_canvas_demo.png → widget_canvas.png} +0 -0
- /data/doc/images/{widget_cell_demo.png → widget_cell.png} +0 -0
- /data/doc/images/{widget_center_demo.png → widget_center.png} +0 -0
- /data/doc/images/{widget_chart_demo.png → widget_chart.png} +0 -0
- /data/doc/images/{widget_gauge_demo.png → widget_gauge.png} +0 -0
- /data/doc/images/{widget_line_gauge_demo.png → widget_line_gauge.png} +0 -0
- /data/doc/images/{widget_list_demo.png → widget_list.png} +0 -0
- /data/doc/images/{widget_map_demo.png → widget_map.png} +0 -0
- /data/doc/images/{widget_overlay_demo.png → widget_overlay.png} +0 -0
- /data/doc/images/{widget_popup_demo.png → widget_popup.png} +0 -0
- /data/doc/images/{widget_ratatui_logo_demo.png → widget_ratatui_logo.png} +0 -0
- /data/doc/images/{widget_ratatui_mascot_demo.png → widget_ratatui_mascot.png} +0 -0
- /data/doc/images/{widget_scrollbar_demo.png → widget_scrollbar.png} +0 -0
- /data/doc/images/{widget_sparkline_demo.png → widget_sparkline.png} +0 -0
- /data/doc/images/{widget_table_demo.png → widget_table.png} +0 -0
- /data/doc/images/{widget_tabs_demo.png → widget_tabs.png} +0 -0
- /data/doc/{v0.7.0_migration.md → migration/v0_7_0.md} +0 -0
- /data/doc/{debugging.md → troubleshooting/debugging.md} +0 -0
|
@@ -3,9 +3,9 @@ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
|
|
|
3
3
|
SPDX-License-Identifier: CC-BY-SA-4.0
|
|
4
4
|
-->
|
|
5
5
|
|
|
6
|
-
# BarChart
|
|
6
|
+
# BarChart (Bar, BarGroup) Example
|
|
7
7
|
|
|
8
|
-
[](app.rb)
|
|
9
9
|
|
|
10
10
|
Visualizes categorical data with interactive attribute cycling.
|
|
11
11
|
|
|
@@ -38,13 +38,15 @@ Comparing magnitudes in raw tables requires mental arithmetic. Bar charts make t
|
|
|
38
38
|
## Usage
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
|
-
ruby examples/
|
|
41
|
+
ruby examples/widget_barchart/app.rb
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
## Learning Outcomes
|
|
45
45
|
|
|
46
46
|
Use this example if you need to...
|
|
47
|
+
|
|
47
48
|
- Visualize categorical data (e.g., sales by quarter, CPU usage by core).
|
|
48
49
|
- Create "stats" dashboards with compact visualizations.
|
|
49
50
|
- Understand how `RatatuiRuby::BarChart` handles different data structures.
|
|
50
51
|
|
|
52
|
+
[Read the source code →](app.rb)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
$LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
|
|
7
9
|
require "ratatui_ruby"
|
|
@@ -18,10 +20,10 @@ require "ratatui_ruby"
|
|
|
18
20
|
#
|
|
19
21
|
# Run the demo from the terminal:
|
|
20
22
|
#
|
|
21
|
-
# ruby examples/
|
|
23
|
+
# ruby examples/widget_barchart/app.rb
|
|
22
24
|
#
|
|
23
|
-
# rdoc-image:/doc/images/
|
|
24
|
-
class
|
|
25
|
+
# rdoc-image:/doc/images/widget_barchart.png
|
|
26
|
+
class WidgetBarchart
|
|
25
27
|
def initialize
|
|
26
28
|
@data_index = 2
|
|
27
29
|
@styles = nil # Initialized in run
|
|
@@ -149,7 +151,7 @@ class WidgetBarchartDemo
|
|
|
149
151
|
value_style: @styles[@value_style_index][:style],
|
|
150
152
|
bar_set: @bar_sets[@bar_set_index][:set],
|
|
151
153
|
block: @tui.block(
|
|
152
|
-
title: "BarChart
|
|
154
|
+
title: "BarChart: #{data_name}",
|
|
153
155
|
borders: [:all]
|
|
154
156
|
)
|
|
155
157
|
)
|
|
@@ -235,4 +237,4 @@ class WidgetBarchartDemo
|
|
|
235
237
|
end
|
|
236
238
|
end
|
|
237
239
|
|
|
238
|
-
|
|
240
|
+
WidgetBarchart.new.run if __FILE__ == $0
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
3
3
|
SPDX-License-Identifier: CC-BY-SA-4.0
|
|
4
4
|
-->
|
|
5
|
-
# Block
|
|
5
|
+
# Block Example
|
|
6
6
|
|
|
7
|
-
[](app.rb)
|
|
8
8
|
|
|
9
9
|
This example demonstrates the versatile `Block` widget, which provides the visual container, borders, and titles for almost every other widget in `ratatui_ruby`.
|
|
10
10
|
|
|
@@ -32,5 +32,7 @@ This example demonstrates the versatile `Block` widget, which provides the visua
|
|
|
32
32
|
## Usage
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
ruby examples/
|
|
35
|
+
ruby examples/widget_block/app.rb
|
|
36
36
|
```
|
|
37
|
+
|
|
38
|
+
[Read the source code →](app.rb)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
$LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
|
|
7
9
|
require "ratatui_ruby"
|
|
@@ -16,10 +18,10 @@ require "ratatui_ruby"
|
|
|
16
18
|
#
|
|
17
19
|
# Run the demo from the terminal:
|
|
18
20
|
#
|
|
19
|
-
# ruby examples/
|
|
21
|
+
# ruby examples/widget_block/app.rb
|
|
20
22
|
#
|
|
21
|
-
# rdoc-image:/doc/images/
|
|
22
|
-
class
|
|
23
|
+
# rdoc-image:/doc/images/widget_block.png
|
|
24
|
+
class WidgetBlock
|
|
23
25
|
def initialize
|
|
24
26
|
@title_configs = [
|
|
25
27
|
{ name: "None", title: nil },
|
|
@@ -253,4 +255,4 @@ set: {
|
|
|
253
255
|
end
|
|
254
256
|
end
|
|
255
257
|
|
|
256
|
-
|
|
258
|
+
WidgetBlock.new.run if __FILE__ == $PROGRAM_NAME
|
|
@@ -3,9 +3,9 @@ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
|
|
|
3
3
|
SPDX-License-Identifier: CC-BY-SA-4.0
|
|
4
4
|
-->
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Block (Box) Example
|
|
7
7
|
|
|
8
|
-
[](app.rb)
|
|
9
9
|
|
|
10
10
|
Demonstrates visual container attributes with interactive cycling.
|
|
11
11
|
|
|
@@ -33,13 +33,16 @@ Widgets often float in a void. Without boundaries, interfaces become a chaotic m
|
|
|
33
33
|
## Usage
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
|
-
ruby examples/
|
|
36
|
+
ruby examples/widget_box/app.rb
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
## Learning Outcomes
|
|
40
40
|
|
|
41
41
|
Use this example if you need to...
|
|
42
|
+
|
|
42
43
|
- Group related widgets together.
|
|
43
44
|
- Create distinct "panels" or "cards" in your UI.
|
|
44
45
|
- Style borders to indicate state (e.g., Red border for error state).
|
|
45
|
-
- Understand the difference between `style` (content) and `border_style` (frame).
|
|
46
|
+
- Understand the difference between `style` (content) and `border_style` (frame).
|
|
47
|
+
|
|
48
|
+
[Read the source code →](app.rb)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
$LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
|
|
7
9
|
require "ratatui_ruby"
|
|
@@ -18,10 +20,10 @@ require "ratatui_ruby"
|
|
|
18
20
|
#
|
|
19
21
|
# Run the demo from the terminal:
|
|
20
22
|
#
|
|
21
|
-
# ruby examples/
|
|
23
|
+
# ruby examples/widget_box/app.rb
|
|
22
24
|
#
|
|
23
|
-
# rdoc-image:/doc/images/
|
|
24
|
-
class
|
|
25
|
+
# rdoc-image:/doc/images/widget_box.png
|
|
26
|
+
class WidgetBox
|
|
25
27
|
def initialize
|
|
26
28
|
# Border Types (ratatui native styles)
|
|
27
29
|
@border_types = [
|
|
@@ -141,7 +143,7 @@ set: {
|
|
|
141
143
|
end
|
|
142
144
|
|
|
143
145
|
block = @tui.block(
|
|
144
|
-
title: "Box
|
|
146
|
+
title: "Box",
|
|
145
147
|
title_alignment: title_alignment_config[:alignment],
|
|
146
148
|
title_style: title_style_config[:style],
|
|
147
149
|
borders: [:all],
|
|
@@ -247,4 +249,4 @@ set: {
|
|
|
247
249
|
end
|
|
248
250
|
end
|
|
249
251
|
|
|
250
|
-
|
|
252
|
+
WidgetBox.new.run if __FILE__ == $0
|
|
@@ -5,7 +5,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0
|
|
|
5
5
|
|
|
6
6
|
# Calendar Widget Example
|
|
7
7
|
|
|
8
|
-
[](app.rb)
|
|
9
9
|
|
|
10
10
|
Demonstrates a monthly calendar with customizable headers and event highlighting.
|
|
11
11
|
|
|
@@ -28,12 +28,15 @@ Rendering dates in a grid involves complex calculations for leap years and weekd
|
|
|
28
28
|
## Usage
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
-
ruby examples/
|
|
31
|
+
ruby examples/widget_calendar/app.rb
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
## Learning Outcomes
|
|
35
35
|
|
|
36
36
|
Use this example if you need to...
|
|
37
|
+
|
|
37
38
|
- Display a date picker.
|
|
38
39
|
- Show a schedule or timeline view.
|
|
39
|
-
- Highlight specific dates (deadlines, holidays) on a calendar grid.
|
|
40
|
+
- Highlight specific dates (deadlines, holidays) on a calendar grid.
|
|
41
|
+
|
|
42
|
+
[Read the source code →](app.rb)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
$LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
|
|
7
9
|
require "ratatui_ruby"
|
|
@@ -19,10 +21,10 @@ require "ratatui_ruby"
|
|
|
19
21
|
#
|
|
20
22
|
# Run the demo from the terminal:
|
|
21
23
|
#
|
|
22
|
-
# ruby examples/
|
|
24
|
+
# ruby examples/widget_calendar/app.rb
|
|
23
25
|
#
|
|
24
|
-
# rdoc-image:/doc/images/
|
|
25
|
-
class
|
|
26
|
+
# rdoc-image:/doc/images/widget_calendar.png
|
|
27
|
+
class WidgetCalendar
|
|
26
28
|
def initialize(date: nil)
|
|
27
29
|
@date = date
|
|
28
30
|
end
|
|
@@ -110,4 +112,4 @@ class WidgetCalendarDemo
|
|
|
110
112
|
end
|
|
111
113
|
end
|
|
112
114
|
|
|
113
|
-
|
|
115
|
+
WidgetCalendar.new.run if __FILE__ == $PROGRAM_NAME
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Canvas
|
|
1
|
+
# Canvas (Circle, Line, Point, Rectangle) Example
|
|
2
2
|
|
|
3
|
-
[](app.rb)
|
|
4
4
|
|
|
5
5
|
<!--
|
|
6
6
|
SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
$LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
|
|
7
9
|
require "ratatui_ruby"
|
|
8
10
|
|
|
9
|
-
#
|
|
11
|
+
# Canvas Widget
|
|
10
12
|
# Demonstrates how to draw geometric shapes (Points, Lines, Rects, Circles)
|
|
11
13
|
# on a high-resolution canvas.
|
|
12
|
-
class
|
|
14
|
+
class WidgetCanvas
|
|
13
15
|
def initialize
|
|
14
16
|
@x_offset = 0.0
|
|
15
17
|
@y_offset = 0.0
|
|
@@ -78,7 +80,7 @@ class WidgetCanvasDemo
|
|
|
78
80
|
x_bounds: [-100.0, 100.0],
|
|
79
81
|
y_bounds: [-100.0, 100.0],
|
|
80
82
|
marker: :braille,
|
|
81
|
-
block: @tui.block(title: "Canvas
|
|
83
|
+
block: @tui.block(title: "Canvas", borders: [:all])
|
|
82
84
|
)
|
|
83
85
|
|
|
84
86
|
# Main area for canvas
|
|
@@ -120,4 +122,4 @@ class WidgetCanvasDemo
|
|
|
120
122
|
end
|
|
121
123
|
end
|
|
122
124
|
|
|
123
|
-
|
|
125
|
+
WidgetCanvas.new.run if __FILE__ == $0
|
|
@@ -5,7 +5,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0
|
|
|
5
5
|
|
|
6
6
|
# Cell Widget Example
|
|
7
7
|
|
|
8
|
-
[](app.rb)
|
|
9
9
|
|
|
10
10
|
Demonstrates using `Cell` objects for granular control over individual character grid units.
|
|
11
11
|
|
|
@@ -25,12 +25,15 @@ Sometimes you need to render specific characters with unique styles outside of s
|
|
|
25
25
|
## Usage
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
ruby examples/
|
|
28
|
+
ruby examples/widget_cell/app.rb
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
## Learning Outcomes
|
|
32
32
|
|
|
33
33
|
Use this example if you need to...
|
|
34
|
+
|
|
34
35
|
- Create a custom widget (like a game board or specialized graph).
|
|
35
36
|
- Style specific cells in a Table (e.g., Green "OK", Red "FAIL").
|
|
36
|
-
- Understand how to position content precisely with `Cell`.
|
|
37
|
+
- Understand how to position content precisely with `Cell`.
|
|
38
|
+
|
|
39
|
+
[Read the source code →](app.rb)
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
#--
|
|
1
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
2
5
|
#
|
|
3
6
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
|
-
|
|
5
|
-
# frozen_string_literal: true
|
|
7
|
+
#++
|
|
6
8
|
|
|
7
9
|
$LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
|
|
8
10
|
require "ratatui_ruby"
|
|
@@ -29,7 +31,7 @@ class CheckeredBackground
|
|
|
29
31
|
end
|
|
30
32
|
end
|
|
31
33
|
|
|
32
|
-
class
|
|
34
|
+
class WidgetCell
|
|
33
35
|
def run
|
|
34
36
|
RatatuiRuby.run do |tui|
|
|
35
37
|
@tui = tui
|
|
@@ -82,7 +84,7 @@ class WidgetCellDemo
|
|
|
82
84
|
width_percent: 50,
|
|
83
85
|
height_percent: 50,
|
|
84
86
|
child: @tui.paragraph(
|
|
85
|
-
text: "Custom Widget
|
|
87
|
+
text: "Custom Widget\n(CheckeredBackground)",
|
|
86
88
|
alignment: :center,
|
|
87
89
|
block: @tui.block(borders: :all, title: "Overlay")
|
|
88
90
|
)
|
|
@@ -107,5 +109,5 @@ class WidgetCellDemo
|
|
|
107
109
|
end
|
|
108
110
|
|
|
109
111
|
if __FILE__ == $0
|
|
110
|
-
|
|
112
|
+
WidgetCell.new.run
|
|
111
113
|
end
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
$LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
|
|
7
9
|
require "ratatui_ruby"
|
|
8
10
|
|
|
9
|
-
#
|
|
11
|
+
# Center Widget
|
|
10
12
|
# Demonstrates how to center content horizontally and vertically
|
|
11
13
|
# with adjustable width/height percentages.
|
|
12
|
-
class
|
|
14
|
+
class WidgetCenter
|
|
13
15
|
def initialize
|
|
14
16
|
@width_percent = 50
|
|
15
17
|
@height_percent = 50
|
|
@@ -39,7 +41,7 @@ class WidgetCenterDemo
|
|
|
39
41
|
# 1. Main Area
|
|
40
42
|
# Background block frames the centered content
|
|
41
43
|
bg_block = @tui.block(
|
|
42
|
-
title: "Center Widget
|
|
44
|
+
title: "Center Widget",
|
|
43
45
|
borders: [:all],
|
|
44
46
|
style: @tui.style(fg: :gray)
|
|
45
47
|
)
|
|
@@ -113,4 +115,4 @@ class WidgetCenterDemo
|
|
|
113
115
|
end
|
|
114
116
|
end
|
|
115
117
|
|
|
116
|
-
|
|
118
|
+
WidgetCenter.new.run if __FILE__ == $0
|
|
@@ -3,9 +3,9 @@ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
|
|
|
3
3
|
SPDX-License-Identifier: CC-BY-SA-4.0
|
|
4
4
|
-->
|
|
5
5
|
|
|
6
|
-
# Chart
|
|
6
|
+
# Chart (Dataset, Axis) Example
|
|
7
7
|
|
|
8
|
-
[](app.rb)
|
|
9
9
|
|
|
10
10
|
Demonstrates Cartesian plotting with interactive styling and configuration.
|
|
11
11
|
|
|
@@ -30,12 +30,15 @@ Trends and patterns are invisible in raw logs. Charts visualize X/Y datasets to
|
|
|
30
30
|
## Usage
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
-
ruby examples/
|
|
33
|
+
ruby examples/widget_chart/app.rb
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
## Learning Outcomes
|
|
37
37
|
|
|
38
38
|
Use this example if you need to...
|
|
39
|
+
|
|
39
40
|
- Plot real-time data monitoring (CPU history, request latency).
|
|
40
41
|
- Visualize mathematical functions.
|
|
41
|
-
- Compare multiple datasets on the same axis.
|
|
42
|
+
- Compare multiple datasets on the same axis.
|
|
43
|
+
|
|
44
|
+
[Read the source code →](app.rb)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
$LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
|
|
7
9
|
require "ratatui_ruby"
|
|
@@ -18,10 +20,10 @@ require "ratatui_ruby"
|
|
|
18
20
|
#
|
|
19
21
|
# Run the demo from the terminal:
|
|
20
22
|
#
|
|
21
|
-
# ruby examples/
|
|
23
|
+
# ruby examples/widget_chart/app.rb
|
|
22
24
|
#
|
|
23
|
-
# rdoc-image:/doc/images/
|
|
24
|
-
class
|
|
25
|
+
# rdoc-image:/doc/images/widget_chart.png
|
|
26
|
+
class WidgetChart
|
|
25
27
|
MARKERS = [
|
|
26
28
|
{ name: "Dot (·)", marker: :dot },
|
|
27
29
|
{ name: "Braille", marker: :braille },
|
|
@@ -137,7 +139,7 @@ class WidgetChartDemo
|
|
|
137
139
|
labels_alignment: Y_ALIGNMENTS[@y_alignment_index][:alignment]
|
|
138
140
|
),
|
|
139
141
|
block: @tui.block(
|
|
140
|
-
title: "Chart Widget
|
|
142
|
+
title: "Chart Widget",
|
|
141
143
|
borders: [:all]
|
|
142
144
|
),
|
|
143
145
|
legend_position: LEGEND_POSITIONS[@legend_position_index][:position],
|
|
@@ -215,4 +217,4 @@ class WidgetChartDemo
|
|
|
215
217
|
end
|
|
216
218
|
end
|
|
217
219
|
|
|
218
|
-
|
|
220
|
+
WidgetChart.new.run if __FILE__ == $PROGRAM_NAME
|
|
@@ -5,7 +5,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0
|
|
|
5
5
|
|
|
6
6
|
# Gauge Widget Example
|
|
7
7
|
|
|
8
|
-
[](app.rb)
|
|
9
9
|
|
|
10
10
|
Demonstrates progress bars with interactive configuration.
|
|
11
11
|
|
|
@@ -30,12 +30,15 @@ Long-running tasks create anxiety. Users need to know the system is working. Gau
|
|
|
30
30
|
## Usage
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
-
ruby examples/
|
|
33
|
+
ruby examples/widget_gauge/app.rb
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
## Learning Outcomes
|
|
37
37
|
|
|
38
38
|
Use this example if you need to...
|
|
39
|
+
|
|
39
40
|
- Show download or upload progress.
|
|
40
41
|
- Visualize resource quotas (disk space, memory usage).
|
|
41
|
-
- Create "health bars" or status indicators.
|
|
42
|
+
- Create "health bars" or status indicators.
|
|
43
|
+
|
|
44
|
+
[Read the source code →](app.rb)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
$LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
|
|
7
9
|
require "ratatui_ruby"
|
|
@@ -18,10 +20,10 @@ require "ratatui_ruby"
|
|
|
18
20
|
#
|
|
19
21
|
# Run the demo from the terminal:
|
|
20
22
|
#
|
|
21
|
-
# ruby examples/
|
|
23
|
+
# ruby examples/widget_gauge/app.rb
|
|
22
24
|
#
|
|
23
|
-
# rdoc-image:/doc/images/
|
|
24
|
-
class
|
|
25
|
+
# rdoc-image:/doc/images/widget_gauge.png
|
|
26
|
+
class WidgetGauge
|
|
25
27
|
def initialize
|
|
26
28
|
@ratio = 0.65
|
|
27
29
|
@ratios = [0.0, 0.25, 0.5, 0.65, 0.8, 0.95, 1.0]
|
|
@@ -108,7 +110,7 @@ class WidgetGaugeDemo
|
|
|
108
110
|
|
|
109
111
|
# Render title
|
|
110
112
|
title = @tui.paragraph(
|
|
111
|
-
text: "Gauge Widget
|
|
113
|
+
text: "Gauge Widget",
|
|
112
114
|
style: @tui.style(modifiers: [:bold])
|
|
113
115
|
)
|
|
114
116
|
frame.render_widget(title, title_area)
|
|
@@ -209,4 +211,4 @@ class WidgetGaugeDemo
|
|
|
209
211
|
end
|
|
210
212
|
end
|
|
211
213
|
|
|
212
|
-
|
|
214
|
+
WidgetGauge.new.run if __FILE__ == $PROGRAM_NAME
|
|
@@ -3,7 +3,7 @@ SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
|
|
|
3
3
|
SPDX-License-Identifier: CC-BY-SA-4.0
|
|
4
4
|
-->
|
|
5
5
|
|
|
6
|
-
# Layout Split Example
|
|
6
|
+
# Layout (Split, Grid) Example
|
|
7
7
|
|
|
8
8
|
[](app.rb)
|
|
9
9
|
|
|
@@ -38,7 +38,10 @@ ruby examples/widget_layout_split/app.rb
|
|
|
38
38
|
## Learning Outcomes
|
|
39
39
|
|
|
40
40
|
Use this example if you need to...
|
|
41
|
+
|
|
41
42
|
- Build responsive dashboards.
|
|
42
43
|
- Create 3-column layouts where the middle content fills remaining space.
|
|
43
44
|
- Center a modal dialog on the screen.
|
|
44
|
-
- Distribute buttons evenly across a control bar.
|
|
45
|
+
- Distribute buttons evenly across a control bar.
|
|
46
|
+
|
|
47
|
+
[Read the source code →](app.rb)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
$LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
|
|
7
9
|
require "ratatui_ruby"
|
|
@@ -174,7 +176,7 @@ class WidgetLayoutSplit
|
|
|
174
176
|
|
|
175
177
|
# Render title
|
|
176
178
|
title = @tui.paragraph(
|
|
177
|
-
text: "Layout.split
|
|
179
|
+
text: "Layout.split",
|
|
178
180
|
style: @tui.style(modifiers: [:bold])
|
|
179
181
|
)
|
|
180
182
|
frame.render_widget(title, title_area)
|
|
@@ -5,7 +5,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0
|
|
|
5
5
|
|
|
6
6
|
# Line Gauge Widget Example
|
|
7
7
|
|
|
8
|
-
[](app.rb)
|
|
9
9
|
|
|
10
10
|
Demonstrates compact progress bars for constrained spaces.
|
|
11
11
|
|
|
@@ -30,12 +30,15 @@ Standard block gauges take up vertical space. Sometimes you only have one line t
|
|
|
30
30
|
## Usage
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
-
ruby examples/
|
|
33
|
+
ruby examples/widget_line_gauge/app.rb
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
## Learning Outcomes
|
|
37
37
|
|
|
38
38
|
Use this example if you need to...
|
|
39
|
+
|
|
39
40
|
- Add a progress bar to a list item or table row.
|
|
40
41
|
- Create a status line at the bottom of the screen.
|
|
41
|
-
- Show multiple metrics (CPU, RAM, Net) in a compact list.
|
|
42
|
+
- Show multiple metrics (CPU, RAM, Net) in a compact list.
|
|
43
|
+
|
|
44
|
+
[Read the source code →](app.rb)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
#--
|
|
3
4
|
# SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
|
|
4
5
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
5
7
|
|
|
6
8
|
$LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
|
|
7
9
|
require "ratatui_ruby"
|
|
@@ -18,10 +20,10 @@ require "ratatui_ruby"
|
|
|
18
20
|
#
|
|
19
21
|
# Run the demo from the terminal:
|
|
20
22
|
#
|
|
21
|
-
# ruby examples/
|
|
23
|
+
# ruby examples/widget_line_gauge/app.rb
|
|
22
24
|
#
|
|
23
|
-
# rdoc-image:/doc/images/
|
|
24
|
-
class
|
|
25
|
+
# rdoc-image:/doc/images/widget_line_gauge.png
|
|
26
|
+
class WidgetLineGauge
|
|
25
27
|
def initialize
|
|
26
28
|
@ratio = 0.5
|
|
27
29
|
@ratios = [0.2, 0.35, 0.5, 0.65, 0.8, 0.95]
|
|
@@ -119,7 +121,7 @@ class WidgetLineGaugeDemo
|
|
|
119
121
|
)
|
|
120
122
|
|
|
121
123
|
# Render title
|
|
122
|
-
title = @tui.paragraph(text: "LineGauge Widget
|
|
124
|
+
title = @tui.paragraph(text: "LineGauge Widget - Cycle attributes with hotkeys")
|
|
123
125
|
frame.render_widget(title, title_area)
|
|
124
126
|
|
|
125
127
|
# Example 1: Static gauge showing all features
|
|
@@ -214,4 +216,4 @@ class WidgetLineGaugeDemo
|
|
|
214
216
|
end
|
|
215
217
|
end
|
|
216
218
|
|
|
217
|
-
|
|
219
|
+
WidgetLineGauge.new.run if __FILE__ == $PROGRAM_NAME
|