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,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 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 64 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
77 | 65 | ||
78 | /* | 66 | /* |
@@ -224,43 +212,14 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | @@ -224,43 +212,14 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | ||
224 | 212 | ||
225 | // Charset drop-down | 213 | // Charset drop-down |
226 | { | 214 | { |
227 | - size_t ix; | ||
228 | - const gchar * scharset = NULL; | ||
229 | - | ||
230 | widget = gtk_label_new_with_mnemonic (_("C_haracter Coding")); | 215 | widget = gtk_label_new_with_mnemonic (_("C_haracter Coding")); |
231 | gtk_widget_set_halign(widget,GTK_ALIGN_END); | 216 | gtk_widget_set_halign(widget,GTK_ALIGN_END); |
232 | gtk_widget_set_valign(widget,GTK_ALIGN_CENTER); | 217 | gtk_widget_set_valign(widget,GTK_ALIGN_CENTER); |
233 | gtk_grid_attach(grid,widget,0,1,1,1); | 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 | gtk_grid_attach(grid,dialog->charset,1,1,1,1); | 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 | // Format drop-down | 225 | // Format drop-down |
src/dialogs/tools.c
@@ -124,3 +124,52 @@ | @@ -124,3 +124,52 @@ | ||
124 | } | 124 | } |
125 | 125 | ||
126 | #endif //! GTK 3.16 | 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,6 +108,8 @@ | ||
108 | G_GNUC_INTERNAL void v3270_dialog_close(GtkDialog *dialog, gpointer user_data); | 108 | G_GNUC_INTERNAL void v3270_dialog_close(GtkDialog *dialog, gpointer user_data); |
109 | 109 | ||
110 | 110 | ||
111 | +/*--[ Internal Widgets & Tools ]---------------------------------------------------------------------*/ | ||
112 | + | ||
111 | #if GTK_CHECK_VERSION(3,12,0) | 113 | #if GTK_CHECK_VERSION(3,12,0) |
112 | G_GNUC_INTERNAL GtkHeaderBar * v3270_dialog_get_header_bar(GtkWidget * widget); | 114 | G_GNUC_INTERNAL GtkHeaderBar * v3270_dialog_get_header_bar(GtkWidget * widget); |
113 | G_GNUC_INTERNAL void v3270_dialog_cancel(GtkButton G_GNUC_UNUSED(*button), GtkWidget *dialog); | 115 | G_GNUC_INTERNAL void v3270_dialog_cancel(GtkButton G_GNUC_UNUSED(*button), GtkWidget *dialog); |
@@ -135,11 +137,14 @@ | @@ -135,11 +137,14 @@ | ||
135 | 137 | ||
136 | 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; | 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 | G_GNUC_INTERNAL void gtk_text_view_set_monospace (GtkTextView *text_view, gboolean monospace); | 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 | const GtkWidgetClass * v3270_get_parent_class(void); | 149 | const GtkWidgetClass * v3270_get_parent_class(void); |
145 | 150 |