Commit ec4f3d3f8590557d91b806ae518c092736a619b3

Authored by perry.werneck@gmail.com
1 parent 307e7706

Incluindo carga dos settings de impressao em windows

src/gtk/common/config.c
... ... @@ -113,6 +113,38 @@ gchar * get_last_error_msg(void)
113 113  
114 114 return FALSE;
115 115 }
  116 +
  117 + void registry_foreach(HKEY parent, const gchar *name,void (*cbk)(const gchar *key, const gchar *val, gpointer *user_data), gpointer *user_data)
  118 + {
  119 + HKEY hKey = 0;
  120 +
  121 + if(RegOpenKeyEx(parent,name,0,KEY_READ,&hKey) == ERROR_SUCCESS)
  122 + {
  123 + #define MAX_KEY_LENGTH 255
  124 + #define MAX_VALUE_NAME 16383
  125 +
  126 + TCHAR pName[MAX_KEY_LENGTH];
  127 + DWORD cName = MAX_KEY_LENGTH;
  128 + int ix = 0;
  129 +
  130 + while(RegEnumValue(hKey,ix++,pName,&cName,NULL,NULL,NULL,NULL) == ERROR_SUCCESS)
  131 + {
  132 + BYTE data[4097];
  133 + unsigned long datatype;
  134 + unsigned long datalen = 4096;
  135 +
  136 + if(RegQueryValueExA(hKey,pName,NULL,&datatype,data,&datalen) == ERROR_SUCCESS)
  137 + {
  138 + data[datalen+1] = 0;
  139 + cbk(pName,data,user_data);
  140 + }
  141 + cName = MAX_KEY_LENGTH;
  142 + }
  143 + RegCloseKey(hKey);
  144 + }
  145 + }
  146 +
  147 +
116 148 #else
117 149 static gchar * search_for_ini(void)
118 150 {
... ...
src/gtk/print.c
... ... @@ -380,6 +380,13 @@ static gchar * enum_to_string(GType type, guint enum_value)
380 380 g_object_unref(combo);
381 381 }
382 382  
  383 +#ifdef WIN32
  384 + void update_settings(const gchar *key, const gchar *val, gpointer *settings)
  385 + {
  386 + gtk_print_settings_set(GTK_PRINT_SETTINGS(settings), key, val);
  387 + }
  388 +#endif // WIN32
  389 +
383 390 static GtkPrintOperation * begin_print_operation(GtkAction *action, GtkWidget *widget, PRINT_INFO **info)
384 391 {
385 392 GtkPrintOperation * print = gtk_print_operation_new();
... ... @@ -418,13 +425,23 @@ static gchar * enum_to_string(GType type, guint enum_value)
418 425 {
419 426 #ifdef WIN32
420 427  
421   - #warning Implementar
  428 + HKEY registry;
  429 +
  430 + if(get_registry_handle("print",&registry,KEY_READ))
  431 + {
  432 + registry_foreach(registry,"settings",update_settings,(gpointer) settings);
  433 +
  434 +
  435 +
  436 +
  437 + #warning Work in progress
  438 + RegCloseKey(registry);
  439 + }
422 440  
423 441 #else
424 442 GKeyFile * conf = get_application_keyfile();
425 443 GError * err = NULL;
426 444  
427   -
428 445 if(!gtk_print_settings_load_key_file(settings,conf,"print_settings",&err))
429 446 {
430 447 g_warning("Error getting print settings: %s",err->message);
... ...
ui/00default.xml
... ... @@ -45,7 +45,7 @@
45 45 <menuitem action='save' src='copy' group='clipboard' label='Save copy' />
46 46  
47 47 <separator/>
48   - <menuitem action='print' src='all' group='online' key='Print' icon='print' label='Print' />
  48 + <menuitem action='print' src='all' key='Print' icon='print' label='Print' />
49 49 <menuitem action='print' src='selected' group='selection' label='Print selected' />
50 50 <menuitem action='print' src='copy' group='clipboard' label='Print copy' />
51 51 <separator/>
... ...