scorpius/src/gemgui.c

143 lines
4.5 KiB
C

#include <gtk/gtk.h>
#include <gemgui.h>
void linkAction (GtkWidget *widget, gpointer data);
extern char links[1024][20];
void
addH1 (GtkWidget *root,
char *line)
{
gchar *markup = g_markup_printf_escaped ("<span weight=\"bold\" size=\"xx-large\">%s</span>", line);
GtkWidget *label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), markup);
g_free (markup);
gtk_widget_set_margin_start (label, 10);
gtk_widget_set_margin_end (label, 10);
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_container_add (GTK_CONTAINER (root), label);
}
void
addH2 (GtkWidget *root,
char *line)
{
gchar *markup = g_markup_printf_escaped ("<span weight=\"bold\" size=\"x-large\">%s</span>", line);
GtkWidget *label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), markup);
g_free (markup);
gtk_widget_set_margin_start (label, 10);
gtk_widget_set_margin_end (label, 10);
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_container_add (GTK_CONTAINER (root), label);
}
void
addH3 (GtkWidget *root,
char *line)
{
gchar *markup = g_markup_printf_escaped ("<span weight=\"bold\" size=\"large\">%s</span>", line);
GtkWidget *label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), markup);
g_free (markup);
gtk_widget_set_margin_start (label, 10);
gtk_widget_set_margin_end (label, 10);
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_container_add (GTK_CONTAINER (root), label);
}
void
addLink (GtkWidget *root,
char *url,
char *text)
{
GtkWidget *linkBox = gtk_button_new ();
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);
gtk_widget_set_margin_start (linkBox, 10);
gtk_widget_set_margin_end (linkBox, 10);
gtk_button_set_relief (GTK_BUTTON (linkBox), GTK_RELIEF_NONE);
g_signal_connect (linkBox, "clicked", G_CALLBACK (linkAction), url);
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_container_add (GTK_CONTAINER (linkBox), label);
gtk_container_add (GTK_CONTAINER (root), linkBox);
}
void
addCode (GtkWidget *root,
const char *code,
char *meta)
{
gchar *markup = g_markup_printf_escaped ("<span font_family=\"monospace\">%s</span>", code);
GtkWidget *label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), markup);
g_free (markup);
gtk_widget_set_margin_start (label, 10);
gtk_widget_set_margin_end (label, 10);
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);
}
void
addUList (GtkWidget *root,
char *text)
{
GtkWidget *label = gtk_label_new (text);
gtk_widget_set_margin_start (label, 20);
gtk_widget_set_margin_end (label, 10);
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
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);
}
void
addQuote (GtkWidget *root,
char *quote)
{
gchar *markup = g_markup_printf_escaped ("<span foreground=\"#707070\">%s</span>", quote);
GtkWidget *label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label), markup);
g_free (markup);
gtk_widget_set_margin_start (label, 20);
gtk_widget_set_margin_end (label, 10);
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_container_add (GTK_CONTAINER (root), label);
}
void
addText (GtkWidget *root,
char *text)
{
GtkWidget *label = gtk_label_new (text);
gtk_widget_set_margin_start (label, 10);
gtk_widget_set_margin_end (label, 10);
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_container_add (GTK_CONTAINER (root), label);
}