aboutsummaryrefslogtreecommitdiffstats
path: root/userdrake
diff options
context:
space:
mode:
authorThierry Vignaud <thierry.vignaud@gmail.com>2013-11-23 02:47:52 +0100
committerThierry Vignaud <thierry.vignaud@gmail.com>2013-11-24 21:30:39 +0100
commit82a7071ea3f08b5665e637d7679880ffe22e3fef (patch)
tree210cc319642551810b129cd1cc47b0352121e645 /userdrake
parent14f117a31c1d129d665bdf7f86b7db5d928bfe1c (diff)
downloaduserdrake-82a7071ea3f08b5665e637d7679880ffe22e3fef.tar
userdrake-82a7071ea3f08b5665e637d7679880ffe22e3fef.tar.gz
userdrake-82a7071ea3f08b5665e637d7679880ffe22e3fef.tar.bz2
userdrake-82a7071ea3f08b5665e637d7679880ffe22e3fef.tar.xz
userdrake-82a7071ea3f08b5665e637d7679880ffe22e3fef.zip
convert to UIManager
Diffstat (limited to 'userdrake')
-rwxr-xr-xuserdrake99
1 files changed, 64 insertions, 35 deletions
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, '<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,