diff options
author | Thierry Vignaud <thierry.vignaud@gmail.com> | 2013-11-23 02:47:52 +0100 |
---|---|---|
committer | Thierry Vignaud <thierry.vignaud@gmail.com> | 2013-11-24 21:30:39 +0100 |
commit | 82a7071ea3f08b5665e637d7679880ffe22e3fef (patch) | |
tree | 210cc319642551810b129cd1cc47b0352121e645 | |
parent | 14f117a31c1d129d665bdf7f86b7db5d928bfe1c (diff) | |
download | userdrake-82a7071ea3f08b5665e637d7679880ffe22e3fef.tar userdrake-82a7071ea3f08b5665e637d7679880ffe22e3fef.tar.gz userdrake-82a7071ea3f08b5665e637d7679880ffe22e3fef.tar.bz2 userdrake-82a7071ea3f08b5665e637d7679880ffe22e3fef.tar.xz userdrake-82a7071ea3f08b5665e637d7679880ffe22e3fef.zip |
convert to UIManager
-rwxr-xr-x | userdrake | 99 |
1 files changed, 64 insertions, 35 deletions
@@ -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, '<Branch>' ], - [ N("/_File") . N("/_Refresh"), undef, - sub { Refresh($sysfilter, $stringsearch) }, - undef, '<Item>' ], - [ N("/_File") . N("/_Quit"), N("<control>Q"), \&QuitGlobal, undef, '<Item>' ], - [ N("/_Actions"), undef, undef, undef, '<Branch>' ], - [ N("/_Actions") . N("/_Add User"), undef, \&AddUser, undef, '<Item>' ], - [ N("/_Actions") . N("/Add _Group"), undef, \&AddGroup, undef, '<Item>' ], - [ join('', @{$options{edit}}), undef, \&Edit, undef, '<Item>' ], - [ join('', @{$options{delete}}), undef, \&Delete, undef, '<Item>' ], - [ join('', @{$options{xguest}}), undef, \&Xguest, undef, '<Item>' ], - [ N("/_Options"), undef, undef, undef, '<Branch>' ], - [ join('', @{$options{filter}}), undef, sub { - $sysfilter = $buttorcheck{filter}->get_active; - Refresh($sysfilter, $stringsearch); - }, undef, '<CheckItem>' ], - [ N("/_Help"), undef, undef, undef, '<Branch>' ], - [ N("/_Help") . N("/_Help"), undef, sub { HelpSystem() }, undef, '<Item>' ], - [ N("/_Help") . N("/_Report Bug"), undef, - sub { run_program::raw({ detach => 1 }, 'drakbug', '--report', 'userdrake') }, - undef, '<Item>' ], - [ N("/_Help") . N("/_About..."), undef, \&About, undef, '<Item>' ] - ) -); +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("<control>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(<ui> + <menubar name='MenuBar'> + <menu action='FileMenu'> + <menuitem action='Refresh'/> + <menuitem action='Quit'/> + </menu> + <menu action='Actions_Menu'> + <menuitem action='Add_User'/> + <menuitem action='Add_Group'/> + <menuitem action='edit'/> + <menuitem action='delete'/> + <menuitem action='xguest'/> + </menu> + <menu action='Options_Menu'> + <menuitem action='filter'/> + </menu> + <menu action='Help_Menu'> + <menuitem action='Help'/> + <menuitem action='Report_Bug'/> + <menuitem action='About'/> + </menu> + </menubar> +</ui>)); +my $window = $::isEmbedded ? $::Plug : $us->{wnd}{rwindow}; +$window->add_accel_group($ui->get_accel_group); + %buttorcheck = map { - $_ => $factory->get_widget("<main>" . 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, |