mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-10-31 16:02:43 +01:00 
			
		
		
		
	feat(ALabel): Toggleable labels
This commit is contained in:
		| @@ -1,12 +1,22 @@ | ||||
| #include "ALabel.hpp" | ||||
|  | ||||
| waybar::ALabel::ALabel(const Json::Value& config) | ||||
|   : config_(config) | ||||
| #include <iostream> | ||||
|  | ||||
| waybar::ALabel::ALabel(const Json::Value& config, const std::string format) | ||||
|   : config_(config), | ||||
|     format_(config_["format"] ? config_["format"].asString() : format), | ||||
|     default_format_(format_) | ||||
| { | ||||
|   event_box_.add(label_); | ||||
| 	if (config_["max-length"]) { | ||||
|     label_.set_max_width_chars(config_["max-length"].asUInt()); | ||||
|     label_.set_ellipsize(Pango::EllipsizeMode::ELLIPSIZE_END); | ||||
|   } | ||||
|   if (config_["format-alt"]) { | ||||
|     event_box_.add_events(Gdk::BUTTON_PRESS_MASK); | ||||
|     event_box_.signal_button_press_event() | ||||
|       .connect(sigc::mem_fun(*this, &ALabel::handleToggle)); | ||||
|   } | ||||
| } | ||||
|  | ||||
| auto waybar::ALabel::update() -> void | ||||
| @@ -14,6 +24,28 @@ auto waybar::ALabel::update() -> void | ||||
|   // Nothing here | ||||
| } | ||||
|  | ||||
| waybar::ALabel::operator Gtk::Widget &() { | ||||
|   return label_; | ||||
| bool waybar::ALabel::handleToggle(GdkEventButton* const& ev) | ||||
| { | ||||
|   alt = !alt; | ||||
|   if (alt) { | ||||
|     format_ = config_["format-alt"].asString(); | ||||
|   } else { | ||||
|     format_ = default_format_; | ||||
|   } | ||||
|   dp.emit(); | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| std::string waybar::ALabel::getIcon(uint16_t percentage) | ||||
| { | ||||
|   if (!config_["format-icons"] || !config_["format-icons"].isArray()) { | ||||
|     return ""; | ||||
|   } | ||||
|   auto size = config_["format-icons"].size(); | ||||
|   auto idx = std::clamp(percentage / (100 / size), 0U, size - 1); | ||||
|   return config_["format-icons"][idx].asString(); | ||||
| } | ||||
|  | ||||
| waybar::ALabel::operator Gtk::Widget &() { | ||||
|   return event_box_; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Alexis
					Alexis