Commit 0a3c790091447478c0e1d7fa953d23950a648107
1 parent
e9fcb006
Exists in
master
and in
5 other branches
Separando funcoes de configuração da tabela de cores para permitir o uso nas funções de impressão
Showing
3 changed files
with
104 additions
and
49 deletions
Show diff stats
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) | ... | ... |