pub struct HexView { /* fields omitted */ }
Hexadecimal viewer.
This is a classic hexview which can be used to view and manipulate data which resides inside
this struct. There are severeal states in which the view can be operatered, see DisplayState
.
You should consider the corresponding method docs for each state.
extern crate cursive;
extern crate cursive_hexview;
use cursive_hexview::{DisplayState,HexView};
fn main() {
let view = HexView::new().display_state(DisplayState::Editable);
let mut cur = cursive::Cursive::dummy();
cur.add_layer(cursive::views::Dialog::around(view).title("HexView"));
}
Creates a new, default HexView
with an empty databuffer and disabled state.
let view = HexView::new();
Crates a new HexView
with the given data and disabled state.
With data from a Vec
:
let view = HexView::new_from_iter(vec![3, 6, 1, 8, 250]);
With data from a byte string literal:
let view = HexView::new_from_iter(b"Hello, World!");
Or with a slice
let view = HexView::new_from_iter(&[5, 6, 2, 89]);
Returns a reference to the internal data.
let data = vec![3, 4, 9, 1];
let view = HexView::new_from_iter(data.clone());
assert_eq!(view.data(), &data);
Sets the data during the lifetime of this instance.
For insance to update the data due to an external event.
let mut view = cursive_hexview::HexView::new();
view.set_data(b"Hello, World!".to_owned().iter());
Sets the state of the view to one of the variants from DisplayState
.
This will alter the behavior of the view accrodingly to the set state.
If the state is set to Disabled
this view can neither be focused nor edited. If the state
is set to Enabled
it can be focused and the cursor can be moved around, but no data can
be altered. If set to Editable
this view behaves like Enabled
but the data can be altered.
This has nothing to do with rusts type system, which means even when this instance is set to
Disabled
you still can alter the data through set_data but you cannot
alter it with the keyboard commands (+, -, #hexvalue).
let view = HexView::new().display_state(DisplayState::Editable);
Returns the length of the data.
let view = HexView::new_from_iter(vec![0, 1, 2, 3]);
assert_eq!(4, view.len());
Checks whether the data is empty.
let view = HexView::new();
assert!(view.is_empty());
let view = HexView::new_from_iter(b"ABC");
assert!(!view.is_empty());
Sets the length of the data which this view displays.
If the new length is greater than the current one, 0's will be appended to the data.
If the new length is less than the current one, the data will be truncated and is lost.
let mut view = HexView::new();
view.set_len(3);
assert_eq!(view.len(), 3);
assert_eq!(view.data(), &vec![0u8, 0u8, 0u8]);
Creates a new, default HexView
with an empty databuffer and disabled state.
Called when an event is received (key press, mouse event, ...). Read more
Returns the minimum size the view requires with the given restrictions. Read more
Draws the view with the given printer (includes bounds) and focus. Read more
This view is offered focus. Will it take it? Read more
Called once the size for this view has been decided. Read more
Returns true
if the view content changed since last layout phase. Read more
Runs a closure on the view identified by the given selector. Read more
Moves the focus to the view identified by the given selector. Read more
What part of the view is important and should be visible? Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
Draws the view with the given printer (includes bounds) and focus. Read more
Returns the minimum size the view requires with the given restrictions. Read more
Called when an event is received (key press, mouse event, ...). Read more
Called once the size for this view has been decided. Read more
This view is offered focus. Will it take it? Read more
Runs a closure on the view identified by the given selector. Read more
Returns true
if the view content changed since last layout phase. Read more
Moves the focus to the view identified by the given selector. Read more
What part of the view is important and should be visible? Read more
Wraps self
in a BoxView
with the given size constraints.
Wraps self
into a fixed-size BoxView
.
Wraps self
into a fixed-width BoxView
.
Wraps self
into a fixed-width BoxView
.
Wraps self
into a full-screen BoxView
.
Wraps self
into a full-width BoxView
.
Wraps self
into a full-height BoxView
.
Wraps self
into a limited-size BoxView
.
Wraps self
into a limited-width BoxView
.
Wraps self
into a limited-height BoxView
.
Wraps self
into a BoxView
at least sized size
.
Wraps self
in a BoxView
at least min_width
wide.
Wraps self
in a BoxView
at least min_height
tall.
Wraps this view into an IdView
with the given id. Read more
Wraps self
in a ScrollView
.
Tries to find the view pointed to by the given selector. Read more
Convenient method to use call_on
with a view::Selector::Id
.
Calls the given closure on self
.
Calls the given closure on self
.
Calls the given closure if condition == true
.
Downcast self to a mutable Any
.
Returns a boxed any from a boxed self. Read more