diff options
Diffstat (limited to 'menus_launcher.pl')
-rwxr-xr-x | menus_launcher.pl | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/menus_launcher.pl b/menus_launcher.pl new file mode 100755 index 00000000..b4482b4a --- /dev/null +++ b/menus_launcher.pl @@ -0,0 +1,79 @@ +#!/usr/bin/perl -w + +use POSIX; +use Gtk; +use lib qw(/usr/lib/libDrakX); +use interactive; +use standalone; +init Gtk; +Gtk->set_locale; +use strict; + +#------------------------------------------------------------- +# i18n routines +# IMPORTANT: next two routines have to be redefined here to +# get correct namespace (drakconf instead of libDrakX) +# (This version is now UTF8 compliant - Sg 2001-08-18) +#------------------------------------------------------------- + +sub _ { + my $s = shift @_; my $t = translate($s); + sprintf $t, @_; +} + +sub translate { + my ($s) = @_; + $s ? c::dgettext('drakconf', $s) : ''; +} + +my $_bindir = "/usr/bin/"; +$::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~ /--embedded (\w+) (\w+)/; +my $window = $::isEmbedded ? new Gtk::Plug ($::XID) : new Gtk::Window -toplevel; +$window->signal_connect ( delete_event => \&quit_global ); +my $vbox = new Gtk::VBox(0,0); +$window->set_title(_("Menu Configuration Center")); +$window->add($vbox); +$vbox->pack_start(new Gtk::Label(_("Menu Configuration Center") . _("\n\nChoose which menu you want to configure")),0,0,5); +$vbox->pack_start(new Gtk::HSeparator,0,0,5); +my $table = new Gtk::Table (3,2, 0); +$table->set_border_width(5); +$table->set_row_spacings(5); +$table->set_col_spacings(5); +my $hbox = new Gtk::HBox(0,0); +$vbox->pack_start($hbox,1,1,1); +$hbox->pack_start($table,0,0,5); +$table->attach (new Gtk::Label(_("System menu")), 0, 1, 0, 1, 'fill', 'fill', 0, 0); +my $b1 = new Gtk::Button(_("Configure...")); +$b1->signal_connect( clicked => sub { system("$_bindir/menudrake --systemmenu & "); } ); +$table->attach ($b1, 1, 2, 0, 1, 'fill', 'fill', 0, 0); +$table->attach (new Gtk::Label(_("User menu")), 0, 1, 1, 2, 'fill', 'fill', 0, 0); +my (@user_info, @usernames); +setpwent(); +do { @user_info = getpwent(); + my ($uname, $uid) = @user_info[0,2]; + push (@usernames, $uname) if ($uid > 500 && $uname eq $ENV{INITIAL_USER}); + } while (@user_info); +my $combo = new Gtk::Combo; +$combo->set_popdown_strings (@usernames, "root"); +$table->attach ($combo, 2, 3, 1, 2, 'fill', 'fill', 0, 0); +my $b2 = new Gtk::Button(_("Configure...")); +$b2->signal_connect( clicked => sub { my $a = $combo->entry->get_text(); + $a eq "root" ? + system("$_bindir/menudrake --usermenu &") : + system(" su $a -c \"$_bindir/menudrake &\""); + } ); +$table->attach ($b2, 1, 2, 1, 2, 'fill', 'fill', 0, 0); +$vbox->pack_start(new Gtk::HSeparator,0,0,5); +my $bbox = new Gtk::HButtonBox; +$vbox->pack_start($bbox,0,0,5); +$bbox->set_layout(-end); +my $button_ok = new Gtk::Button _("Done"); +$button_ok->signal_connect ( clicked => sub { $::isEmbedded ? kill('USR1', $::CCPID) : Gtk->exit(0); }); +$button_ok->can_default(1); +$bbox->add($button_ok); + +$window->show_all; + +Gtk->main_iteration while Gtk->events_pending; +$::isEmbedded and kill 'USR2', $::CCPID; +Gtk->main; |