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