From 82a7071ea3f08b5665e637d7679880ffe22e3fef Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Sat, 23 Nov 2013 02:47:52 +0100 Subject: convert to UIManager --- userdrake | 99 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 64 insertions(+), 35 deletions(-) (limited to 'userdrake') diff --git a/userdrake b/userdrake index 23bfcd0..35e5475 100755 --- a/userdrake +++ b/userdrake @@ -92,46 +92,75 @@ $usertree = CreateTree($utree_model); $grouptree = CreateTree($gtree_model); # slightly verbatimed from control-center my %xguest_labels = ( - to_install => N("/_Install guest account"), - installed => N("/_Uninstall guest account"), + to_install => N("_Install guest account"), + installed => N("_Uninstall guest account"), ); my %options = ( - 'edit' => [ N("/_Actions"), N("/_Edit") ], - 'delete' => [ N("/_Actions"), N("/_Delete") ], - 'xguest' => [ N("/_Actions"), $xguest_labels{installed} ], - 'filter' => [ N("/_Options"), N("/_Filter system users") ] + 'edit' => N("_Edit"), + 'delete' => N("_Delete"), + 'xguest' => $xguest_labels{installed}, + 'filter' => N("_Filter system users") + ); +my %option_paths = ( + 'edit' => 'Actions_Menu', + 'delete' => 'Actions_Menu', + 'xguest' => 'Actions_Menu', + 'filter' => 'Options_Menu' ); my %buttorcheck; -my ($menu, $factory) = create_factory_menu( - $::isEmbedded ? $::Plug : $us->{wnd}{rwindow}, - ([ N("/_File"), undef, undef, undef, '' ], - [ N("/_File") . N("/_Refresh"), undef, - sub { Refresh($sysfilter, $stringsearch) }, - undef, '' ], - [ N("/_File") . N("/_Quit"), N("Q"), \&QuitGlobal, undef, '' ], - [ N("/_Actions"), undef, undef, undef, '' ], - [ N("/_Actions") . N("/_Add User"), undef, \&AddUser, undef, '' ], - [ N("/_Actions") . N("/Add _Group"), undef, \&AddGroup, undef, '' ], - [ join('', @{$options{edit}}), undef, \&Edit, undef, '' ], - [ join('', @{$options{delete}}), undef, \&Delete, undef, '' ], - [ join('', @{$options{xguest}}), undef, \&Xguest, undef, '' ], - [ N("/_Options"), undef, undef, undef, '' ], - [ join('', @{$options{filter}}), undef, sub { - $sysfilter = $buttorcheck{filter}->get_active; - Refresh($sysfilter, $stringsearch); - }, undef, '' ], - [ N("/_Help"), undef, undef, undef, '' ], - [ N("/_Help") . N("/_Help"), undef, sub { HelpSystem() }, undef, '' ], - [ N("/_Help") . N("/_Report Bug"), undef, - sub { run_program::raw({ detach => 1 }, 'drakbug', '--report', 'userdrake') }, - undef, '' ], - [ N("/_Help") . N("/_About..."), undef, \&About, undef, '' ] - ) -); +my $ui = gtknew('UIManager', actions => [ + # [name, stock_id, value, label, accelerator, tooltip, callback] + [ 'FileMenu', undef, N("_File") ], + [ 'Refresh', undef, N("_Refresh"), undef, undef, sub { Refresh($sysfilter, $stringsearch) } ], + [ 'Quit', undef, N("_Quit"), N("Q"), undef, \&QuitGlobal ], + [ 'Actions_Menu', undef, N("_Actions") ], + [ 'Add_User', undef, N("_Add User"), undef, undef, \&AddUser ], + [ 'Add_Group', undef, N("Add _Group"), undef, undef, \&AddGroup ], + [ 'edit', undef, $options{edit}, undef, undef, \&Edit ], + [ 'delete', undef, $options{delete}, undef, undef, \&Delete ], + [ 'xguest', undef, $options{xguest}, undef, undef, \&Xguest ], + [ 'Options_Menu', undef, N("_Options") ], + [ 'Help_Menu', undef, N("_Help") ], + [ 'Help', undef, N("_Help"), undef, undef, sub { HelpSystem() } ], + [ 'Report_Bug', undef, N("_Report Bug"), undef, undef, + sub { run_program::raw({ detach => 1 }, 'drakbug', '--report', 'userdrake') } ], + [ 'About', undef, N("_About..."), undef, undef, \&About ] + ], + toggle_actions => [ + [ 'filter', undef, $options{filter}, undef, undef, sub { + $sysfilter = $buttorcheck{filter}->get_active; + Refresh($sysfilter, $stringsearch); + } ], + ], + string => qq( + + + + + + + + + + + + + + + + + + + + + +)); +my $window = $::isEmbedded ? $::Plug : $us->{wnd}{rwindow}; +$window->add_accel_group($ui->get_accel_group); + %buttorcheck = map { - $_ => $factory->get_widget("
" . join '', - map { s/_//; $_ } @{$options{$_}}) } + $_ => $ui->get_widget(join('/', '/MenuBar', $option_paths{$_}, $_)) } ('edit', 'delete', 'filter', 'xguest'); if (defined $buttorcheck{filter}) { @@ -167,7 +196,7 @@ if ($::isEmbedded) { N("Users and groups")); } $us->{wnd}{window}->add(gtkpack_(Gtk3::VBox->new(0, 0), - 0, $menu, + 0, $ui->get_widget('/MenuBar'), @extra_widgets, 0, $toolb, 0, $searchBox, -- cgit v1.2.1