I have written a calculator in Rust and libcosmic, the design is copied from gnome-calculator; I discovered 2 things:

  1. I don't like working on UIs.
  2. I have no idea how to transform

cosmic::widget::button::Builder

to

cosmic::widget::Button;

this code would be so much cleaner if I could return a button::standard() from a function.

The source code.

you are viewing a single comment's thread
view the rest of the comments
[–] 3 points 2 years ago* (last edited 2 years ago)

You can either return cosmic::Element<Message>, impl Into<cosmic::Element<Message>>, or cosmic::widget::Button<Message> with your functions.

Every widget can .into() or .apply(Element::from) into a cosmic::Element.

I'd recommend using the Grid widget so that your buttons can scale with the window.

cosmic::widget::grid()
    .push(widget1())
    .push(widget2())
    .push(widget3())
    .insert_row()
    .push(widget4())
    .push(widget5())
    .push(widget6())
    .row_spacing(12)
    .column_spacing(12)
    .justify_content(JustifyContent::Stretch)
    .width(Length::Fill)
    .height(Length::Fill)
    .into()
  • source