this post was submitted on 31 Oct 2024
17 points (94.7% liked)

Rust

6388 readers
264 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

[email protected]

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 2 years ago
MODERATORS
 

It might be lack of sleep, but I can't figure this out.

I have a Label, and I want its text to be red when it represents an error, and I want it be green when it represent "good to go".

I found search result for C and maybe a solution for Python, but nothing for Rust.

I tried manually setting the css-classes property and running queue_draw(); it didn't work.

I can have a gtk::Box or a Frame that I place where the Label should go, then declare two Labels, and use set_child() to switch between them, but that seems like an ugly solution.

Do you have a solution?

SOLVED:

I have to add a "." before declaring a CSS "thing" for it to be considered a class.

Ex:

.overlay {
        background: rgba(60, 60, 60, 1);
        font-size: 25px;
}

instead of:

overlay {
        background: rgba(60, 60, 60, 1);
        font-size: 25px;)
}

Just use label.add_css_class(), label.remove_css_class() or label.set_css_classes() and make sure to properly load your CSS style sheets,

Source: the comment of [email protected]

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 1 points 3 months ago (3 children)

Before anyone suggests another library:

  • Iced and Egui both can't handle Arabic, which is a deal breaker.
  • Iced takes forever to compile and iterate, maybe that'll be fixed with dynamic linking.
  • Relm: I didn't know it existed before I started this project.
  • Qt bindings: IDK I forgot Qt existed, I was always more of GNOME* guy.
  • I am already pretty deep into this project, and don't want to learn something else for now.

* GNU Network Object something Environment

[–] [email protected] 1 points 3 months ago (2 children)

Use libcosmic 😑

No, but seriously.. skip to the end.

Iced and Egui both can’t handle Arabic, which is a deal breaker.

Iced can handle Arabic shaping-wise when cosmic-text is used, but it can't handle the direction (yet). If you only need it for the interface, a shit workaround would be to prefix all text with an RLM (RIGHT-TO-LEFT Mark). This would left-align all text of course.

Iced takes forever to compile and iterate, maybe that’ll be fixed with dynamic linking.

Fast iteration is already fixed by using cranelift in your release-dev profile (or whatever you want to call it), and mold as a linker. The binary will be slower, but iteration will be much much faster.


Okay, something helpful instead: Did you try asking in the rust:gnome.org matrix room mentioned in the project page?

[–] mmstick 1 points 1 month ago

It can handle the direction, and supports bidirectional scripts and layouts. The only problem is that some custom widgets need to account for this possibility in their layout. Essentially, widget authors need to specify a box that the text will be drawn into, and cosmic-text will take care of the bidirectional layouts.

load more comments (1 replies)
load more comments (1 replies)