diff --git a/enquete-gui/Enquete.sqlite b/enquete-gui/Enquete.sqlite new file mode 100644 index 0000000..e69de29 diff --git a/enquete-gui/Makefile b/enquete-gui/Makefile new file mode 100644 index 0000000..fdf897e --- /dev/null +++ b/enquete-gui/Makefile @@ -0,0 +1,28 @@ +CC = gcc + +PKG_CONFIG = pkg-config + +CFLAGS = -Wall -Wextra -Wpedantic -std=c23 -g \ + -Iinclude \ + $(shell $(PKG_CONFIG) --cflags gtk4 sqlite3) + +LDFLAGS = $(shell $(PKG_CONFIG) --libs gtk4 sqlite3) + +SRC := $(wildcard src/*.c) +OBJ := $(SRC:.c=.o) + +TARGET = enquete-gui + +$(TARGET): $(OBJ) + $(CC) $(OBJ) -o $@ $(LDFLAGS) + +%.o: %.c + $(CC) $(CFLAGS) -c $< -o $@ + +clean: + rm -f $(OBJ) $(TARGET) + +run: $(TARGET) + ./$(TARGET) + +.PHONY: clean run diff --git a/enquete-gui/compile_flags.txt b/enquete-gui/compile_flags.txt new file mode 100644 index 0000000..0d77def --- /dev/null +++ b/enquete-gui/compile_flags.txt @@ -0,0 +1,22 @@ +-I/usr/include/gtk-4.0 +-I/usr/include/pango-1.0 +-I/usr/include/fribidi +-I/usr/include/harfbuzz +-I/usr/include/gdk-pixbuf-2.0 +-I/usr/include/glycin-2 +-I/usr/include/cairo +-I/usr/include/freetype2 +-I/usr/include/libpng16 +-I/usr/include/pixman-1 +-I/usr/include/graphene-1.0 +-I/usr/lib/graphene-1.0/include +-mfpmath=sse +-msse +-msse2 +-I/usr/include/glib-2.0 +-I/usr/lib/glib-2.0/include +-I/usr/include/libmount +-I/usr/include/blkid +-I/usr/include/sysprof-6 +-pthread +-Iinclude diff --git a/enquete-gui/enquete-gui b/enquete-gui/enquete-gui new file mode 100755 index 0000000..97c16bc Binary files /dev/null and b/enquete-gui/enquete-gui differ diff --git a/enquete-gui/include/app.h b/enquete-gui/include/app.h new file mode 100644 index 0000000..fc4cf17 --- /dev/null +++ b/enquete-gui/include/app.h @@ -0,0 +1,8 @@ +#ifndef APP_H +#define APP_H + +#include + +GtkWidget *app_create_main_window(GtkApplication *app); + +#endif diff --git a/enquete-gui/include/database.h b/enquete-gui/include/database.h new file mode 100644 index 0000000..4a53fc4 --- /dev/null +++ b/enquete-gui/include/database.h @@ -0,0 +1,9 @@ +#ifndef DATABASE_H +#define DATABASE_H + +#include + +int db_open(sqlite3 **db, const char *path); +void db_close(sqlite3 *db); + +#endif diff --git a/enquete-gui/src/app.c b/enquete-gui/src/app.c new file mode 100644 index 0000000..697c310 --- /dev/null +++ b/enquete-gui/src/app.c @@ -0,0 +1,42 @@ +#include "app.h" + +GtkWidget *app_create_main_window(GtkApplication *app) +{ + GtkWidget *window; + GtkWidget *box; + GtkWidget *sidebar; + GtkWidget *content; + GtkWidget *label; + + window = gtk_application_window_new(app); + gtk_window_set_title(GTK_WINDOW(window), "Enquête OSINT"); + gtk_window_set_default_size(GTK_WINDOW(window), 1000, 650); + + box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + gtk_window_set_child(GTK_WINDOW(window), box); + + sidebar = gtk_list_box_new(); + gtk_widget_set_size_request(sidebar, 220, -1); + + gtk_list_box_append(GTK_LIST_BOX(sidebar), gtk_label_new("Preuves")); + gtk_list_box_append(GTK_LIST_BOX(sidebar), gtk_label_new("Entités")); + gtk_list_box_append(GTK_LIST_BOX(sidebar), gtk_label_new("Chronologie")); + gtk_list_box_append(GTK_LIST_BOX(sidebar), gtk_label_new("Recherches")); + gtk_list_box_append(GTK_LIST_BOX(sidebar), gtk_label_new("Hypothèses")); + gtk_list_box_append(GTK_LIST_BOX(sidebar), gtk_label_new("Sources")); + gtk_list_box_append(GTK_LIST_BOX(sidebar), gtk_label_new("Rapport")); + + content = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); + gtk_widget_set_margin_top(content, 20); + gtk_widget_set_margin_bottom(content, 20); + gtk_widget_set_margin_start(content, 20); + gtk_widget_set_margin_end(content, 20); + + label = gtk_label_new("Tableau de bord de l'enquête"); + gtk_box_append(GTK_BOX(content), label); + + gtk_box_append(GTK_BOX(box), sidebar); + gtk_box_append(GTK_BOX(box), content); + + return window; +} diff --git a/enquete-gui/src/app.o b/enquete-gui/src/app.o new file mode 100644 index 0000000..92b526d Binary files /dev/null and b/enquete-gui/src/app.o differ diff --git a/enquete-gui/src/database.c b/enquete-gui/src/database.c new file mode 100644 index 0000000..5dee98f --- /dev/null +++ b/enquete-gui/src/database.c @@ -0,0 +1,21 @@ +#include "database.h" +#include + +int db_open(sqlite3 **db, const char *path) +{ + int rc = sqlite3_open(path, db); + + if (rc != SQLITE_OK) { + fprintf(stderr, "Erreur SQLite: %s\n", sqlite3_errmsg(*db)); + return 1; + } + + return 0; +} + +void db_close(sqlite3 *db) +{ + if (db != NULL) { + sqlite3_close(db); + } +} diff --git a/enquete-gui/src/database.o b/enquete-gui/src/database.o new file mode 100644 index 0000000..ffbe662 Binary files /dev/null and b/enquete-gui/src/database.o differ diff --git a/enquete-gui/src/main.c b/enquete-gui/src/main.c new file mode 100644 index 0000000..62ffa84 --- /dev/null +++ b/enquete-gui/src/main.c @@ -0,0 +1,36 @@ +#include +#include + +#include "app.h" +#include "database.h" + +static void activate(GtkApplication *app, gpointer user_data) +{ + (void)user_data; + + GtkWidget *window = app_create_main_window(app); + gtk_window_present(GTK_WINDOW(window)); +} + +int main(int argc, char **argv) +{ + sqlite3 *db = NULL; + + if (db_open(&db, "Enquete.sqlite") != 0) { + return 1; + } + + GtkApplication *app = gtk_application_new( + "com.labfytools.enquete", + G_APPLICATION_DEFAULT_FLAGS + ); + + g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); + + int status = g_application_run(G_APPLICATION(app), argc, argv); + + g_object_unref(app); + db_close(db); + + return status; +} diff --git a/enquete-gui/src/main.o b/enquete-gui/src/main.o new file mode 100644 index 0000000..4c7c5b3 Binary files /dev/null and b/enquete-gui/src/main.o differ