From bee5e2fd263d81b7dc8180e831cbc96500cece1f Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sun, 28 Sep 2014 13:43:34 +0200 Subject: SCEditor, part II --- src/colloquium.c | 134 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 125 insertions(+), 9 deletions(-) (limited to 'src/colloquium.c') diff --git a/src/colloquium.c b/src/colloquium.c index ce23be5..51b60c9 100644 --- a/src/colloquium.c +++ b/src/colloquium.c @@ -32,12 +32,79 @@ #include "narrative_window.h" +typedef struct +{ + GtkApplication parent_instance; +} Colloquium; + + +typedef GtkApplicationClass ColloquiumClass; + + +G_DEFINE_TYPE(Colloquium, colloquium, GTK_TYPE_APPLICATION) + + static void colloquium_activate(GApplication *app) { printf("activate!\n"); } +static void new_sig(GSimpleAction *action, GVariant *parameter, gpointer vp) +{ + GApplication *app = vp; + g_application_activate(app); +} + + +static void about_sig(GSimpleAction *action, GVariant *parameter, gpointer vp) +{ + GtkWidget *window; + + const gchar *authors[] = { + "Thomas White ", + NULL + }; + + window = gtk_about_dialog_new(); + + gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(window), + "Colloquium"); + gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window), + PACKAGE_VERSION); + gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(window), + "© 2013 Thomas White "); + gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(window), + "A tiny presentation program"); + gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(window), + "© 2013 Thomas White \n"); + gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(window), + "http://www.bitwiz.org.uk/"); + gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(window), authors); + + g_signal_connect(window, "response", G_CALLBACK(gtk_widget_destroy), + NULL); + + gtk_widget_show_all(window); +} + + +static void quit_sig(GSimpleAction *action, GVariant *parameter, gpointer vp) +{ + GApplication *app = vp; + g_application_quit(app); +} + + +GActionEntry app_entries[] = { + + { "new", new_sig, NULL, NULL, NULL }, + { "about", about_sig, NULL, NULL, NULL }, + { "quit", quit_sig, NULL, NULL, NULL }, + +}; + + static void colloquium_open(GApplication *app, GFile **files, gint n_files, const gchar *hint) { @@ -46,7 +113,6 @@ static void colloquium_open(GApplication *app, GFile **files, gint n_files, for ( i = 0; istartup(app); + + g_action_map_add_action_entries(G_ACTION_MAP(app), app_entries, + G_N_ELEMENTS(app_entries), app); + + builder = gtk_builder_new(); + gtk_builder_add_from_string(builder, + "" + + " " + "
" + " " + " _New" + " app.new" + " <Primary>n" + " " + "
" + "
" + " " + " _About" + " app.about" + " " + "
" + "
" + " " + " _Quit" + " app.quit" + " <Primary>q" + " " + "
" + "
" + + " " + " " + " File" + "
" + " " + " _Save" + " file.save" + " <Primary>s" + " " + " " + " Export PDF" + " file.exportpdf" + " " + "
" + "
" + "
" + + "
", -1, NULL); + + gtk_application_set_app_menu(GTK_APPLICATION(app), + G_MENU_MODEL(gtk_builder_get_object(builder, "app-menu"))); + gtk_application_set_menubar(GTK_APPLICATION(app), + G_MENU_MODEL(gtk_builder_get_object(builder, "menubar"))); + + g_object_unref(builder); } -- cgit v1.2.3