I tried to use a source code / version control for projects in which I use LabWindows and Visual Studio.
One possible solution would be to implement support for the team foundation server, which already has be added to LabView.
Another would to provide an independent solution.
Starting from CVI2010, the User Interface Browser and the Attribute Browser are both located on the right of the UIR editor in the Workspace window.
I'd like to be able to hide these windows when required: when working on small screens like when you use a laptop these windows occupy a lot of space even if you reduce their size at the minimum.
In addition, the ability to choose which window to display on the bottom left could be a good option: up to version 2009 the bottom left side of the workspace window switched between the library tree (source editor) and the attribute browser (UIR editor).
Ideally, while in the UIR editor I would like to be able to:
building on this suggestion I'd like to see a more comfortable panel of the UI editor for editing label/value pairs, see below:
SetAnnotationAttribute permits you to pass -1 in AnnotationIndex parameter to apply the attribute to all annotations on the graph, while SetCursorAttribute does not. It would be good that this command too permits someway to operate on all cursors in a single pass.
As an example, when I want to print a graph on a black-and-white printer I prepare the control for this changing all elements to black.
I can use a single instruction for annotations:
SetAnnotationAttribute (panelHandle, PANEL_GRAPH, -1, ATTR_ANNOTATION_CAPTION_COLOR, VAL_BLACK);
On the other hand, I need to iterate on all elements for cursors
GetCtrlAttribute (panelHandle, PANEL_GRAPH, ATTR_NUM_CURSORS, &numCursors);
for (k = 1; k <= numCursors; k++) SetCursorAttribute (panelHandle, PANEL_GRAPH, k, ATTR_CURSOR_COLOR, VAL_BLACK);
I have had severe problems in development, due to a high synergy between my lack of attention and CVI behavior in search/replace dialogs.
I am talking about the fact that Find/Replace parameters [namely search directories] are stored at REGISTRY level, so that they remain the same across different workspaces.
Having to work with different version of the same software product, I have found myself looking into the wrong sources, or even doing mass updates, due to the fact that different projects have identically named sources and includes, just in different directory trees, and rapidly switching from one workspace
to the next I didn't "mind the step"
My suggestion, thus, is to store find/replace parameters at workspace or project level, so as to avoid the aforementioned inconvenience
When operating graphs in Labview, it is easy to change the scale of an axis of a graph (at runtime): to change e.g. the maximum value, you select the current maximum value with your mouse, type in the maximum number you want and hit enter. To achieve the same in Labwindows, you have to use a numeric control and a button, which is a bit cumbersome. The same applies for zooming: In Labview, you can click a small button attached to the graph and select the way you want to zoom, and then just use the mouse. In Labwindows, you have to know that zooming is done using the ctrl button, ctrl+space restores the previous setting, etc. It would also be nice to be able to enable autoscale by right-clicking on an axis and having a popup menu which allows to do so (just like in Labview). And if the user changes e.g. the maximum value while autoscale is enabled, it would be nice to automatically disable autoscale (unlike in Labview).
So in general, it would be nice to have more comfort in operating graph controls.
there has been the valuable suggestion of a "Picture and Text" button allowing more modern buttons.
For all those focusing on programming instead of UI design it would be also nice if CVI could provide more default buttons ready to use as some examples shown in the image below (taken from the NI community).
As they seem to be already available in LabVIEW it shouldn't be much effort for NI to adapt them to CVI... - hopefully
There is an option to display the default display format for integers and floating point, but no such option to set the default format for
"String Display" or "Array display". Strangely, "Array display" shows my arrays as decimal numbers even though I have the default display format for integers set to Hex.
Ideally, I would like to be able to set them separately for char and unsigned char strings. For example:
char strings I prefer to display as Ascii, null-terminated strings (the current default).
Unsigned char strings I prefer to display in Hexadecimal, with Options==Display Entire buffer. This is because my unsigned char strings are actually arrays of bytes.
I've been using CVI for a long time and it's frustrating to setup these options each and every time I look at one of my unsigned char strings. Even if it can't be setup separately for signed/unsigned chars, I would like the option to set some sort of default.
Another aside, would it be possible to display the array/string as hex characters with the Ascii equivalent just below it? A dual display would be even nicer!
because I had installed CVI2010 on a brand new Windows 7 machine, I was curios to find out about all the service processes running on the system.
It seems that there are quite a few NI services that start after log-on. Some of them seem superfluous, such as the Lookout Citadel service (no LabVIEW, no Lookout installed), but due to the lack of any information I did not bother trying to stop them
1) NI should critically review the services and only start the services that are absolutely needed.
2) Services that are optional might be selected by a checkbox during installation or from the Options / Environment setting
3) NI should provide some documentation / explanation of each service and why it is needed.
Display more struct member information during source editing and during debug.
While editing source code, CVI only displays the struct members, but no information regarding the type of the member (or declaration information, line file and line).
Add a tooltip to the right of the pop-up displaying the struct members in the source editor to display this information. Similar to this picture:
Also add support for displaying nested structs and even display the member values while debugging, in form of a tree, when execution is suspended (CVI currently only displays the memory address of that struct variable).
I'd like the following options being added to FileBrowser tollslib control:
While developing code, having correct indentations is very helping in making sure you have all the right brackets and to see where your structures are nested easily. Sometimes, whether by copying and pasting or just rapidly getting out a section of code, a whole segment might have incorrect indentation, which is tedious to correct.
This is where an auto indent tool could be a big time saver. From somewhere like the Edit menu, where similar functionality is located in other development environments, you could select Format Selection to do a highlighted section or Format File to do the whole file. Then, CVI can format the tabs for you:
Although this is a simple example, auto indent becomes even more useful when you have multiple nested structures and decide, for instance, to add or remove another nested loop.
just a little idea for a minor improvement of the status bar: Right now, the coordinates of UI controls are displayed in different ways: in the popup window, the sequence is Top Left, while in the status bar the sequence is Left Top - this is somewhat irritating...
So I'd suggest to change the status bar text from
(23, 873) to something like
Top: 873 Left : 23
Improve the Breakpoints Window, so that breakpoints can be more easily managed.
1. Change the Breakpoints Window, from a modal dialog to a dockable window (similar to the Watch Window). Debugging can be more easy this way.
2. Allow breakpoints to be grouped, disabled/enabled and edited in user defined categories. This allows users to easily collectively manage several breakpoints at a time. It also helps the user to logically group breakpoints, depending on various issues issues that he might be working on.
3. Breakpoints could also be sorted from a pop-up menu by filename, line, hit count, etc.
It has been suggested much earlier here, but obviously passed out of mind:
When using 'Go to Definition' (CTrl+I) while in release configuration, CVI tells that no source code information was found for the identifier '...', because 'Browse information is not available in the Release configuration'... (still true for CVI2010)
This can and should be improved!
And it might be a good opportunity to also add the reverse process, 'Goto Declaration', suggested here
I would like to have the possibility to store the uir-file not as a tui-file (old-fashioned ini file), instead as a xml file.
If you have, say, three controls called MAX_1, MAX_2, MAX_3 arranged vertically. If I select them all, copy and paste, the new controls appear as MAX_4, MAX_5 and MAX_6 but in the wrong order to what you would expect.
A similar issue occurs with assigning a group of controls to a control array, they always seem to be in the wrong order, usually reversed.
imho the nice tool tips feature provided by the Programmer's Toolbox leads a miserable existence, because it is extra effort integrating it into a GUI.
I would love to see the tool tips integrated into the IDE, that is, when editing a control in the GUI editor, I would like to be able to also set the tool tips text and if it is initially enabled, just like it is possible to enter a control label text. This would include moving the tool tips from the Toolbox to the regular user interface library.
I am still happy that the tooltips have been moved from the Programmer's Toolbox to the UI editor.
Now when using them on a more regular basis it turns out that the programmer might grant the user the option to show / hide them. As a result, I would need to programmatically browse through all controls to change the respective parameter (the same is true for the delay time).
Hence I propose providing two new, more or less global attributes (these could possibly be panel attributes) that set the tooltip enable/disable status and the on/off delay times for all tooltips (on a panel).
This feature is not urgent as it can be implemented already now with some effort, but it might make code a bit shorter and simpler
The more 'urgent' tooltip requests are here...
I don't know if it is possible technically but from a user's perspective it would be convenient for debugging a program (in debug configuration) if the UI constants could be provided in the data tooltips, too. Right now, if something is wrong with my UI I will have to do a lot of detective work to find out which control / control attribute is the problematic one...
Example: Consider the code
SetCtrlAttribute ( panel_handle, control_id, control_attribute, attribute_value );
Right now, if I hover over attribute_value, the tooltip will display something like "attribute_value = 24064". Then I will need to look up userint.h to find out which attribute value this is ( ATTR_CTRL_VAL ). It would be more convenient if the tooltip could include this information, too, and display something like "attribute_value = 24064 ( ATTR_CTRL_VAL )"
The same holds for control_id, because a number such as 14 will not immediately help me - I will have to go through the corresponding include file to find the respective UI control (e.g. TABPANEL_2_NUMERIC ).
Note: the LabWindows/CVI Idea Exchange is not the appropriate forum to submit technical support questions.
The LabWindows/CVI R&D team is committed to reviewing every idea submitted via the LabWindows/CVI Idea Exchange. However, we cannot guarantee the implementation of any LabWindows/CVI Idea Exchange submission.