Commit 67b9abffefbad0c42047ed13996d2eab15e3de58
1 parent
ae8d9f23
Exists in
master
and in
1 other branch
Isolating charset widget.
Showing
3 changed files
with
58 additions
and
45 deletions
Show diff stats
src/dialogs/save/save.c
... | ... | @@ -61,18 +61,6 @@ |
61 | 61 | } |
62 | 62 | }; |
63 | 63 | |
64 | - static const struct _charsets | |
65 | - { | |
66 | - const gchar *name; | |
67 | - const gchar *description; | |
68 | - } charsets[] = | |
69 | - { | |
70 | - // http://en.wikipedia.org/wiki/Character_encoding | |
71 | - { "UTF-8", N_( "UTF-8" ) }, | |
72 | - { "ISO-8859-1", N_( "Western Europe (ISO 8859-1)" ) }, | |
73 | - { "CP1252", N_( "Windows Western languages (CP1252)" ) }, | |
74 | - }; | |
75 | - | |
76 | 64 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
77 | 65 | |
78 | 66 | /* |
... | ... | @@ -224,43 +212,14 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ |
224 | 212 | |
225 | 213 | // Charset drop-down |
226 | 214 | { |
227 | - size_t ix; | |
228 | - const gchar * scharset = NULL; | |
229 | - | |
230 | 215 | widget = gtk_label_new_with_mnemonic (_("C_haracter Coding")); |
231 | 216 | gtk_widget_set_halign(widget,GTK_ALIGN_END); |
232 | 217 | gtk_widget_set_valign(widget,GTK_ALIGN_CENTER); |
233 | 218 | gtk_grid_attach(grid,widget,0,1,1,1); |
234 | 219 | |
235 | - dialog->charset = gtk_combo_box_text_new(); | |
236 | - | |
237 | - g_get_charset(&scharset); | |
238 | - | |
239 | - g_autofree gchar * text = g_strdup_printf(_("Current (%s)"),scharset); | |
240 | - gtk_combo_box_text_insert( | |
241 | - GTK_COMBO_BOX_TEXT(dialog->charset), | |
242 | - 0, | |
243 | - scharset, | |
244 | - text | |
245 | - ); | |
246 | - | |
247 | - gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->charset),0); | |
248 | - | |
220 | + dialog->charset = v3270_charset_combo_box_new(); | |
249 | 221 | gtk_grid_attach(grid,dialog->charset,1,1,1,1); |
250 | 222 | |
251 | - for(ix=0;ix<G_N_ELEMENTS(charsets);ix++) | |
252 | - { | |
253 | - if(g_ascii_strcasecmp(charsets[ix].name,scharset)) | |
254 | - { | |
255 | - gtk_combo_box_text_insert( | |
256 | - GTK_COMBO_BOX_TEXT(dialog->charset), | |
257 | - ix+1, | |
258 | - charsets[ix].name, | |
259 | - gettext(charsets[ix].description) | |
260 | - ); | |
261 | - } | |
262 | - } | |
263 | - | |
264 | 223 | } |
265 | 224 | |
266 | 225 | // Format drop-down | ... | ... |
src/dialogs/tools.c
... | ... | @@ -124,3 +124,52 @@ |
124 | 124 | } |
125 | 125 | |
126 | 126 | #endif //! GTK 3.16 |
127 | + | |
128 | + GtkWidget * v3270_charset_combo_box_new() | |
129 | + { | |
130 | + static const struct _charsets | |
131 | + { | |
132 | + const gchar *name; | |
133 | + const gchar *description; | |
134 | + } charsets[] = | |
135 | + { | |
136 | + // http://en.wikipedia.org/wiki/Character_encoding | |
137 | + { "UTF-8", N_( "UTF-8" ) }, | |
138 | + { "ISO-8859-1", N_( "Western Europe (ISO 8859-1)" ) }, | |
139 | + { "CP1252", N_( "Windows Western languages (CP1252)" ) }, | |
140 | + }; | |
141 | + | |
142 | + size_t ix; | |
143 | + const gchar * scharset = NULL; | |
144 | + GtkWidget * widget = gtk_combo_box_text_new(); | |
145 | + | |
146 | + g_get_charset(&scharset); | |
147 | + | |
148 | + g_autofree gchar * text = g_strdup_printf(_("Current (%s)"),scharset); | |
149 | + gtk_combo_box_text_insert( | |
150 | + GTK_COMBO_BOX_TEXT(widget), | |
151 | + 0, | |
152 | + scharset, | |
153 | + text | |
154 | + ); | |
155 | + | |
156 | + gtk_combo_box_set_active(GTK_COMBO_BOX(widget),0); | |
157 | + | |
158 | + for(ix=0;ix<G_N_ELEMENTS(charsets);ix++) | |
159 | + { | |
160 | + if(g_ascii_strcasecmp(charsets[ix].name,scharset)) | |
161 | + { | |
162 | + gtk_combo_box_text_insert( | |
163 | + GTK_COMBO_BOX_TEXT(widget), | |
164 | + ix+1, | |
165 | + charsets[ix].name, | |
166 | + gettext(charsets[ix].description) | |
167 | + ); | |
168 | + } | |
169 | + } | |
170 | + | |
171 | + return widget; | |
172 | + | |
173 | + } | |
174 | + | |
175 | + | ... | ... |
src/include/internals.h
... | ... | @@ -108,6 +108,8 @@ |
108 | 108 | G_GNUC_INTERNAL void v3270_dialog_close(GtkDialog *dialog, gpointer user_data); |
109 | 109 | |
110 | 110 | |
111 | +/*--[ Internal Widgets & Tools ]---------------------------------------------------------------------*/ | |
112 | + | |
111 | 113 | #if GTK_CHECK_VERSION(3,12,0) |
112 | 114 | G_GNUC_INTERNAL GtkHeaderBar * v3270_dialog_get_header_bar(GtkWidget * widget); |
113 | 115 | G_GNUC_INTERNAL void v3270_dialog_cancel(GtkButton G_GNUC_UNUSED(*button), GtkWidget *dialog); |
... | ... | @@ -135,11 +137,14 @@ |
135 | 137 | |
136 | 138 | G_GNUC_INTERNAL gchar * v3270_select_file(GtkWidget *widget, const gchar *title, const gchar *button, GtkFileChooserAction action, const gchar *filename, const gchar *filter, ... ) G_GNUC_NULL_TERMINATED; |
137 | 139 | |
138 | - #if ! GTK_CHECK_VERSION(3,16,0) | |
139 | - | |
140 | +#if ! GTK_CHECK_VERSION(3,16,0) | |
140 | 141 | G_GNUC_INTERNAL void gtk_text_view_set_monospace (GtkTextView *text_view, gboolean monospace); |
142 | +#endif //! GTK 3.16 | |
143 | + | |
144 | + G_GNUC_INTERNAL GtkWidget * v3270_charset_combo_box_new(); | |
145 | + | |
146 | +/*--[ Internal Methods ]-----------------------------------------------------------------------------*/ | |
141 | 147 | |
142 | - #endif //! GTK 3.16 | |
143 | 148 | |
144 | 149 | const GtkWidgetClass * v3270_get_parent_class(void); |
145 | 150 | ... | ... |