~ubuntu-branches/ubuntu/natty/tickr/natty-backports

« back to all changes in this revision

Viewing changes to src/tickr/tickr_prefwin.c

  • Committer: Package Import Robot
  • Author(s): Micah Gersten
  • Date: 2012-09-02 02:09:26 UTC
  • mfrom: (3.1.4 experimental)
  • Revision ID: package-import@ubuntu.com-20120902020926-h73m62lpf0m2eaam
Tags: 0.6.2-1~ubuntu11.04.1
No-change backport to natty (LP: #1027173)

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 
19
19
#include "tickr.h"
20
20
 
21
 
#if USE_GUI
22
 
/* these widgets are all set as static global for convenience */
 
21
/* These variables and widgets are all set as static global for convenience. */
23
22
static TickerEnv        *env;
24
23
static gchar            current_url[FILE_NAME_MAXLEN + 1];
25
24
 
26
25
static GtkWidget        *dialog, *sc_win, *entry_homefeed;
27
 
static GtkWidget        *table, *label[128];    /* this should be enough but check anyways */
 
26
static GtkWidget        *table, *label[128];    /* This should be enough but check anyways */
28
27
static GtkWidget        *hbox1, *hbox2, *hbox3, *hbox4, *hbox5, *hbox6, *hbox7;
29
28
static GtkWidget        *cancel_but, *reset_but, *apply_but, *ok_but;
30
29
static GtkWidget        *sysfg_but, *sysbg_but, *sysfgclock_but, *sysbgclock_but;
36
35
static GtkWidget        *spinbut_shadowfx, *spinbut_rssrefresh;
37
36
static GtkWidget        *spinbut_wintransparency, *spinbut_nitemsperfeed;
38
37
static GtkWidget        *checkbut_shadow, *checkbut_alwaysontop, *checkbut_windec;
39
 
static GtkWidget        *checkbut_rsstitle, *checkbut_rssdes, *checkbut_striptags;
40
 
static GtkWidget        *checkbut_uppercase, *checkbut_nopopups, *checkbut_mouseover;
41
38
static GtkWidget        *checkbut_spchars;
 
39
static GtkWidget        *checkbut_feedtitle, *checkbut_itemtitle, *checkbut_itemdes;
 
40
static GtkWidget        *checkbut_striptags, *checkbut_uppercase, *checkbut_nopopups;
 
41
static GtkWidget        *checkbut_mouseover, *checkbut_noleftclick, *checkbut_feedordering;
42
42
static GtkWidget        *font_but, *clock_font_but;
43
43
static GtkWidget        *fg_color_but, *bg_color_but, *clock_fg_color_but, *clock_bg_color_but;
44
44
static GtkWidget        *rbut_box1, *radio_but1_1, *radio_but1_2, *radio_but1_3;
45
45
static GtkWidget        *rbut_box2, *radio_but2_1, *radio_but2_2, *radio_but2_3;
46
 
static GtkWidget        *entry_newpagech, *entry_tabch, *entry_rsstitledel;
47
 
static GtkWidget        *entry_rssdesdel, *entry_linedel, *entry_cutlinedel;
 
46
static GtkWidget        *entry_feedtitledel, *entry_itemtitledel, *entry_itemdesdel;
 
47
static GtkWidget        *entry_linedel, *entry_cutlinedel, *entry_newpagech, *entry_tabch;
48
48
static GtkWidget        *entry_openlinkcmd, *entry_openlinkargs;
49
49
static GtkObject        *adj_delay, *adj_shiftsize, *adj_winx, *adj_winy;
50
50
static GtkObject        *adj_winw, *adj_winh, *adj_shadowoffsetx, *adj_shadowfx;
51
51
static GtkObject        *adj_shadowoffsety, *adj_rssrefresh;
52
52
static GtkObject        *adj_wintransparency, *adj_nitemsperfeed;
53
53
 
54
 
static gint esc_key_pressed(GtkWidget *dialog2, GdkEventKey *event)
55
 
{
56
 
        if (event->keyval == GDK_Escape) {
57
 
                gtk_dialog_response(GTK_DIALOG(dialog2), GTK_RESPONSE_CANCEL);
58
 
                return TRUE;
59
 
        } else
60
 
                return FALSE;
61
 
}
62
 
 
63
 
static void force_quit_dialog(GtkWidget *dialog2)
64
 
{
65
 
        gtk_dialog_response(GTK_DIALOG(dialog2), GTK_RESPONSE_CANCEL);
66
 
}
67
 
 
68
 
/*
69
 
 * ***to be fixed: we want widgets system colors, not these ones***
70
 
 */
 
54
/* TODO: we want widgets system colors, not these ones */
71
55
static gint use_system_fg_color_ticker(GtkWidget *widget)
72
56
{
73
57
        GdkColor color;
132
116
        char    font_n_s[FONT_MAXLEN + 1];
133
117
        char    fname[FONT_NAME_MAXLEN + 1], fsize[FONT_SIZE_MAXLEN + 1];
134
118
        gint    requested_font_size, requested_h, y_bottom;
 
119
        /* We backup this param first because... */
 
120
        char    disable_popups_bak = get_params()->disable_popups;
 
121
 
 
122
        /* ...we want this window to always popup */
 
123
        get_params()->disable_popups = 'n';
135
124
 
136
125
        widget = widget;
137
 
        /* we need to know requested ticker height */
 
126
        /* We need to know requested ticker height */
138
127
        requested_h = (gint)gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbut_winh));
139
128
        if (requested_h > 0 && requested_h < DRWA_HEIGHT_MIN)
140
129
                requested_h = DRWA_HEIGHT_MIN;
141
130
        else if (requested_h == 0) {
142
 
                /* compute ticker height from requested font size */
143
 
                str_n_cpy(font_n_s, (char *)gtk_font_button_get_font_name(GTK_FONT_BUTTON(font_but)), 68);
 
131
                /* Compute ticker height from requested font size */
 
132
                str_n_cpy(font_n_s, (char *)gtk_font_button_get_font_name(GTK_FONT_BUTTON(font_but)), FONT_MAXLEN);
144
133
                split_font(font_n_s, fname, fsize);
145
 
                /* in all cases, font size can't be > FONT_MAXSIZE */
 
134
                /* In all cases, font size can't be > FONT_MAXSIZE */
146
135
                requested_font_size =  MIN(atoi(fsize), FONT_MAXSIZE);
147
136
                snprintf(fsize, FONT_SIZE_MAXLEN + 1, "%3d", requested_font_size);
148
137
                compact_font(font_n_s, fname, fsize);
151
140
 
152
141
        y_bottom = env->screen_h - requested_h;
153
142
#ifndef G_OS_WIN32
154
 
        /* how to get taskbar height on linux? */
155
 
        warning(FALSE, 1, "Taskbar height: Will use 25 pixels arbitrary value - "
156
 
                        "Please adjust as necessary afterwards");
157
 
        y_bottom -= 25;
 
143
        /* How to get taskbar height on Linux ? */
 
144
        warning(FALSE, 3, "Taskbar height: Will use ", itoa2(ARBITRARY_TASKBAR_HEIGHT),
 
145
                " pixels arbitrary value - Please adjust as necessary afterwards");
 
146
        y_bottom -= ARBITRARY_TASKBAR_HEIGHT;
158
147
#else
159
148
        if (get_win32_taskbar_height() != -1)
160
149
                y_bottom -= get_win32_taskbar_height();
161
150
        else {
162
 
                warning(FALSE, 1, "Couldn't compute Taskbar height: Will use 25 pixels arbitrary value"
163
 
                        " - Please adjust as necessary afterwards");
164
 
                y_bottom -= 25;
 
151
                warning(FALSE, 3, "Couldn't compute Taskbar height: Will use ", itoa2(ARBITRARY_TASKBAR_HEIGHT),
 
152
                        " pixels arbitrary value - Please adjust as necessary afterwards");
 
153
                y_bottom -= ARBITRARY_TASKBAR_HEIGHT;
165
154
        }
166
155
#endif
167
156
        gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbut_winy), y_bottom);
 
157
 
 
158
        get_params()->disable_popups = disable_popups_bak;
168
159
        return TRUE;
169
160
}
170
161
 
172
163
{
173
164
        widget = widget;
174
165
        gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbut_winw), env->screen_w);
175
 
        /* will also push ticker in left corner */
 
166
        /* Will also push ticker in left corner */
176
167
        gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbut_winx), 0);
177
168
        return TRUE;
178
169
}
185
176
}
186
177
 
187
178
/*
188
 
 * open a dialog to edit all params
189
 
 * return 0 or 1 if we want to reopen the dialog
 
179
 * Open a dialog to edit all params.
 
180
 * Return 0 or 1 if we want to immediately reopen the dialog.
190
181
 */
191
182
int modify_params(Params *prm)
192
183
{
193
184
        char            c[2]= "c";
194
185
        gint            response;
195
 
        int             changes_has_been_applied, exit_status = 0, i;
 
186
        int             changes_have_been_applied, exit_status = 0, i;
196
187
        Params          *prm_bak;
197
188
 
198
189
        env = get_ticker_env();
201
192
        gtk_window_set_keep_above(GTK_WINDOW(env->win), FALSE);
202
193
 
203
194
        dialog = gtk_dialog_new_with_buttons(
204
 
                        APP_NAME" Preferences", GTK_WINDOW(env->win),
 
195
                        "Preferences", GTK_WINDOW(env->win),
205
196
                        GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
206
197
                        NULL);
207
198
 
211
202
        g_signal_connect(G_OBJECT(dialog), "key-press-event", G_CALLBACK(esc_key_pressed), NULL);
212
203
        g_signal_connect(G_OBJECT(dialog), "delete_event", G_CALLBACK(force_quit_dialog), NULL);
213
204
 
214
 
        /* we add a scrolling feature as more parameters are getting implemented */
 
205
        /* We add a scrolling feature as more parameters are getting implemented */
215
206
        sc_win = gtk_scrolled_window_new(NULL, NULL);
216
207
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sc_win), GTK_POLICY_AUTOMATIC,
217
208
                GTK_POLICY_AUTOMATIC);
218
209
        gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), sc_win);
219
210
 
220
 
        cancel_but = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
221
 
        reset_but = gtk_dialog_add_button(GTK_DIALOG(dialog), "Reset", GTK_RESPONSE_NO);        /* strange... */
222
 
        /* having both 'ok' and 'save' buttons is misleading so we only keep 'ok', which also save settings */
 
211
        cancel_but = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL_CLOSE);
 
212
        reset_but = gtk_dialog_add_button(GTK_DIALOG(dialog), "Reset", GTK_RESPONSE_NO);        /* Strange... */
 
213
        /* Having both 'OK' and 'Save' buttons is misleading so we only keep 'OK', which also save settings. */
223
214
        ok_but = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK);
224
215
        apply_but = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_APPLY, GTK_RESPONSE_APPLY);
225
216
 
226
217
        table = gtk_table_new(17, 5, FALSE);
227
218
        gtk_table_set_row_spacings(GTK_TABLE(table), 0);
228
219
        gtk_table_set_col_spacings(GTK_TABLE(table), 5);
229
 
        gtk_container_set_border_width(GTK_CONTAINER(table), 10);
 
220
        gtk_container_set_border_width(GTK_CONTAINER(table), 5);
230
221
        gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sc_win), table);
231
 
        /* whole window must be visible on netbooks as well */
 
222
        /* Whole window must be visible on netbooks as well */
232
223
        gtk_widget_set_size_request(sc_win, 1000, 450);
233
224
 
234
225
        i = 0;
236
227
#define COLUMN2         1, 2
237
228
#define COLUMN3         2, 3
238
229
        /*
239
 
         * delay
 
230
         * Delay
240
231
         */
241
232
        label[i] = gtk_label_new("Delay <small>(Milliseconds)</small>:  ");
242
233
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
247
238
        gtk_table_attach_defaults(GTK_TABLE(table), spinbut_delay, COLUMN2, i, i + 1);
248
239
        i++;
249
240
        /*
250
 
         * shift size
 
241
         * Shift size
251
242
         */
252
243
        label[i] = gtk_label_new("Shift size <small>(Pixels)</small>:  ");
253
244
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
258
249
        gtk_table_attach_defaults(GTK_TABLE(table), spinbut_shiftsize, COLUMN2, i, i + 1);
259
250
        i++;
260
251
        /*
261
 
         * font
 
252
         * Font
262
253
         */
263
254
        label[i] = gtk_label_new("Font <small>(Size can't be > 200)</small>:  ");/* check this is up to date */
264
255
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
372
363
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_windec, COLUMN2, i, i + 1);
373
364
        i++;
374
365
        /*
375
 
         * always-on-top window
 
366
         * Window always-on-top
376
367
         */
377
368
        label[i] = gtk_label_new("Window Always-On-Top:  ");
378
369
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
386
377
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_alwaysontop, COLUMN2, i, i + 1);
387
378
        i++;
388
379
        /*
389
 
         * window transparency
 
380
         * Window transparency
390
381
         */
391
382
        label[i] = gtk_label_new("Window opacity <small>(x 10)</small>:  ");
392
383
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
398
389
        gtk_table_attach_defaults(GTK_TABLE(table), spinbut_wintransparency, COLUMN2, i, i + 1);
399
390
        i++;
400
391
        /*
401
 
         * icon in taskbar
 
392
         * Icon in taskbar
402
393
         */
403
394
        label[i] = gtk_label_new("Icon in Taskbar:  ");
404
395
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
412
403
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_iconintaskbar, COLUMN2, i, i + 1);
413
404
        i++;
414
405
        /*
415
 
         * window sticky
 
406
         * Window sticky
416
407
         */
417
408
        label[i] = gtk_label_new("Visible on all User Desktops:  ");
418
409
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
426
417
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_winsticky, COLUMN2, i, i + 1);
427
418
        i++;
428
419
        /*
429
 
         * shadow
 
420
         * Shadow
430
421
         */
431
422
        label[i] = gtk_label_new("Shadow:  ");
432
423
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
473
464
        gtk_table_attach_defaults(GTK_TABLE(table), spinbut_shadowfx, COLUMN2, i, i + 1);
474
465
        i++;
475
466
        /*
476
 
         * line delimiter
 
467
         * Line delimiter
477
468
         */
478
469
        label[i] = gtk_label_new("Line delimiter:  ");
479
470
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
485
476
        gtk_table_attach_defaults(GTK_TABLE(table), entry_linedel, COLUMN2, i, i + 1);
486
477
        i++;
487
478
        /*
488
 
         * cut line delimiter
 
479
         * Cut line delimiter
489
480
         */
490
481
        label[i] = gtk_label_new("Cut line delimiter:  ");
491
482
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
496
487
        gtk_entry_set_text(GTK_ENTRY(entry_cutlinedel), prm->cutline_delimiter);
497
488
        gtk_table_attach_defaults(GTK_TABLE(table), entry_cutlinedel, COLUMN2, i, i + 1);
498
489
        i++;
 
490
        /*
 
491
         * Enable special chars
 
492
         */
 
493
        label[i] = gtk_label_new("Special characters enabled <small>(Text files only)</small>:  ");
 
494
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
 
495
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
 
496
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
 
497
        checkbut_spchars = gtk_check_button_new();
 
498
        if (prm->special_chars == 'y')
 
499
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_spchars), TRUE);
 
500
        else if (prm->special_chars == 'n')
 
501
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_spchars), FALSE);
 
502
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_spchars, COLUMN2, i, i + 1);
 
503
        i++;
 
504
        /*
 
505
         * 'new page' special char
 
506
         */
 
507
        label[i] = gtk_label_new("'New page' special character:  ");
 
508
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
 
509
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
 
510
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
 
511
        entry_newpagech = gtk_entry_new();
 
512
        gtk_entry_set_max_length(GTK_ENTRY(entry_newpagech), 1);
 
513
        /* This does nothing - gtk_entry_set_width_chars(GTK_ENTRY(entry_newpagech), 1);*/
 
514
        c[0] = prm->new_page_char;
 
515
        gtk_entry_set_text(GTK_ENTRY(entry_newpagech), c);
 
516
        gtk_table_attach_defaults(GTK_TABLE(table), entry_newpagech, COLUMN2,  i, i + 1);
 
517
        i++;
 
518
        /*
 
519
         * 'tab' special char
 
520
         */
 
521
        label[i] = gtk_label_new("'Tab' (8 spaces) special character:  ");
 
522
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
 
523
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
 
524
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
 
525
        entry_tabch = gtk_entry_new();
 
526
        gtk_entry_set_max_length(GTK_ENTRY(entry_tabch), 1);
 
527
        /* This does nothing - gtk_entry_set_width_chars(GTK_ENTRY(entry_tabch), 1);*/
 
528
        c[0] = prm->tab_char;
 
529
        gtk_entry_set_text(GTK_ENTRY(entry_tabch), c);
 
530
        gtk_table_attach_defaults(GTK_TABLE(table), entry_tabch, COLUMN2, i, i + 1);
 
531
        i++;
499
532
 
500
 
/* commenting this block would change from 2 columns to 1 single column window */
 
533
/* Commenting this block would change from 2 columns to 1 single column window */
501
534
        label[i] = gtk_label_new("        ");
502
535
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN3, 0, 1);
503
536
 
506
539
#define COLUMN1         3, 4
507
540
#undef COLUMN2
508
541
#define COLUMN2         4, 5
509
 
/* commenting until here */
 
542
/* (commenting until here) */
510
543
        /*
511
544
         * rss refresh
512
545
         */
519
552
        gtk_table_attach_defaults(GTK_TABLE(table), spinbut_rssrefresh, COLUMN2, i, i + 1);
520
553
        i++;
521
554
        /*
522
 
         * rss title
523
 
         */
524
 
        label[i] = gtk_label_new("RSS title:  ");
525
 
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
526
 
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
527
 
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);;
528
 
        checkbut_rsstitle = gtk_check_button_new();
529
 
        if (prm->rss_title == 'y')
530
 
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_rsstitle), TRUE);
531
 
        else if (prm->rss_title == 'n')
532
 
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_rsstitle), FALSE);
533
 
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_rsstitle, COLUMN2, i, i + 1);
534
 
        i++;
535
 
        /*
536
 
         * rss title delimiter
537
 
         */
538
 
        label[i] = gtk_label_new("RSS title delimiter:  ");
539
 
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
540
 
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
541
 
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
542
 
        entry_rsstitledel = gtk_entry_new();
543
 
        gtk_entry_set_max_length(GTK_ENTRY(entry_rsstitledel), DELIMITER_MAXLEN);
544
 
        gtk_entry_set_text(GTK_ENTRY(entry_rsstitledel), prm->rss_title_delimiter);
545
 
        gtk_table_attach_defaults(GTK_TABLE(table), entry_rsstitledel, COLUMN2, i, i + 1);
546
 
        i++;
547
 
        /*
548
 
         * rss description
549
 
         */
550
 
        label[i] = gtk_label_new("RSS description:  ");
551
 
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
552
 
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
553
 
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
554
 
        checkbut_rssdes = gtk_check_button_new();
555
 
        if (prm->rss_description == 'y')
556
 
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_rssdes), TRUE);
557
 
        else if (prm->rss_description == 'n')
558
 
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_rssdes), FALSE);
559
 
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_rssdes, COLUMN2, i, i + 1);
560
 
        i++;
561
 
        /*
562
 
         * rss description delimiter
563
 
         */
564
 
        label[i] = gtk_label_new("RSS description delimiter:  ");
565
 
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
566
 
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
567
 
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
568
 
        entry_rssdesdel = gtk_entry_new();
569
 
        gtk_entry_set_max_length(GTK_ENTRY(entry_rssdesdel), DELIMITER_MAXLEN);
570
 
        gtk_entry_set_text(GTK_ENTRY(entry_rssdesdel), prm->rss_description_delimiter);
571
 
        gtk_table_attach_defaults(GTK_TABLE(table), entry_rssdesdel, COLUMN2, i, i + 1);
572
 
        i++;
573
 
        /*
574
 
         * read n items max per feed
 
555
         * Feed title
 
556
         */
 
557
        label[i] = gtk_label_new("Feed title:  ");
 
558
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
 
559
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
 
560
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);;
 
561
        checkbut_feedtitle = gtk_check_button_new();
 
562
        if (prm->feed_title == 'y')
 
563
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_feedtitle), TRUE);
 
564
        else if (prm->feed_title == 'n')
 
565
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_feedtitle), FALSE);
 
566
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_feedtitle, COLUMN2, i, i + 1);
 
567
        i++;
 
568
        /*
 
569
         * Feed title delimiter
 
570
         */
 
571
        label[i] = gtk_label_new("Feed title delimiter:  ");
 
572
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
 
573
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
 
574
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
 
575
        entry_feedtitledel = gtk_entry_new();
 
576
        gtk_entry_set_max_length(GTK_ENTRY(entry_feedtitledel), DELIMITER_MAXLEN);
 
577
        gtk_entry_set_text(GTK_ENTRY(entry_feedtitledel), prm->feed_title_delimiter);
 
578
        gtk_table_attach_defaults(GTK_TABLE(table), entry_feedtitledel, COLUMN2, i, i + 1);
 
579
        i++;
 
580
        /*
 
581
         * Item title
 
582
         */
 
583
        label[i] = gtk_label_new("Item title:  ");
 
584
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
 
585
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
 
586
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);;
 
587
        checkbut_itemtitle = gtk_check_button_new();
 
588
        if (prm->item_title == 'y')
 
589
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_itemtitle), TRUE);
 
590
        else if (prm->item_title == 'n')
 
591
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_itemtitle), FALSE);
 
592
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_itemtitle, COLUMN2, i, i + 1);
 
593
        i++;
 
594
        /*
 
595
         * Item title delimiter
 
596
         */
 
597
        label[i] = gtk_label_new("Item title delimiter:  ");
 
598
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
 
599
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
 
600
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
 
601
        entry_itemtitledel = gtk_entry_new();
 
602
        gtk_entry_set_max_length(GTK_ENTRY(entry_itemtitledel), DELIMITER_MAXLEN);
 
603
        gtk_entry_set_text(GTK_ENTRY(entry_itemtitledel), prm->item_title_delimiter);
 
604
        gtk_table_attach_defaults(GTK_TABLE(table), entry_itemtitledel, COLUMN2, i, i + 1);
 
605
        i++;
 
606
        /*
 
607
         * Item description
 
608
         */
 
609
        label[i] = gtk_label_new("Item description:  ");
 
610
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
 
611
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
 
612
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
 
613
        checkbut_itemdes = gtk_check_button_new();
 
614
        if (prm->item_description == 'y')
 
615
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_itemdes), TRUE);
 
616
        else if (prm->item_description == 'n')
 
617
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_itemdes), FALSE);
 
618
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_itemdes, COLUMN2, i, i + 1);
 
619
        i++;
 
620
        /*
 
621
         * Item description delimiter
 
622
         */
 
623
        label[i] = gtk_label_new("Item description delimiter:  ");
 
624
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
 
625
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
 
626
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
 
627
        entry_itemdesdel = gtk_entry_new();
 
628
        gtk_entry_set_max_length(GTK_ENTRY(entry_itemdesdel), DELIMITER_MAXLEN);
 
629
        gtk_entry_set_text(GTK_ENTRY(entry_itemdesdel), prm->item_description_delimiter);
 
630
        gtk_table_attach_defaults(GTK_TABLE(table), entry_itemdesdel, COLUMN2, i, i + 1);
 
631
        i++;
 
632
        /*
 
633
         * Read n items max per feed
575
634
         */
576
635
        label[i] = gtk_label_new("Read N items max per feed <small>(0 = no limit)</small>:  ");
577
636
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
582
641
        gtk_table_attach_defaults(GTK_TABLE(table), spinbut_nitemsperfeed, COLUMN2, i, i + 1);
583
642
        i++;
584
643
        /*
585
 
         * remove html tags
 
644
         * Remove html tags
586
645
         */
587
646
        label[i] = gtk_label_new("Strip html tags:  ");
588
647
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
596
655
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_striptags, COLUMN2, i, i + 1);
597
656
        i++;
598
657
        /*
599
 
         * upper case text
 
658
         * Upper case text
600
659
         */
601
660
        label[i] = gtk_label_new("Set all text to upper case:  ");
602
661
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
610
669
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_uppercase, COLUMN2, i, i + 1);
611
670
        i++;
612
671
        /*
613
 
         * homefeed / set current feed as homefeed
 
672
         * Homefeed / set current feed as homefeed
614
673
         */
615
674
        hbox5 = gtk_hbox_new(FALSE, 0);
616
675
        label[i] = gtk_label_new("Default feed <small>('Homefeed')</small>:  ");
627
686
        gtk_table_attach_defaults(GTK_TABLE(table), entry_homefeed, COLUMN2, i, i + 1);
628
687
        i++;
629
688
        /*
630
 
         * "open in browser" command line
 
689
         * "Open in browser" command line
631
690
         */
632
691
        label[i] = gtk_label_new("'Open in Browser' command line:  ");
633
692
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
639
698
        gtk_table_attach_defaults(GTK_TABLE(table), entry_openlinkcmd, COLUMN2, i, i + 1);
640
699
        i++;
641
700
        /*
642
 
         * "open in browser" args
 
701
         * "Open in browser" args
643
702
         */
644
703
        label[i] = gtk_label_new("'Open in Browser' optional arguments:  ");
645
704
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
651
710
        gtk_table_attach_defaults(GTK_TABLE(table), entry_openlinkargs, COLUMN2, i, i + 1);
652
711
        i++;
653
712
        /*
654
 
         * clock
 
713
         * Clock
655
714
         */
656
715
        label[i] = gtk_label_new("Clock:  ");
657
716
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
673
732
        gtk_table_attach_defaults(GTK_TABLE(table), rbut_box1, COLUMN2, i, i + 1);
674
733
        i++;
675
734
        /*
676
 
         * clock_font
 
735
         * Clock font
677
736
         */
678
737
        label[i] = gtk_label_new("Clock font <small>(Size can't be > ticker height)</small>:  ");
679
738
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
683
742
        gtk_table_attach_defaults(GTK_TABLE(table), clock_font_but, COLUMN2, i, i + 1);
684
743
        i++;
685
744
        /*
686
 
         * clock fg color
 
745
         * Clock fg color
687
746
         */
688
747
        hbox6 = gtk_hbox_new(FALSE, 0);
689
748
        label[i] = gtk_label_new("Clock foreground color:  ");
700
759
        gtk_table_attach_defaults(GTK_TABLE(table), clock_fg_color_but, COLUMN2, i, i + 1);
701
760
        i++;
702
761
        /*
703
 
         * clock bg color
 
762
         * Clock bg color
704
763
         */
705
764
        hbox7 = gtk_hbox_new(FALSE, 0);
706
765
        label[i] = gtk_label_new("Clock background color:  ");
717
776
        gtk_table_attach_defaults(GTK_TABLE(table), clock_bg_color_but, COLUMN2, i, i + 1);
718
777
        i++;
719
778
        /*
720
 
         * disable popups
 
779
         * Disable popups
721
780
         */
722
781
        label[i] = gtk_label_new("Disable error/warning popup windows:  ");
723
782
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
731
790
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_nopopups, COLUMN2, i, i + 1);
732
791
        i++;
733
792
        /*
734
 
         * pause on mouse-over
 
793
         * Pause on mouse-over
735
794
         */
736
795
        label[i] = gtk_label_new("Pause ticker on mouse-over:  ");
737
796
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
745
804
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_mouseover, COLUMN2, i, i + 1);
746
805
        i++;
747
806
        /*
748
 
         * mouse wheel scrolling behaviour
749
 
         */
750
 
        label[i] = gtk_label_new("Mouse wheel scrolling apply to:  ");
 
807
         * Disable left-ckick
 
808
         */
 
809
        label[i] = gtk_label_new("Disable left-click:  ");
 
810
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
 
811
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
 
812
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
 
813
        checkbut_noleftclick = gtk_check_button_new();
 
814
        if (prm->disable_leftclick == 'y')
 
815
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_noleftclick), TRUE);
 
816
        else if (prm->disable_leftclick == 'n')
 
817
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_noleftclick), FALSE);
 
818
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_noleftclick, COLUMN2, i, i + 1);
 
819
        i++;
 
820
        /*
 
821
         * Mouse wheel scrolling behaviour
 
822
         */
 
823
        label[i] = gtk_label_new("Mouse wheel scrolling applies to:  \n"
 
824
                "<small>(Ctrl + mouse wheel scrolling applies to other value)</small>");
751
825
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
752
826
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
753
827
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
758
832
        gtk_box_pack_start(GTK_BOX(rbut_box2), radio_but2_1, TRUE, TRUE, 0);
759
833
        gtk_box_pack_start(GTK_BOX(rbut_box2), radio_but2_2, TRUE, TRUE, 0);
760
834
        gtk_box_pack_start(GTK_BOX(rbut_box2), radio_but2_3, TRUE, TRUE, 0);
761
 
 
762
835
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_but2_1), TRUE);
763
836
        if (prm->mouse_wheel_scroll == 's')
764
837
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_but2_1), TRUE);
769
842
        gtk_table_attach_defaults(GTK_TABLE(table), rbut_box2, COLUMN2, i, i + 1);
770
843
        i++;
771
844
        /*
772
 
         * special chars
773
 
         */
774
 
        label[i] = gtk_label_new("Special characters enabled <small>(Text files only)</small>:  ");
775
 
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
776
 
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
777
 
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
778
 
        checkbut_spchars = gtk_check_button_new();
779
 
        if (prm->special_chars == 'y')
780
 
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_spchars), TRUE);
781
 
        else if (prm->special_chars == 'n')
782
 
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_spchars), FALSE);
783
 
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_spchars, COLUMN2, i, i + 1);
784
 
        i++;
785
 
        /*
786
 
         * 'new page' special char
787
 
         */
788
 
        label[i] = gtk_label_new("'New page' special character:  ");
789
 
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
790
 
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
791
 
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
792
 
        entry_newpagech = gtk_entry_new();
793
 
        gtk_entry_set_max_length(GTK_ENTRY(entry_newpagech), 1);
794
 
        /* this does nothing - gtk_entry_set_width_chars(GTK_ENTRY(entry_newpagech), 1);*/
795
 
        c[0] = prm->new_page_char;
796
 
        gtk_entry_set_text(GTK_ENTRY(entry_newpagech), c);
797
 
        gtk_table_attach_defaults(GTK_TABLE(table), entry_newpagech, COLUMN2,  i, i + 1);
798
 
        i++;
799
 
        /*
800
 
         * tab special char
801
 
         */
802
 
        label[i] = gtk_label_new("Tab special character:  ");
803
 
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
804
 
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
805
 
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
806
 
        entry_tabch = gtk_entry_new();
807
 
        gtk_entry_set_max_length(GTK_ENTRY(entry_tabch), 1);
808
 
        /* this does nothing - gtk_entry_set_width_chars(GTK_ENTRY(entry_tabch), 1);*/
809
 
        c[0] = prm->tab_char;
810
 
        gtk_entry_set_text(GTK_ENTRY(entry_tabch), c);
811
 
        gtk_table_attach_defaults(GTK_TABLE(table), entry_tabch, COLUMN2, i, i + 1);
 
845
         * Enable feed re-ordering (by user)
 
846
         */
 
847
        label[i] = gtk_label_new("Enable feed re-ordering (by user):  ");
 
848
        gtk_label_set_use_markup(GTK_LABEL(label[i]), TRUE);
 
849
        gtk_misc_set_alignment(GTK_MISC(label[i]), 0, 0.5);
 
850
        gtk_table_attach_defaults(GTK_TABLE(table), label[i], COLUMN1, i, i + 1);
 
851
        checkbut_feedordering = gtk_check_button_new();
 
852
        if (prm->enable_feed_ordering == 'y')
 
853
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_feedordering), TRUE);
 
854
        else if (prm->enable_feed_ordering == 'n')
 
855
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbut_feedordering), FALSE);
 
856
        gtk_table_attach_defaults(GTK_TABLE(table), checkbut_feedordering, COLUMN2, i, i + 1);
812
857
 
813
 
        /* connect buttons / widgets to callbacks */
 
858
        /* Connect buttons / widgets to callbacks */
814
859
        g_signal_connect(G_OBJECT(sysfg_but), "clicked", G_CALLBACK(use_system_fg_color_ticker), NULL);
815
860
        g_signal_connect(G_OBJECT(sysbg_but), "clicked", G_CALLBACK(use_system_bg_color_ticker), NULL);
816
861
        g_signal_connect(G_OBJECT(top_but), "clicked", G_CALLBACK(move_to_top), NULL);
820
865
        g_signal_connect(G_OBJECT(sysfgclock_but), "clicked", G_CALLBACK(use_system_fg_color_clock), NULL);
821
866
        g_signal_connect(G_OBJECT(sysbgclock_but), "clicked", G_CALLBACK(use_system_bg_color_clock), NULL);
822
867
 
823
 
        /* this  will let us know if changes have been made / applied / must be applied */
 
868
        /* This  will let us know if changes have been made / applied / must be applied */
824
869
        prm_bak = malloc2(sizeof(Params));
825
870
        memcpy((void *)prm_bak, (const void *)prm, sizeof(Params));
826
 
        changes_has_been_applied = FALSE;
 
871
        changes_have_been_applied = FALSE;
827
872
 
828
873
        gtk_widget_show_all(dialog);
829
874
 
830
875
        while (TRUE) {
831
876
                response = gtk_dialog_run(GTK_DIALOG(dialog));
832
877
                env->suspend_rq = TRUE;
833
 
                if (response == GTK_RESPONSE_NO) {      /* reset */
 
878
                if (response == GTK_RESPONSE_NO) {      /* Reset */
834
879
                        if (question_win("Reset all settings to default values ?\n"
835
880
                                        "(Your current settings will be lost)") == YES) {
836
 
                                /* ok like that? */
 
881
                                /* OK like that ? */
837
882
                                set_default_options(prm);
838
883
                                current_feed();
839
884
                                env->reload_rq = TRUE;
842
887
                        } else
843
888
                                continue;
844
889
                } else if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK) {
845
 
                        /* delay */
 
890
                        /* Delay */
846
891
                        prm->delay = (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbut_delay));
847
892
 
848
 
                        /* shift size */
 
893
                        /* Shift size */
849
894
                        prm->shift_size = (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbut_shiftsize));
850
895
 
851
 
                        /* colors - fg and bg */
 
896
                        /* Colors - fg and bg */
852
897
                        gtk_color_button_get_color(GTK_COLOR_BUTTON(fg_color_but), &prm->fg_color);
853
898
                        prm->fg_color_alpha = gtk_color_button_get_alpha(GTK_COLOR_BUTTON(fg_color_but));
854
899
                        gtk_color_button_get_color(GTK_COLOR_BUTTON(bg_color_but), &prm->bg_color);
855
900
                        prm->bg_color_alpha = gtk_color_button_get_alpha(GTK_COLOR_BUTTON(bg_color_but));
856
901
 
857
 
                        /* font */
 
902
                        /* Font */
858
903
                        str_n_cpy(prm->font_n_s, (char *)gtk_font_button_get_font_name(
859
 
                                                GTK_FONT_BUTTON(font_but)), 68);
 
904
                                                GTK_FONT_BUTTON(font_but)), FONT_MAXLEN);
860
905
 
861
 
                        /* window x, y, w, h */
 
906
                        /* Window x, y, w, h */
862
907
                        prm->win_x = (gint)gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbut_winx));
863
908
                        prm->win_y = (gint)gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbut_winy));
864
909
                        prm->win_w = (gint)gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbut_winw));
865
910
 
866
 
                        /* if win_h is != 0, it will override requested font size with computed one */
 
911
                        /* If win_h is != 0, it will override requested font size with computed one. */
867
912
                        prm->win_h = (gint)gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbut_winh));
868
913
                        if (prm->win_h > 0 && prm->win_h < DRWA_HEIGHT_MIN)
869
914
                                prm->win_h = DRWA_HEIGHT_MIN;
870
915
 
871
 
                        /* window decoration */
 
916
                        /* Window decoration */
872
917
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_windec)))
873
918
                                prm->windec = 'y';
874
919
                        else
875
920
                                prm->windec = 'n';
876
921
 
877
 
                        /* always-on-top */
 
922
                        /* Window always-on-top */
878
923
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_alwaysontop)))
879
924
                                prm->always_on_top = 'y';
880
925
                        else
881
926
                                prm->always_on_top = 'n';
882
927
 
883
 
                        /* window transparency */
 
928
                        /* Window transparency */
884
929
                        prm->win_transparency = gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbut_wintransparency)) / 10;
885
930
 
886
 
                        /* icon in taskbar */
 
931
                        /* Icon in taskbar */
887
932
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_iconintaskbar)))
888
933
                                prm->icon_in_taskbar = 'y';
889
934
                        else
890
935
                                prm->icon_in_taskbar = 'n';
891
936
 
892
 
                        /* window sticky */
 
937
                        /* Window sticky */
893
938
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_winsticky)))
894
939
                                prm->win_sticky = 'y';
895
940
                        else
896
941
                                prm->win_sticky = 'n';
897
942
 
898
 
                        /* shadow */
 
943
                        /* Shadow */
899
944
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_shadow)))
900
945
                                prm->shadow = 'y';
901
946
                        else
904
949
                        prm->shadow_offset_y = (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbut_shadowoffsety));
905
950
                        prm->shadow_fx = (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbut_shadowfx));
906
951
 
907
 
                        /* line and cut line delimiters */
 
952
                        /* Line and cut line delimiters */
908
953
                        str_n_cpy(prm->line_delimiter,
909
954
                                (char *)gtk_entry_get_text(GTK_ENTRY(entry_linedel)), DELIMITER_MAXLEN);
910
955
                        str_n_cpy(prm->cutline_delimiter,
911
956
                                (char *)gtk_entry_get_text(GTK_ENTRY(entry_cutlinedel)), DELIMITER_MAXLEN);
912
957
 
 
958
                        /* Enable special chars */
 
959
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_spchars)))
 
960
                                prm->special_chars = 'y';
 
961
                        else
 
962
                                prm->special_chars = 'n';
 
963
                        prm->new_page_char = gtk_entry_get_text(GTK_ENTRY(entry_newpagech))[0];
 
964
                        prm->tab_char = gtk_entry_get_text(GTK_ENTRY(entry_tabch))[0];
 
965
 
913
966
                        /* rss refresh */
914
967
                        prm->rss_refresh = (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbut_rssrefresh));
915
968
 
916
 
                        /* rss title */
917
 
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_rsstitle)))
918
 
                                prm->rss_title = 'y';
919
 
                        else
920
 
                                prm->rss_title = 'n';
921
 
                        str_n_cpy(prm->rss_title_delimiter,
922
 
                                (char *)gtk_entry_get_text(GTK_ENTRY(entry_rsstitledel)), DELIMITER_MAXLEN);
923
 
 
924
 
                        /* rss decription */
925
 
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_rssdes)))
926
 
                                prm->rss_description = 'y';
927
 
                        else
928
 
                                prm->rss_description = 'n';
929
 
                        str_n_cpy(prm->rss_description_delimiter,
930
 
                                (char *)gtk_entry_get_text(GTK_ENTRY(entry_rssdesdel)), DELIMITER_MAXLEN);
931
 
 
932
 
                        /* read n items max per feed */
 
969
                        /* Feed title */
 
970
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_feedtitle)))
 
971
                                prm->feed_title = 'y';
 
972
                        else
 
973
                                prm->feed_title = 'n';
 
974
                        str_n_cpy(prm->feed_title_delimiter,
 
975
                                (char *)gtk_entry_get_text(GTK_ENTRY(entry_feedtitledel)), DELIMITER_MAXLEN);
 
976
 
 
977
                        /* Item title */
 
978
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_itemtitle)))
 
979
                                prm->item_title = 'y';
 
980
                        else
 
981
                                prm->item_title = 'n';
 
982
                        str_n_cpy(prm->item_title_delimiter,
 
983
                                (char *)gtk_entry_get_text(GTK_ENTRY(entry_itemtitledel)), DELIMITER_MAXLEN);
 
984
 
 
985
                        /* Item decription */
 
986
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_itemdes)))
 
987
                                prm->item_description = 'y';
 
988
                        else
 
989
                                prm->item_description = 'n';
 
990
                        str_n_cpy(prm->item_description_delimiter,
 
991
                                (char *)gtk_entry_get_text(GTK_ENTRY(entry_itemdesdel)), DELIMITER_MAXLEN);
 
992
 
 
993
                        /* Read n items max per feed */
933
994
                        prm->n_items_per_feed = (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbut_nitemsperfeed));
934
995
 
935
 
                        /* strip html tags */
 
996
                        /* Strip html tags */
936
997
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_striptags)))
937
998
                                prm->strip_html_tags = 'y';
938
999
                        else
939
1000
                                prm->strip_html_tags = 'n';
940
1001
 
941
 
                        /* upper case text */
 
1002
                        /* Upper case text */
942
1003
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_uppercase)))
943
1004
                                prm->upper_case_text = 'y';
944
1005
                        else
945
1006
                                prm->upper_case_text = 'n';
946
1007
 
947
 
                        /* homefeed */
 
1008
                        /* Homefeed */
948
1009
                        str_n_cpy(prm->homefeed,
949
1010
                                (char *)gtk_entry_get_text(GTK_ENTRY(entry_homefeed)), FILE_NAME_MAXLEN);
950
1011
 
951
 
                        /* open link cmd */
 
1012
                        /* Open link cmd */
952
1013
                        str_n_cpy(prm->open_link_cmd,
953
1014
                                (char *)gtk_entry_get_text(GTK_ENTRY(entry_openlinkcmd)), FILE_NAME_MAXLEN);
954
1015
 
955
 
                        /* open link cmd */
 
1016
                        /* Open link args */
956
1017
                        str_n_cpy(prm->open_link_args,
957
1018
                                (char *)gtk_entry_get_text(GTK_ENTRY(entry_openlinkargs)), FILE_NAME_MAXLEN);
958
1019
 
959
 
                        /* clock */
 
1020
                        /* Clock */
960
1021
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_but1_1)))
961
1022
                                prm->clock = 'l';
962
1023
                        else if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_but1_2)))
976
1037
                        prm->clock_bg_color_alpha = gtk_color_button_get_alpha(
977
1038
                                                GTK_COLOR_BUTTON(clock_bg_color_but));
978
1039
 
979
 
                        /* disable popups */
 
1040
                        /* Disable popups */
980
1041
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_nopopups)))
981
1042
                                prm->disable_popups = 'y';
982
1043
                        else
983
1044
                                prm->disable_popups = 'n';
984
1045
 
985
 
                        /* pause on mouse-over */
 
1046
                        /* Pause on mouse-over */
986
1047
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_mouseover)))
987
1048
                                prm->pause_on_mouseover = 'y';
988
1049
                        else
989
1050
                                prm->pause_on_mouseover = 'n';
990
1051
 
991
 
                        /* mouse wheel scrolling behaviour */
 
1052
                        /* Disable left-click */
 
1053
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_noleftclick)))
 
1054
                                prm->disable_leftclick = 'y';
 
1055
                        else
 
1056
                                prm->disable_leftclick = 'n';
 
1057
 
 
1058
                        /* Mouse wheel scrolling behaviour */
992
1059
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_but2_1)))
993
1060
                                prm->mouse_wheel_scroll = 's';
994
1061
                        else if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio_but2_2)))
996
1063
                        else
997
1064
                                prm->mouse_wheel_scroll = 'n';
998
1065
 
999
 
                        /* special chars */
1000
 
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_spchars)))
1001
 
                                prm->special_chars = 'y';
 
1066
                        /* Enable feed re-ordering (by user) */
 
1067
                        if ((gboolean)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbut_feedordering)))
 
1068
                                prm->enable_feed_ordering = 'y';
1002
1069
                        else
1003
 
                                prm->special_chars = 'n';
1004
 
                        prm->new_page_char = gtk_entry_get_text(GTK_ENTRY(entry_newpagech))[0];
1005
 
                        prm->tab_char = gtk_entry_get_text(GTK_ENTRY(entry_tabch))[0];
 
1070
                                prm->enable_feed_ordering = 'n';
1006
1071
                }
1007
 
                /* we want a new pixmap so that changes will be effective... now! */
1008
 
                if (response == GTK_RESPONSE_APPLY) {   /* force apply */
 
1072
                /* We want a new pixmap so that changes will be effective... now! */
 
1073
                if (response == GTK_RESPONSE_APPLY) {   /* Force apply */
1009
1074
                        current_feed();
1010
 
                        env->reload_rq = TRUE;  /* compute_rq would skip to next pixmap if any */
 
1075
                        env->reload_rq = TRUE;  /* 'compute_rq' would skip to next pixmap if any */
1011
1076
                        g_timeout_add_full(G_PRIORITY_DEFAULT, 100, update_everything, NULL, NULL);
1012
 
                        changes_has_been_applied = TRUE;
 
1077
                        changes_have_been_applied = TRUE;
1013
1078
                        env->suspend_rq = FALSE;
1014
1079
                } else if (response == GTK_RESPONSE_OK) {
1015
 
                        /* apply and save when necessary -> ok like that? */
 
1080
                        if (prm->item_title == 'n' && prm->item_description == 'n')
 
1081
                                if (question_win("You have unchecked both 'Item title' and 'Item description'.\n"
 
1082
                                                "No much useful information will be displayed. Continue ?") == NO)
 
1083
                                        continue;
 
1084
                        /* Apply and save when necessary -> OK like that ? */
1016
1085
                        if (memcmp((const void *)prm, (const void *)prm_bak, sizeof(Params)) != 0 || \
1017
 
                                        changes_has_been_applied) {
 
1086
                                        changes_have_been_applied) {
1018
1087
                                current_feed();
1019
1088
                                env->reload_rq = TRUE;
1020
1089
                                g_timeout_add_full(G_PRIORITY_DEFAULT, 100, update_everything, NULL, NULL);
1022
1091
                        }
1023
1092
                        break;
1024
1093
                } else {
1025
 
                        /* restore and apply when necessary -> ok like that? */
 
1094
                        /* Restore and apply when necessary -> OK like that ? */
1026
1095
                        if (memcmp((const void *)prm, (const void *)prm_bak, sizeof(Params)) != 0 || \
1027
 
                                        changes_has_been_applied) {
 
1096
                                        changes_have_been_applied) {
1028
1097
                                memcpy((void *)prm, (const void *)prm_bak, sizeof(Params));
1029
1098
                                current_feed();
1030
1099
                                env->reload_rq = TRUE;
1039
1108
        env->suspend_rq = FALSE;
1040
1109
        return exit_status;
1041
1110
}
1042
 
#endif