A collection of developer tools and runtime classes for SageTV plugin developers and SageTV Studio users. At present this includes four main components:
This component implements a plugin manager for Studio, allowing Java programmers to extend Studio functionality by adding custom commands to the Studio menus. For details, see the {@link gkusnick.sagetv.studio} package documentation.
This Studio plugin implements a number of useful commands such as Search, Replace, Select Safe Subtree, List References, and more. For details, see the {@link gkusnick.sagetv.studio.Tools} class documentation.
The Tools plugin source code also serves as an example of a working Studio plugin for developers seeking to write their own plugins.
This Studio plugin implements commands and runtime functions for automating STVI creation. For details, see the {@link gkusnick.sagetv.studio.STVI} class documentation.
This component implements a set of strongly-typed wrapper classes for the SageTV API, simplying the use of API functions in Java code. For details, see the {@link gkusnick.sagetv.api} package documentation.
These tools require SageTV version 6 or better, and Java version 1.5 or better.
Version History | |
---|---|
0.4 |
Reorganized the reference list machinery and added a number of new
list commands and features. See the {@link
gkusnick.sagetv.studio.Tools} documentation for new List commands,
and the {@link gkusnick.sagetv.studio.RefList} documentation for new
features of the List windows. Search and Replace now support whole-word matching, displaying search results as a reference list, plus an additional search scope that includes the selected widgets and their descendents. Added the following commands to the {@link gkusnick.sagetv.studio.Tools} menu: Auto-Arrange Lists, Select Shared Descendents, List Variable References, List Selection, Paste Ref Before, Paste Ref After, Paste Above, and Delete & Promote Children. The {@link gkusnick.sagetv.studio.Tools} plugin now exposes the following methods for use by other plugins: {@link gkusnick.sagetv.studio.Tools#OpenListWindow OpenListWindow} and {@link gkusnick.sagetv.studio.Tools#ManageWindow ManageWindow}. Export As STVI now looks for an existing STVImported hook beneath the exported menus and will reference any code it contains from the global STVImported hook. See the {@link gkusnick.sagetv.studio.STVI} documentation for revised STVI creation instructions. The Import STVI file browser dialog now says Open instead of Save. Added {@link gkusnick.sagetv.studio.STVI#InsertWidget STVI.InsertWidget} and {@link gkusnick.sagetv.studio.STVI#SetWidgetProperty STVI.SetWidgetProperty}. {@link gkusnick.sagetv.studio.STVI#RemoveWidget STVI.RemoveWidget} now deletes the widget from the STV if no references to it remain, instead of letting it dangle. {@link gkusnick.sagetv.studio.STVI#ProcessImport STVI.ProcessImport} now deletes the STVImported hook in Safe mode, preserving any shared descendents. Added the following methods to the {@link tv.sage.StudioAPI}: {@link tv.sage.StudioAPI#GetWidgetTypeIcon GetWidgetTypeIcon} and {@link tv.sage.StudioAPI#GetPlugin GetPlugin}. {@link gkusnick.sagetv.api.WidgetAPI.Widget#GetWidgetPath widget.GetWidgetPath()} and {@link gkusnick.sagetv.api.WidgetAPI#GetWidgetFromPath GetWidgetFromPath(szPath)} can now distinguish untitled Listener widgets by listener event. Changed the definition of .equals() for wrapped API
objects from "wraps the same underlying object" to "underlying
.equals() method returns true". For most wrapped API
objects this should return the same result as before, but the new
definition is technically more correct.API wrappers are current as of SageTV V6.1.6. Most of the debug log spew is turned off by default in this version, but can be selectively re-enabled by setting properties in gkusnick.util.Log.properties . |
0.3.2 |
Fixed a menu export bug in the {@link gkusnick.sagetv.studio.STVI}
plugin. |
0.3.1 |
If an STVI attempts to insert new code under a non-existent hook,
{@link gkusnick.sagetv.studio.STVI#ProcessImport ProcessImport} now
implicitly creates the hook. Fixed various minor bugs in version 0.3. |
0.3 |
Added the {@link gkusnick.sagetv.studio.STVI} plugin class defining
Studio commands and runtime methods for automating STVI creation. Added the following commands to the {@link gkusnick.sagetv.studio.Tools} menu: Normalize References, Paste Before, Paste After, Shift Block Up, and Shift Block Down. Added dropdown lists of recently-used strings to the Search and Replace dialogs. Added the {@link gkusnick.sagetv.studio.MRUFileChooser} and {@link gkusnick.sagetv.studio.MRUCombo} dialog control classes. Added {@link tv.sage.StudioAPI#InvokeMenuCommand StudioAPI.InvokeMenuCommand}. Added WidgetAPI extension {@link gkusnick.sagetv.api.WidgetAPI.Widget#clone clone()}. Fixed a bug in which the right-click menu hook did not initialize correctly if the Studio window is too small. |
0.2 |
Added {@link tv.sage.StudioAPI#AddTreeModelListener
StudioAPI.AddTreeModelListener} and {@link
tv.sage.StudioAPI#RemoveTreeModelListener
StudioAPI.RemoveTreeModelListener}. Added the following commands to the {@link gkusnick.sagetv.studio.Tools} menu: List References, Copy Widget Name, Copy Widget Path, and Set as Non-Primary. Added an option to the Search and Replace commands to limit the search to specific widget types. Added drag & drop support for reordering plugins in the Manage... dialog. Added WidgetAPI extensions {@link gkusnick.sagetv.api.WidgetAPI#GetWidgetTypes GetWidgetTypes()}, {@link gkusnick.sagetv.api.WidgetAPI.Widget#IsUIWidget widget.IsUIWidget()}, and {@link gkusnick.sagetv.api.WidgetAPI.Widget#IsUIChain widget.IsUIChain()}. Fixed a bug initializing the popup menu when using the standard STV. Fixed a bug in which the right-click context menu was not properly cleared by the Manage... command. Fixed a bug in {@link tv.sage.StudioAPI#SelectWidgetRefs StudioAPI.SelectWidgetRefs} the first time a secondary reference is selected. Fixed a {@link java.util.ConcurrentModificationException} in {@link gkusnick.sagetv.api.WidgetAPI#GetWidgetDescendents WidgetAPI.GetWidgetDescendents} and {@link gkusnick.sagetv.api.WidgetAPI.Widget#GetDescendents widget.GetDescendents}. |
0.1 |
Initial release. |