From c5b4e64a2bf717ff97a2da04fd63b303604a34ce Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Fri, 30 Mar 2012 19:59:04 +0000 Subject: [PATCH] Implementando save/restore das configurações de impressao no linux --- src/gtk/common/common.h.in | 21 +++++++++++++++++++++ src/gtk/common/config.c | 16 ++++++++++++++++ src/gtk/print.c | 48 +++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 80 insertions(+), 5 deletions(-) diff --git a/src/gtk/common/common.h.in b/src/gtk/common/common.h.in index ddf8254..f63fa7f 100644 --- a/src/gtk/common/common.h.in +++ b/src/gtk/common/common.h.in @@ -35,6 +35,21 @@ #include #include + #ifdef WIN32 + + #include + #define WIN_REGISTRY_ENABLED 1 + + #ifndef KEY_WOW64_64KEY + #define KEY_WOW64_64KEY 0x0100 + #endif // KEY_WOW64_64KEY + + #ifndef KEY_WOW64_32KEY + #define KEY_WOW64_32KEY 0x0200 + #endif // KEY_WOW64_64KEY + + #endif // WIN32 + #ifndef PACKAGE_NAME #define PACKAGE_NAME "@PACKAGE_NAME@" #endif @@ -68,4 +83,10 @@ gchar * build_data_filename(const gchar *first_element, ...); +#ifdef WIN_REGISTRY_ENABLED + HKEY get_registry_handle(const gchar *first_element,REGSAM samDesired); +#else + GKeyFile * get_application_keyfile(void); +#endif // WIN_REGISTRY_ENABLED + #endif diff --git a/src/gtk/common/config.c b/src/gtk/common/config.c index 03a1c6c..638b174 100644 --- a/src/gtk/common/config.c +++ b/src/gtk/common/config.c @@ -564,3 +564,19 @@ gchar * build_data_filename(const gchar *first_element, ...) return g_string_free(result, FALSE); } + +#ifdef WIN_REGISTRY_ENABLED +HKEY get_registry_handle(const gchar *first_element,REGSAM samDesired) +{ + #warning Implementar + + return 0; +} +#else +GKeyFile * get_application_keyfile(void) +{ + if(!program_config) + configuration_init(); + return program_config; +} +#endif // WIN_REGISTRY_ENABLED diff --git a/src/gtk/print.c b/src/gtk/print.c index c1ff83a..b0e0b3f 100644 --- a/src/gtk/print.c +++ b/src/gtk/print.c @@ -133,7 +133,17 @@ static void done(GtkPrintOperation *prt, GtkPrintOperationResult result, PRINT_INFO *info) { - trace("%s",__FUNCTION__); +#ifdef WIN32 + + #warning Implementar + +#else + GKeyFile * conf = get_application_keyfile(); + + gtk_print_settings_to_key_file(gtk_print_operation_get_print_settings(prt),conf,"print_settings"); + gtk_page_setup_to_key_file(gtk_print_operation_get_default_page_setup(prt),conf,"page_setup"); + +#endif if(info->font_scaled) cairo_scaled_font_destroy(info->font_scaled); @@ -269,8 +279,8 @@ static GtkPrintOperation * begin_print_operation(GtkAction *action, GtkWidget *widget, PRINT_INFO **info) { GtkPrintOperation * print = gtk_print_operation_new(); -// GtkPrintSettings * settings = gtk_print_settings_new(); -// GtkPageSetup * setup = gtk_page_setup_new(); + GtkPrintSettings * settings = gtk_print_settings_new(); + GtkPageSetup * setup = gtk_page_setup_new(); const gchar * attr; *info = g_new0(PRINT_INFO,1); @@ -300,9 +310,37 @@ g_signal_connect(print,"create-custom-widget",G_CALLBACK(create_custom_widget), *info); g_signal_connect(print,"custom-widget-apply",G_CALLBACK(custom_widget_apply), *info); + // Load page and print settings + { +#ifdef WIN32 + + #warning Implementar + +#else + GKeyFile * conf = get_application_keyfile(); + GError * err = NULL; + + + if(!gtk_print_settings_load_key_file(settings,conf,"print_settings",&err)) + { + g_warning("Error getting print settings: %s",err->message); + g_error_free(err); + err = NULL; + } + + if(!gtk_page_setup_load_key_file(setup,conf,"page_setup",&err)) + { + g_warning("Error getting page setup: %s",err->message); + g_error_free(err); + err = NULL; + } + +#endif + } + // Finish settings - // gtk_print_operation_set_print_settings(print,settings); - // gtk_print_operation_set_default_page_setup(print,setup); + gtk_print_operation_set_print_settings(print,settings); + gtk_print_operation_set_default_page_setup(print,setup); return print; } -- libgit2 0.21.2