1 #pragma once 2 3 #include <glibmm/dispatcher.h> 4 #include <glibmm/markup.h> 5 #include <gtkmm/eventbox.h> 6 #include <json/json.h> 7 8 #include "IModule.hpp" 9 10 namespace waybar { 11 12 class AModule : public IModule { 13 public: 14 AModule(const Json::Value &, const std::string &, const std::string &, bool enable_click = false, 15 bool enable_scroll = false); 16 virtual ~AModule(); 17 virtual auto update() -> void; 18 virtual operator Gtk::Widget &(); 19 20 Glib::Dispatcher dp; 21 22 protected: 23 enum SCROLL_DIR { NONE, UP, DOWN, LEFT, RIGHT }; 24 25 SCROLL_DIR getScrollDir(GdkEventScroll *e); 26 bool tooltipEnabled(); 27 28 const std::string name_; 29 const Json::Value &config_; 30 Gtk::EventBox event_box_; 31 32 virtual bool handleToggle(GdkEventButton *const &ev); 33 virtual bool handleScroll(GdkEventScroll *); 34 35 private: 36 std::vector<int> pid_; 37 gdouble distance_scrolled_y_; 38 gdouble distance_scrolled_x_; 39 }; 40 41 } // namespace waybar 42