Commit 1b97be57 authored by Florian Blasius's avatar Florian Blasius 🤘

[api update] finish textblock with new api.

Updated a lot of properties.
parent f904806e
use orbtk::*;
// use orbtk::*;
widget!(MainView);
// widget!(MainView);
impl Widget for MainView {
fn create() -> Self {
MainView::new()
.parent_type(ParentType::Single)
.debug_name("MainView")
.child(TextBlock::create().text("Wait for next merge"))
}
}
// impl Widget for MainView {
// fn create() -> Self {
// MainView::new()
// .parent_type(ParentType::Single)
// .debug_name("MainView")
// .child(TextBlock::create().text("Wait for next merge"))
// }
// }
// fn main() {
// let mut application = Application::default();
// application
// .create_window()
// .bounds((100.0, 100.0, 800.0, 600.0))
// .title("OrbTk - canvas example")
// .root(MainView::create())
// .build();
// application.run();
// }
fn main() {
let mut application = Application::default();
application
.create_window()
.bounds((100.0, 100.0, 800.0, 600.0))
.title("OrbTk - canvas example")
.root(MainView::create())
.build();
application.run();
}
}
\ No newline at end of file
use orbtk::*;
// use orbtk::*;
widget!(MainView);
// widget!(MainView);
impl Widget for MainView {
fn create() -> Self {
MainView::new()
.child(
Grid::create()
.columns(
Columns::create()
.column("*")
.column("Auto")
.column(50.0)
.build(),
)
.rows(Rows::create().row("*").row("*").build())
.child(
Grid::create()
.selector("lynch")
.margin((10.0, 0.0, 0.0, 4.0))
.attach(GridColumn(0))
.child(
TextBlock::create()
.text("(0,0)")
.horizontal_alignment("Center")
.vertical_alignment("Center"),
),
)
.child(
Grid::create()
.selector("bluebayoux")
.margin(10.0)
.constraint(Constraint::create().width(150.0).build())
.attach(GridColumn(1))
.child(
TextBlock::create()
.text("(1,0)")
.horizontal_alignment("Center")
.vertical_alignment("Center"),
),
)
.child(
Grid::create()
.selector("linkwater")
.attach(GridColumn(2))
.child(
TextBlock::create()
.text("(2,0)")
.selector("linkwater")
.horizontal_alignment("Center")
.vertical_alignment("Center"),
),
)
.child(
Grid::create()
.selector("goldendream")
.attach(GridColumn(0))
.attach(GridRow(1))
.attach(ColumnSpan(3))
.child(
TextBlock::create()
.text("(0,1) - ColumnSpan 3")
.selector("goldendream")
.horizontal_alignment(HorizontalAlignment(Alignment::Center))
.vertical_alignment(VerticalAlignment(Alignment::Center)),
),
),
)
.debug_name("MainView")
}
}
// impl Widget for MainView {
// fn create() -> Self {
// MainView::new()
// .child(
// Grid::create()
// .columns(
// Columns::create()
// .column("*")
// .column("Auto")
// .column(50.0)
// .build(),
// )
// .rows(Rows::create().row("*").row("*").build())
// .child(
// Grid::create()
// .selector("lynch")
// .margin((10.0, 0.0, 0.0, 4.0))
// .attach(GridColumn(0))
// .child(
// TextBlock::create()
// .text("(0,0)")
// .horizontal_alignment("Center")
// .vertical_alignment("Center"),
// ),
// )
// .child(
// Grid::create()
// .selector("bluebayoux")
// .margin(10.0)
// .constraint(Constraint::create().width(150.0).build())
// .attach(GridColumn(1))
// .child(
// TextBlock::create()
// .text("(1,0)")
// .horizontal_alignment("Center")
// .vertical_alignment("Center"),
// ),
// )
// .child(
// Grid::create()
// .selector("linkwater")
// .attach(GridColumn(2))
// .child(
// TextBlock::create()
// .text("(2,0)")
// .selector("linkwater")
// .horizontal_alignment("Center")
// .vertical_alignment("Center"),
// ),
// )
// .child(
// Grid::create()
// .selector("goldendream")
// .attach(GridColumn(0))
// .attach(GridRow(1))
// .attach(ColumnSpan(3))
// .child(
// TextBlock::create()
// .text("(0,1) - ColumnSpan 3")
// .selector("goldendream")
// .horizontal_alignment(HorizontalAlignment(Alignment::Center))
// .vertical_alignment(VerticalAlignment(Alignment::Center)),
// ),
// ),
// )
// .debug_name("MainView")
// }
// }
// fn main() {
// let mut application = Application::default();
// application
// .create_window()
// .bounds((100.0, 100.0, 420.0, 730.0))
// .title("OrbTk - grid example")
// .root(MainView::create())
// .theme(
// Theme::create()
// .extension_path("examples/res/grid.css")
// .build(),
// )
// .resizable(true)
// .build();
// application.run();
// }
fn main() {
let mut application = Application::default();
application
.create_window()
.bounds((100.0, 100.0, 420.0, 730.0))
.title("OrbTk - grid example")
.root(MainView::create())
.theme(
Theme::create()
.extension_path("examples/res/grid.css")
.build(),
)
.resizable(true)
.build();
application.run();
}
}
\ No newline at end of file
use orbtk::*;
// use orbtk::*;
widget!(MainView);
// widget!(MainView);
impl Widget for MainView {
fn create() -> Self {
MainView::new()
.debug_name("MainView")
.child(ImageWidget::create()
.image("res/orbtk-space.png"))
}
}
// impl Widget for MainView {
// fn create() -> Self {
// MainView::new()
// .debug_name("MainView")
// .child(ImageWidget::create()
// .image("res/orbtk-space.png"))
// }
// }
// fn main() {
// let mut application = Application::default();
// application
// .create_window()
// .bounds((100.0, 100.0, 800.0, 420.0))
// .title("OrbTk - image example")
// .root(MainView::create())
// .build();
// application.run();
// }
fn main() {
let mut application = Application::default();
application
.create_window()
.bounds((100.0, 100.0, 800.0, 420.0))
.title("OrbTk - image example")
.root(MainView::create())
.build();
application.run();
}
}
\ No newline at end of file
use orbtk::*;
// use orbtk::*;
use std::{cell::Cell, rc::Rc};
// use std::{cell::Cell, rc::Rc};
#[derive(Default)]
struct MainViewState {
counter: Cell<i32>,
}
// #[derive(Default)]
// struct MainViewState {
// counter: Cell<i32>,
// }
impl MainViewState {
pub fn increment(&self) {
self.counter.set(self.counter.get() + 1)
}
}
// impl MainViewState {
// pub fn increment(&self) {
// self.counter.set(self.counter.get() + 1)
// }
// }
impl State for MainViewState {
fn update(&self, context: &mut Context<'_>) {
if let Ok(button_count_text) = context.widget().borrow_mut_property::<Text>() {
button_count_text.0 = format!("Button count: {}", self.counter.get());
}
}
}
// impl State for MainViewState {
// fn update(&self, context: &mut Context<'_>) {
// if let Ok(button_count_text) = context.widget().borrow_mut_property::<Text>() {
// button_count_text.0 = format!("Button count: {}", self.counter.get());
// }
// }
// }
fn create_header(text: &str, grid: usize, column: usize) -> Template {
TextBlock::create()
.text(text)
.selector(Selector::from("textblock").class("h1"))
.attach(GridColumn(grid))
.attach(GridRow(column))
.into()
}
// fn create_header(text: &str, grid: usize, column: usize) -> Template {
// TextBlock::create()
// .text(text)
// .selector(Selector::from("textblock").class("h1"))
// .attach(GridColumn(grid))
// .attach(GridRow(column))
// .into()
// }
widget!(MainView);
// widget!(MainView);
impl Widget for MainView {
fn create() -> Self {
let state = Rc::new(MainViewState::default());
let button_count_text = Property::new(Text::from("Button count: 0"));
// impl Widget for MainView {
// fn create() -> Self {
// let state = Rc::new(MainViewState::default());
// let button_count_text = Property::new(Text::from("Button count: 0"));
MainView::new()
.state(state.clone())
.child(
Grid::create()
.margin(8.0)
.columns(
Columns::create()
.column("Auto")
.column(32.0)
.column("Auto")
.column("*")
.build(),
)
.rows(
Rows::create()
.row("Auto")
.row("Auto")
.row("Auto")
.row("Auto")
.row("Auto")
.row("Auto")
.build(),
)
// Column 0
.child(create_header("Button", 0, 0))
.child(
Button::create()
.text("Button")
.margin((0.0, 8.0, 0.0, 0.0))
.font_icon(material_font_icons::CHECK_FONT_ICON)
.attach(GridColumn(0))
.attach(GridRow(1))
.on_click(move |_| {
state.increment();
true
}),
)
.child(
Button::create()
.text("Primary")
.selector(Selector::from("button").class("primary"))
.margin((0.0, 8.0, 0.0, 0.0))
.font_icon(material_font_icons::CHECK_FONT_ICON)
.attach(GridColumn(0))
.attach(GridRow(2)),
)
.child(
ToggleButton::create()
.text("ToggleButton")
.margin((0.0, 8.0, 0.0, 0.0))
.attach(GridColumn(0))
.attach(GridRow(3)),
)
.child(
CheckBox::create()
.text("CheckBox")
.margin((0.0, 8.0, 0.0, 0.0))
.attach(GridColumn(0))
.attach(GridRow(4)),
)
.child(
Switch::create()
.margin((0.0, 8.0, 0.0, 0.0))
.attach(GridColumn(0))
.attach(GridRow(5)),
)
// Column 2
.child(create_header("Text", 2, 0))
.child(
TextBlock::create()
.text_prop(button_count_text.share())
.margin((0.0, 8.0, 0.0, 0.0))
.attach(GridColumn(2))
.attach(GridRow(1)),
)
.child(
TextBox::create()
.water_mark("TextBox...")
.margin((0.0, 8.0, 0.0, 0.0))
.attach(GridColumn(2))
.attach(GridRow(2)),
),
)
.attach(button_count_text)
.debug_name("MainView")
}
}
// MainView::new()
// .state(state.clone())
// .child(
// Grid::create()
// .margin(8.0)
// .columns(
// Columns::create()
// .column("Auto")
// .column(32.0)
// .column("Auto")
// .column("*")
// .build(),
// )
// .rows(
// Rows::create()
// .row("Auto")
// .row("Auto")
// .row("Auto")
// .row("Auto")
// .row("Auto")
// .row("Auto")
// .build(),
// )
// // Column 0
// .child(create_header("Button", 0, 0))
// .child(
// Button::create()
// .text("Button")
// .margin((0.0, 8.0, 0.0, 0.0))
// .font_icon(material_font_icons::CHECK_FONT_ICON)
// .attach(GridColumn(0))
// .attach(GridRow(1))
// .on_click(move |_| {
// state.increment();
// true
// }),
// )
// .child(
// Button::create()
// .text("Primary")
// .selector(Selector::from("button").class("primary"))
// .margin((0.0, 8.0, 0.0, 0.0))
// .font_icon(material_font_icons::CHECK_FONT_ICON)
// .attach(GridColumn(0))
// .attach(GridRow(2)),
// )
// .child(
// ToggleButton::create()
// .text("ToggleButton")
// .margin((0.0, 8.0, 0.0, 0.0))
// .attach(GridColumn(0))
// .attach(GridRow(3)),
// )
// .child(
// CheckBox::create()
// .text("CheckBox")
// .margin((0.0, 8.0, 0.0, 0.0))
// .attach(GridColumn(0))
// .attach(GridRow(4)),
// )
// .child(
// Switch::create()
// .margin((0.0, 8.0, 0.0, 0.0))
// .attach(GridColumn(0))
// .attach(GridRow(5)),
// )
// // Column 2
// .child(create_header("Text", 2, 0))
// .child(
// TextBlock::create()
// .text_prop(button_count_text.share())
// .margin((0.0, 8.0, 0.0, 0.0))
// .attach(GridColumn(2))
// .attach(GridRow(1)),
// )
// .child(
// TextBox::create()
// .water_mark("TextBox...")
// .margin((0.0, 8.0, 0.0, 0.0))
// .attach(GridColumn(2))
// .attach(GridRow(2)),
// ),
// )
// .attach(button_count_text)
// .debug_name("MainView")
// }
// }
// fn main() {
// let mut application = Application::default();
// application
// .create_window()
// .bounds((100.0, 100.0, 420.0, 730.0))
// .title("OrbTk - light theme example")
// .root(MainView::create())
// .debug_flag(false)
// .theme(Theme::default_light())
// .build();
// application.run();
// }
fn main() {
let mut application = Application::default();
application
.create_window()
.bounds((100.0, 100.0, 420.0, 730.0))
.title("OrbTk - light theme example")
.root(MainView::create())
.debug_flag(false)
.theme(Theme::default_light())
.build();
application.run();
}
}
\ No newline at end of file
// This examples shows how you could send messages between different widgets / views.
// // This examples shows how you could send messages between different widgets / views.
use orbtk::*;
// use orbtk::*;
mod sender {
use orbtk::*;
use std::{cell::Cell, rc::Rc};
// mod sender {
// use orbtk::*;
// use std::{cell::Cell, rc::Rc};
#[derive(Default)]
struct SenderState {
send_message: Cell<bool>,
}
// #[derive(Default)]
// struct SenderState {
// send_message: Cell<bool>,
// }
impl State for SenderState {
fn update(&self, context: &mut Context<'_>) {
if self.send_message.get() {
context.send_message("receiver_view", StringMessage::from("Hello from sender."));
}
}
}
// impl State for SenderState {
// fn update(&self, context: &mut Context<'_>) {
// if self.send_message.get() {
// context.send_message("receiver_view", StringMessage::from("Hello from sender."));
// }
// }
// }