Commit 0a3c790091447478c0e1d7fa953d23950a648107

Authored by perry.werneck@gmail.com
1 parent e9fcb006

Separando funcoes de configuração da tabela de cores para permitir o uso nas funções de impressão

src/gtk/print.c
... ... @@ -115,38 +115,70 @@
115 115 trace("Font set to \"%s\"",info->font);
116 116 }
117 117  
  118 + static void color_scheme_changed(GtkComboBox *widget,PRINT_INFO *info)
  119 + {
  120 + gchar *new_colors = NULL;
  121 +
  122 +#if GTK_CHECK_VERSION(3,0,0)
  123 +
  124 + new_colors = g_strdup(gtk_combo_box_get_active_id(GTK_COMBO_BOX(widget)));
  125 +
  126 +#else
  127 +
  128 + GValue value = { 0, };
  129 + GtkTreeIter iter;
  130 +
  131 + if(!gtk_combo_box_get_active_iter(widget,&iter))
  132 + return;
  133 +
  134 + gtk_tree_model_get_value(gtk_combo_box_get_model(widget),&iter,1,&value);
  135 + new_colors = g_strdup(g_value_get_string(&value));
  136 +
  137 +#endif
  138 +
  139 + if(!info->colorname)
  140 + return;
  141 +
  142 + trace("%s: %s->%s",__FUNCTION__,info->colorname,new_colors);
  143 +
  144 + if(*info->colorname)
  145 + g_free(info->colorname);
  146 +
  147 + info->colorname = new_colors;
  148 + }
  149 +
118 150 static GObject * create_custom_widget(GtkPrintOperation *prt, PRINT_INFO *info)
119 151 {
120   - static const gchar *def_colors = "white,"
121   - "black,"
122   - "black,"
123   - "black,"
124   - "black,"
125   - "black,"
126   - "black,"
127   - "black,"
128   - "black,"
129   - "black,"
130   - "black,"
131   - "black,"
132   - "black,"
133   - "black,"
134   - "black,"
135   - "black,"
136   - "black,"
137   - "black,"
138   - "black,"
139   - "black,"
140   - "black,"
141   - "white,"
142   - "black,"
143   - "black,"
144   - "black,"
145   - "white,"
146   - "black,"
147   - "black,"
148   - "black,"
149   - "black";
  152 + static const gchar *def_colors = "white," // V3270_COLOR_BACKGROUND
  153 + "black," // V3270_COLOR_BLUE
  154 + "black," // V3270_COLOR_RED
  155 + "black," // V3270_COLOR_PINK
  156 + "black," // V3270_COLOR_GREEN
  157 + "black," // V3270_COLOR_TURQUOISE
  158 + "black," // V3270_COLOR_YELLOW
  159 + "black," // V3270_COLOR_WHITE
  160 + "black," // V3270_COLOR_BLACK
  161 + "black," // V3270_COLOR_DARK_BLUE
  162 + "black," // V3270_COLOR_ORANGE
  163 + "black," // V3270_COLOR_PURPLE
  164 + "black," // V3270_COLOR_DARK_GREEN
  165 + "black," // V3270_COLOR_DARK_TURQUOISE
  166 + "black," // V3270_COLOR_MUSTARD
  167 + "black," // V3270_COLOR_GRAY
  168 + "black," // V3270_COLOR_FIELD_DEFAULT
  169 + "black," // V3270_COLOR_FIELD_INTENSIFIED
  170 + "black," // V3270_COLOR_FIELD_PROTECTED
  171 + "black," // V3270_COLOR_FIELD_PROTECTED_INTENSIFIED
  172 + "black," // V3270_COLOR_SELECTED_BG
  173 + "white," // V3270_COLOR_SELECTED_FG
  174 + "black," // V3270_COLOR_SELECTED_BORDER
  175 + "black," // V3270_COLOR_CURSOR
  176 + "black," // V3270_COLOR_CROSS_HAIR
  177 + "white," // V3270_COLOR_OIA_BACKGROUND
  178 + "black," // V3270_COLOR_OIA
  179 + "black," // V3270_COLOR_OIA_SEPARATOR
  180 + "black," // V3270_COLOR_OIA_STATUS_OK
  181 + "black"; // V3270_COLOR_OIA_STATUS_INVALID
150 182  
151 183 static const gchar * label[] = { N_( "Font:" ), N_( "Color scheme:" ) };
152 184 GtkWidget * container = gtk_table_new(2,2,FALSE);
... ... @@ -180,6 +212,9 @@
180 212  
181 213 info->colorname = get_string_from_config("print","colors",def_colors);
182 214 load_color_schemes(widget,info->colorname);
  215 +
  216 + g_signal_connect(G_OBJECT(widget),"changed",G_CALLBACK(color_scheme_changed),info);
  217 +
183 218 gtk_table_attach(GTK_TABLE(container),widget,1,2,1,2,GTK_EXPAND|GTK_FILL,GTK_FILL,5,0);
184 219  
185 220 // Show and return
... ...
src/gtk/v3270/v3270.h
... ... @@ -191,9 +191,6 @@
191 191  
192 192 void v3270_reload(GtkWidget * widget);
193 193  
194   - void v3270_set_colors(GtkWidget *widget, const gchar *);
195   - void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, const gchar *name);
196   -
197 194 void v3270_set_font_family(GtkWidget *widget, const gchar *name);
198 195 const gchar * v3270_get_font_family(GtkWidget *widget);
199 196  
... ... @@ -212,6 +209,12 @@
212 209 void v3270_paste(GtkWidget *widget);
213 210 void v3270_paste_string(GtkWidget *widget, const gchar *text, const gchar *encoding);
214 211  
  212 + // Colors
  213 + void v3270_set_colors(GtkWidget *widget, const gchar *);
  214 + void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, const gchar *name);
  215 + int v3270_set_color_entry(GdkColor *clr, enum V3270_COLOR id, const gchar *name);
  216 + void v3270_set_color_table(GdkColor *table, const gchar *colors);
  217 +
215 218 G_END_DECLS
216 219  
217 220 #endif // V3270_H_INCLUDED
... ...
src/gtk/v3270/widget.c
... ... @@ -721,9 +721,7 @@ static void v3270_send_configure(v3270 * terminal)
721 721  
722 722 void v3270_set_colors(GtkWidget *widget, const gchar *colors)
723 723 {
724   - gchar **clr;
725   - guint cnt;
726   - int f;
  724 + g_return_if_fail(GTK_IS_V3270(widget));
727 725  
728 726 if(!colors)
729 727 {
... ... @@ -764,6 +762,19 @@ void v3270_set_colors(GtkWidget *widget, const gchar *colors)
764 762  
765 763 }
766 764  
  765 + v3270_set_color_table(GTK_V3270(widget)->color,colors);
  766 +
  767 + g_signal_emit(widget,v3270_widget_signal[SIGNAL_UPDATE_CONFIG], 0, "colors", colors);
  768 + v3270_reload(widget);
  769 +
  770 +}
  771 +
  772 +void v3270_set_color_table(GdkColor *table, const gchar *colors)
  773 +{
  774 + gchar **clr;
  775 + guint cnt;
  776 + int f;
  777 +
767 778 clr = g_strsplit(colors,",",V3270_COLOR_COUNT+1);
768 779 cnt = g_strv_length(clr);
769 780 switch(cnt)
... ... @@ -774,53 +785,59 @@ void v3270_set_colors(GtkWidget *widget, const gchar *colors)
774 785  
775 786 case 29:
776 787 for(f=0;f < V3270_COLOR_SELECTED_BORDER;f++)
777   - v3270_set_color(widget,f,clr[f]);
  788 + v3270_set_color_entry(table,f,clr[f]);
778 789  
779   - v3270_set_color(widget,V3270_COLOR_SELECTED_BORDER,clr[V3270_COLOR_SELECTED_BG]);
  790 + v3270_set_color_entry(table,V3270_COLOR_SELECTED_BORDER,clr[V3270_COLOR_SELECTED_BG]);
780 791  
781 792 for(f=V3270_COLOR_SELECTED_BORDER+1;f < V3270_COLOR_COUNT;f++)
782   - v3270_set_color(widget,f,clr[f-1]);
  793 + v3270_set_color_entry(table,f,clr[f-1]);
783 794  
784 795 break;
785 796  
786 797 case V3270_COLOR_COUNT: // Complete string
787 798 for(f=0;f < V3270_COLOR_COUNT;f++)
788   - v3270_set_color(widget,f,clr[f]);
  799 + v3270_set_color_entry(table,f,clr[f]);
789 800 break;
790 801  
791 802 default:
792 803 for(f=0;f < cnt;f++)
793   - v3270_set_color(widget,f,clr[f]);
  804 + v3270_set_color_entry(table,f,clr[f]);
794 805 for(f=cnt; f < V3270_COLOR_COUNT;f++)
795   - v3270_set_color(widget,f,clr[cnt-1]);
  806 + v3270_set_color_entry(table,f,clr[cnt-1]);
796 807  
797   - v3270_set_color(widget,V3270_COLOR_OIA_BACKGROUND,clr[0]);
798   - v3270_set_color(widget,V3270_COLOR_SELECTED_BG,clr[0]);
  808 + v3270_set_color_entry(table,V3270_COLOR_OIA_BACKGROUND,clr[0]);
  809 + v3270_set_color_entry(table,V3270_COLOR_SELECTED_BG,clr[0]);
799 810  
800 811 }
801 812  
802 813 g_strfreev(clr);
803 814  
804   - g_signal_emit(widget,v3270_widget_signal[SIGNAL_UPDATE_CONFIG], 0, "colors", colors);
  815 +}
805 816  
806   - v3270_reload(widget);
  817 +int v3270_set_color_entry(GdkColor *clr, enum V3270_COLOR id, const gchar *name)
  818 +{
  819 + if(id >= V3270_COLOR_COUNT)
  820 + return -1;
  821 +
  822 + gdk_color_parse(name,clr+id);
  823 +
  824 + return 0;
807 825 }
808 826  
809 827 void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, const gchar *name)
810 828 {
811 829 v3270 * terminal = GTK_V3270(widget);
812 830  
813   - if(id >= V3270_COLOR_COUNT)
  831 + if(v3270_set_color_entry(terminal->color,id,name))
814 832 return;
815 833  
816   - gdk_color_parse(name,terminal->color+id);
817   -
818 834 #if(GTK_CHECK_VERSION(3,0,0))
819 835  
820 836 #else
821 837 gdk_colormap_alloc_color(gtk_widget_get_default_colormap(),terminal->color+id,TRUE,TRUE);
822 838 #endif
823 839  
  840 +
824 841 }
825 842  
826 843 void v3270_set_font_family(GtkWidget *widget, const gchar *name)
... ...