/* * Gem-graph OpenGL experiments * * Desc: User interface header * * Copyright (C) 2023 Arthur Menges * Copyright (C) 2023 Adrien Bourmault * * This file is part of Gem-graph. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #pragma once #include #include #include "../include/base.h" extern float rotation_angles[N_AXIS]; extern GtkWidget *gl_area; G_BEGIN_DECLS #define GEM_GRAPH_CLIENT_TYPE_WINDOW (gem_graph_client_window_get_type()) G_DECLARE_FINAL_TYPE (GemGraphClientWindow, gem_graph_client_window, GEM_GRAPH_CLIENT, WINDOW, GtkApplicationWindow) G_END_DECLS G_BEGIN_DECLS #define GEM_GRAPH_CLIENT_TYPE_APPLICATION (gem_graph_client_application_get_type()) G_DECLARE_FINAL_TYPE (GemGraphClientApplication, gem_graph_client_application, GEM_GRAPH_CLIENT, APPLICATION, GtkApplication) GemGraphClientApplication *gem_graph_client_application_new(const char *application_id, GApplicationFlags flags); G_END_DECLS void ui_enable_action(const char *name); void ui_disable_action(const char *name); // // Actions // void on_quit_action(GSimpleAction *action, GVariant *parameter, gpointer user_data); static const GActionEntry app_actions[] = { { "quit", on_quit_action, NULL, NULL, NULL }, }; // // General events // void on_axis_value_change(GtkAdjustment *adjustment, gpointer data); gboolean on_render(GtkGLArea * area, GdkGLContext * context); void on_realize(GtkWidget *widget); void on_unrealize(GtkWidget *widget); void on_close_window(GtkWidget *widget); /* -------------------------------------------------------------------------- */ // // Window primitives // void ui_set_stack(const char *mode); void ui_setup_glarea(GtkGLArea *target, GtkBox *target_controls); void ui_send_internal_notification(const char *message); void ui_close_internal_notification(void); void ui_toggle_sidebar();