Commit ec4f3d3f8590557d91b806ae518c092736a619b3
1 parent
307e7706
Exists in
master
and in
5 other branches
Incluindo carga dos settings de impressao em windows
Showing
3 changed files
with
52 additions
and
3 deletions
Show diff stats
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",®istry,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/> | ... | ... |