News
Scenome 22.0 — 1/2/2022
Release details are described below.
- Scenome Platform. Added package management feature to Scenome. This feature makes it easy for developers to write plugins that can be easily installed and uninstalled. Packages are written with Scenome Scripting Language, and have access to all the features of the language during package installation. The main elements of this feature are some package installation infrastructure designed to allow you to associate UI elements, scripts, and DLLs with a particular package class. This makes it possible to precisely remove the correct elements during a package uninstall operation.
- Scenome Platform. Added per-app package dictionaries. These can be found in \Applications\Shader (for example) as PACKAGES.BOX. There is no enforcement of packages at the application level, but you can write Scenome Scripting language code that respects the package definitions if needed.
- Scenome Scripting Language API.
Added a package attribute to all Scenome command macros. The package declaration has no affect
on the macro, but it can be queried during package uninstallation.
/////////////////////////////////////////////////////////////////////////////// // macro /////////////////////////////////////////////////////////////////////////////// function void EditDeleteSelectedNodes_OnUpdate( CommandPresentationModuleInfo commandInfo ) { ValidateNodeCommandContext.TestContext( commandInfo, Node, "Deletes the selected nodes or provides information on why the delete operation cannot be performed" ); } macro EditDeleteSelectedNodes( CommandPresentationModuleInfo commandInfo ) [Category="Node Commands", Package="Scenome-Package-Geometry", Guid="{1F91F9D2-F612-46D4-A453-4B81096121A9}", Image=".\\icons\\delete.bmp"] { auto NodeBuffer nodes = LibSelection.GetSelected( Node ); LibNodeAlgorithms.Delete( nodes ); }
- Scenome Scripting Language API.
Added a package attribute to all Scenome scripting language _scripts.ssl macro libraries. Note that these
can also be added to function libraries, but that's not usually necessary. The package declaration has no affect
on the script library, but it can be queried during package uninstallation.
/////////////////////////////////////////////////////////////////////////////// // // $author Scenomics LLC // $description Implements commands for Node. // // Copyright 2004-2023 Scenomics LLC. All Rights Reserved. // /////////////////////////////////////////////////////////////////////////////// [Package="Scenome-Package-Geometry"] import library "app_service_assert_util.ssl"; ...
- Scenome Platform. Minor reorganization of command categories as part of the package infrastructure update. This change has no effect on software operation or functionality.
- Scenome Platform. Added to <CommandRepNode> a <Str> data member c_sPackage and a <Str> data member c_sScriptPath. The package string is used to associate the object's macro with the underlying package class. The script path is used to associate the object with the Scenome Scripting Language file in which the macro is implemented.
- Scenome Platform. Added to <TypeRepNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <AcceleratorElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <ContextMenuElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <ContextMenuElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <DockbarElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <DockedViewElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <InterfaceElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <ItemElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <KeyboardElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <MenuElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <PopupElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <ScriptElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <SeparatorElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Scenome Platform. Added to <ToolbarElementNode> a <Str> data member c_sPackage. The package string is used to associate the object with the underlying package class.
- Shell Application. Updated Shell app build process. Previously, a separate command was used to synchronize the UI with the Scenome Scripting Language codebase. For example: if you change the name of a macro, the UI didn't update unless you ran a command to update it (even though commands would keep working). This update is now part of the app build process. This synchronization operation also affects all UI content loaded via <NodeLink>, and those documents will now be saved once the build is complete.
- Scenome Platform. <NodeQuery> has been relocated. For historical reasons, it was stored in Plugin-Domain-GIS, but it has been promoted to Core-App-Edit. This change has no effect on software operation or functionality.
- Scenome Platform. Added to <MinMaxValueStore> data interface overloads for getting/setting 32-bit float values. This class mainly works with 64-bit float values, but it's very convenient to be able to copy 32-bit values into this object, or to copy 32-bit values out of this object.
- Scenome Platform.
Fully virtualized all test scripts when accessed by File > Run Tests from the main menu. To add your
own tests, just make a script such as app_service_test_my_test_util.ssl and it will appear
in the list of tests. You'll need a function in the library that returns a name for the tests. Here's
an example of the function. Put the name of your test in the quotations. Please do not use Spa. since
that stands for 'S'cenome 'P'latform 'A'pi.
/////////////////////////////////////////////////////////////////////////////// // function /////////////////////////////////////////////////////////////////////////////// function void GetName( Str p_oName ) { p_oName.Value = "Spa.Test.ShaderBuffer"; }
- Scenome Scripting Language API.
Added event description scripts to the user scripts directory. Previously, you had to manually configure an event and then
use the node event preset system to save a preset. Later, you could apply the preset to other nodes. The node event system
has been replaced with event description scripts. They're very easy to write, and then the event wizard takes care of everything else.
/////////////////////////////////////////////////////////////////////////////// // // $author Scenomics LLC // $description Implements functions for Node event handling. // // Copyright 2004-2021 Scenomics LLC. All Rights Reserved. // /////////////////////////////////////////////////////////////////////////////// library LibEventConfig; import library "app_service_assert_util.ssl"; import library "app_service_console_util.ssl"; import library "type_service_enumeration_util.ssl"; import library "type_service_create_util.ssl"; import library "type_event_wizard_classes.ssl"; /////////////////////////////////////////////////////////////////////////////// // function /////////////////////////////////////////////////////////////////////////////// function void GetEventConfig( EventConfig p_oConfig ) { // Return the type of the node that hosts the event. Code that uses // this library can make its own assumptions about whether to // support sub-classes or not. p_oConfig.m_aoHostTypes.Add( Texture ); // Return the name of the event. This is the name of the function // that executes when the event fires. p_oConfig.m_oEventHandlerFunction.Value = "OnNotifySourceDimChanged"; // Return the filename of the script that contains the event handler. // This path should be relative to the location of the event handler script. // This tells us which event handling library to use. p_oConfig.m_oEventHandlerPath.Value = ".\\texture_size_data_flow_scripts.ssl"; // Add SinkNodeInfo sets to the EventConfig object. // One per named sink in the set. If your event // requires two sinks, then add two SinkNodeInfo // objects below. SinkNodeInfo a_oBaseDimensions = new SinkNodeInfo; a_oBaseDimensions.m_sSinkName = "BaseDimensions"; a_oBaseDimensions.m_oSinkTargetType = Texture; p_oConfig.m_apSinkNodeMaps.Owns( a_oBaseDimensions ); // Get hint text for the UI. p_oConfig.m_slHints.Add( "Connect this
node to the containing source dimensions" ); // Get the event. Usually this will be SPA.Node.OnNotify // but it might be something else if you have a specialized // event. p_oConfig.m_oEventTypeName.Value = "SPA.Node.OnNotify"; // Return the default behavior for events. p_oConfig.m_eEventDirection = 3; // NED_SendReceive } - Scenome Platform. Updated Scenome app icons, splash screens, command icons, and Windows® Explorer icons to use the new 'glacier' look/feel. Viva 2022~