feat: basic ui interfacing

This commit is contained in:
beriff
2026-03-04 02:08:16 +07:00
parent 0ec11e20ac
commit 2326bbb883
6 changed files with 148 additions and 8 deletions

31
src/ui/uicontroller.c Normal file
View File

@@ -0,0 +1,31 @@
#include "uicontroller.h"
#include "gtk/gtk.h"
void vektor_uictrl_init(GtkApplication* app, VektorWidgetState* stateOut) {
GtkBuilder* builder = gtk_builder_new();
GError* error = NULL;
g_print("%s\n", g_get_current_dir());
// TODO: .ui files as resources instead of sketchy relative paths
if(!gtk_builder_add_from_file(builder, "./ui/main.ui", &error)) {
g_error("Fatal: %s", error->message);
}
stateOut->window = GTK_WINDOW(gtk_builder_get_object(builder, "main_window"));
stateOut->workspacePaned = GTK_PANED(gtk_builder_get_object(builder, "workspace_paned"));
gtk_window_set_application(stateOut->window, app);
gtk_window_set_title(stateOut->window, "Vektor");
gtk_window_set_default_size(stateOut->window, 800, 600);
g_object_unref(builder);
}
void vektor_uictrl_map(VektorWidgetState* state) {
// set the workspace divider to 7:3 ratio
int window_width = gtk_widget_get_width(GTK_WIDGET(state->window));
g_print("%i", window_width);
gtk_paned_set_position(state->workspacePaned, 800 * .7);
}

20
src/ui/uicontroller.h Normal file
View File

@@ -0,0 +1,20 @@
#ifndef VKTR_UICTRL_H
#define VKTR_UICTRL_H
#include "gtk/gtk.h"
/*
Global application widget state, holding references to
all the widgets used in internal logic of the program
*/
typedef struct VektorWidgetState {
GtkWindow* window;
GtkPaned* workspacePaned;
//GtkWidget* Workspace
} VektorWidgetState;
void vektor_uictrl_init(GtkApplication* app, VektorWidgetState* stateOut);
void vektor_uictrl_map(VektorWidgetState* state);
#endif