summaryrefslogtreecommitdiffstats
path: root/perl-install/standalone/draksambashare
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/standalone/draksambashare')
-rwxr-xr-xperl-install/standalone/draksambashare102
1 files changed, 74 insertions, 28 deletions
diff --git a/perl-install/standalone/draksambashare b/perl-install/standalone/draksambashare
index 3820c5a47..35566fd64 100755
--- a/perl-install/standalone/draksambashare
+++ b/perl-install/standalone/draksambashare
@@ -54,7 +54,8 @@ use constant COLUMN_PRESERVE_CASE => 13;
use constant COLUMN_FORCE_CREATE_MODE => 14;
use constant COLUMN_FORCE_GROUP => 15;
use constant COLUMN_DEFAULT_CASE => 16;
-use constant NUM_COLUMNS => 17;
+use constant COLUMN_INHERIT_PERMISSIONS => 17;
+use constant NUM_COLUMNS => 18;
my $samba = new Libconf::Glueconf::Samba::Smb_conf({ filename => '/etc/samba/smb.conf', show_commented_info => 1 });
my (@listshare);
@@ -74,6 +75,7 @@ my %adv_options = (
preserve_case => N("Preserve case"),
create_mask => N("Create mask"),
directory_mask => N("Directory mask"),
+ inherit_permissions => N("Inherit permissions"),
);
sub get_items {
@@ -111,10 +113,10 @@ sub wait_action {
my %size_groups = map { $_ => Gtk2::SizeGroup->new('horizontal') } qw(label widget button);
my $label_and_widgets = sub {
my ($label, $widget, $button) = @_;
- gtkpack_(Gtk2::HBox->new(0,5),
+ gtkpack_(Gtk2::HBox->new(0,1),
0, gtkadd_widget($size_groups{label}, $label),
- 1, gtkadd_widget($size_groups{widget}, $widget),
- 2, gtkadd_widget($size_groups{button}, $button),
+ 0, gtkadd_widget($size_groups{widget}, $widget),
+ 0, gtkadd_widget($size_groups{button}, $button),
);
};
@@ -159,6 +161,7 @@ sub get_samba_share() {
force_create_mode => $samba->{$clef}{'force create mode'},
force_group => $samba->{$clef}{'force group'},
default_case => $samba->{$clef}{'default case'},
+ inherit_permissions => $samba->{$clef}{'inherit permissions'},
};
}
}
@@ -222,17 +225,44 @@ sub help_b {
);
}
+sub add_entry {
+ my ($_widget, $treeview) = @_;
+ my $model = $treeview->get_model;
+ use wizards;
+ my $w = wizards->new;
+ my $wiz = {
+ name => N("Add a Samba share"),
+ pages => {
+ welcome => {
+ name => N("test"),
+ no_back => 1,
+ next => 'endadd',
+ },
+ endadd => {
+ name => N("Congratulations"),
+ data => [ { label => N("The wizard successfully added the Samba share.") } ],
+ no_back => 1,
+ end => 1,
+ next => 0,
+ },
+ }
+ };
+ $w->process($wiz, $in);
+ $::isWizard = 0;
+ gtkset_mousecursor_normal();
+}
+
sub modify_entry {
my ($widget, $treeview) = @_;
my $model = $treeview->get_model;
my $selection = $treeview->get_selection;
my $iter;
- my ($dir, $i, $path, $comment, $create_mask, $directory_mask, $read_list, $write_list, $admin_users, $valid_users, $force_group, $browseable, $public, $writable, $hide_files, $hide_dot_files, $force_create_mode, $preserve_case, $default_case);
+ my ($dir, $i, $path, $comment, $create_mask, $directory_mask, $read_list, $write_list, $admin_users, $valid_users, $force_group, $browseable, $public, $writable, $hide_files, $hide_dot_files, $force_create_mode, $preserve_case, $default_case, $inherit_permissions);
$_ = Gtk2::Entry->new foreach $dir, $path, $comment, $create_mask, $directory_mask;
$_ = Gtk2::Entry->new foreach $read_list, $write_list, $admin_users, $valid_users, $force_group, $force_create_mode;
- $_ = Gtk2::OptionMenu->new foreach $browseable, $public, $writable, $default_case, $preserve_case, $hide_files, $hide_dot_files;
+ $_ = Gtk2::OptionMenu->new foreach $browseable, $public, $writable, $default_case, $preserve_case, $hide_files, $hide_dot_files, $inherit_permissions;
$default_case->set_popdown_strings(@default_case);
$_->set_popdown_strings(@yesno) foreach $browseable, $public, $writable, $hide_files, $hide_dot_files, $preserve_case;
@@ -242,6 +272,7 @@ sub modify_entry {
$button->signal_connect(clicked => sub { $file_dialog->show });
my $w = ugtk2->new(N("DrakSamba entry"));
+ $w->{window}->set_modal(1);
$iter = $selection->get_selected;
$iter or info_dialog(N("Error"), N("Please add a Samba share to be able to modify it.")) and return;
@@ -266,12 +297,13 @@ sub modify_entry {
$preserve_case->set_text($listshare[$i]{preserve_case});
$hide_files->set_text($listshare[$i]{hide_files});
$hide_dot_files->set_text($listshare[$i]{hide_dot_files});
+ $inherit_permissions->set_text($listshare[$i]{inherit_permissions});
my $expander_user = Gtk2::Expander->new('User options');
$expander_user->add(gtkpack_(Gtk2::HBox->new,
# 0, $label_and_widgets->($adv_options{sync}, $lsync, help_b(N_("Advanced Options Help"), $help_global)),
0, gtkadd(Gtk2::Frame->new(N("Samba user access")),
- gtkpack_(gtkset_border_width(Gtk2::VBox->new, 5),
+ gtkpack_(gtkset_border_width(Gtk2::VBox->new, 1),
0, $label_and_widgets->($adv_options{read_list}, $read_list, ""),
0, $label_and_widgets->($adv_options{write_list}, $write_list, ""),
0, $label_and_widgets->($adv_options{admin_users}, $admin_users, ""),
@@ -279,11 +311,12 @@ sub modify_entry {
),
),
0, gtkadd(Gtk2::Frame->new(N("Mask options")),
- gtkpack_(gtkset_border_width(Gtk2::VBox->new, 5),
+ gtkpack_(gtkset_border_width(Gtk2::VBox->new, 1),
0, $label_and_widgets->($adv_options{create_mask}, $create_mask, ""),
0, $label_and_widgets->($adv_options{directory_mask}, $directory_mask, ""),
0, $label_and_widgets->($adv_options{force_group}, $force_group, ""),
0, $label_and_widgets->($adv_options{force_create_mode}, $force_create_mode, ""),
+ 0, $label_and_widgets->($adv_options{inherit_permissions}, $inherit_permissions, ""),
),
),
),
@@ -293,11 +326,16 @@ sub modify_entry {
my $expander_file = Gtk2::Expander->new('File options');
$expander_file->add(gtkpack_(Gtk2::VBox->new,
0, gtkadd(Gtk2::Frame->new(N("Display options")),
- gtkpack_(gtkset_border_width(Gtk2::VBox->new, 5),
- 0, $label_and_widgets->($adv_options{hide_dot_files}, $hide_dot_files, ""),
- 0, $label_and_widgets->($adv_options{hide_files}, $hide_files, ""),
- 0, $label_and_widgets->($adv_options{default_case}, $default_case, ""),
- 0, $label_and_widgets->($adv_options{preserve_case}, $preserve_case, ""),
+ gtkpack_(gtkset_border_width(Gtk2::HBox->new, 1),
+ 0, gtkpack_(gtkset_border_width(Gtk2::VBox->new, 0),
+ 0, $label_and_widgets->($adv_options{hide_dot_files}, $hide_dot_files, ""),
+ 0, $label_and_widgets->($adv_options{hide_files}, $hide_files, ""),
+ ),
+ 0, Gtk2::VSeparator->new,
+ 0, gtkpack_(gtkset_border_width(Gtk2::VBox->new, 0),
+ 0, $label_and_widgets->($adv_options{default_case}, $default_case, ""),
+ 0, $label_and_widgets->($adv_options{preserve_case}, $preserve_case, ""),
+ ),
),
),
),
@@ -311,16 +349,22 @@ sub modify_entry {
gtkadd($w->{window},
gtknew('VBox', spacing => 0, children_loose => [
gtkadd(Gtk2::Frame->new(N("Samba share directory")),
- gtkpack_(gtkset_border_width(Gtk2::VBox->new, 3),
- 0, $label_and_widgets->(N("Directory:"), $dir, $button),
- 0, $label_and_widgets->(N("Comment:"), $comment, ""),
- 0, $label_and_widgets->(N("Browseable:"), $browseable, ""),
- 0, $label_and_widgets->(N("Public:"), $public, ""),
- 0, $label_and_widgets->(N("Writable:"), $writable, ""),
+ gtkpack_(gtkset_border_width(Gtk2::VBox->new, 1),
+ 0, gtkpack_(gtkset_border_width(Gtk2::HBox->new, 0),
+ 0, $label_and_widgets->(N("Directory:"), $dir, $button),
+ 0, $label_and_widgets->(N("Comment:"), $comment, ""),
+ ),
+ 0, gtkpack_(gtkset_border_width(Gtk2::HBox->new, 0),
+ 0, $label_and_widgets->(N("Browseable:"), $browseable, ""),
+ 0, $label_and_widgets->(N("Public:"), $public, ""),
+ ),
+ 0, gtkpack_(gtkset_border_width(Gtk2::HBox->new, 0),
+ 0, $label_and_widgets->(N("Writable:"), $writable, ""),
+ ),
),
),
gtkadd(Gtk2::Frame->new("Advanced options"),
- gtkpack_(gtkset_border_width(Gtk2::VBox->new, 3),
+ gtkpack_(gtkset_border_width(Gtk2::VBox->new, 1),
0, $expander_user,
0, $expander_file,
),
@@ -346,6 +390,7 @@ sub modify_entry {
COLUMN_FORCE_CREATE_MODE, $force_create_mode->get_text,
COLUMN_FORCE_GROUP, $force_group->get_text,
COLUMN_DEFAULT_CASE, $default_case->get_text,
+ COLUMN_INHERIT_PERMISSIONS, $inherit_permissions->get_text,
);
$w->destroy;
},
@@ -373,7 +418,7 @@ sub remove_entry {
sub create_model() {
get_samba_share();
- my $model = Gtk2::ListStore->new("Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String");
+ my $model = Gtk2::ListStore->new("Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String", "Glib::String");
foreach my $a (@listshare) {
my $iter = $model->append;
$model->set($iter,
@@ -394,6 +439,7 @@ sub create_model() {
COLUMN_FORCE_CREATE_MODE, $a->{force_create_mode},
COLUMN_FORCE_GROUP, $a->{force_group},
COLUMN_DEFAULT_CASE, $a->{default_case},
+ COLUMN_INHERIT_PERMISSIONS, $a->{inherit_permissions},
);
}
return $model;
@@ -461,13 +507,13 @@ $W->add(gtkpack_(Gtk2::VBox->new(0,0),
1, gtkpack_(gtkset_border_width(Gtk2::HBox->new, 0),
1, create_scrolled_window($treeview),
0, gtkpack_(create_vbox('start'),
-# 0, gtksignal_connect(Gtk2::Button->new(N("Add")), clicked => sub {
-# eval { add_entry($model, $treeview) };
-# my $err = $@;
-# if ($err) {
-# err_dialog(N("Error"), N("Failed to add Samba share.") . "\n\n" . $err);
-# }
-# }),
+ 0, gtksignal_connect(Gtk2::Button->new(N("Add")), clicked => sub {
+ eval { add_entry($model, $treeview) };
+ my $err = $@;
+ if ($err) {
+ err_dialog(N("Error"), N("Failed to add Samba share.") . "\n\n" . $err);
+ }
+ }),
0, gtksignal_connect(Gtk2::Button->new(N("Modify")), clicked => sub {
eval { modify_entry($model, $treeview) };
my $err = $@;