summaryrefslogtreecommitdiffstats
path: root/menus.pm
blob: b4482b4af6d5936027284f37a210708dd49848d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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;