Releases for SqueezeCenter 7 are available here.
Installation:
SqueezeCenter 7.3: you can use the repository URL https://tuxreborn.netlify.com/slim/slim7/repodata.xml in the web Extension Downloader interface instead of manually unzipping the plugin.
SqueezeCenter 7.1 or newer: unpack the ContextMenu zip file in your Plugins
directory and restart SqueezeCenter.
SqueezeCenter 7.0: unpack the ContextMenu zip file in your Plugins
directory, copy its Default.map to your IR folder, and restart SqueezeCenter.
Context menus give you an easy way to access functions and additional features that might otherwise be hidden in a layer of menus, or bound to some odd key combination (for instance, clearing a playlist by pressing the Now Playing button on a Squeezebox Classic remote and then holding the Add button). The ContextMenu plugin maps itself to "arrow_right.hold" and "knob_down.hold" -- that is, it will appear when you hold the right arrow button on a Classic or Transporter remote control, or when you press the knob on a Boom (or Transporter?) for one second. It will show you a number of options appropriate for your player's current state, or even the selection you're looking at on the player's screen -- much like a "right click" menu in a desktop operating system.
All by itself, ContextMenu provides some simple context options -- a list of standard buttons on a Slim Devices / Squeezebox IR remote. I use this mainly for my two players that I control with "universal" remotes -- ContextMenu keeps me from having to remember which button acts like the Size button, as I can simply hold the right arrow, then scroll up or down to Size Button, then tap the right arrow to have the same effect as pressing the normal Squeezebox Size button. Old-timers may remember how SoftSqueeze's virtual remote had a Mute button -- ContextMenu gives everyone a Mute button now.
There are four settings available in the Web settings page for ContextMenu:
Plugin developers write a couple new functions (see ContextMenu/Public.pm for samples & info) to "register" one or more context menu possibilities. Essentially, the plugin provides a GUID for each option and a "pre-offer" coderef.
Each time the user calls up the context menu, ContextMenu executes *all* the registered pre-offer coderefs. This gives each plugin a chance to examine the current situation and determine if its contextual option makes sense. If so, the plugin tells ContextMenu how to label its option, and gives another coderef that should be executed if the user selects (Right Arrow, Play, or Add) the plugin's context option.
For instance, the new ContextMenu code in PlayLog will offer to "Log track info", but only if the Squeezebox has been playing a track for a few seconds and PlayLog hasn't already logged the track info. Otherwise ContextMenu doesn't show any PlayLog option.
See the Public.pm file for documentation on the exact API, and Buttons.pm for sample implementation.
$Id: ContextMenu.html,v 1.5 2009/01/10 01:23:45 peterw Exp peterw $