Initial commit
This commit is contained in:
commit
821bf8c133
|
@ -0,0 +1,12 @@
|
|||
CFLAGS=$(shell pkg-config --cflags --libs gtk+-3.0)
|
||||
CC=gcc
|
||||
VERSION=0.0
|
||||
BUILD_DIR=build
|
||||
BUILD_NAME=gemgui
|
||||
OS=$(shell uname -r)
|
||||
|
||||
all: debug
|
||||
|
||||
debug:
|
||||
mkdir -p build/debug
|
||||
$(CC) -o $(BUILD_DIR)/debug/$(BUILD_NAME)-$(OS) $(CFLAGS) src/*
|
|
@ -0,0 +1,232 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
GtkEntryBuffer *pathBarContent = NULL;
|
||||
GtkWidget *render = NULL;
|
||||
GtkWidget *window = NULL;
|
||||
|
||||
static void
|
||||
loadPage (const char *link)
|
||||
{
|
||||
printf("Loading page : %s\n", link);
|
||||
}
|
||||
|
||||
static void
|
||||
linkAction (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
loadPage ((const char*)data);
|
||||
}
|
||||
|
||||
static void
|
||||
goAction (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
loadPage ((const char*)gtk_entry_buffer_get_text (pathBarContent));
|
||||
}
|
||||
|
||||
static void
|
||||
addText (GtkWidget *root,
|
||||
gchar *text)
|
||||
{
|
||||
GtkWidget *label = gtk_label_new (text);
|
||||
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_container_add (GTK_CONTAINER (root), label);
|
||||
//gtk_label_set_selectable (GTK_LABEL (label), TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
addTitle1 (GtkWidget *root,
|
||||
gchar *text)
|
||||
{
|
||||
gchar *markup = g_markup_printf_escaped ("<span weight=\"bold\" size=\"xx-large\">%s</span>", text);
|
||||
GtkWidget *label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label), markup);
|
||||
g_free (markup);
|
||||
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_container_add (GTK_CONTAINER (root), label);
|
||||
//gtk_label_set_selectable (GTK_LABEL (label), TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
addTitle2 (GtkWidget *root,
|
||||
gchar *text)
|
||||
{
|
||||
gchar *markup = g_markup_printf_escaped ("<span weight=\"bold\" size=\"x-large\">%s</span>", text);
|
||||
GtkWidget *label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label), markup);
|
||||
g_free (markup);
|
||||
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_container_add (GTK_CONTAINER (root), label);
|
||||
//gtk_label_set_selectable (GTK_LABEL (label), TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
addTitle3 (GtkWidget *root,
|
||||
gchar *text)
|
||||
{
|
||||
gchar *markup = g_markup_printf_escaped ("<span weight=\"bold\" size=\"large\">%s</span>", text);
|
||||
GtkWidget *label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label), markup);
|
||||
g_free (markup);
|
||||
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_container_add (GTK_CONTAINER (root), label);
|
||||
//gtk_label_set_selectable (GTK_LABEL (label), TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
addTitle4 (GtkWidget *root,
|
||||
gchar *text)
|
||||
{
|
||||
gchar *markup = g_markup_printf_escaped ("<span weight=\"bold\" size=\"medium\">%s</span>", text);
|
||||
GtkWidget *label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label), markup);
|
||||
g_free (markup);
|
||||
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_container_add (GTK_CONTAINER (root), label);
|
||||
//gtk_label_set_selectable (GTK_LABEL (label), TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
addTitle5 (GtkWidget *root,
|
||||
gchar *text)
|
||||
{
|
||||
gchar *markup = g_markup_printf_escaped ("<span weight=\"bold\" size=\"small\">%s</span>", text);
|
||||
GtkWidget *label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label), markup);
|
||||
g_free (markup);
|
||||
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_container_add (GTK_CONTAINER (root), label);
|
||||
//gtk_label_set_selectable (GTK_LABEL (label), TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
addTitle6 (GtkWidget *root,
|
||||
gchar *text)
|
||||
{
|
||||
gchar *markup = g_markup_printf_escaped ("<span weight=\"bold\" size=\"x-small\">%s</span>", text);
|
||||
GtkWidget *label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label), markup);
|
||||
g_free (markup);
|
||||
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_container_add (GTK_CONTAINER (root), label);
|
||||
//gtk_label_set_selectable (GTK_LABEL (label), TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
addLink (GtkWidget *root,
|
||||
gchar *text)
|
||||
{
|
||||
gchar *markup = g_markup_printf_escaped ("<span foreground=\"#0000FF\" underline=\"single\">%s</span>", text);
|
||||
GtkWidget *label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label), markup);
|
||||
g_free (markup);
|
||||
|
||||
g_signal_connect (label, "clicked", G_CALLBACK (linkAction), "un lien");
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_container_add (GTK_CONTAINER (root), label);
|
||||
//gtk_label_set_selectable (GTK_LABEL (label), TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
addCode (GtkWidget *root,
|
||||
gchar *text)
|
||||
{
|
||||
gchar *markup = g_markup_printf_escaped ("<span font_family=\"monospace\">%s</span>", text);
|
||||
GtkWidget *label = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (label), markup);
|
||||
g_free (markup);
|
||||
|
||||
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_container_add (GTK_CONTAINER (root), label);
|
||||
//gtk_label_set_selectable (GTK_LABEL (label), TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
makeRender (void)
|
||||
{
|
||||
if (render != NULL)
|
||||
gtk_widget_destroy (render);
|
||||
|
||||
render = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10);
|
||||
|
||||
addTitle1 (render, "Titre de test");
|
||||
addTitle2 (render, "Titre de test");
|
||||
addTitle3 (render, "Titre de test");
|
||||
addTitle4 (render, "Titre de test");
|
||||
addTitle5 (render, "Titre de test");
|
||||
addTitle6 (render, "Titre de test");
|
||||
addText (render, "Bonjour, ceci est un test.\nFonctionne-t-il ?");
|
||||
addLink(render, "lien test");
|
||||
addCode(render, " .~.\n /V\\\n // \\\\\n/( )\\\n ^`~'^");
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), render);
|
||||
}
|
||||
|
||||
/* This function's goal is to build the main interface */
|
||||
static void
|
||||
build_interface ()
|
||||
{
|
||||
GtkWidget *pathBar;
|
||||
GtkWidget *headerBar;
|
||||
GtkWidget *goButtonBox;
|
||||
GtkWidget *goButton;
|
||||
|
||||
/* Building title bar */
|
||||
headerBar = gtk_header_bar_new ();
|
||||
gtk_header_bar_set_title(GTK_HEADER_BAR (headerBar), "GTK Gemini Browser");
|
||||
gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (headerBar), TRUE);
|
||||
gtk_window_set_titlebar (GTK_WINDOW (window), headerBar);
|
||||
pathBarContent = gtk_entry_buffer_new (NULL, -1);
|
||||
pathBar = gtk_entry_new_with_buffer (pathBarContent);
|
||||
goButtonBox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
|
||||
goButton = gtk_button_new_with_label ("Go !");
|
||||
g_signal_connect (goButton, "clicked", G_CALLBACK (goAction), NULL);
|
||||
gtk_container_add (GTK_CONTAINER (goButtonBox), goButton);
|
||||
gtk_container_add (GTK_CONTAINER (headerBar), pathBar);
|
||||
gtk_container_add (GTK_CONTAINER (headerBar), goButtonBox);
|
||||
|
||||
makeRender ();
|
||||
}
|
||||
|
||||
/* This function's goal is to create the window then show it */
|
||||
static void
|
||||
activate (GtkApplication *app,
|
||||
gpointer user_data)
|
||||
{
|
||||
window = gtk_application_window_new (app);
|
||||
gtk_window_set_title (GTK_WINDOW (window), "MDViewer");
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
|
||||
build_interface ();
|
||||
gtk_widget_show_all (window);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc,
|
||||
char **argv)
|
||||
{
|
||||
GtkApplication *app;
|
||||
int status;
|
||||
|
||||
app = gtk_application_new ("ovh.rdelaage.mdviewer", G_APPLICATION_FLAGS_NONE);
|
||||
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
|
||||
status = g_application_run(G_APPLICATION (app), argc, argv);
|
||||
g_object_unref (app);
|
||||
|
||||
return status;
|
||||
}
|
Loading…
Reference in New Issue