use 5.010_000;
use strict;
use utf8;
+use version 0.77;
use Glib qw(TRUE FALSE);
use Gtk2;
use POSIX qw(setlocale);
netm_frame => _('NetworkManager'),
diff_frame => _('Viewing patches'),
mpass_frame => _('Master passphrase'),
+ compose_frame => _('Compose window'),
+ qs_frame => _('Quick search'),
l_oth_use_dlg => _('Use detached address book edit dialogue'),
h_oth_use_dlg => _('If true use a separate dialogue to edit a person\'s details. Otherwise will use a form embedded in the address book\'s main window.'),
h_gui_zero_char => _('Replaces \'0\' with the given character in Folder List.'),
l_gui_type_any => _('Editable headers'),
h_gui_type_any => _('Allows to manually type any value in Compose Window header entries or just select from the available choices in the associated dropdown list.'),
+ l_gui_warn_send_multi => _('Warn when sending to more than'),
+ h_gui_warn_send_multi => _('Warn when sending to multiple recipients.'),
+ l_gui_warn_send_multi_threshold => _('recipients'),
+ h_gui_warn_send_multi_threshold => _('Warn when sending to multiple recipients.'),
l_gui_next_del => _('Select next message on delete'),
h_gui_next_del => _('When deleting a message, toggles between selecting the next one (newer message) or the previous one (older message).'),
h_col_log_msg => _('Colour for messages in log window.'),
l_col_log_out => _('Client messages'),
h_col_log_out => _('Colour for messages sent to servers in log window.'),
- l_col_log_warn => _('Warnings'),
+ l_col_log_warn => _('Warning messages'),
h_col_log_warn => _('Colour for warning messages in log window.'),
+ l_col_tags_bg => _('Tags background'),
+ h_col_tags_bg => _('Background colour for tags in message view.'),
+ l_col_tags_text => _('Tags text'),
+ h_col_tags_text => _('Text colour for tags in message view.'),
+
+ l_col_default_header_bg => _('Default headers background'),
+ h_col_default_header_bg => _('Background colour for default headers in compose window.'),
+ l_col_default_header_text => _('Default headers text'),
+ h_col_default_header_text => _('Text colour for default headers in compose window.'),
+
+ l_col_qs_active_bg => _('Active quick search background'),
+ h_col_qs_active_bg => _('Background colour for active quick search.'),
+ l_col_qs_active_text => _('Active quick search text'),
+ h_col_qs_active_text => _('Text colour for active quick search.'),
+ l_col_qs_error_bg => _('Quick search error background'),
+ h_col_qs_error_bg => _('Background colour for quick search error.'),
+ l_col_qs_error_text => _('Quick search error text'),
+ h_col_qs_error_text => _('Text colour for quick search error.'),
+
l_col_diff_add => _('Added lines'),
h_col_diff_add => _('Colour for added lines in patches.'),
l_col_diff_del => _('Deleted lines'),
h_col_diff_del => _('Colour for deleted lines in patches.'),
l_col_diff_hunk => _('Hunk lines'),
- h_col_diff_hunk => _('Color for hunk headers in patches.'),
+ h_col_diff_hunk => _('Colour for hunk headers in patches.'),
l_win_x => _('X position'),
h_win_x => _('X coordinate for window\'s top-left corner.'),
sub version_greater_or_equal {
my ($version, $refvers) = @_;
- my @version = split (/\./, $version);
- my @refvers = split (/\./, $refvers);
- while ($#version < $#refvers) {
- push (@version, '0');
- }
- my $idx = 0;
- while (($idx <= $#refvers)
- and (int ($version[$idx]) == int ($refvers[$idx]))) {
- ++$idx;
- }
- return TRUE if (($idx > $#refvers)
- or (int ($version[$idx]) >= int ($refvers[$idx])));
+ return TRUE if (version->parse($version) >= version->parse($refvers));
return FALSE;
}
return new_hbox_spaced_pack ($glabel, $gentry);
}
+sub check_button_and_text_box_update_sens($$$) {
+ my ($cb, $gentry, $glabel) = @_;
+ $gentry->set_sensitive ($cb->get_active);
+ $glabel->set_sensitive ($cb->get_active);
+}
+
+sub new_check_button_and_text_box_for_int($$$$) {
+ my ($hash, $key, $key2, $vhash) = @_;
+ my $name = $$hash{$key}[NAME];
+ my $label = $$hash{$key}[LABEL];
+ #
+ my $cb = Gtk2::CheckButton->new ($label);
+ my $value = $$vhash{$name};
+ $value //= $$hash{$key}[CMDEF];
+ $cb->set_active ($value eq '1');
+ set_widget_hint ($cb, $$hash{$key}[DESC]);
+ set_widget_sens ($cb, $$hash{$key}[CMVER]);
+ #
+ my $name2 = $$hash{$key2}[NAME];
+ my $label2 = $$hash{$key2}[LABEL];
+ my @type = split (/,/, $$hash{$key2}[TYPE]);
+ push (@type, 0), push (@type, 10000) unless ($#type > 0);
+ #
+ my $pagei = int (($type[2] - $type[1]) / 10);
+ my $gentry = Gtk2::SpinButton->new_with_range ($type[1], $type[2], $pagei);
+ my $value2 = $$vhash{$name2};
+ my $glabel = Gtk2::Label->new ($label2);
+ $value2 //= $$hash{$key2}[CMDEF];
+ $gentry->set_numeric (TRUE);
+ $gentry->set_value ($value2);
+ $gentry->signal_connect('value-changed' => sub {
+ my ($w, $e) = @_;
+ handle_int_value ($w, $e, \$$vhash{$name});
+ });
+ set_widget_hint ($gentry, $$hash{$key2}[DESC]);
+ set_widget_sens ($gentry, $$hash{$key2}[CMVER]);
+ $glabel->set_sensitive ($gentry->sensitive);
+ #
+ $cb->signal_connect ('clicked' => sub {
+ my ($w, $e) = @_;
+ handle_bool_value ($w, $e, \$$vhash{$name});
+ check_button_and_text_box_update_sens($w, $gentry, $glabel);
+ });
+ #
+ return new_hbox_spaced_pack ($cb, $gentry, $glabel);
+}
+
sub new_text_box_for_nchar($$$) {
my ($hash, $key, $vhash) = @_;
my $name = $$hash{$key}[NAME];
return $hbox;
}
+sub new_hbox_pack_compact {
+ my $hbox = Gtk2::HBox->new (FALSE);
+ $hbox->set_border_width (0);
+ foreach (@_) {
+ $hbox->pack_start ($_, FALSE, FALSE, 0);
+ }
+ return $hbox;
+}
+
sub new_vbox_pack {
my $vbox = Gtk2::VBox->new (FALSE, 5);
$vbox->set_border_width (PAGE_SPC);
'3.12.0.44',
'0',
],
+ warn_send_multi => [
+ 'warn_sending_many_recipients',
+ $xl::s{l_gui_warn_send_multi},
+ $xl::s{l_gui_warn_send_multi},
+ 'bool',
+ '3.14.1.125',
+ '0',
+ ],
+ warn_send_multi_threshold => [
+ 'warn_sending_many_recipients_num',
+ $xl::s{l_gui_warn_send_multi_threshold},
+ $xl::s{l_gui_warn_send_multi_threshold},
+ 'int,1,1000',
+ '3.14.1.125',
+ '2',
+ ],
next_del => [
'next_on_delete',
$xl::s{l_gui_next_del},
new_hbox_pack (
new_check_button_for (\%pr::gui, 'no_markup', \%HPVALUE),
new_check_button_for (\%pr::gui, 'margin_co', \%HPVALUE),
- new_check_button_for (\%pr::gui, 'type_any', \%HPVALUE)),
+ new_check_button_for (\%pr::gui, 'type_any', \%HPVALUE),
+ new_check_button_and_text_box_for_int (\%pr::gui, 'warn_send_multi', 'warn_send_multi_threshold', \%HPVALUE)),
$xl::s{compo_frame}, 'not-packed'),
FALSE, FALSE, FRAME_SPC);
$gf->pack_start ($cb_dot_lines, FALSE, FALSE, 0);
'3.8.0.54',
'#a52a2a',
],
+ tags_bg => [
+ 'tags_bgcolor',
+ $xl::s{l_col_tags_bg},
+ $xl::s{h_col_tags_bg},
+ 'color',
+ '3.14.1.31',
+ '#f5f6be',
+ ],
+ tags_text => [
+ 'tags_color',
+ $xl::s{l_col_tags_text},
+ $xl::s{h_col_tags_text},
+ 'color',
+ '3.14.1.31',
+ '#000000',
+ ],
+ default_header_bg => [
+ 'default_header_bgcolor',
+ $xl::s{l_col_default_header_bg},
+ $xl::s{h_col_default_header_bg},
+ 'color',
+ '3.14.1.31',
+ '#f5f6be',
+ ],
+ default_header_text => [
+ 'default_header_color',
+ $xl::s{l_col_default_header_text},
+ $xl::s{h_col_default_header_text},
+ 'color',
+ '3.14.1.31',
+ '#000000',
+ ],
+ qs_active_bg => [
+ 'qs_active_bgcolor',
+ $xl::s{l_col_qs_active_bg},
+ $xl::s{h_col_qs_active_bg},
+ 'color',
+ '3.14.1.31',
+ '#f5f6be',
+ ],
+ qs_active_text => [
+ 'qs_active_color',
+ $xl::s{l_col_qs_active_text},
+ $xl::s{h_col_qs_active_text},
+ 'color',
+ '3.14.1.31',
+ '#000000',
+ ],
+ qs_error_bg => [
+ '',
+ $xl::s{l_col_qs_error_bg},
+ $xl::s{h_col_qs_error_bg},
+ 'qs_error_bgcolor',
+ '3.14.1.31',
+ '#ff7070',
+ ],
+ qs_error_text => [
+ '',
+ $xl::s{l_col_qs_error_text},
+ $xl::s{h_col_qs_error_text},
+ 'qs_error_color',
+ '3.14.1.31',
+ '#000000',
+ ],
);
sub new_colours_page() {
return new_vbox_pack (
new_subpage_frame (
new_vbox_pack (
- new_color_button_for (\%pr::col, 'emphasis', \%HPVALUE)),
+ new_color_button_for (\%pr::col, 'emphasis', \%HPVALUE),
+ new_hbox_pack_compact (
+ new_color_button_for (\%pr::col, 'tags_text', \%HPVALUE),
+ new_color_button_for (\%pr::col, 'tags_bg', \%HPVALUE))),
$xl::s{msgview_frame}, 'not-packed'),
new_subpage_frame (
- new_vbox_pack (
- new_color_button_for (\%pr::col, 'log_err', \%HPVALUE),
- new_color_button_for (\%pr::col, 'log_in', \%HPVALUE),
- new_color_button_for (\%pr::col, 'log_msg', \%HPVALUE),
- new_color_button_for (\%pr::col, 'log_out', \%HPVALUE),
- new_color_button_for (\%pr::col, 'log_warn', \%HPVALUE)),
+ new_hbox_pack (
+ new_vbox_pack_compact (
+ new_color_button_for (\%pr::col, 'log_err', \%HPVALUE),
+ new_color_button_for (\%pr::col, 'log_warn', \%HPVALUE),
+ new_color_button_for (\%pr::col, 'log_msg', \%HPVALUE)),
+ new_vbox_pack_compact (
+ new_color_button_for (\%pr::col, 'log_in', \%HPVALUE),
+ new_color_button_for (\%pr::col, 'log_out', \%HPVALUE))),
$xl::s{log_frame}, 'not-packed'),
new_subpage_frame (
new_vbox_pack (
new_color_button_for (\%pr::col, 'diff_add', \%HPVALUE),
new_color_button_for (\%pr::col, 'diff_del', \%HPVALUE),
new_color_button_for (\%pr::col, 'diff_hunk', \%HPVALUE)),
- $xl::s{diff_frame}, 'not-packed')
+ $xl::s{diff_frame}, 'not-packed'),
+ new_subpage_frame (
+ new_hbox_pack (
+ new_color_button_for (\%pr::col, 'default_header_text', \%HPVALUE),
+ new_color_button_for (\%pr::col, 'default_header_bg', \%HPVALUE)),
+ $xl::s{compose_frame}, 'not-packed'),
+ new_subpage_frame (
+ new_hbox_pack (
+ new_vbox_pack_compact (
+ new_color_button_for (\%pr::col, 'qs_active_text', \%HPVALUE),
+ new_color_button_for (\%pr::col, 'qs_error_text', \%HPVALUE)),
+ new_vbox_pack_compact (
+ new_color_button_for (\%pr::col, 'qs_active_bg', \%HPVALUE),
+ new_color_button_for (\%pr::col, 'qs_error_bg', \%HPVALUE))),
+ $xl::s{qs_frame}, 'not-packed')
);
}