diff --git a/src/gtk/actions.c b/src/gtk/actions.c
index d7ea18c..8ae7324 100644
--- a/src/gtk/actions.c
+++ b/src/gtk/actions.c
@@ -458,9 +458,9 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash
}
else if(!g_strcasecmp(name,"print"))
{
- static const GCallback cbk[] = { G_CALLBACK(nop_action),
- G_CALLBACK(nop_action),
- G_CALLBACK(nop_action)
+ static const GCallback cbk[] = { G_CALLBACK(print_all_action),
+ G_CALLBACK(print_selected_action),
+ G_CALLBACK(print_copy_action)
};
callback = cbk;
diff --git a/src/gtk/print.c b/src/gtk/print.c
index 22c6d80..f2533f6 100644
--- a/src/gtk/print.c
+++ b/src/gtk/print.c
@@ -34,10 +34,79 @@
/*--[ Implement ]------------------------------------------------------------------------------------*/
+ static void begin_print(GtkPrintOperation *prt, GtkPrintContext *context, gpointer user_data)
+ {
+ trace("%s",__FUNCTION__);
+
+ }
+
+ static void draw_page(GtkPrintOperation *prt, GtkPrintContext *context, gint pg, gpointer user_data)
+ {
+ trace("%s",__FUNCTION__);
+
+ }
+
+ static void done(GtkPrintOperation *prt, GtkPrintOperationResult result, gpointer user_data)
+ {
+ trace("%s",__FUNCTION__);
+
+ }
+
+ static GObject * create_custom_widget(GtkPrintOperation *prt, gpointer user_data)
+ {
+ GtkWidget * font_dialog = gtk_font_selection_new();
+ trace("%s",__FUNCTION__);
+ return G_OBJECT(font_dialog);
+ }
+
+ static void custom_widget_apply(GtkPrintOperation *prt, GtkWidget *font_dialog, gpointer user_data)
+ {
+ trace("%s",__FUNCTION__);
+ }
+
+ static GtkPrintOperation * begin_print_operation(GtkAction *action, GtkWidget *widget)
+ {
+ GtkPrintOperation * print = gtk_print_operation_new();
+// GtkPrintSettings * settings = gtk_print_settings_new();
+// GtkPageSetup * setup = gtk_page_setup_new();
+ gchar * ptr;
+
+ // Basic setup
+ gtk_print_operation_set_allow_async(print,FALSE);
+
+ ptr = g_strconcat(PACKAGE_NAME,".",gtk_action_get_name(action),NULL);
+ gtk_print_operation_set_job_name(print,ptr);
+ g_free(ptr);
+
+ gtk_print_operation_set_custom_tab_label(print,_( "Style" ));
+
+ gtk_print_operation_set_show_progress(print,TRUE);
+
+ // Common signals
+ g_signal_connect(print,"begin_print",G_CALLBACK(begin_print),0);
+ g_signal_connect(print,"draw_page",G_CALLBACK(draw_page),0);
+ g_signal_connect(print,"done",G_CALLBACK(done),0);
+// g_signal_connect(print,"create-custom-widget",G_CALLBACK(create_custom_widget), 0);
+// g_signal_connect(print,"custom-widget-apply",G_CALLBACK(custom_widget_apply),0);
+
+ // Finish settings
+ // gtk_print_operation_set_print_settings(print,settings);
+ // gtk_print_operation_set_default_page_setup(print,setup);
+
+ return print;
+ }
+
void print_all_action(GtkAction *action, GtkWidget *widget)
{
- trace("Action %s activated on widget %p",gtk_action_get_name(action),widget);
+ GtkPrintOperation *print = begin_print_operation(action,widget);
+
+ trace("Action %s activated on widget %p print=%p",gtk_action_get_name(action),widget,print);
+
+ // Run Print dialog
+ gtk_print_operation_run(print,GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,GTK_WINDOW(gtk_widget_get_toplevel(widget)),NULL);
+
+ g_object_unref(print);
}
void print_selected_action(GtkAction *action, GtkWidget *widget)
diff --git a/ui/00default.xml b/ui/00default.xml
index 08136f4..76b29ef 100644
--- a/ui/00default.xml
+++ b/ui/00default.xml
@@ -37,7 +37,7 @@
-
+
--
libgit2 0.21.2