write-ups-challenges-2022-2023/super-hightech-paint/super-hightech-paint-1/buildfiles/src/main.c

58 lines
1.4 KiB
C
Raw Permalink Normal View History

2022-11-24 21:59:22 +00:00
#include <stdio.h>
#include <unistd.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <cairo/cairo.h>
#include <paint.h>
#include <validate.h>
GtkApplication* app;
/**
* Activates the GUI application.
* Checks to see if the key is valid, if it is we start the paint app
* otherwise it shows the license key popup.
*/
void app_start()
{
GtkWidget* app_window = gtk_application_window_new(app);
/* If we already have a key file try and load it from disk */
FILE *f = fopen(KEYSTORE_FILE, "r");
if (f != NULL)
{
char* loaded_key = malloc((KEYLENGTH + 1) * sizeof(char));
/* Read in the key */
fread(loaded_key, sizeof(char), KEYLENGTH, f);
/* Check for validity */
int valid_key = check_is_key_valid(loaded_key);
fclose(f);
free(loaded_key);
if (valid_key)
{
/* The key was valid, start the program */
build_paint();
return;
}
/* If we end up here the key was not valid */
}
build_license_key_popup();
}
int main(int argc, char** argv)
{
int status;
app = gtk_application_new("org.gtk.superhightechpaint", G_APPLICATION_FLAGS_NONE);
g_signal_connect(app, "activate", G_CALLBACK(app_start), NULL);
status = g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);
return status;
}