Changes in version 2.4
This version introduces four larger changes (trusted documents, context menus, app settings and project resources) and several bugfixes.
There are no breaking changes introduced with this version. Apps compiled with older versions of the IDE should run fine with the new version of the runtime. Also, app compiled with the new version of the IDE should run fine with the previous versions of the runtime. However, upgrading to this version of the runtime is strongly advised given the security considerations covered in the "Trusted documents" section of this document.
Trusted documents
Until now, when opening a workbook, the runtime would check if it contained a workbook app, and would immediately run it if it does. This poses a significant security risk, as the code in the workbook might be malevolent and the user is not even informed that the code is being executed. This was not a priority so far given the modest number of QueryStorm users, but since we now offer a free version, the number of users is growing more rapidly and this has become a priority.
This version prompts the user to confirm that they trust the workbook before allowing it to run.
Once a workbook app is trusted, the user will not be prompted again for that same workbook app.
Context menus
Context menus can now be defined much more easily compared to using the native Excel API for context menus (i.e. CommandBars
). Commands like the ones ones shown in the image below can be defined with just a few lines of code.
To define a context menu, use the "Add->Context command class" item:
This will scaffold a class that defines a simple context menu command:
To define the look and feel of the command, use the arguments provided to the base class's constructor. To define the behavior of the command, simply implement the Execute
method.
Check out the docs for more in-depth information on context menus.
App settings
Apps can now define settings much more easily simply by creating a class that exposes the configuration properties and decorating the properties with the appropriate attributes.
A new context menu command has been added for creating a settings class:
This creates an example settings class:
1 2 3 4 5 6 7 8 |
|
The example settings object is displayed like this:
For more information on settings, check out the docs.
Function caller information API
The runtime now passes in a new IFunctionContextAccessor
interface that lets functions get a reference to the calling workbook.
1 2 3 4 |
|
An example where this interface is used is the Windy.Query
function to allow it to see Excel tables from the workbook where the function call originates from.
Previously, functions could use the IWorkbookAccessor
for this, but other services relied on that interface behaving differently (i.e. it must return the active workbook for extension apps, owning workbook for workbook apps) so we've now define a separate interface that allows functions to reference the workbook that called them.
Adding resource files
Local files can now be added to a project as resources:
For more information, click here.
Misc
- Added XML docs for QueryStorm.Apps.dll
- Added a
ResourcesHelper
class for reading embedded resources - Fixing issue with dialogs not appearing after first workbook is closed
- Added proxy configuration options in the licensing prompt
- Fixing various issues related to function parameters and return values
- Allowing enums as function parameters
- Allow double-click on warning messages (go to source)
- Fix completion window location issue when on non-primary display with different DPI