UI Tools ships through two channels with different version numbers, and each build has its own defects. The LabVIEW Tools Network carries 1.3.0.70. VIPM's package network carries 1.4.0.73 and 1.4.1.74. Most of the failures below come from four sources: a stale install tree, a missing namespaced dependency, a subVI front panel stripped at build time, or dialog layout code that computes positions before it excludes the text indicator. Work through the sections in order. Each one ends with the check that proves it before you move on.
Pin the UI Tools version to the defect set you can live with
Reinstalling the newest build is the usual first move. It does not always help, because 1.4.0.73 introduced a Two Button Dialog regression that 1.3.0.70 does not have. Choose the build on purpose.
| Version | Channel | Known defect | Action |
|---|---|---|---|
| 1.0.35 | Early package | Readme/license file subset installed to a hardcoded path instead of relative to <user.lib>
|
Upgrade to 1.0.36 or later, then clean up the stray folder |
| 1.1.0.9 (on LabVIEW 2011) | Early package | Control Generator cannot find namespaced JKI State Machine subVIs | Install the re-namespaced VIP build |
| 1.3.0.70 | LabVIEW Tools Network | Stable Two Button Dialog layout; Dialog (Blackened) message text can vanish in built EXEs | Safe downgrade target; apply the EXE front-panel fix |
| 1.4.0.73 | Package network / VIPM | Two Button Dialog text covers the buttons, buttons sit partly off-screen, and an unneeded scroll bar appears. Reproduced on LabVIEW 2013 64-bit, 2014 32/64-bit, 2015 64-bit and 2016 32/64-bit | Patch Set Exclusions.vi order, or downgrade |
| 1.4.1.74 | VIPM | Example Finder lists examples that are not on disk; message box needs at least one CR before the scroll bar behaves | Apply the workarounds below |
The package was created and tested in LabVIEW 2012. It installs into the addon folder of LabVIEW 2012 and later.
Check: open VIPM and confirm that lava_lib_ui_tools shows the version you picked for each LabVIEW version installed on the machine.
Install the OpenG and LAVA Palette dependencies before the toolkit
Do not install UI Tools on its own and then chase broken arrows. It calls into the OpenG libraries throughout. If you are below any minimum version listed here, subVIs will load from the wrong version or fail to load at all.
| Dependency | Minimum version |
|---|---|
| OpenG Application Control Library | 4.1.0.7 |
| OpenG Array Library | 4.1.1.14 |
| OpenG File Library | 4.0.1.22 |
| OpenG LabVIEW Data Library | 4.2.0.21 |
| OpenG String Library | 4.1.0.12 |
| LAVA Palette | 1.0.0.1 |
Every packaged VI carries the suffix __lava_lib_ui_tools. That suffix keeps the toolkit's copies of helper VIs separate from your own code and from the original libraries. It also means a same-named VI from another package will never satisfy a missing UI Tools subVI.
Check: the palette appears under Addons ▸ LAVA and shows four groups:
- Front Panel Transparency (fade in/out, linear or exponential)
- Utilities (alignment, snap, mouse follow)
- Dialog (class-based, extensible)
- Engine (Beta) for decelerated object movement
Clear VIPM Error Code 8 and stale install folders
The failing install looks like this:
VIPM could not install the package lava_lib_ui_tools-1.3.0.70.
Error Code: 8
Error Source: Open/Create/Replace File in ZLIB Read Compressed File__ogtk.vi
-> VIPM ZLIB Extract File (Optimized).vi -> ... -> VIPM Main Window.vi
<APPEND> C:\Program Files (x86)\National Instruments\LabVIEW 2012\vi.lib\LAVA\UI Tools\Dialog\Dialog\Dialog_Blacken__lava_lib_ui_tools.vi
LabVIEW error 8 is a file permission error. The extractor cannot overwrite a file that a previous install left behind, usually because a process still holds the file or its permissions are stuck. Retrying the install fails the same way. Trying older versions also fails, because every version writes to the same path.
- Close LabVIEW and VIPM.
- Restart the PC. This releases any handle still held on the old VIs.
- Delete the leftover
vi.lib\LAVA\UI Toolsfolder under the LabVIEW version named in the error. Use an account that has write rights to Program Files. - Reopen VIPM and install the package again.
If the folder still refuses to delete after a clean reboot, the problem is an ACL or a security agent holding the file. Stop here and get IT to release it. Forcing the install again will not fix it.
Only if you ever installed 1.0.35: that build wrote its readme and license subset to a hardcoded path. On 32-bit Windows it created C:\Program Files (x86)\National Instruments\LabVIEW 8.6\user.lib\_LAVAcr\UI Tools, a parallel directory tree. On a machine that blocks directory creation in C:\, the install failed instead. Version 1.0.36 changed the path to be relative to <user.lib>. After upgrading:
- Delete that
(x86)tree only if your LabVIEW lives inC:\Program Files\National Instruments\LabVIEW xyz. - On 64-bit Windows, leave it alone.
On 64-bit Windows with LabVIEW 2009, the readme and license files did not land in the expected directory. Find the Nuvola icon license manually. It must ship with any application you distribute that uses the Nuvola icons.
Check: the install completes, and Dialog_Blacken__lava_lib_ui_tools.vi exists under vi.lib\LAVA\UI Tools\Dialog\Dialog.
Restore the namespaced JKI State Machine subVIs for the Control Generator
With 1.1.0.9 on LabVIEW 2011, the Control Generator searches <userlib>:\_LAVACR\UI Tools\_lava_lib_ui_tools.llb for Add State(s) to Queue_jki_lib_state_machine_lava_lib_ui_tools.vi. That llb does not exist. Having JKI State Machine 2.0.0-1 installed does not help. The toolkit calls renamed, namespaced copies of those VIs, not the originals.
The tempting fix is to copy the JKI VIs in by hand and rename them. It works until the next UI Tools update, which silently undoes it. The permanent repair is the corrected VIP build, which fixes the namespacing of the JKI State Machine dependency. The corrected build installs under the LAVA palette, not the old location.
- Uninstall the affected UI Tools build and its Control addon in VIPM.
- Install the corrected VIP build.
- Mass-compile or reopen any project that linked to the old llb path, so the callers relink.
Check: the Control Generator launches without a "find missing VI" dialog, and the Dependencies list for your project has no references to _lava_lib_ui_tools.llb.
Keep the subVI front panel so Dialog (Blackened) renders in a built EXE
In the development environment, Dialog(Blackened).vi looks correct. In the built EXE (reported on LabVIEW 2012), two things go wrong:
- The message text disappears, leaving a row of dots that are the tops of ascender strokes.
- The message string gets appended to the window title.
Two common reactions do not help. Falling back to the stock dialogs loses the background blackening that makes dialogs readable over a cluttered instrument display. Searching the build spec for a text-rendering option finds nothing, because the text is not the problem.
The cause is the subVI that measures the string to size the dialog. It holds a reference to its own front panel to compute string length. In the editor, that front panel is loaded in memory. Application Builder strips front panels from subVIs that do not appear to need them. At run time the reference is invalid, the computed height collapses, and the text is clipped to a sliver.
Patch the toolkit VI (temporary: a package reinstall overwrites it):
- Open
Calculate Optimal Height__lava_lib_ui_tools.vifrom<LabVIEW>/vi.lib/LAVA/UI Tools/Dialog/Dialog. - On the block diagram, create a static reference to any front panel element. The error cluster is enough.
- Save. The static reference forces Application Builder to keep the panel.
Fix it in your build spec (survives reinstalls):
- Open the EXE build specification ▸ Source File Settings.
- Expand Dependencies and select
Calculate Optimal Height__lava_lib_ui_tools.vi. - Clear the option that removes the front panel for that VI.
- Rebuild.
Check: run the EXE. The full message text renders inside the dialog, and the title bar shows only the title you wired.
Repair the Two Button Dialog layout in 1.4.0.73
A plain two-button dialog behaves like this on 1.4.0.73:
- On the first run after opening the program, the text drops over the buttons. Clicking selects the text instead of pressing a button. Tab to a button and press Enter to get out.
- On a second run the text moves up, but the buttons still sit low and partly off-screen.
- A scroll bar appears even though there is room for the text.
This reproduces across several machines and LabVIEW versions, so it is not your display settings.
The cause is in the layout code. It aligns every dialog component relative to the others, and the text indicator must be excluded from that set before any position is computed. The Two Button Dialog never initializes its excluded references, so the text indicator is included in its own positioning pass. The first-run versus second-run difference comes from whatever reference state is left in memory.
Temporary restore: downgrade to 1.3.0.70 in VIPM. The layout is correct there.
Patch in place:
- Open
Dialog_TwoButtons.lvclass:Dialog Box.vi. - Go to the Init case.
- Wire the message string indicator reference into
Set Exclusions.vi. - Make
Set Exclusions.vithe first node executed in that case, ahead of any position calculation. Enforce the order with the error wire. - Save, then close and reopen LabVIEW so no cached reference state hides the result.
Permanent: update to 1.4.1.74 and rerun the same test. If the layout fault persists, keep the patched class in source control. Re-apply it after every package update until a release fixes it.
Check: on the first run after a fresh LabVIEW launch, both buttons are fully on-screen and clickable. No scroll bar appears for short text. A second run looks identical to the first.
Work around the message-box scroll bar and missing examples in 1.4.1.74
Scroll bar: the message box flows text correctly only when the Message string contains at least one carriage return. Without one, the scroll bar does not display properly for long messages. Until a fixed build is available, add a CR to the message upstream of the dialog call. Put it inside a small wrapper VI so every caller gets it:
Examples: NI Example Finder lists the UI Tools examples, but opening any of them gives a file-not-found error. The index entries are installed but the example VIs are not, so reinstalling the same build will not bring them back. Work from the palette VIs directly. Use the Two Button Dialog test from the previous section as your own minimal example. Report the missing payload to the project's issue tracker.
Check: long single-paragraph messages show a working scroll bar, and short messages show none.
Build control templates at final size instead of resizing styled buttons
Resizing a Vista-style button looks like it clips the hover highlight. The actual problem is resolution loss. The button states are bitmaps, not vector graphics, and the hover border is only 1 to 2 pixels wide. LabVIEW's resize resampling averages that border away. GlassWeb-style buttons do the same thing, and so does the Silver template, because every template bakes a fixed-size image of each button state.
Stop resizing. Make a template at the size you need and generate the controls from it.
- Create three PNG button backgrounds named
templatename_1.png,templatename_2.pngandtemplatename_3.png. - Copy each PNG to the clipboard and paste it onto the matching state of
templatename.ctl. - Save the template in the lowest LabVIEW version you support, so every newer version can load it.
- Drop the PNGs and the
.ctlintoLabVIEW Data\LAVA\Control Templates. Small and medium Vista templates, and the Silver template, go in the same folder.
Check: generate a button from the new template. At 100% zoom the hover border is crisp on all four edges.
Lay out subpanel grids without stalling the UI thread
A typical case is a DQMH application that clones one module per camera and inserts each clone into a subpanel on the main UI. The count is about 25 in practice, the design must scale to several hundred, and it has been tested to 200. Status updates are slow, about one per minute per camera.
Subpanels are not lightweight. Each one is a window-managed container. UI updates start to get unreliable at around 100, and a pane full of empty subpanels is already slow to lay out before any VI is inserted.
Do not recompute the grid on every Pane Resize event. Positioning hundreds of subpanels per event makes the UI unresponsive. Compute the grid once at startup, or when the operator commits a layout change, using a pane width taken from the owning pane:
Getting the owning pane's usable rectangle from the window bounds is not exact. Subtract an allowance for the scroll bars, then adjust by eye. Side margins will not stay perfectly constant as subpanel size and pane size change.
If the layout still bogs down, change the architecture instead of tuning the math:
- List and detail: show every device in a Table, Multicolumn Listbox or Tree. Put one subpanel beside it and load the selected device's control VI into it. This keeps one live subpanel instead of hundreds, and the per-device controls stay full size.
- Splitter panes: if the supported layouts are known in advance, use splitters with nested subpanels. Cap the grid (for example 20 by 20) and switch to a scroll bar below a minimum cell size.
Check: with the maximum device count loaded, resize the main window. Redraw completes without freezing, and every cell's controls remain clickable.
Run the end-to-end check before releasing the application
- VIPM shows the chosen
lava_lib_ui_toolsversion, and all six dependencies meet their minimum versions. - Addons ▸ LAVA shows all four palettes, and no project VI has a broken run arrow.
- A fade-in/fade-out test runs smoothly. Exponential is the default curve and linear is optional.
- The Control Generator opens without missing-VI prompts.
- The Two Button Dialog lays out correctly on the first run after a cold LabVIEW start.
- A built EXE shows full message text in Dialog (Blackened), with a clean window title.
- A long message without a CR scrolls correctly, confirming the wrapper is in place.
- Template-generated buttons render crisply at their final size.
- The distribution folder includes the Nuvola icon license if any Nuvola icons ship.
FAQ
How do I fix VIPM error code 8 when installing UI Tools?
Close LabVIEW and VIPM and reboot to release file handles. Then delete the leftover vi.lib\LAVA\UI Tools folder under the affected LabVIEW version and reinstall. Error 8 is a file permission error, so repeating the install without removing the stale files fails every time.
How do I stop Dialog (Blackened) losing its message text in a built EXE?
Keep the front panel of Calculate Optimal Height__lava_lib_ui_tools.vi. Either clear the remove-front-panel option for that VI in the build spec's Source File Settings, or add a static reference to one of its front panel controls. The subVI measures string length through its own front panel, which Application Builder strips by default.
When should I stop patching UI Tools and escalate?
Stop once a defect survives a clean reinstall, the correct dependency versions, and the documented patch: for example, a Two Button Dialog that still misplaces text after the Set Exclusions.vi reordering on 1.4.1.74. At that point, file a report on the LabVIEW Open Source project's UI Tools issue tracker with your LabVIEW version, bitness, package version and a minimal VI. For LabVIEW runtime or Application Builder behavior outside the toolkit, open a case with NI support.