This enables names based on the original menu name to be generated.
Specifically, the KillMenuMPD function is now based on the original
menu name, and the toplevel album menu is now actually the same menu
as the corresponding entry in the artist menu.
my $sock;
my ($albumid, $trackid);
my $sock;
my ($albumid, $trackid);
-my %artistids;
-my $menu;
# Quotes the argument so that it is presented as a single argument to MPD
# at the protocol level. This also works OK for most FVWM arguments.
# Quotes the argument so that it is presented as a single argument to MPD
# at the protocol level. This also works OK for most FVWM arguments.
sub make_submenu {
my $name = shift;
$name =~ s/-/_/g;
sub make_submenu {
my $name = shift;
$name =~ s/-/_/g;
- unshift @_, ("exec", $SELF, "--menu=$name");
+ unshift @_, ("exec", $SELF, "--topmenu=$topmenu", "--menu=$name");
fvwm_cmd("DestroyFunc", "Make$name");
fvwm_cmd("AddToFunc", "Make$name");
fvwm_cmd("DestroyFunc", "Make$name");
fvwm_cmd("AddToFunc", "Make$name");
fvwm_cmd("DestroyMenu", $name);
fvwm_cmd("AddToMenu", $name, "DynamicPopupAction", "Make$name");
fvwm_cmd("DestroyMenu", $name);
fvwm_cmd("AddToMenu", $name, "DynamicPopupAction", "Make$name");
- fvwm_cmd("AddToFunc", "KillMenuMPD", "I", "DestroyMenu", $name);
+ fvwm_cmd("AddToFunc", "Kill$topmenu", "I", "DestroyMenu", $name);
fvwm_cmd("DestroyFunc", "Make$name");
fvwm_cmd("AddToFunc", "Make$name");
fvwm_cmd("+", "I", "DestroyMenu", $name);
fvwm_cmd("+", "I", "-PipeRead",
join(' ', map { fvwm_shell_literal } @_));
fvwm_cmd("DestroyFunc", "Make$name");
fvwm_cmd("AddToFunc", "Make$name");
fvwm_cmd("+", "I", "DestroyMenu", $name);
fvwm_cmd("+", "I", "-PipeRead",
join(' ', map { fvwm_shell_literal } @_));
- fvwm_cmd("AddToFunc", "KillMenuMPD", "I", "DestroyFunc", "Make$name");
+ fvwm_cmd("AddToFunc", "Kill$topmenu", "I", "DestroyFunc", "Make$name");
return ("Popup", $name);
}
return ("Popup", $name);
}
'V|version' => sub { print_version(); exit },
'H|help' => sub { print_help(); exit },
'V|version' => sub { print_version(); exit },
'H|help' => sub { print_help(); exit },
+
+ 'topmenu=s' => \$topmenu, # top menu name (for submenu generation)
) or do { print_usage; exit 1 };
) or do { print_usage; exit 1 };
+unless (defined $menu) {
+ $topmenu //= "MenuMPD";
+ $menu = $topmenu . ($mode ne "top" ? $mode : "");
+}
+$topmenu //= $menu;
+
# Connect to MPD.
$sock = new IO::Socket::INET6(
PeerAddr => $host,
# Connect to MPD.
$sock = new IO::Socket::INET6(
PeerAddr => $host,
my $entry = $matches->{$mbid};
my $thumb = shift @thumbs;
my $entry = $matches->{$mbid};
my $thumb = shift @thumbs;
- my @submenu = make_submenu("$menu-$mbid", "--album-id=$mbid");
+ my @submenu = make_submenu("$topmenu-$mbid",
+ "--album-id=$mbid");
fvwm_cmd("AddToMenu", $menu,
$thumb . fvwm_label_escape($entry->{Album}),
@submenu);
fvwm_cmd("AddToMenu", $menu,
$thumb . fvwm_label_escape($entry->{Album}),
@submenu);