81 lines
3.0 KiB
C
81 lines
3.0 KiB
C
#include "uicontroller.h"
|
|
#include "gdk/gdk.h"
|
|
#include "glib-object.h"
|
|
#include "gtk/gtk.h"
|
|
#include "gtk/gtkcssprovider.h"
|
|
#include "gtk/gtkrevealer.h"
|
|
#include "src/ui/widgets/colorwheel.h"
|
|
|
|
void vektor_uictrl_init(GtkApplication* app, VektorWidgetState* stateOut) {
|
|
g_type_ensure(VEKTOR_TYPE_COLOR_WHEEL);
|
|
|
|
GtkBuilder* builder = gtk_builder_new();
|
|
GError* error = NULL;
|
|
|
|
// 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);
|
|
}
|
|
|
|
// Load css
|
|
GtkCssProvider* provider = gtk_css_provider_new();
|
|
gtk_css_provider_load_from_path(provider, "./ui/main.css");
|
|
gtk_style_context_add_provider_for_display(
|
|
gdk_display_get_default(), GTK_STYLE_PROVIDER(provider),
|
|
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
|
|
|
// Load theme
|
|
gtk_icon_theme_add_search_path(
|
|
gtk_icon_theme_get_for_display(gdk_display_get_default()), "icons");
|
|
|
|
GtkIconTheme* theme =
|
|
gtk_icon_theme_get_for_display(gdk_display_get_default());
|
|
|
|
/*if (gtk_icon_theme_has_icon(theme, "vektor-circle-symbolic"))
|
|
g_print("GTK sees it!\n");
|
|
else
|
|
g_print("Still invisible...\n");*/
|
|
|
|
// populate state
|
|
stateOut->window =
|
|
GTK_WINDOW(gtk_builder_get_object(builder, "main_window"));
|
|
stateOut->workspacePaned =
|
|
GTK_PANED(gtk_builder_get_object(builder, "workspace_paned"));
|
|
stateOut->sidepanelPaned =
|
|
GTK_PANED(gtk_builder_get_object(builder, "sidepanel"));
|
|
stateOut->workspaceCanvas =
|
|
GTK_GL_AREA(gtk_builder_get_object(builder, "workspace"));
|
|
|
|
stateOut->workspaceButtonMasterShapes =
|
|
GTK_BUTTON(gtk_builder_get_object(builder, "button_shapetools"));
|
|
stateOut->workspaceRevealerShapes =
|
|
GTK_REVEALER(gtk_builder_get_object(builder, "shape_revealer"));
|
|
stateOut->workspaceButtonLinetool =
|
|
GTK_BUTTON(gtk_builder_get_object(builder, "button_linetool"));
|
|
stateOut->workspaceButtonRecttool =
|
|
GTK_BUTTON(gtk_builder_get_object(builder, "button_rectangletool"));
|
|
stateOut->workspaceButtonCircletool =
|
|
GTK_BUTTON(gtk_builder_get_object(builder, "button_circletool"));
|
|
stateOut->workspaceColorPicker =
|
|
VEKTOR_COLOR_WHEEL(gtk_builder_get_object(builder, "color_picker"));
|
|
|
|
stateOut->sidepanelEntryR =
|
|
GTK_ENTRY(gtk_builder_get_object(builder, "spin_color_r"));
|
|
stateOut->sidepanelEntryG =
|
|
GTK_ENTRY(gtk_builder_get_object(builder, "spin_color_g"));
|
|
stateOut->sidepanelEntryB =
|
|
GTK_ENTRY(gtk_builder_get_object(builder, "spin_color_b"));
|
|
|
|
// Set window properties
|
|
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) {
|
|
gtk_paned_set_position(state->workspacePaned, 800 * .7);
|
|
gtk_paned_set_position(state->sidepanelPaned, 250);
|
|
}
|