// // Created by selim on 10.05.2022. // #include "Window.h" #include "../App.h" namespace gtkpp { bool operator==(const Window& wnd1, const Window& wnd2) { return wnd1._window == wnd2._window; } Window::Window() { _window = nullptr; _builder = nullptr; } Window::Window(bool isAppWindow): _isAppWindow(isAppWindow) { if(isAppWindow) { auto app = GTK_APPLICATION(App::instance().gobj()); _window = GTK_WINDOW(adw_application_window_new(app)); } else { _window = GTK_WINDOW(adw_window_new()); } _builder = nullptr; } Window::Window(const char* resourceName, const char* id) { _builder = gtk_builder_new_from_resource(resourceName); _window = GTK_WINDOW(gtk_builder_get_object(_builder, id)); } Window::~Window() { if(_window) { destroy(); } } void Window::show() { gtk_window_present(GTK_WINDOW(_window)); } void Window::setTitle(const std::string &title) { gtk_window_set_title(GTK_WINDOW(_window), title.c_str()); } GtkWindow *Window::gobj() const { return _window; } void Window::setDefaultSize(int width, int height) { gtk_window_set_default_size(GTK_WINDOW(_window), width, height); } void Window::hide() { gtk_window_close(GTK_WINDOW(_window)); } void Window::destroy() { gtk_window_destroy(GTK_WINDOW(_window)); } void Window::setTransientFor(const Window* window) { gtk_window_set_transient_for(_window, window->gobj()); } void Window::setModal() { gtk_window_set_modal(_window, true); } void Window::setContent(const Widget& widget) { if(_isAppWindow) { adw_application_window_set_content(ADW_APPLICATION_WINDOW(_window), widget.gobj()); } else { adw_window_set_content(ADW_WINDOW(_window), widget.gobj()); } } void Window::setResizable(bool resizable) { gtk_window_set_resizable(_window, resizable); } }