C_LABEL => 0,
C_HOTKEY => 1,
C_GROUP => 2,
- C_ACCEL => 3
+ C_ACCEL => 3,
+ C_BCOLOR => 4,
+ # cell backgrounds
+ BG_LIGHTER => '#ffffff',
+ BG_DARKER => '#eeeeee'
};
sub new_hotkeys_list_label {
$model->set($iter, C_HOTKEY, "\"$accel\"");
my $gkey = $model->get_value ($iter, C_GROUP);
my $akey = $model->get_value ($iter, C_ACCEL);
- $HOTKEYS->{$gkey}->{$akey}->{'key'} = "\"$accel\"";
+ my $data = $HOTKEYS->{$gkey}->{$akey};
+ $data->{'key'} = "\"$accel\"";
+ $data->{'enabled'} = TRUE;
});
$renderer->signal_connect ('accel-cleared' => sub {
my ($w, $path) = @_;
$model->set($iter, C_HOTKEY, "\"\"");
my $gkey = $model->get_value ($iter, C_GROUP);
my $akey = $model->get_value ($iter, C_ACCEL);
- $HOTKEYS->{$gkey}->{$akey}->{'key'} = "\"\"";
+ my $data = $HOTKEYS->{$gkey}->{$akey};
+ $data->{'key'} = "\"\"";
+ $data->{'enabled'} = FALSE;
});
return $renderer;
}
sub new_hotkeys_list {
my ($gkey, $group) = @_;
my $store = Gtk2::ListStore->new(
- qw/Glib::String Glib::String Glib::String Glib::String/);
+ qw/Glib::String Glib::String Glib::String Glib::String Glib::String/);
+ my $even = FALSE;
foreach my $akey (sort keys %$group) {
my $iter = $store->append ();
my $hotkey = $group->{$akey}->{'key'};
my $label = $akey;
$label =~ s/[<>]//g; # <rrsyl> and <IMAPFolder> !?
+ my $bgcol = $even ? BG_DARKER: BG_LIGHTER;
$store->set ($iter, C_LABEL, $label, C_HOTKEY, $hotkey,
- C_GROUP, $gkey, C_ACCEL, $akey);
+ C_GROUP, $gkey, C_ACCEL, $akey, C_BCOLOR, $bgcol);
+ $even = not $even;
}
my $treeview = Gtk2::TreeView->new_with_model ($store);
# labels column
0, _("Menu path"), new_hotkeys_list_label (),
sub {
my ($col, $renderer, $model, $iter, $data) = @_;
- my $label = $model->get_value ($iter, C_LABEL);
- $renderer->set_property ('text' => $label);
+ $renderer->set_property (
+ 'text' => $model->get_value ($iter, C_LABEL));
+ $renderer->set_property (
+ 'background' => $model->get_value ($iter, C_BCOLOR));
}
);
# hotkeys column
my ($acckey, $accmod) = Gtk2::Accelerator->parse ($hkey);
$renderer->set_property ('accel-key' => $acckey);
$renderer->set_property ('accel-mods' => $accmod);
+ $renderer->set_property (
+ 'background' => $model->get_value ($iter, C_BCOLOR));
}
);
# callback for saving current selection
my $glabel = Gtk2::Label->new ('<b>' . $gkey . '</b>');
$glabel->set_use_markup (TRUE);
$glabel->set_alignment (0, 0.5);
- $vbox->pack_start ($glabel, FALSE, FALSE, 1);
- $vbox->pack_start (Gtk2::HSeparator->new (), FALSE, FALSE, 1);
+ $glabel->set_padding (5, 1);
+ $vbox->pack_start ($glabel, FALSE, FALSE, 0);
# group key list
my $keylist = new_hotkeys_list ($gkey, $group);
- $vbox->pack_start ($keylist, FALSE, FALSE, 1);
+ $vbox->pack_start ($keylist, FALSE, FALSE, 0);
}
$swin->set_border_width (5);
$swin->set_shadow_type ('none');
return TRUE;
}
+sub save_hk_preferences {
+ my $rc = get_menurc_filename ();
+ log_message ("Saving hotkey preferences to $rc\n");
+ return FALSE unless check_rc_file ($rc);
+ return FALSE unless check_claws_not_running ();
+ save_menurc ($rc, $HOTKEYS);
+ return TRUE;
+}
+
# create notebook
sub new_notebook {
my $nb = Gtk2::Notebook->new;
$b_apply->signal_connect (clicked => sub {
save_preferences ($parent);
save_ac_preferences ($parent);
+ save_hk_preferences ($parent);
});
# $b_undo->signal_connect (clicked => sub { undo_current_changes });
$b_about->signal_connect (clicked => sub { $adlg->run; $adlg->hide });
my $box = Gtk2::VBox->new (FALSE, 5);
$box->set_border_width(3);
my $about = new_about_dialog ();
-$box->pack_start (new_notebook (), FALSE, FALSE, 0);
+$box->pack_start (new_notebook (), TRUE, TRUE, 0);
$box->pack_end (new_button_box ($main_window, $about), FALSE, FALSE, 0);
$main_window->signal_connect (delete_event => sub { Gtk2->main_quit });
$main_window->set_title ($xl::s{win_title});