gtk_window_controller.hpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include "lumacs/editor_core.hpp"
  3. #include "lumacs/window.hpp"
  4. #include "lumacs/gtk_renderer.hpp"
  5. #include "lumacs/keybinding.hpp"
  6. #include <gtkmm.h>
  7. #include <gdkmm.h>
  8. #include <memory>
  9. namespace lumacs {
  10. class GtkWindowController {
  11. public:
  12. GtkWindowController(EditorCore& core, GtkRenderer& renderer, std::shared_ptr<Window> window, Gtk::DrawingArea& drawing_area);
  13. // Event handlers
  14. bool on_key_pressed(guint keyval, guint keycode, Gdk::ModifierType state);
  15. void on_click_pressed(int n_press, double x, double y);
  16. void on_drag_begin(double x, double y);
  17. void on_drag_update(double dx, double dy);
  18. bool on_scroll(double dx, double dy);
  19. void connect_events();
  20. void set_cached_active_window(std::shared_ptr<Window> window);
  21. void set_cursor_visible(bool visible);
  22. private:
  23. EditorCore& core_;
  24. GtkRenderer& renderer_;
  25. std::shared_ptr<Window> window_;
  26. Gtk::DrawingArea& drawing_area_;
  27. std::shared_ptr<Window> cached_active_window_;
  28. bool cursor_visible_ = true;
  29. std::string resolve_key(guint keyval, Gdk::ModifierType state);
  30. };
  31. } // namespace lumacs