Commit a3de0daff7230248fc14750443befe2534909445

Authored by perry.werneck@gmail.com
1 parent 3e66dbe3

Implementando dialogo de impressao

Showing 2 changed files with 55 additions and 15 deletions   Show diff stats
src/gtk/print.c
... ... @@ -32,31 +32,70 @@
32 32 #include "globals.h"
33 33 #include "v3270/v3270.h"
34 34  
  35 +/*--[ Structs ]--------------------------------------------------------------------------------------*/
  36 +
  37 + typedef struct _print_info
  38 + {
  39 + GdkColor color[V3270_COLOR_COUNT];
  40 +
  41 + } PRINT_INFO;
  42 +
35 43 /*--[ Implement ]------------------------------------------------------------------------------------*/
36 44  
37   - static void begin_print(GtkPrintOperation *prt, GtkPrintContext *context, gpointer user_data)
  45 + static void begin_print(GtkPrintOperation *prt, GtkPrintContext *context, PRINT_INFO *info)
38 46 {
39 47 trace("%s",__FUNCTION__);
40 48 gtk_print_operation_cancel(prt);
41 49 }
42 50  
43   - static void draw_page(GtkPrintOperation *prt, GtkPrintContext *context, gint pg, gpointer user_data)
  51 + static void draw_page(GtkPrintOperation *prt, GtkPrintContext *context, gint pg, PRINT_INFO *info)
44 52 {
45 53 trace("%s",__FUNCTION__);
46 54  
47 55 }
48 56  
49   - static void done(GtkPrintOperation *prt, GtkPrintOperationResult result, gpointer user_data)
  57 + static void done(GtkPrintOperation *prt, GtkPrintOperationResult result, PRINT_INFO *info)
50 58 {
51 59 trace("%s",__FUNCTION__);
52 60  
  61 +
  62 + g_free(info);
53 63 }
54 64  
55   - static GObject * create_custom_widget(GtkPrintOperation *prt, gpointer user_data)
  65 +#if GTK_CHECK_VERSION(3,2,0)
  66 + static gboolean filter_monospaced(const PangoFontFamily *family,const PangoFontFace *face,gpointer data)
56 67 {
57   - GtkWidget * font_dialog = gtk_font_selection_new();
58   - trace("%s",__FUNCTION__);
59   - return G_OBJECT(font_dialog);
  68 + return pango_font_family_is_monospace((PangoFontFamily *) family);
  69 + }
  70 +#endif // GTK(3,2,0)
  71 +
  72 + static GObject * create_custom_widget(GtkPrintOperation *prt, PRINT_INFO *info)
  73 + {
  74 + static const gchar * label[] = { "Font:", "Colors:" };
  75 + GtkWidget * container = gtk_table_new(2,2,FALSE);
  76 + GtkWidget * widget;
  77 + int f;
  78 +
  79 + for(f=0;f<G_N_ELEMENTS(label);f++)
  80 + {
  81 + widget = gtk_label_new(label[f]);
  82 + gtk_misc_set_alignment(GTK_MISC(widget),0,0.5);
  83 + gtk_table_attach(GTK_TABLE(container),widget,0,1,f,f+1,GTK_FILL,GTK_FILL,0,0);
  84 + }
  85 +
  86 + // Font selection button
  87 + widget = gtk_font_button_new();
  88 + gtk_font_button_set_show_size(GTK_FONT_BUTTON(widget),FALSE);
  89 +#if GTK_CHECK_VERSION(3,2,0)
  90 + gtk_font_chooser_set_filter_func(widget,filter_monospaced,0);
  91 +#endif // GTK(3,2,0)
  92 + gtk_table_attach(GTK_TABLE(container),widget,1,2,0,1,GTK_EXPAND|GTK_FILL,GTK_FILL,5,0);
  93 +
  94 + // Color scheme dropdown
  95 +
  96 + // Show and return
  97 + gtk_widget_show_all(container);
  98 + return G_OBJECT(container);
60 99 }
61 100  
62 101 static void custom_widget_apply(GtkPrintOperation *prt, GtkWidget *font_dialog, gpointer user_data)
... ... @@ -66,13 +105,14 @@
66 105  
67 106 static GtkPrintOperation * begin_print_operation(GtkAction *action, GtkWidget *widget)
68 107 {
  108 + PRINT_INFO * info = g_new0(PRINT_INFO,1);
69 109 GtkPrintOperation * print = gtk_print_operation_new();
70 110 // GtkPrintSettings * settings = gtk_print_settings_new();
71 111 // GtkPageSetup * setup = gtk_page_setup_new();
72 112 // gchar * ptr;
73 113  
74 114 // Basic setup
75   - gtk_print_operation_set_allow_async(print,FALSE);
  115 + gtk_print_operation_set_allow_async(print,TRUE);
76 116  
77 117 /*
78 118 ptr = g_strconcat(PACKAGE_NAME,".",gtk_action_get_name(action),NULL);
... ... @@ -80,16 +120,16 @@
80 120 g_free(ptr);
81 121 */
82 122  
83   -// gtk_print_operation_set_custom_tab_label(print,_( "Style" ));
  123 + gtk_print_operation_set_custom_tab_label(print,_( "Style" ));
84 124  
85 125 // gtk_print_operation_set_show_progress(print,TRUE);
86 126  
87 127 // Common signals
88   - g_signal_connect(print,"begin_print",G_CALLBACK(begin_print),0);
89   - g_signal_connect(print,"draw_page",G_CALLBACK(draw_page),0);
90   - g_signal_connect(print,"done",G_CALLBACK(done),0);
91   -// g_signal_connect(print,"create-custom-widget",G_CALLBACK(create_custom_widget), 0);
92   -// g_signal_connect(print,"custom-widget-apply",G_CALLBACK(custom_widget_apply),0);
  128 + g_signal_connect(print,"begin_print",G_CALLBACK(begin_print),info);
  129 + g_signal_connect(print,"draw_page",G_CALLBACK(draw_page),info);
  130 + g_signal_connect(print,"done",G_CALLBACK(done),info);
  131 + g_signal_connect(print,"create-custom-widget",G_CALLBACK(create_custom_widget), info);
  132 + g_signal_connect(print,"custom-widget-apply",G_CALLBACK(custom_widget_apply), info);
93 133  
94 134 // Finish settings
95 135 // gtk_print_operation_set_print_settings(print,settings);
... ...
src/gtk/v3270/v3270.h
... ... @@ -166,7 +166,7 @@
166 166 struct v3270_metrics metrics;
167 167  
168 168 /* Colors */
169   - GdkColor color[V3270_COLOR_COUNT+1]; /**< Terminal widget colors */
  169 + GdkColor color[V3270_COLOR_COUNT]; /**< Terminal widget colors */
170 170  
171 171 /* Regions */
172 172 GdkRectangle oia_rect[V3270_OIA_FIELD_COUNT];
... ...