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.
This is sort of a slight extension of the valuable suggestion by vix (Go to Next/Previous function in source files):
Right now, in the CVI IDE it is possible to have a function tree of all library functions - for larger projects it might be useful to also have a function browser for all the functions in the current project, thus not only permitting to jump to the next or previous function, as suggested by vix, but also to more easily return to a frequently used function by one mouse click on the function name in the function browser.
Functions could be grouped by file name (typically there is more than one source file in a project), or alphabetically...
One nice feature of menu bars is their capability of grouping different items using a separator.
Having ring controls with many text entries it would be nice from a user perspective if these many entries also could be grouped using one or more separators.
What would be also convenient is the ability to dim or hide a specified entry; right now it is possible to rebuild the ring programmatically with one or several entries less (or more), but this is some overhead that could be minimized by simply hiding or showing an indexed entry.
As suggested about two years ago (http://forums.ni.com/t5/LabWindows-CVI/Is-it-possi
Phrased differently I would like to have one more attribute 'SHOW_POSITIVE_SIGN' that could be set to
0: don't show the plus sign, i.e. display numbers as is implemented now, default
1: show plus sign for positive numbers
2: show plus sign for positive numbers and zero
In LabVIEW graphs there is a nice property called "Fill To" that can be used to get very cool features (see here, for example) to highlight different regions or data.
I think such a property should be introduced in CVI too, with the following options:
Doing a CTRL+F and finding all instances of a word works, but is a lot of steps. I tend to use Notepad++ a lot for my IDE and it has this really handy feature. If you double-click a word, it will highlight that and all other instances of that word inside that one open file. This is like a "quick find" that saves a lot of time. See attached image to get the idea. The darkest highlight is the one instance that was double-clicked.
I've been looking around for a way to open the LabWindows/CVI print dialog box. It appears when you call the PrintCtrl function, does NOT appear in the PrintTextFile or PrintTextBuffer functions, and there is no function to open it directly; I need to print from a text buffer and would like to open it directly from a Print Setup menu function. The best recommendations that I have received are either use the Windows PrintDlg function, or to kludge the text into a hidden control and print the control. I highly recommend either adding it to all user interface library print functions or allow the user to call it directly.
If you have a Numeric Indicator, and you set "Range checking" to Notify, CVI will show an ugly popup when you enter a value out of range.
If you set this property to "Coerce", the value you enter is coerced in range, but no specific event is generated.
I think that an EVENT_VAL_COERCED would be really useful: using this event you could easily show a message popup, for example.
When using the UI functions, a neat feature is the ability to pull up a dialog of valid control IDs when specifying the control:
clicking the elipses displays this dialog showing all valid control IDs:
If you are using the function panel however, you cannot access this dialog and you are on your own for figuring out the correct control ID:
I think we should add this functionality in the function panel for any function that has a control ID parameter.
- If control mode is indicator set ATTR_HILITE_CURRENT_ITEM to 0 per default
- Provide a code to set the background color of the whole line (from "here" on) instead of just where text is
This would make it far more easy to color alternating lines differently, now you have to append every text with lots of spaces to fake it if you use tabs
- Autoscroll option
Always jump to the last line if a new last one is inserted. Useful for logging purposes
Sometimes I want to complement standard UIR controls with custom graphics on my own. For instance an arrow linking two otherwise normal controls. One way to do those custom graphics is to draw them in a transparent canvas. But then if you place the canvas on top of the controls, it catches the clic events destined for the controls below.
There should be either:
- an attribute for the canvas (or maybe all controls) that basically says 'ignore me and pass the event to the control below me'
- a way for the canvas callback to say 'nope, this event is not for me, just pass it on to the control below me'
For God's sake please add a zoom function, the text and icons are so small that my eyes burn when looking at the block diagram window.
Or at least just a way to make icons/text bigger so it's easier to manage connections.
I added the tab control into panel to my project. Overtime, I added 20 items into the single Tab Control. But since were so many items in the tab control, I decided to re-arrange items (indexes) in the tab control by either moving them left or right depending on the alphabetical order. But here is my problem.
Since I re-arranged the items (indexes), the indexes have all changed for all the items. Now I have to go everywhere the function GetPanelHandleFromTabPage is called and manually update the index numbers to match panel handles for the index. There are 20 different places where this could occur. The number of items (indexes) on the tab control could grow even more and may have to be re-arranged again in the future. Just a big pain.
Suggestion for improvement: Provide a another function that can obtain the index of the item on the tab control dynamically. This could be done by using the "Constant name:" issued in the edit tab panel of the edit tab control. So if the items (index) inside the tab control are re-arranged then the index value for that item is carried with the new index value.
Also the index would be included in the header file generated by the panel editor for CVI so that now the index value can be used thus eliminating the hard coded the index value.
When working with large programs, especially those with involved user interfaces and the pernicious CallControlCallback or CallPanelCallback functions, it becomes very difficult to follow the program flow when trying to trace a program through all of the various levels of subroutines.
A tool for leaving breadcrumbs, in the order visited, could be very helpful. Right now I use the "breakpoints" as a sort of hyper-bookmark, since the breakpoint facility in LabWindows shows the line number and has the "go to breakpoint" capability in the dialog box. However, this is of limited utility since the dialog box sorts the breakpoints by line number and file, not in order of placement. The bookmark facility doesn't show line numbers nor does it have the goto capability.
What is needed is a way of showing the program flow, through routines, in the order visited, in a way similar to the "stack trace" window, except that it needs to be able to show multiple levels simultaneously. This could be done using the existing bookmark facility with the addition of a few items. 1) show file names and line numbers in the bookmark display; 2) allow them to be shown in the order that they were entered, not sorted by line number; 3) add the go-to capability so that I can jump to the location of any bookmark directly.
For instance, right now I'm trying to solve a memory problem. A dynamically allocated buffer is being de-allocated before being used, or at least when the error pops up the routine is trying to write to a NULL pointer. I've got to trace through from the starting point and try to understand where in the flow the buffer is being freed and why it's being freed before being written to. Since there are about a half-dozen levels of subroutines, trying to remember what the program flow is and where I'm coming from in trying to trace it can be difficult.
designing a screen layout I frequently encounter the wish to have not only rectangular (and circular) decoration elements, but also one of the type shown below.
Only the upper right rectangular shape can be realized now, while the more complex shape on the left is what I would like to see added in the future.
Instead of two parameters width and height four parameters would be required (two heights and two widths), may be even a fifth parameter specifying the orientation of the shape: as shown, mirrored in x, mirrored in y, mirrored in x and y.
Without doubt grouping control elements is useful; unfortunately these groups may differ in the number and type of control elements.
Thanks for consideration,
I think it would be a nice tool to save a panel which is generated dynamically from a source code. If I have a database with many variables which I want to set on a panel as controls, I could write an import of this database, generate a panel automatically and could save this panel as UIR file. After this I could use this automatically generated UIR file in a project.
I usually add a lot of files to my project (images, documents, ...) because in this way their path is taken as a relative path when building a distribution kit.
But in this way, if I press "Mark files in project" all the files are marked to search in, and so CVI gets a lot of errors for the files that can't be opened because they are not text files.
Using "Mark all c" and "Mark all h" extends the research also inside CVI installation directory, and (usually) this is not what I want.
I propose to replace "Mark files in project" with "Mark source files in project" or to add this last option to the existing ones.
My company has begun placing incentives on Test Driven Development as fundamental to the code development process. I expect this incentive will impact other companies where CVI applications are used in production. It would be beneficial for NI to provide developers with a roadmap and definitive structures and methods and support for TDD within the CVI environment.
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.