Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fltk-rs/fltk-table

A smart table widget for fltk-rs
https://github.com/fltk-rs/fltk-table

Last synced: about 2 months ago
JSON representation

A smart table widget for fltk-rs

Awesome Lists containing this project

README

        

# fltk-table

A smart table widget for fltk-rs. It aims to reduce the amount of boilerplate required to create a table.

## Usage
```toml
[dependencies]
fltk = "1.4"
fltk-table = "0.3"
```

## Example
```rust
use fltk::{
app, enums,
prelude::{GroupExt, WidgetExt},
window,
};
use fltk_table::{SmartTable, TableOpts};

fn main() {
let app = app::App::default().with_scheme(app::Scheme::Gtk);
let mut wind = window::Window::default().with_size(800, 600);

/// We pass the rows and columns thru the TableOpts field
let mut table = SmartTable::default()
.with_size(790, 590)
.center_of_parent()
.with_opts(TableOpts {
rows: 30,
cols: 15,
editable: true,
..Default::default()
});

wind.end();
wind.show();

// Just filling the vec with some values
for i in 0..30 {
for j in 0..15 {
table.set_cell_value(i, j, &(i + j).to_string());
}
}

// set the value at the row,column 4,5 to "another", notice that indices start at 0
table.set_cell_value(3, 4, "another");

assert_eq!(table.cell_value(3, 4), "another");

// To avoid closing the window on hitting the escape key
wind.set_callback(move |_| {
if app::event() == enums::Event::Close {
app.quit();
}
});

app.run().unwrap();
}
```
You can retrieve a copy of the data using the `SmartTable::data()` method.

The TableOpts struct also takes styling elements for cells and headers:
```rust,ignore
let mut table = SmartTable::default(TableOpts {
rows: 30,
cols: 15,
cell_selection_color: Color::Red.inactive(),
header_frame: FrameType::FlatBox,
header_color: Color::BackGround.lighter(),
cell_border_color: Color::White,
..Default::default()
});
```

![image](screenshots/styled.jpg)

The row/column header strings can also be changed using the `set_row_header_value()` and `set_col_header_value()` methods, which take an index to the required row/column.