From 553d56a4e8eed7e8c22ea5996f4cfbfada9db6bd Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Fri, 23 Mar 2012 19:17:57 +0000 Subject: [PATCH] Iniciando implementação do dialogo de impressao --- src/gtk/actions.c | 6 +++--- src/gtk/print.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- ui/00default.xml | 2 +- 3 files changed, 74 insertions(+), 5 deletions(-) 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