diff --git a/src/time_button.rs b/src/time_button.rs index 8907b5ec..a74215f9 100644 --- a/src/time_button.rs +++ b/src/time_button.rs @@ -1,6 +1,7 @@ use cascade::cascade; use gtk4::{ glib::{self, clone}, + pango, prelude::*, subclass::prelude::*, }; @@ -13,6 +14,7 @@ use crate::popover_container::PopoverContainer; pub struct TimeButtonInner { calendar: DerefCell, button: DerefCell, + label: DerefCell, } #[glib::object_subclass] @@ -32,9 +34,18 @@ impl ObjectImpl for TimeButtonInner { gtk4::Calendar::new(); }; + let label = cascade! { + gtk4::Label::new(None); + ..set_attributes(Some(&cascade! { + pango::AttrList::new(); + ..insert(pango::Attribute::new_weight(pango::Weight::Bold)); + })); + }; + let button = cascade! { gtk4::ToggleButton::new(); ..set_has_frame(false); + ..set_child(Some(&label)); }; cascade! { @@ -51,6 +62,7 @@ impl ObjectImpl for TimeButtonInner { self.calendar.set(calendar); self.button.set(button); + self.label.set(label); // TODO: better way to do this? glib::timeout_add_seconds_local( @@ -94,7 +106,7 @@ impl TimeButton { // TODO: Locale-based formatting? let time = chrono::Local::now(); self.inner() - .button + .label .set_label(&time.format("%b %-d %-I:%M %p").to_string()); // time.format("%B %-d %Y") } diff --git a/src/window.rs b/src/window.rs index cb2bfd92..da39106b 100644 --- a/src/window.rs +++ b/src/window.rs @@ -1,6 +1,6 @@ use cascade::cascade; use glib::clone; -use gtk4::{gdk, glib, prelude::*, subclass::prelude::*}; +use gtk4::{gdk, glib, pango, prelude::*, subclass::prelude::*}; use std::cell::Cell; use crate::deref_cell::DerefCell; @@ -10,6 +10,22 @@ use crate::x; const BOTTOM: bool = false; +fn button(text: &str) -> gtk4::Button { + let label = cascade! { + gtk4::Label::new(Some(text)); + ..set_attributes(Some(&cascade! { + pango::AttrList::new(); + ..insert(pango::Attribute::new_weight(pango::Weight::Bold)); + })); + }; + + cascade! { + gtk4::Button::new(); + ..set_has_frame(false); + ..set_child(Some(&label)); + } +} + #[derive(Default)] pub struct PanelWindowInner { size: Cell>, @@ -29,14 +45,8 @@ impl ObjectImpl for PanelWindowInner { gtk4::CenterBox::new(); ..set_start_widget(Some(&cascade! { gtk4::Box::new(gtk4::Orientation::Horizontal, 0); - ..append(&cascade! { - gtk4::Button::with_label("Workspaces"); - ..set_has_frame(false); - }); - ..append(&cascade! { - gtk4::Button::with_label("Applications"); - ..set_has_frame(false); - }); + ..append(&button("Workspaces")); + ..append(&button("Applications")); })); ..set_center_widget(Some(&TimeButton::new())); ..set_end_widget(Some(&StatusArea::new()));