Commit a525575623c4f30b93d0d34635ea3c728a5399af
1 parent
cdf52b6c
Exists in
master
and in
1 other branch
Working on clipboard settings dialog.
Showing
1 changed file
with
90 additions
and
20 deletions
Show diff stats
src/dialogs/settings/clipboard.c
| ... | ... | @@ -209,26 +209,6 @@ static void V3270ClipboardSettings_init(V3270ClipboardSettings *widget) { |
| 209 | 209 | gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(widget->input.combos[ix]), text_renderer, "text", 0, NULL); |
| 210 | 210 | } |
| 211 | 211 | |
| 212 | - // HTML Font combo | |
| 213 | - static const gchar * html_font_options[] = { | |
| 214 | - N_("None (Don't export font name)"), | |
| 215 | - N_("Same of the screen") | |
| 216 | - }; | |
| 217 | - | |
| 218 | - model = GTK_LIST_STORE(gtk_combo_box_get_model(widget->input.combos[0])); | |
| 219 | - for(ix = 0;ix < G_N_ELEMENTS(html_font_options); ix++) { | |
| 220 | - | |
| 221 | - gtk_list_store_append(model, &iter); | |
| 222 | - gtk_list_store_set( | |
| 223 | - model, | |
| 224 | - &iter, | |
| 225 | - 0, g_dgettext(PACKAGE_NAME, html_font_options[ix]), | |
| 226 | - 1, (guint) ix, | |
| 227 | - -1 | |
| 228 | - ); | |
| 229 | - | |
| 230 | - } | |
| 231 | - | |
| 232 | 212 | // Color scheme combo |
| 233 | 213 | static const gchar * html_color_options[] = { |
| 234 | 214 | N_("None (Don't export color)"), |
| ... | ... | @@ -249,6 +229,50 @@ static void V3270ClipboardSettings_init(V3270ClipboardSettings *widget) { |
| 249 | 229 | |
| 250 | 230 | } |
| 251 | 231 | |
| 232 | + // Load color schemes | |
| 233 | + { | |
| 234 | + lib3270_autoptr(char) filename = lib3270_build_data_filename("colors.conf",NULL); | |
| 235 | + if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) { | |
| 236 | + | |
| 237 | + GKeyFile * keyfile = g_key_file_new(); | |
| 238 | + | |
| 239 | + GError * error = NULL; | |
| 240 | + g_key_file_load_from_file(keyfile,filename,G_KEY_FILE_NONE,&error); | |
| 241 | + | |
| 242 | + if(error) { | |
| 243 | + | |
| 244 | + g_warning(error->message); | |
| 245 | + g_error_free(error); | |
| 246 | + | |
| 247 | + } else { | |
| 248 | + | |
| 249 | + gsize len; | |
| 250 | + gchar **group = g_key_file_get_groups(keyfile,&len); | |
| 251 | + GtkTreeIter iter; | |
| 252 | + | |
| 253 | + for(ix = 0; ix < (size_t) len; ix++) { | |
| 254 | + | |
| 255 | + g_autofree gchar * label = g_key_file_get_locale_string(keyfile,group[ix],"label",NULL,NULL); | |
| 256 | + | |
| 257 | + gtk_list_store_append((GtkListStore *) model,&iter); | |
| 258 | + gtk_list_store_set( | |
| 259 | + (GtkListStore *) model, | |
| 260 | + &iter, | |
| 261 | + 0, label ? label : group[ix], | |
| 262 | + 1, (guint) 99, | |
| 263 | + -1 | |
| 264 | + ); | |
| 265 | + | |
| 266 | + } | |
| 267 | + | |
| 268 | + g_strfreev(group); | |
| 269 | + | |
| 270 | + } | |
| 271 | + | |
| 272 | + g_key_file_free(keyfile); | |
| 273 | + } | |
| 274 | + } | |
| 275 | + | |
| 252 | 276 | // Copy format combo |
| 253 | 277 | static const gchar * copy_formats[] = { |
| 254 | 278 | N_("Plain text only"), |
| ... | ... | @@ -287,10 +311,56 @@ GtkWidget * v3270_clipboard_settings_new() { |
| 287 | 311 | |
| 288 | 312 | static void load(GtkWidget *w, GtkWidget *terminal) { |
| 289 | 313 | |
| 314 | + size_t ix; | |
| 315 | + | |
| 290 | 316 | V3270ClipboardSettings *widget = (V3270ClipboardSettings *) w; |
| 291 | 317 | |
| 292 | 318 | v3270_settings_load_toggle_buttons(toggles, G_N_ELEMENTS(toggles), terminal, widget->input.toggles); |
| 293 | 319 | |
| 320 | + // HTML Font combo | |
| 321 | + { | |
| 322 | + static const gchar * html_font_options[] = { | |
| 323 | + N_("None (Don't export font name)"), | |
| 324 | + N_("Same of the screen") | |
| 325 | + }; | |
| 326 | + | |
| 327 | + GtkListStore * model = GTK_LIST_STORE(gtk_combo_box_get_model(widget->input.combos[0])); | |
| 328 | + GtkTreeIter iter; | |
| 329 | + gtk_list_store_clear(model); | |
| 330 | + for(ix = 0;ix < G_N_ELEMENTS(html_font_options); ix++) { | |
| 331 | + | |
| 332 | + gtk_list_store_append(model, &iter); | |
| 333 | + gtk_list_store_set( | |
| 334 | + model, | |
| 335 | + &iter, | |
| 336 | + 0, g_dgettext(PACKAGE_NAME, html_font_options[ix]), | |
| 337 | + 1, (guint) ix, | |
| 338 | + -1 | |
| 339 | + ); | |
| 340 | + | |
| 341 | + } | |
| 342 | + | |
| 343 | + PangoFontFamily **families; | |
| 344 | + gint n_families; | |
| 345 | + pango_context_list_families(gtk_widget_get_pango_context(terminal),&families, &n_families); | |
| 346 | + | |
| 347 | + for(ix=0; ((gint) ix) < n_families; ix++) { | |
| 348 | + | |
| 349 | + if(!pango_font_family_is_monospace(families[ix])) | |
| 350 | + continue; | |
| 351 | + | |
| 352 | + const gchar *name = pango_font_family_get_name (families[ix]); | |
| 353 | + GtkTreeIter iter; | |
| 354 | + | |
| 355 | + gtk_list_store_append((GtkListStore *) model,&iter); | |
| 356 | + gtk_list_store_set((GtkListStore *) model, &iter,0, name, 1, (guint) 99, -1); | |
| 357 | + | |
| 358 | + } | |
| 359 | + | |
| 360 | + g_free(families); | |
| 361 | + | |
| 362 | + } | |
| 363 | + | |
| 294 | 364 | } |
| 295 | 365 | |
| 296 | 366 | static void apply(GtkWidget *w, GtkWidget *terminal) { | ... | ... |