Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)D
Posts
1
Comments
46
Joined
2 yr. ago

  • I think you understood their comment wrong. In your code (e.g. label.add_css_class("green");) you don't use a dot, but in the CSS stylesheet. It works the same as with HTML/JS/CSS.

  • Well, that's CSS :D

    Note that if you create a custom Widget class, you can set a CSS name, wich isn't a CSS class and doesn't use a leading dot.

  • 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, this is usually done by including them as a resource alongside .ui files and icons. If you are using libadwaita, you can also use its predefined style classes.

     rust
        
    #!/usr/bin/env -S cargo +nightly -Zscript
    ---
    [dependencies]
    gtk = { package = "gtk4", version = "0.9.3", features = ["v4_12"] }
    ---
    
    use gtk::{glib, prelude::*};
    
    const STYLESHEET: &str = r#"
    .green {
        color: green;
    }
    .red {
        color: red;
    }
    "#;
    
    fn main() -> glib::ExitCode {
        let app = gtk::Application::builder()
            .application_id("org.example.HelloWorld")
            .build();
    
        app.connect_activate(|app| {
            let window = gtk::ApplicationWindow::builder()
                .application(app)
                .title("Hello, World!")
                .build();
    
            // Stylesheets are usually bundled with application resources
            // and automatically loaded
            let css_provider = gtk::CssProvider::new();
            css_provider.load_from_string(STYLESHEET);
            gtk::style_context_add_provider_for_display(
                &RootExt::display(&window),
                &css_provider,
                0
            );
    
            let box_ = gtk::Box::new(gtk::Orientation::Vertical, 6);
    
            let label = gtk::Label::builder()
                .label("Hello, World")
                .css_classes(["green"].as_slice())
                .build();
            box_.append(&label);
    
    
            let button = gtk::Button::builder()
                .label("Toggle Color")
                .build();
            box_.append(&button);
    
            button.connect_clicked(glib::clone!(#[weak] label, move |_| {
                if label.has_css_class("red") {
                    label.add_css_class("green");
                    label.remove_css_class("red");
                } else {
                    label.add_css_class("red");
                    label.remove_css_class("green");
                }
            }));
    
            window.set_child(Some(&box_));
            window.present();
        });
    
        app.run()
    }
    
    
      
  • Only in informal communication. Medical software and official documents (like you ID card) usually use cm.

  • Declaring the use without a paid license as “Unlicensed” is very misleading since the project is also licensed under the GNU AGPL v3.0.