Commit a525575623c4f30b93d0d34635ea3c728a5399af

Authored by Perry Werneck
1 parent cdf52b6c
Exists in master and in 1 other branch develop

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) {
... ...