Commit 6d5ebe31d5025ee40aec7136e087a4c29db35804

Authored by perry.werneck@gmail.com
1 parent 5ac56691

Corrigindo dialogo de impressão em gtk3

pw3270.cbp
... ... @@ -46,6 +46,9 @@
46 46 <Unit filename="src/gtk/actions.c">
47 47 <Option compilerVar="CC" />
48 48 </Unit>
  49 + <Unit filename="src/gtk/colors.c">
  50 + <Option compilerVar="CC" />
  51 + </Unit>
49 52 <Unit filename="src/gtk/common/common.h" />
50 53 <Unit filename="src/gtk/common/config.c">
51 54 <Option compilerVar="CC" />
... ...
src/gtk/colors.c
... ... @@ -44,9 +44,9 @@
44 44 else
45 45 {
46 46 gchar ** group;
47   - GKeyFile * conf = g_key_file_new();
48   - int f;
49   - gboolean found = FALSE;
  47 + GKeyFile * conf = g_key_file_new();
  48 + int f = 0;
  49 + gboolean found = FALSE;
50 50  
51 51 #if !GTK_CHECK_VERSION(3,0,0)
52 52 GtkTreeModel * model = (GtkTreeModel *) gtk_list_store_new(2,G_TYPE_STRING,G_TYPE_STRING);
... ... @@ -76,10 +76,16 @@
76 76 #if GTK_CHECK_VERSION(3,0,0)
77 77  
78 78 gtk_combo_box_text_insert( GTK_COMBO_BOX_TEXT(widget),
79   - 0,
  79 + f,
80 80 str,
81 81 g_key_file_get_locale_string(conf,group[f],"Label",NULL,NULL));
82 82  
  83 +
  84 + if(active && !g_strcasecmp(active,str))
  85 + {
  86 + found = TRUE;
  87 + gtk_combo_box_set_active(GTK_COMBO_BOX(widget),f);
  88 + }
83 89 #else
84 90  
85 91 gtk_list_store_append((GtkListStore *) model,&iter);
... ... @@ -110,6 +116,7 @@
110 116 0,
111 117 active,
112 118 _( "Custom colors") );
  119 + gtk_combo_box_set_active(GTK_COMBO_BOX(widget),0);
113 120  
114 121 #else
115 122  
... ...
src/gtk/print.c
... ... @@ -18,7 +18,7 @@
18 18 * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple
19 19 * Place, Suite 330, Boston, MA, 02111-1307, USA
20 20 *
21   - * Este programa está nomeado como dialog.c e possui - linhas de código.
  21 + * Este programa está nomeado como print.c e possui - linhas de código.
22 22 *
23 23 * Contatos:
24 24 *
... ... @@ -42,10 +42,12 @@
42 42 guint fontsize;
43 43 cairo_font_weight_t fontweight;
44 44 gchar * colorname;
  45 + int baddr;
45 46 int rows;
46 47 int cols;
47 48 int pages;
48 49 cairo_font_extents_t extents;
  50 + double left;
49 51 double width;
50 52 double height;
51 53 cairo_scaled_font_t * font_scaled;
... ... @@ -54,8 +56,10 @@
54 56  
55 57 /*--[ Implement ]------------------------------------------------------------------------------------*/
56 58  
57   - static void setup_font(cairo_t *cr, PRINT_INFO *info)
  59 + static void setup_font(GtkPrintContext * context, PRINT_INFO *info)
58 60 {
  61 + cairo_t *cr = gtk_print_context_get_cairo_context(context);
  62 +
59 63 cairo_select_font_face(cr, info->font, CAIRO_FONT_SLANT_NORMAL, info->fontweight);
60 64  
61 65 info->font_scaled = cairo_get_scaled_font(cr);
... ... @@ -65,15 +69,18 @@
65 69 info->width = ((double) info->cols) * info->extents.max_x_advance;
66 70 info->height = ((double) info->rows) * (info->extents.height + info->extents.descent);
67 71  
  72 + // Center image
  73 + info->left = (gtk_print_context_get_width(context)-info->width)/2;
  74 + if(info->left < 2)
  75 + info->left = 2;
  76 +
  77 +
68 78 }
69 79  
70 80 static void begin_print_all(GtkPrintOperation *prt, GtkPrintContext *context, PRINT_INFO *info)
71 81 {
72   - cairo_t *cr = gtk_print_context_get_cairo_context(context);
73   -
74 82 lib3270_get_screen_size(info->session,&info->rows,&info->cols);
75   - setup_font(cr,info);
76   -
  83 + setup_font(context,info);
77 84 gtk_print_operation_set_n_pages(prt,1);
78 85 }
79 86  
... ... @@ -82,31 +89,27 @@
82 89 int row;
83 90 int col;
84 91 cairo_t * cr = gtk_print_context_get_cairo_context(context);
85   - int baddr = 0;
  92 + int baddr = info->baddr;
86 93 GdkRectangle rect;
87 94  
88 95 cairo_set_scaled_font(cr,info->font_scaled);
89 96  
90 97 memset(&rect,0,sizeof(rect));
91   -
92   - rect.x = 0;
93   - rect.y = 0;
  98 + rect.y = 2;
94 99 rect.height = (info->extents.height + info->extents.descent);
95 100 rect.width = info->extents.max_x_advance;
96 101  
97   -/*
98 102 gdk_cairo_set_source_color(cr,info->color+V3270_COLOR_BACKGROUND);
99   - cairo_rectangle(cr, 0, 0, rect.width*info->cols, rect.height*info->rows);
  103 + cairo_rectangle(cr, info->left-2, 0, (rect.width*info->cols)+4, (rect.height*info->rows)+4);
100 104 cairo_fill(cr);
101 105 cairo_stroke(cr);
102   -*/
103 106  
104 107 rect.width++;
105 108 rect.height++;
106 109  
107 110 for(row = 0; row < info->rows; row++)
108 111 {
109   - rect.x = 0;
  112 + rect.x = info->left;
110 113 for(col = 0; col < info->cols; col++)
111 114 {
112 115 unsigned char c;
... ...
src/gtk/v3270/draw.c
... ... @@ -105,12 +105,12 @@ void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H32
105 105 }
106 106 else
107 107 {
108   - fg = color+((attr & 0x00F0) >> 4);
  108 + bg = color+((attr & 0x00F0) >> 4);
109 109  
110 110 if(attr & LIB3270_ATTR_FIELD)
111   - bg = color+(attr & 0x0003)+V3270_COLOR_FIELD;
  111 + fg = color+(attr & 0x0003)+V3270_COLOR_FIELD;
112 112 else
113   - bg = color+(attr & 0x000F);
  113 + fg = color+(attr & 0x000F);
114 114 }
115 115  
116 116 v3270_draw_char(cr,chr,attr,session,height,rect,fg,bg);
... ... @@ -119,12 +119,12 @@ void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H32
119 119 void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkColor *fg, GdkColor *bg)
120 120 {
121 121 // Clear element area
122   - gdk_cairo_set_source_color(cr,fg);
  122 + gdk_cairo_set_source_color(cr,bg);
123 123 cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height);
124 124 cairo_fill(cr);
125 125  
126 126 // Set foreground color
127   - gdk_cairo_set_source_color(cr,bg);
  127 + gdk_cairo_set_source_color(cr,fg);
128 128  
129 129 // Draw char
130 130 if(attr & LIB3270_ATTR_CG)
... ...