diff options
Diffstat (limited to 'perl-install/diskdrake/hd_gtk.pm')
-rw-r--r-- | perl-install/diskdrake/hd_gtk.pm | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/perl-install/diskdrake/hd_gtk.pm b/perl-install/diskdrake/hd_gtk.pm index 4568448c6..c2bd64023 100644 --- a/perl-install/diskdrake/hd_gtk.pm +++ b/perl-install/diskdrake/hd_gtk.pm @@ -1,4 +1,4 @@ -package diskdrake::hd_gtk; # $Id: hd_gtk.pm 257107 2009-04-27 15:25:10Z pterjan $ +package diskdrake::hd_gtk; # $Id: hd_gtk.pm 269772 2010-06-03 11:51:31Z pterjan $ use diagnostics; use strict; @@ -28,7 +28,7 @@ my ($w, @notebook, $done_button); struct { string name # which is displayed in tab of the notebook bool no_auto # wether the kind can disappear after creation - string type # one of { 'hd', 'raid', 'lvm', 'loopback', 'removable', 'nfs', 'smb' } + string type # one of { 'hd', 'raid', 'lvm', 'loopback', 'removable', 'nfs', 'smb', 'dmcrypt' } hd | hd_lvm | part_raid[] | part_dmcrypt[] | part_loopback[] | raw_hd[] val # @@ -44,6 +44,13 @@ notebook current_kind[] =cut +sub load_theme { + my $rc = "/usr/share/libDrakX/diskdrake.rc"; + -r $rc or $rc = dirname(__FILE__) . "/../diskdrake.rc"; + -r $rc or $rc = dirname(__FILE__) . "/../share/diskdrake.rc"; + Gtk2::Rc->parse($rc); +} + sub main { ($in, $all_hds, $do_force_reload) = @_; @@ -53,10 +60,8 @@ sub main { $w = ugtk2->new(N("Partitioning")); $::main_window = $w->{real_window} if !$::isEmbedded && !$::isInstall; - my $rc = "/usr/share/libDrakX/diskdrake.rc"; - -r $rc or $rc = dirname(__FILE__) . "/../diskdrake.rc"; - -r $rc or $rc = dirname(__FILE__) . "/../share/diskdrake.rc"; - Gtk2::Rc->parse($rc); + + load_theme(); # TODO # is_empty_array_ref($all_hds->{raids}) or raid::stopAll; @@ -162,8 +167,7 @@ sub add_kind2notebook { sub interactive_help() { if ($::isInstall) { - my $func = $in->interactive_help_sub_display_id('diskdrake'); - $func and $func->(); + $in->display_help({ interactive_help_id => 'diskdrake' }, $w); } else { require run_program; run_program::raw({ detach => 1 }, 'drakhelp', '--id', 'diskdrake'); @@ -250,10 +254,9 @@ sub current_kind_changed { my $v = $kind->{val}; my @parts = $kind->{type} eq 'raid' ? grep { $_ } @$v : - $kind->{type} eq 'dmcrypt' ? @$v : $kind->{type} eq 'loopback' ? @$v : fs::get::hds_fstab_and_holes($v); my $totalsectors = - $kind->{type} =~ /raid|dmcrypt|loopback/ ? sum(map { $_->{size} } @parts) : $v->{totalsectors}; + $kind->{type} =~ /raid|loopback/ ? sum(map { $_->{size} } @parts) : $v->{totalsectors}; create_buttons4partitions($kind, $totalsectors, @parts); } @@ -280,7 +283,6 @@ sub create_automatic_notebooks { $may_add->(hd2kind($_)) foreach @{$all_hds->{hds}}; $may_add->(lvm2kind($_)) foreach @{$all_hds->{lvms}}; $may_add->(raid2kind()) if @{$all_hds->{raids}}; - $may_add->(dmcrypt2kind()) if @{$all_hds->{dmcrypts}}; $may_add->(loopback2kind()) if @{$all_hds->{loopbacks}}; @notebook = grep_index { @@ -313,7 +315,11 @@ sub create_buttons4partitions { }; foreach my $entry (@parts) { - my $info = $entry->{mntpoint}; + if(isRawLUKS($entry) && $entry->{dm_active}) { + my $p = find { $entry->{dm_name} eq $_->{dmcrypt_name} } @{$all_hds->{dmcrypts}}; + $entry = $p if $p; + } + my $info = $entry->{mntpoint} || $entry->{device_LABEL}; $info .= "\n" . ($entry->{size} ? formatXiB($entry->{size}, 512) : N("Unknown")) if $info; my $w = Gtk2::ToggleButton->new_with_label($info) or internal_error('new_with_label'); $w->signal_connect(clicked => sub { @@ -339,12 +345,15 @@ sub create_buttons4partitions { last; } }); - my @colorized_fs_types = qw(ext3 ext4dev xfs swap vfat ntfs ntfs-3g); + if(isLUKS($entry) || isRawLUKS($entry)) { + $w->set_image(gtknew("Image", file => "security-strong")); + } + my @colorized_fs_types = qw(ext3 ext4 xfs swap vfat ntfs ntfs-3g); $w->set_name("PART_" . (isEmpty($entry) ? 'empty' : $entry->{fs_type} && member($entry->{fs_type}, @colorized_fs_types) ? $entry->{fs_type} : 'other')); $w->set_size_request($entry->{size} * $ratio + $minwidth, 0); - gtkpack__($kind->{display_box}, $w); + gtkpack($kind->{display_box}, $w); if ($current_entry && fsedit::are_same_partitions($current_entry, $entry)) { $set_current_button->($w); $w->grab_focus; @@ -357,7 +366,7 @@ sub create_buttons4partitions { # disks: helpers ################################################################################ sub current_hd() { - $current_kind->{type} =~ /hd|lvm/ or die 'current_hd called but $current_kind is not an hd'; + $current_kind->{type} =~ /hd|lvm/ or die 'current_hd called but $current_kind is not an hd ('.$current_kind->{type}.')'; $current_kind->{val}; } sub current_part() { @@ -376,9 +385,9 @@ sub hd2kind { } sub filesystems_button_box() { - my @types = (N_("Ext3"), N_("XFS"), N_("Swap"), arch() =~ /sparc/ ? N_("SunOS") : arch() eq "ppc" ? N_("HFS") : N_("Windows"), + my @types = (N_("Ext4"), N_("XFS"), N_("Swap"), arch() =~ /sparc/ ? N_("SunOS") : arch() eq "ppc" ? N_("HFS") : N_("Windows"), N_("Other"), N_("Empty")); - my %name2fs_type = (Ext3 => 'ext3', Ext4 => 'ext4dev', 'XFS' => 'xfs', Swap => 'swap', Other => 'other', "Windows" => 'vfat', HFS => 'hfs'); + my %name2fs_type = (Ext3 => 'ext3', Ext4 => 'ext4', 'XFS' => 'xfs', Swap => 'swap', Other => 'other', "Windows" => 'vfat', HFS => 'hfs'); gtkpack(Gtk2::HBox->new(), map { @@ -436,13 +445,6 @@ sub raid2kind() { ################################################################################ # loopbacks: helpers ################################################################################ -sub dmcrypt2kind() { - { type => 'dmcrypt', name => 'dmcrypt', val => $all_hds->{dmcrypts} }; -} - -################################################################################ -# loopbacks: helpers -################################################################################ sub loopback2kind() { { type => 'loopback', name => 'loopback', val => $all_hds->{loopbacks} }; } |