86 lines
2.1 KiB
C++
86 lines
2.1 KiB
C++
//
|
|
// 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);
|
|
}
|
|
|
|
}
|