diff options
Diffstat (limited to 'perl-install/diskdrake/smbnfs_gtk.pm')
| -rw-r--r-- | perl-install/diskdrake/smbnfs_gtk.pm | 106 |
1 files changed, 52 insertions, 54 deletions
diff --git a/perl-install/diskdrake/smbnfs_gtk.pm b/perl-install/diskdrake/smbnfs_gtk.pm index 721a52309..b2417ce83 100644 --- a/perl-install/diskdrake/smbnfs_gtk.pm +++ b/perl-install/diskdrake/smbnfs_gtk.pm @@ -1,28 +1,25 @@ -package diskdrake::smbnfs_gtk; # $Id$ +package diskdrake::smbnfs_gtk; use diagnostics; use strict; -use any; -use fs; +use fs::get; use diskdrake::interactive; use common; use interactive; -use network::smb; -use network::nfs; -use ugtk2 qw(:helpers :wrappers :create); +use fs::remote::smb; +use fs::remote::nfs; +use mygtk3 qw(gtknew gtkset); +use ugtk3 qw(:helpers :wrappers :create); my ($all_hds, $in, $tree_model, $current_entry, $current_leaf, %icons); sub main { ($in, $all_hds, my $type) = @_; my ($kind) = $type eq 'smb' ? smb2kind() : nfs2kind(); - { - local $ugtk2::pop_it = 1; - $kind->check($in) or return; - } + $kind->check($in) or return; - my $w = ugtk2->new('DiskDrake'); + my $w = ugtk3->new(N("Partitioning")); add_smbnfs($w->{window}, $kind); $w->{rwindow}->set_default_size(400, 300) if $w->{rwindow}->can('set_default_size'); @@ -36,7 +33,7 @@ sub main { sub try { my ($kind, $name, @args) = @_; my $f = $diskdrake::interactive::{$name} or die "unknown function $name"; - try_($kind, $name, \&{$f}, @args); + try_($kind, $name, \&$f, @args); } sub try_ { my ($kind, $name, $f, @args) = @_; @@ -45,12 +42,12 @@ sub try_ { $in->ask_warn(N("Error"), formatError($err)); } update($kind); - Gtk2->main_quit if member($name, 'Cancel', 'Done'); + Gtk3->main_quit if member($name, 'Cancel', 'Done'); } sub raw_hd_options { my ($in, $raw_hd) = @_; - diskdrake::interactive::Options($in, {}, $raw_hd); + diskdrake::interactive::Options($in, {}, $raw_hd, fs::get::empty_all_hds()); } sub raw_hd_mount_point { my ($in, $raw_hd) = @_; @@ -63,18 +60,18 @@ sub per_entry_info_box { my ($box, $kind, $entry) = @_; my $info = $entry ? diskdrake::interactive::format_raw_hd_info($entry) : ''; $kind->{per_entry_info_box}->destroy if $kind->{per_entry_info_box}; - gtkpack($box, $kind->{per_entry_info_box} = gtkadd(Gtk2::Frame->new(N("Details")), gtkset_justify(Gtk2::Label->new($info), 'left'))); + gtkpack($box, $kind->{per_entry_info_box} = gtknew('Frame', text => N("Details"), child => gtknew('Label', text => $info, justify => 'left'))); } sub per_entry_action_box { my ($box, $kind, $entry) = @_; - $_->widget->destroy foreach $box->children; + $_->destroy foreach $box->get_children; my @buttons; push @buttons, map { my $s = $_; - gtksignal_connect(Gtk2::Button->new(translate($s)), clicked => sub { try($kind, $s, {}, $entry) }); + gtknew('Button', text => translate($s), clicked => sub { try($kind, $s, {}, $entry) }); } (if_($entry->{isMounted}, N_("Unmount")), if_($entry->{mntpoint} && !$entry->{isMounted}, N_("Mount"))) if $entry; @@ -85,11 +82,12 @@ sub per_entry_action_box { N_("Done") => \&done, ); push @buttons, map { - my ($txt, $f) = @$_; - gtksignal_connect(Gtk2::Button->new(translate($txt)), clicked => sub { try_($kind, $txt, $f, $entry) }); + my ($txt, $f) = @$_; + $f ? gtknew('Button', text => translate($txt), clicked => sub { try_($kind, $txt, $f, $entry) }) + : gtknew('Label', text => ""); } group_by2(@l); - - gtkadd($box, gtkpack(Gtk2::HBox->new(0,0), @buttons)); + + gtkadd($box, gtknew('HBox', children_loose => \@buttons)); } sub done { @@ -107,17 +105,17 @@ sub update { my ($kind) = @_; per_entry_action_box($kind->{action_box}, $kind, $current_entry); per_entry_info_box($kind->{info_box}, $kind, $current_entry); - $tree_model->set($current_leaf, [ 0 => export_icon($current_entry) ]) if $current_entry; + $tree_model->set($current_leaf, 0 => export_icon($current_entry)) if $current_entry; } sub find_fstab_entry { - my ($kind, $e, $add_or_not) = @_; + my ($kind, $e, $b_add_or_not) = @_; my $fs_entry = $kind->to_fstab_entry($e); if (my $fs_entry_ = find { $fs_entry->{device} eq $_->{device} } @{$kind->{val}}) { $fs_entry_; - } elsif ($add_or_not) { + } elsif ($b_add_or_not) { push @{$kind->{val}}, $fs_entry; $fs_entry; } else { @@ -129,27 +127,28 @@ sub import_tree { my ($kind, $info_box) = @_; my (%servers_displayed, %wservers, %wexports); - $tree_model = Gtk2::TreeStore->new(Gtk2::GType->OBJECT, Gtk2::GType->STRING); - my $tree = Gtk2::TreeView->new_with_model($tree_model); + $tree_model = Gtk3::TreeStore->new("Gtk3::Gdk::Pixbuf", "Glib::String"); + my $tree = Gtk3::TreeView->new_with_model($tree_model); $tree->get_selection->set_mode('browse'); - my $col = Gtk2::TreeViewColumn->new; - $col->pack_start(my $pixrender = Gtk2::CellRendererPixbuf->new, 0); + my $col = Gtk3::TreeViewColumn->new; + $col->pack_start(my $pixrender = Gtk3::CellRendererPixbuf->new, 0); $col->add_attribute($pixrender, 'pixbuf', 0); - $col->pack_start(my $texrender = Gtk2::CellRendererText->new, 1); + $col->pack_start(my $texrender = Gtk3::CellRendererText->new, 1); $col->add_attribute($texrender, 'text', 1); $tree->append_column($col); $tree->set_headers_visible(0); foreach ('default', 'server', 'has_mntpoint', 'mounted') { - $icons{$_} = gtkcreate_pixbuf("smbnfs_$_"); + $icons{$_} = gtknew('Pixbuf', file => "smbnfs_$_"); } my $add_server = sub { my ($server) = @_; + my $identifier = $server->{ip} || $server->{name}; my $name = $server->{name} || $server->{ip}; - $servers_displayed{$name} ||= do { + $servers_displayed{$identifier} ||= do { my $w = $tree_model->append_set(undef, [ 0 => $icons{server}, 1 => $name ]); $wservers{$tree_model->get_path_str($w)} = $server; $w; @@ -162,14 +161,14 @@ sub import_tree { return @l if !$@; if ($server->{username}) { - $in->ask_warn('', N("Can't login using username %s (bad password?)", $server->{username})); - network::smb::remove_bad_credentials($server); + $in->ask_warn('', N("Cannot login using username %s (bad password?)", $server->{username})); + fs::remote::smb::remove_bad_credentials($server); } else { - if (my @l = network::smb::authentifications_available($server)) { + if (my @l = fs::remote::smb::authentications_available($server)) { my $user = $in->ask_from_list_(N("Domain Authentication Required"), N("Which username"), [ @l, N_("Another one") ]) or return; if ($user ne 'Another one') { - network::smb::read_credentials($server, $user); + fs::remote::smb::read_credentials($server, $user); goto $find_exports; } } @@ -194,9 +193,8 @@ sub import_tree { my $path = $tree_model->get_path($node); $tree->expand_row($path, 0); - $path->free; - foreach ($find_exports->($wservers{$tree_model->get_path_str($node)} || return)) { #- can't die here since insert_node provoque a tree_select_row before the %wservers is filled + foreach ($find_exports->($wservers{$tree_model->get_path_str($node)} || return)) { #- cannot die here since insert_node provoque a tree_select_row before the %wservers is filled my $s = $kind->to_string($_); my $w = $tree_model->append_set($node, [ 0 => export_icon(find_fstab_entry($kind, $_)), 1 => $s ]); @@ -205,12 +203,12 @@ sub import_tree { }; { - my $search = Gtk2::Button->new(N("Search servers")); + my $search = gtknew('Button', text => N("Search servers")); gtkpack__($info_box, gtksignal_connect($search, clicked => sub { $add_server->($_) foreach sort { $a->{name} cmp $b->{name} } $kind->find_servers; - $search->destroy; + gtkset($search, text => N("Search for new servers")); })); } @@ -228,10 +226,10 @@ sub import_tree { $current_entry = find_fstab_entry($kind, $wexports{$tree_model->get_path_str($curr)} || die(''), 'add'); } else { if (!$tree_model->iter_has_child($curr)) { - gtkset_mousecursor_wait($tree->window); - ugtk2::flush(); + gtkset_mousecursor_wait($tree->get_window); + ugtk3::flush(); $add_exports->($curr); - gtkset_mousecursor_normal($tree->window); + gtkset_mousecursor_normal($tree->get_window); } $current_entry = undef; } @@ -244,16 +242,16 @@ sub add_smbnfs { my ($widget, $kind) = @_; die if $kind->{main_box}; - $kind->{info_box} = Gtk2::VBox->new(0,0); - $kind->{display_box} = create_scrolled_window(import_tree($kind, $kind->{info_box})); - $kind->{action_box} = Gtk2::HBox->new(0,0); + $kind->{info_box} = gtknew('VBox'); + $kind->{display_box} = gtknew('ScrolledWindow', child => import_tree($kind, $kind->{info_box})); + $kind->{action_box} = gtknew('HBox'); $kind->{main_box} = - gtkpack_(Gtk2::VBox->new(0,7), - 1, gtkpack(Gtk2::HBox->new(0,7), - gtkset_size_request($kind->{display_box}, 200, 0), - $kind->{info_box}), + gtknew('VBox', spacing => 7, children => [ + 1, gtknew('HBox', spacing => 7, children_loose => [ + gtkset($kind->{display_box}, width => 200), + $kind->{info_box} ]), 0, $kind->{action_box}, - ); + ]); $widget->add($kind->{main_box}); $current_entry = undef; @@ -261,12 +259,12 @@ sub add_smbnfs { $kind; } -sub nfs2kind { - network::nfs->new({ type => 'nfs', name => 'NFS', val => $all_hds->{nfss}, no_auto => 1 }); +sub nfs2kind() { + fs::remote::nfs->new({ type => 'nfs', name => 'NFS', val => $all_hds->{nfss}, no_auto => 1 }); } -sub smb2kind { - network::smb->new({ type => 'smb', name => 'Samba', val => $all_hds->{smbs}, no_auto => 1 }); +sub smb2kind() { + fs::remote::smb->new({ type => 'smb', name => 'Samba', val => $all_hds->{smbs}, no_auto => 1 }); } |
