1 #ifndef WF_PANEL_HPP
2 #define WF_PANEL_HPP
3 
4 #include <memory>
5 #include <wayland-client.h>
6 #include <gtkmm/window.h>
7 
8 #include "wf-shell-app.hpp"
9 
10 class WayfirePanel
11 {
12     public:
13     WayfirePanel(WayfireOutput *output);
14 
15     wl_surface *get_wl_surface();
16     Gtk::Window& get_window();
17     void handle_config_reload();
18 
19     private:
20     class impl;
21     std::unique_ptr<impl> pimpl;
22 };
23 
24 class WayfirePanelApp : public WayfireShellApp
25 {
26   public:
27     WayfirePanel* panel_for_wl_output(wl_output *output);
28     static WayfirePanelApp& get();
29 
30     /* Starts the program. get() is valid afterward the first (and the only)
31      * call to create() */
32     static void create(int argc, char **argv);
33     ~WayfirePanelApp();
34 
35     void handle_new_output(WayfireOutput *output) override;
36     void handle_output_removed(WayfireOutput *output) override;
37     void on_config_reload() override;
38 
39   private:
40     WayfirePanelApp(int argc, char **argv);
41 
42     class impl;
43     std::unique_ptr<impl> priv;
44 };
45 
46 #endif /* end of include guard: WF_PANEL_HPP */
47 
48