mirror of
https://github.com/duncs/clusterssh.git
synced 2025-07-03 09:53:23 +00:00
Improve send menu creation
Create menus on the fly instead of in a chunk to allow for adding in 'detach' to xml
This commit is contained in:
parent
9b5eb2b2f0
commit
aec796247e
1 changed files with 39 additions and 38 deletions
73
src/cssh.pl
73
src/cssh.pl
|
@ -2012,7 +2012,12 @@ sub create_menubar() {
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
$menus{send} = create_send_menu();
|
$menus{send} = $menus{bar}->cascade(
|
||||||
|
-label => 'Send',
|
||||||
|
-tearoff => 1,
|
||||||
|
);
|
||||||
|
|
||||||
|
populate_send_menu();
|
||||||
|
|
||||||
$menus{help} = $menus{bar}->cascade(
|
$menus{help} = $menus{bar}->cascade(
|
||||||
-label => 'Help',
|
-label => 'Help',
|
||||||
|
@ -2033,55 +2038,54 @@ sub create_menubar() {
|
||||||
logmsg( 2, "create_menubar: completed" );
|
logmsg( 2, "create_menubar: completed" );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub create_send_menu_entries_from_xml {
|
sub populate_send_menu_entries_from_xml {
|
||||||
my ($menu_xml) = @_;
|
my ( $menu, $menu_xml ) = @_;
|
||||||
my $menu_items;
|
|
||||||
|
|
||||||
foreach my $menu_ref ( @{ $menu_xml->{menu} } ) {
|
foreach my $menu_ref ( @{ $menu_xml->{menu} } ) {
|
||||||
my @menu_entry;
|
|
||||||
if ( $menu_ref->{menu} ) {
|
if ( $menu_ref->{menu} ) {
|
||||||
push( @menu_entry, 'cascade' );
|
$menus{ $menu_ref->{title} }
|
||||||
push( @menu_entry, $menu_ref->{title} );
|
= $menu->cascade( -label => $menu_ref->{title}, );
|
||||||
push( @menu_entry,
|
populate_send_menu_entries_from_xml(
|
||||||
'-menuitems' => create_send_menu_entries_from_xml($menu_ref)
|
$menus{ $menu_ref->{title} },
|
||||||
|
$menu_ref,
|
||||||
);
|
);
|
||||||
|
if ( $menu_ref->{detach} && $menu_ref->{detach} =~ m/y/i ) {
|
||||||
|
$menus{ $menu_ref->{title} }->menu->tearOffMenu()->raise;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
push( @menu_entry, 'command' );
|
my $command = undef;
|
||||||
push( @menu_entry, $menu_ref->{title} );
|
my $accelerator = undef;
|
||||||
if ( $menu_ref->{command} ) {
|
if ( $menu_ref->{command} ) {
|
||||||
push(
|
$command = sub {
|
||||||
@menu_entry,
|
send_text_to_all_servers( $menu_ref->{command}[0] );
|
||||||
'-command',
|
};
|
||||||
[ sub {
|
|
||||||
send_text_to_all_servers(
|
|
||||||
$menu_ref->{command}[0] );
|
|
||||||
}
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if ( $menu_ref->{accelerator} ) {
|
if ( $menu_ref->{accelerator} ) {
|
||||||
push( @menu_entry,
|
$accelerator = $menu_ref->{accelerator};
|
||||||
'-accelerator', $menu_ref->{accelerator}[0] );
|
|
||||||
}
|
}
|
||||||
|
$menu->command(
|
||||||
|
-label => $menu_ref->{title},
|
||||||
|
-command => $command,
|
||||||
|
-accelerator => $accelerator,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
push( @$menu_items, [@menu_entry] );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $menu_items;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub create_send_menu {
|
sub populate_send_menu {
|
||||||
my @menu_items = ();
|
|
||||||
|
# my @menu_items = ();
|
||||||
if ( !-r $config{send_menu_xml_file} ) {
|
if ( !-r $config{send_menu_xml_file} ) {
|
||||||
logmsg( 2, 'Using default send menu' );
|
logmsg( 2, 'Using default send menu' );
|
||||||
|
|
||||||
@menu_items = [
|
$menus{send}->command(
|
||||||
[ "command" => "Hostname",
|
-label => 'Hostname',
|
||||||
-command => [ \&send_text_to_all_servers, '%s' ],
|
-command => [ \&send_text_to_all_servers, '%s' ],
|
||||||
-accelerator => $config{key_clientname},
|
-accelerator => $config{key_clientname},
|
||||||
],
|
);
|
||||||
];
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
logmsg(
|
logmsg(
|
||||||
|
@ -2098,14 +2102,10 @@ sub create_send_menu {
|
||||||
|
|
||||||
logmsg( 3, 'xml send menu: ', $/, $xml->XMLout($xml_data) );
|
logmsg( 3, 'xml send menu: ', $/, $xml->XMLout($xml_data) );
|
||||||
|
|
||||||
@menu_items = create_send_menu_entries_from_xml($xml_data);
|
populate_send_menu_entries_from_xml( $menus{send}, $xml_data );
|
||||||
}
|
}
|
||||||
|
|
||||||
return $menus{bar}->cascade(
|
return;
|
||||||
-label => 'Send',
|
|
||||||
-menuitems => @menu_items,
|
|
||||||
-tearoff => 1,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
### main ###
|
### main ###
|
||||||
|
@ -2786,6 +2786,7 @@ Submenus can also be specified as follows:
|
||||||
|
|
||||||
<send_menu>
|
<send_menu>
|
||||||
<menu title="Default Entries">
|
<menu title="Default Entries">
|
||||||
|
<detach>yes</detach>
|
||||||
<menu title="Hostname">
|
<menu title="Hostname">
|
||||||
<command>%s</command>
|
<command>%s</command>
|
||||||
<accelerator>ALT-n</accelerator>
|
<accelerator>ALT-n</accelerator>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue