use version 0.77;
use Glib qw(TRUE FALSE);
use Gtk3;
+use File::Which;
use POSIX qw(setlocale);
use Locale::gettext;
use Encode;
exit_fact => _('There are unapplied modifications.'),
exit_question => _('Do you really want to quit?'),
- tab_colours => _('Colours'),
- tab_behaviour => _('Behaviour'),
- tab_gui => _('GUI'),
- tab_other => _('Other'),
- tab_winpos => _('Windows'),
- tab_accounts => _('Accounts'),
- tab_plugins => _('Plugins'),
- tab_hotkeys => _('Hotkeys'),
- tab_info => _('Info'),
-
- ab_frame => _('Addressbook'),
- mem_frame => _('Memory'),
- msgview_frame => _('Message View'),
- log_frame => _('Log window'),
- dnd_frame => _('Drag \'n\' drop'),
- ssl_frame => _('Secure Sockets Layer'),
- msgs_frame => _('Messages'),
- swc_frame => _('Completion'),
- stripes_frame => _('Coloured stripes'),
- sbar_frame => _('Scroll bars'),
- mlist_frame => _('Message List'),
- mview_frame => _('Message View'),
- compo_frame => _('Compose window'),
- 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.'),
l_oth_max_use => _('Maximum memory for message cache'),
# modification flag
my $MODIFIED = 0;
-# index constants for preference arrays
-use constant NAME => 0; # the name on the rc file
-use constant LABEL => 1; # the label on the GUI
-use constant DESC => 2; # the description for the hint/help
-use constant TYPE => 3; # data type: bool, int, float, string, color
-use constant CMVER => 4; # lowest[,highest] Claws Mail version(s) the feature exists
-use constant CMDEF => 5; # default value for the preference in Claws Mail
-use constant PLUGIN => 6; # plugin section (only in plugin preferences)
-
-# constants for GUI spacing
-use constant HBOX_PAD => 5;
-use constant FRAME_SPC => 2;
-use constant PAGE_SPC => 5;
-
-# for data references indexing
-use constant VALUE => 0;
-use constant IVALUE => 1;
+use constant {
+ # index constants for preference arrays
+ NAME => 0, # the name on the rc file
+ LABEL => 1, # the label on the GUI
+ DESC => 2, # the description for the hint/help
+ TYPE => 3, # data type: bool, int, float, string, color
+ CMVER => 4, # lowest[,highest] Claws Mail version(s) the feature exists
+ CMDEF => 5, # default value for the preference in Claws Mail
+ PLUGIN => 6, # plugin section (only in plugin preferences)
+ # constants for GUI spacing
+ HBOX_PAD => 5,
+ GRID_SPC => 10,
+ # for data references indexing
+ VALUE => 0,
+ IVALUE => 1,
+ # hotkey list store columns
+ C_LABEL => 0,
+ C_HOTKEY => 1,
+ C_GROUP => 2,
+ C_ACCEL => 3,
+ C_ODDITY => 4,
+};
# version functions
}
sub get_claws_version {
- $_ = qx/which claws-mail/;
- chomp;
- return "" unless ($_); # not installed
+ $_ = which ('claws-mail');
+ return "" unless defined $_; # not installed
my $res = "";
$_ = qx/$_ -v/;
chomp;
if defined $$dataref->[IVALUE];
}
-sub handle_string_value {
- my ($widget, $event, $dataref) = @_;
- $$dataref->[VALUE] = $widget->get_text ();
- $MODIFIED += $$dataref->[VALUE] ne $$dataref->[IVALUE]? 1: -1
- if defined $$dataref->[IVALUE];
-}
-
sub handle_nchar_value {
my ($widget, $event, $dataref, $minlen, $maxlen) = @_;
$_ = substr ($widget->get_text (), 0, $maxlen);
# more graphic helpers
-sub new_hbox_pack {
- my $hbox = Gtk3::HBox->new (FALSE);
- $hbox->set_border_width (PAGE_SPC);
- foreach (@_) {
- $hbox->pack_start ($_, FALSE, FALSE, 0);
- }
- return $hbox;
-}
-
-sub new_hbox_pack_compact {
- my $hbox = Gtk3::HBox->new (FALSE);
- $hbox->set_border_width (0);
- foreach (@_) {
- $hbox->pack_start ($_, FALSE, FALSE, 0);
- }
- return $hbox;
-}
-
-sub new_vbox_pack {
- my $vbox = Gtk3::VBox->new (FALSE, 5);
- $vbox->set_border_width (PAGE_SPC);
- foreach (@_) {
- $vbox->pack_start ($_, FALSE, FALSE, 0);
- }
- return $vbox;
-}
-
-sub new_vbox_pack_compact {
- my $vbox = Gtk3::VBox->new (FALSE, 0);
- $vbox->set_border_width (0);
- foreach (@_) {
- $vbox->pack_start ($_, FALSE, FALSE, 0);
- }
- return $vbox;
-}
-
-sub new_subpage_frame {
- my ($box, $title, $notpacked) = @_;
- my $frame = Gtk3::Frame->new ($title);
- $frame->add ($box);
- return new_vbox_pack ($frame) unless defined ($notpacked);
- return $frame;
-}
-
sub new_grid {
my ($border_w, $row_s, $col_s) = @_;
- $border_w //= 10;
- $row_s //= 10;
- $col_s //= 10;
+ $border_w //= GRID_SPC;
+ $row_s //= GRID_SPC;
+ $col_s //= GRID_SPC;
my $grid = Gtk3::Grid->new;
$grid->set_border_width ($border_w);
$grid->set_row_spacing ($row_s);
);
sub new_other_page() {
- return new_vbox_pack (
- new_subpage_frame (
- new_vbox_pack (
- new_check_button_for(\%pr::oth, 'use_dlg', \%HPVALUE)),
- $xl::s{ab_frame}, 'not-packed'),
- new_subpage_frame (
- new_vbox_pack (
- new_text_box_for_int(\%pr::oth, 'max_use', \%HPVALUE),
- new_text_box_for_int(\%pr::oth, 'min_time', \%HPVALUE)),
- $xl::s{mem_frame}, 'not-packed'),
- new_subpage_frame (
- new_vbox_pack (
- new_check_button_for(\%pr::oth, 'use_netm', \%HPVALUE)),
- $xl::s{netm_frame}, 'not-packed'),
- new_subpage_frame (
- new_vbox_pack (
- new_text_box_for_int(\%pr::oth, 'mp_rounds', \%HPVALUE)),
- $xl::s{mpass_frame}, 'not-packed')
- );
+ return new_grid_pack (1, 12, [
+ [ _('Addressbook') ],
+ [ new_check_button_for(\%pr::oth, 'use_dlg', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Memory') ],
+ [ new_text_box_for_int(\%pr::oth, 'max_use', \%HPVALUE) ],
+ [ new_text_box_for_int(\%pr::oth, 'min_time', \%HPVALUE) ],
+ [ '--' ],
+ [ _('NetworkManager') ],
+ [ new_check_button_for(\%pr::oth, 'use_netm', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Master passphrase') ],
+ [ new_text_box_for_int(\%pr::oth, 'mp_rounds', \%HPVALUE) ]
+ ]);
}
%pr::gui = ( # gui bells and whistles
);
sub new_gui_page() {
- my $gf = Gtk3::VBox->new (FALSE, 5);
- $gf->set_border_width (PAGE_SPC);
-
- my $cb_dot_lines = new_check_button_for (\%pr::gui, 'dot_lines', \%HPVALUE);
- my $cb_toolbar_d = new_check_button_for (\%pr::gui, 'toolbar_d', \%HPVALUE);
- my $tb_zero_char = new_text_box_for_nchar (\%pr::gui, 'zero_char', \%HPVALUE);
-
- $gf->pack_start (new_subpage_frame (
- new_vbox_pack (
- new_check_button_for (\%pr::gui, 'strip_all', \%HPVALUE),
- new_check_button_for (\%pr::gui, 'strip_sum', \%HPVALUE),
- new_text_box_for_int (\%pr::gui, 'strip_off', \%HPVALUE)),
- $xl::s{stripes_frame}, 'not-packed'),
- FALSE, FALSE, FRAME_SPC);
- $gf->pack_start (new_subpage_frame (
- new_vbox_pack (
- new_check_button_for (\%pr::gui, 'b_unread', \%HPVALUE),
- new_check_button_for (\%pr::gui, 'swp_from', \%HPVALUE),
- new_check_button_for (\%pr::gui, 'two_linev', \%HPVALUE),
- new_check_button_for (\%pr::gui, 'next_del', \%HPVALUE),
- new_selection_box_for (\%pr::gui, 'from_show', \%HPVALUE)),
- $xl::s{mlist_frame}, 'not-packed'),
- FALSE, FALSE, FRAME_SPC);
- $gf->pack_start (new_subpage_frame (
- new_hbox_pack (
- new_check_button_for (\%pr::gui, 'cursor_v', \%HPVALUE),
- new_check_button_for (\%pr::gui, 'mview_date', \%HPVALUE)),
- $xl::s{mview_frame}, 'not-packed'),
- FALSE, FALSE, FRAME_SPC);
- $gf->pack_start (new_subpage_frame (
- new_vbox_pack (
- new_hbox_pack_compact (
- 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_text_box_for_int (\%pr::gui, 'warn_send_multi', \%HPVALUE)),
- $xl::s{compo_frame}, 'not-packed'),
- FALSE, FALSE, FRAME_SPC);
- $gf->pack_start ($cb_dot_lines, FALSE, FALSE, 0);
- $gf->pack_start ($cb_toolbar_d, FALSE, FALSE, 0);
- $gf->pack_start (new_subpage_frame (
- new_vbox_pack (
- new_check_button_for (\%pr::gui, 'h_scroll', \%HPVALUE),
- new_selection_box_for (\%pr::gui, 'v_scroll', \%HPVALUE)),
- $xl::s{sbar_frame}, 'not-packed'),
- FALSE, FALSE, FRAME_SPC);
- $gf->pack_start ($tb_zero_char, FALSE, FALSE, 0);
-
- return $gf;
+ return new_grid_pack (2, 24, [
+ [ _('Coloured stripes') ],
+ [ new_check_button_for (\%pr::gui, 'strip_all', \%HPVALUE),
+ new_check_button_for (\%pr::gui, 'strip_sum', \%HPVALUE) ],
+ [ new_text_box_for_int (\%pr::gui, 'strip_off', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Message List') ],
+ [ new_check_button_for (\%pr::gui, 'b_unread', \%HPVALUE),
+ new_check_button_for (\%pr::gui, 'swp_from', \%HPVALUE) ],
+ [ new_check_button_for (\%pr::gui, 'two_linev', \%HPVALUE),
+ new_check_button_for (\%pr::gui, 'next_del', \%HPVALUE) ],
+ [ new_selection_box_for (\%pr::gui, 'from_show', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Message View') ],
+ [ new_check_button_for (\%pr::gui, 'cursor_v', \%HPVALUE),
+ new_check_button_for (\%pr::gui, 'mview_date', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Compose window') ],
+ [ 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_text_box_for_int (\%pr::gui, 'warn_send_multi', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Scroll bars') ],
+ [ new_check_button_for (\%pr::gui, 'h_scroll', \%HPVALUE) ],
+ [ new_selection_box_for (\%pr::gui, 'v_scroll', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Other') ],
+ [ new_check_button_for (\%pr::gui, 'dot_lines', \%HPVALUE),
+ new_check_button_for (\%pr::gui, 'toolbar_d', \%HPVALUE) ],
+ [ new_text_box_for_nchar (\%pr::gui, 'zero_char', \%HPVALUE) ]
+ ]);
}
%pr::beh = ( # tweak some behaviour
);
sub new_behaviour_page() {
- my $bf = Gtk3::VBox->new (FALSE, 5);
- $bf->set_border_width (PAGE_SPC);
-
- my $tb_up_step = new_text_box_for_int (\%pr::beh, 'up_step', \%HPVALUE);
- my $tb_thread_a = new_text_box_for_int (\%pr::beh, 'thread_a', \%HPVALUE);
-
- $bf->pack_start (new_subpage_frame (
- new_vbox_pack (
- new_text_box_for_int (\%pr::beh, 'hover_t', \%HPVALUE),
- new_check_button_for (\%pr::beh, 'warn_dnd', \%HPVALUE)),
- $xl::s{dnd_frame}, 'not-packed'),
- FALSE, FALSE, FRAME_SPC);
- $bf->pack_start (new_subpage_frame (
- new_hbox_pack (
- new_check_button_for (\%pr::beh, 'skip_ssl', \%HPVALUE),
- new_check_button_for (\%pr::beh, 'unsafe_ssl', \%HPVALUE)),
- $xl::s{ssl_frame}, 'not-packed'),
- FALSE, FALSE, FRAME_SPC);
- $bf->pack_start ($tb_up_step, FALSE, FALSE, 0);
- $bf->pack_start ($tb_thread_a, FALSE, FALSE, 0);
- $bf->pack_start (new_subpage_frame (
- new_vbox_pack (
- new_check_button_for (\%pr::beh, 'flowed', \%HPVALUE),
- new_check_button_for (\%pr::beh, 'parts_rw', \%HPVALUE),
- new_check_button_for (\%pr::beh, 'use_utf8', \%HPVALUE),
- new_check_button_for (\%pr::beh, 'dangerous', \%HPVALUE),
- new_check_button_for (\%pr::beh, 'out_ascii', \%HPVALUE),
- new_check_button_for (\%pr::beh, 'pp_unsel', \%HPVALUE),
- new_check_button_for (\%pr::beh, 'inline_at', \%HPVALUE),
- new_check_button_for (\%pr::beh, 'rewrite_ff', \%HPVALUE)),
- $xl::s{msgs_frame}, 'not-packed'),
- FALSE, FALSE, FRAME_SPC);
- $bf->pack_start (new_subpage_frame (
- new_vbox_pack (
- new_check_button_for (\%pr::beh, 'addr_swc', \%HPVALUE),
- new_check_button_for (\%pr::beh, 'fold_swc', \%HPVALUE)),
- $xl::s{swc_frame}, 'not-packed'),
- FALSE, FALSE, FRAME_SPC);
- return $bf;
+ return new_grid_pack (2, 20, [
+ [ _('Drag \'n\' drop') ],
+ [ new_text_box_for_int (\%pr::beh, 'hover_t', \%HPVALUE) ],
+ [ new_check_button_for (\%pr::beh, 'warn_dnd', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Secure Sockets Layer') ],
+ [ new_check_button_for (\%pr::beh, 'skip_ssl', \%HPVALUE),
+ new_check_button_for (\%pr::beh, 'unsafe_ssl', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Messages') ],
+ [ new_check_button_for (\%pr::beh, 'flowed', \%HPVALUE),
+ new_check_button_for (\%pr::beh, 'out_ascii', \%HPVALUE) ],
+ [ new_check_button_for (\%pr::beh, 'parts_rw', \%HPVALUE),
+ new_check_button_for (\%pr::beh, 'pp_unsel', \%HPVALUE) ],
+ [ new_check_button_for (\%pr::beh, 'use_utf8', \%HPVALUE),
+ new_check_button_for (\%pr::beh, 'inline_at', \%HPVALUE) ],
+ [ new_check_button_for (\%pr::beh, 'dangerous', \%HPVALUE),
+ new_check_button_for (\%pr::beh, 'rewrite_ff', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Completion') ],
+ [ new_check_button_for (\%pr::beh, 'addr_swc', \%HPVALUE) ],
+ [ new_check_button_for (\%pr::beh, 'fold_swc', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Other') ],
+ [ new_text_box_for_int (\%pr::beh, 'up_step', \%HPVALUE) ],
+ [ new_text_box_for_int (\%pr::beh, 'thread_a', \%HPVALUE) ]
+ ]);
}
%pr::col = ( # a variety of colours
);
sub new_colours_page() {
- return new_vbox_pack (
- new_subpage_frame (
- new_vbox_pack (
- 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_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'),
- 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')
- );
+ return new_grid_pack (3, 18, [
+ [ _('Message View') ],
+ [ new_color_button_for (\%pr::col, 'emphasis', \%HPVALUE) ],
+ [ new_color_button_for (\%pr::col, 'tags_text', \%HPVALUE) ,
+ new_color_button_for (\%pr::col, 'tags_bg', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Log window') ],
+ [ 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_warn', \%HPVALUE) ,
+ new_color_button_for (\%pr::col, 'log_out', \%HPVALUE) ],
+ [ new_color_button_for (\%pr::col, 'log_msg', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Viewing patches') ],
+ [ 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) ],
+ [ '--' ],
+ [ _('Compose window') ],
+ [ new_color_button_for (\%pr::col, 'default_header_text', \%HPVALUE) ,
+ new_color_button_for (\%pr::col, 'default_header_bg', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Quick search') ],
+ [ new_color_button_for (\%pr::col, 'qs_active_text', \%HPVALUE) ,
+ new_color_button_for (\%pr::col, 'qs_active_bg', \%HPVALUE) ],
+ [ new_color_button_for (\%pr::col, 'qs_error_text', \%HPVALUE) ,
+ new_color_button_for (\%pr::col, 'qs_error_bg', \%HPVALUE) ]
+ ]);
}
%pr::win = ( # tweak window positions and/or sizes
);
sub new_winpos_subpage_main() {
- return new_subpage_frame (
- new_vbox_pack_compact (
- new_vbox_pack (
- new_text_box_for_int (\%pr::win, 'main_x', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'main_y', \%HPVALUE)),
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'main_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'main_h', \%HPVALUE)),
- new_vbox_pack (
- new_check_button_for (\%pr::win, 'main_fs', \%HPVALUE),
- new_check_button_for (\%pr::win, 'main_mx', \%HPVALUE))),
- _('Main window')
- );
+ return new_grid_pack (3, 7, [
+ [ _('Main window'), undef ],
+ [ new_text_box_for_int (\%pr::win, 'main_x', \%HPVALUE), undef ],
+ [ new_text_box_for_int (\%pr::win, 'main_y', \%HPVALUE), undef ],
+ [ new_text_box_for_int (\%pr::win, 'main_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'main_h', \%HPVALUE) ],
+ [ new_check_button_for (\%pr::win, 'main_fs', \%HPVALUE), undef ],
+ [ new_check_button_for (\%pr::win, 'main_mx', \%HPVALUE), undef ]
+ ]);
}
sub new_winpos_subpage_msgs() {
- return new_subpage_frame (
- new_vbox_pack_compact (
- new_vbox_pack (
- new_text_box_for_int (\%pr::win, 'msgs_x', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'msgs_y', \%HPVALUE)),
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'msgs_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'msgs_h', \%HPVALUE))),
- _('Message window')
- );
+ return new_grid_pack (3, 4, [
+ [ _('Message window') ],
+ [ new_text_box_for_int (\%pr::win, 'msgs_x', \%HPVALUE) ],
+ [ new_text_box_for_int (\%pr::win, 'msgs_y', \%HPVALUE) ],
+ [ new_text_box_for_int (\%pr::win, 'msgs_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'msgs_h', \%HPVALUE) ]
+ ]);
}
sub new_winpos_subpage_sendrecv() {
- return new_vbox_pack (
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'send_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'send_h', \%HPVALUE)),
- _('Send window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'recv_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'recv_h', \%HPVALUE)),
- _('Receive window'), 'not-packed')
- );
+ return new_grid_pack (3, 5, [
+ [ _('Send window') ],
+ [ new_text_box_for_int (\%pr::win, 'send_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'send_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Receive window') ],
+ [ new_text_box_for_int (\%pr::win, 'recv_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'recv_h', \%HPVALUE) ]
+ ]);
}
sub new_winpos_subpage_fold() {
- return new_vbox_pack (
- new_subpage_frame (
- new_vbox_pack_compact (
- new_vbox_pack (
- new_text_box_for_int (\%pr::win, 'fold_x', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'fold_y', \%HPVALUE)),
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'fold_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'fold_h', \%HPVALUE))),
- _('Folder window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'fsel_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'fsel_h', \%HPVALUE)),
- _('Folder selection window'), 'not-packed')
- );
+ return new_grid_pack (3, 7, [
+ [ _('Folder window') ],
+ [ new_text_box_for_int (\%pr::win, 'fold_x', \%HPVALUE) ],
+ [ new_text_box_for_int (\%pr::win, 'fold_y', \%HPVALUE) ],
+ [ new_text_box_for_int (\%pr::win, 'fold_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'fold_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Folder selection window') ],
+ [ new_text_box_for_int (\%pr::win, 'fsel_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'fsel_h', \%HPVALUE) ]
+ ]);
}
sub new_winpos_subpage_addrbook() {
- return new_vbox_pack (
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'addr_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'addr_h', \%HPVALUE)),
- _('Addressbook main window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'adep_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'adep_h', \%HPVALUE)),
- _('Edit person window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'adeg_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'adeg_h', \%HPVALUE)),
- _('Edit group window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'adda_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'adda_h', \%HPVALUE)),
- _('Add address window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'addf_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'addf_h', \%HPVALUE)),
- _('Folder select window'), 'not-packed')
- );
+ return new_grid_pack (3, 14, [
+ [ _('Addressbook main window') ],
+ [ new_text_box_for_int (\%pr::win, 'addr_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'addr_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Edit person window') ],
+ [ new_text_box_for_int (\%pr::win, 'adep_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'adep_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Edit group window') ],
+ [ new_text_box_for_int (\%pr::win, 'adeg_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'adeg_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Add address window') ],
+ [ new_text_box_for_int (\%pr::win, 'adda_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'adda_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Folder select window') ],
+ [ new_text_box_for_int (\%pr::win, 'addf_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'addf_h', \%HPVALUE) ]
+ ]);
}
sub new_winpos_subpage_accounts() {
- return new_vbox_pack (
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'acco_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'acco_h', \%HPVALUE)),
- _('Accounts window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'acce_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'acce_h', \%HPVALUE)),
- _('Edit account window'), 'not-packed')
- );
+ return new_grid_pack (3, 5, [
+ [ _('Accounts window') ],
+ [ new_text_box_for_int (\%pr::win, 'acco_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'acco_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Edit account window') ],
+ [ new_text_box_for_int (\%pr::win, 'acce_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'acce_h', \%HPVALUE) ]
+ ]);
}
sub new_winpos_subpage_filtering() {
- return new_vbox_pack (
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'filt_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'filt_h', \%HPVALUE)),
- _('Filtering window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'fila_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'fila_h', \%HPVALUE)),
- _('Filtering actions window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'fild_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'fild_h', \%HPVALUE)),
- _('Filtering debug window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'matc_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'matc_h', \%HPVALUE)),
- _('Matcher window'), 'not-packed')
- );
+ return new_grid_pack (3, 11, [
+ [ _('Filtering window') ],
+ [ new_text_box_for_int (\%pr::win, 'filt_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'filt_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Filtering actions window') ],
+ [ new_text_box_for_int (\%pr::win, 'fila_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'fila_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Filtering debug window') ],
+ [ new_text_box_for_int (\%pr::win, 'fild_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'fild_h', \%HPVALUE) ],
+ [ '--' ],
+ [ ('Matcher window') ],
+ [ new_text_box_for_int (\%pr::win, 'matc_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'matc_h', \%HPVALUE) ]
+
+ ]);
}
sub new_winpos_subpage_useractions() {
- return new_vbox_pack (
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'acti_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'acti_h', \%HPVALUE)),
- _('User Actions prefs window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'acio_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'acio_h', \%HPVALUE)),
- _('User Actions I/O window'), 'not-packed')
- );
+ return new_grid_pack (3, 5, [
+ [ _('User Actions prefs window') ],
+ [ new_text_box_for_int (\%pr::win, 'acti_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'acti_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('User Actions I/O window') ],
+ [ new_text_box_for_int (\%pr::win, 'acio_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'acio_h', \%HPVALUE) ]
+ ]);
}
sub new_winpos_subpage_prefs() {
- return new_vbox_pack (
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'pref_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'pref_h', \%HPVALUE)),
- _('Preferences window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'temp_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'temp_h', \%HPVALUE)),
- _('Templates window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'tags_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'tags_h', \%HPVALUE)),
- _('Tags window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'plug_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'plug_h', \%HPVALUE)),
- _('Plugins window'), 'not-packed')
- );
+ return new_grid_pack (3, 11, [
+ [ _('Preferences window') ],
+ [ new_text_box_for_int (\%pr::win, 'pref_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'pref_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Templates window') ],
+ [ new_text_box_for_int (\%pr::win, 'temp_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'temp_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Tags window') ],
+ [ new_text_box_for_int (\%pr::win, 'tags_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'tags_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Plugins window') ],
+ [ new_text_box_for_int (\%pr::win, 'plug_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'plug_h', \%HPVALUE) ]
+ ]);
}
sub new_winpos_subpage_misc() {
- return new_vbox_pack (
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'logw_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'logw_h', \%HPVALUE)),
- _('Log window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'prin_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'prin_h', \%HPVALUE)),
- _('Print preview window'), 'not-packed'),
- new_subpage_frame (
- new_hbox_pack (
- new_text_box_for_int (\%pr::win, 'sour_w', \%HPVALUE),
- new_text_box_for_int (\%pr::win, 'sour_h', \%HPVALUE)),
- _('View source window'), 'not-packed')
- );
+ return new_grid_pack (3, 8, [
+ [ _('Log window') ],
+ [ new_text_box_for_int (\%pr::win, 'logw_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'logw_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('Print preview window') ],
+ [ new_text_box_for_int (\%pr::win, 'prin_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'prin_h', \%HPVALUE) ],
+ [ '--' ],
+ [ _('View source window') ],
+ [ new_text_box_for_int (\%pr::win, 'sour_w', \%HPVALUE),
+ new_text_box_for_int (\%pr::win, 'sour_h', \%HPVALUE) ]
+ ]);
}
sub new_winpos_page() {
my $winbook = Gtk3::Notebook->new;
$winbook->set_tab_pos ('right');
- $winbook->append_page (new_winpos_subpage_main,
- Gtk3::Label->new (_('Main')));
- $winbook->append_page (new_winpos_subpage_msgs,
- Gtk3::Label->new (_('Message')));
- $winbook->append_page (new_winpos_subpage_sendrecv,
- Gtk3::Label->new (_('Send/Receive')));
- $winbook->append_page (new_winpos_subpage_fold,
- Gtk3::Label->new (_('Folder')));
- $winbook->append_page (new_winpos_subpage_addrbook,
- Gtk3::Label->new (_('Addressbook')));
- $winbook->append_page (new_winpos_subpage_accounts,
- Gtk3::Label->new (_('Accounts')));
- $winbook->append_page (new_winpos_subpage_filtering,
- Gtk3::Label->new (_('Filtering')));
- $winbook->append_page (new_winpos_subpage_useractions,
- Gtk3::Label->new (_('User Actions')));
- $winbook->append_page (new_winpos_subpage_prefs,
- Gtk3::Label->new (_('Preferences')));
- $winbook->append_page (new_winpos_subpage_misc,
- Gtk3::Label->new (_('Other')));
+ $winbook->append_page (&new_winpos_subpage_main, new_label (_('Main')));
+ $winbook->append_page (&new_winpos_subpage_msgs, new_label (_('Message')));
+ $winbook->append_page (&new_winpos_subpage_sendrecv, new_label (_('Send/Receive')));
+ $winbook->append_page (&new_winpos_subpage_fold, new_label (_('Folder')));
+ $winbook->append_page (&new_winpos_subpage_addrbook, new_label (_('Addressbook')));
+ $winbook->append_page (&new_winpos_subpage_accounts, new_label (_('Accounts')));
+ $winbook->append_page (&new_winpos_subpage_filtering, new_label (_('Filtering')));
+ $winbook->append_page (&new_winpos_subpage_useractions, new_label (_('User Actions')));
+ $winbook->append_page (&new_winpos_subpage_prefs, new_label (_('Preferences')));
+ $winbook->append_page (&new_winpos_subpage_misc, new_label (_('Other')));
return $winbook;
}
sub new_account_subpage($) {
my ($akey) = @_;
- return new_vbox_pack (
- new_subpage_frame (
- new_vbox_pack (
- new_check_button_for (\%pr::acc, 'tls_set', $ACHPVALUE{$akey}),
- new_text_box_for_nchar (\%pr::acc, 'tls_pri', $ACHPVALUE{$akey})),
- _('GnuTLS priority'), 'not-packed')
- );
+ return new_grid_pack (1, 3, [
+ [ _('GnuTLS priority') ],
+ [ new_check_button_for (\%pr::acc, 'tls_set', $ACHPVALUE{$akey}) ],
+ [ new_text_box_for_nchar (\%pr::acc, 'tls_pri', $ACHPVALUE{$akey}) ]
+ ]);
}
sub new_accounts_page() {
my $name = $ACPREFS{$_}{'account_name'};
my $isdef = ($ACPREFS{$_}{'is_default'} eq '1');
my $page = new_account_subpage ($_);
- $accbook->append_page ($page,
- Gtk3::Label->new ($isdef? '<b>' . $name . '</b>': $name));
- if ($isdef) {
- my $label = $accbook->get_tab_label ($page);
- $label->set_use_markup (TRUE);
- }
+ my $label = new_label ($isdef? '<u>' . $name . '</u>': $name);
+ $label->set_use_markup (TRUE);
+ $accbook->append_page ($page, $label);
}
$accbook->set_scrollable (TRUE);
return $accbook;
]);
}
-use constant {
- C_LABEL => 0,
- C_HOTKEY => 1,
- C_GROUP => 2,
- C_ACCEL => 3,
- C_ODDITY => 4,
-};
-
sub new_hotkeys_list_label {
my $renderer = Gtk3::CellRendererText->new ();
$renderer->set_property('alignment' => 'left');
# create notebook
sub new_notebook {
my $nb = Gtk3::Notebook->new;
- #
- $nb->append_page (new_behaviour_page (),
- Gtk3::Label->new ($xl::s{tab_behaviour}));
- $nb->append_page (new_colours_page (),
- Gtk3::Label->new ($xl::s{tab_colours}));
- $nb->append_page (new_gui_page (),
- Gtk3::Label->new ($xl::s{tab_gui}));
- $nb->append_page (new_other_page (),
- Gtk3::Label->new ($xl::s{tab_other}));
- $nb->append_page (new_winpos_page (),
- Gtk3::Label->new ($xl::s{tab_winpos}));
- $nb->append_page (new_accounts_page (),
- Gtk3::Label->new ($xl::s{tab_accounts}));
- $nb->append_page (new_plugins_page (),
- Gtk3::Label->new ($xl::s{tab_plugins}));
- $nb->append_page (new_hotkeys_page (),
- Gtk3::Label->new ($xl::s{tab_hotkeys}));
- $nb->append_page (new_info_page (),
- Gtk3::Label->new ($xl::s{tab_info}));
+
+ $nb->append_page (&new_behaviour_page, Gtk3::Label->new (_('Behaviour')));
+ $nb->append_page (&new_colours_page, Gtk3::Label->new (_('Colours')));
+ $nb->append_page (&new_gui_page, Gtk3::Label->new (_('GUI')));
+ $nb->append_page (&new_other_page, Gtk3::Label->new (_('Other')));
+ $nb->append_page (&new_winpos_page, Gtk3::Label->new (_('Windows')));
+ $nb->append_page (&new_accounts_page, Gtk3::Label->new (_('Accounts')));
+ $nb->append_page (&new_plugins_page, Gtk3::Label->new (_('Plugins')));
+ $nb->append_page (&new_hotkeys_page, Gtk3::Label->new (_('Hotkeys')));
+ $nb->append_page (&new_info_page, Gtk3::Label->new (_('Info')));
return $nb;
}