LabWindows/CVI Idea Exchange

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

I'd really appreciate a warning for "empty bodies" or whatever it is called, i.e. things like

 

for(...);
while(...);
if(...);

 If written like

if(...) { };

 it is OK.

 

Why does the numeric lab style have ATTR_FRAME_COLOR but not string, list box and text box?

It always seemed inconsistent to me.

Following the discussion with Luis here I want to suggest

 

  1. a possibility to confine the variable view
  2. allowing to move confined windows within the IDE, i.e. position the source code browser to the left (or right) of the code window, similar to the workspace window.

Wolfgang

Currently, it is only possible to load XML for parsing from an xml file.  In order to load xml data from a string, it is necessary to either write to a temporary file, or use the MSXML library directly.  It would be fairly simple to modify the CVIXMLLoadDocument() Function (or create a new function) which uses the MSXML IXMLDOMDocumentloadXML() function, which allows loading XML directly from a string. 

 

Adding this code to the current function after the IXMLDOMDocumentload() function would improve the CVIXMLLoadDocument() function so that it tries opening the input string as direct XML if it is not a path (Replaces line 167):

 

__caErrChk(MSXML_IXMLDOMDocumentload(xmlHdl, NULL, variantPath, &success));
	 
	if(!success) //if loading as a path fails, try reading as direct XML code
    {
        __caErrChk(MSXML_IXMLDOMDocumentloadXML(xmlHdl, NULL, fullPath, &success));    
    }

I use SavePanelState and RecallPanelState all the time but it give me error when I add/change existing control. I would like to request save and recall only one control that way I don't have to worry about other controls which I am not interested in.

Hi,

 

following the discussion here it turns out that at present there is some ambiguity in using the taskbar button of applications created with CVI: Clicking on the taskbar button gives the visual impression of minimizing all panels of the application, in fact the panels are just hidden, not minimized. As a result, the application will behave differently if you really minimize panels using the _ panel button, or if you hide the panels by clicking on the taskbar. In the latter case the new EVENT_PANEL_MINIMIZE event does not get triggered and the application cannnot know that all panels are hidden (for the user appearing to be minimized). Hence this new event is required to complement this functionality.

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:

  • fill baseline: none, zero, +Inf, -Inf, plot #
  • fill color (with alpha channel too to achieve transparency effects)

 

 

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'

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.

Hi,

 

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.

 

Greets

 

Thomas

Greetings,

 

LabWindows/CVI 9.0.1's implementation of <stdio.h> *scanf and <stdlib.h> strtod functions appears not to support reading back "NaN", "Inf", "+Inf" or "-Inf" values, although printf() can generate them. May I suggest to add functionality like described below.

 

Practical use would be that it's easier to propagate "invalid measurement" through strings if strto*() and *scanf() understand all classes of strings that *printf() family functions will generate.

 

This suggestion is in alignment with ISO 9899:1999 (withdrawn) and its successor ISO 9899:2011, i. e. C99 and C11. Note that there is a "stronger" suggestion to implement all of the C11 standard library in the idea exchange already, which - if implemented - would subsume this suggestion, but as the bare minimum, I'd certainly appreciate seeing this in CVI 2012.

 

Demo code:

 

 printf("%g\n", -NotANumber());
 printf("%+g\n", PositiveInfinity());
 printf("%g\n", NegativeInfinity());
 double x = 0; int i;
 i = sscanf("NaN", "%lf", &x); printf("i=%d, x=%g\n", i, x);
 i = sscanf("Inf", "%lf", &x); printf("i=%d, x=%g\n", i, x);
 errno = 0; x = strtod("NaN", NULL); printf("x=%g, errno=%d\n", x, errno);

 

Desired result:

 

 -NaN

 +Inf

 -Inf

 i=1, x=NaN

 i=1, x=Inf

 x=NaN, errno=0

 

Actual result: we see that printf supports NaN/Inf, but scanf and strtod do not:

 

 NaN
 +Inf
 -Inf
 i=0, x=0
 i=0, x=0
 x=0, errno=0

 

Thank you.

 

If a panel is made part of a tab (InsertPanelAsTabPage) or if a panel handle is obtained from a tab (GetPanelHandleFromTabPage), there are some restrictions as to how you can use that panel. Some of those restrictions could be lifted if the panel knew which tab it belonged to.

 

I suggest the addition of the following (or similar) attributes:

GetPanelAttribute(Panel, ATTR_PANEL_PARENT_TAB_CTRL, &TabCtrl);

GetPanelAttribute(Panel, ATTR_PANEL_PARENT_TAB_INDEX, &TabIndex);

And of course you can already get the parent panel with:

GetPanelAttribute(Panel, ATTR_PANEL_PARENT, &ParentTab);

 

So, now that a panel knows the tab it belongs to, some obvious associations can be handled by the UIR library:

  • Calling DiscardPanel should, internally, call DeleteTabPage instead of the current undefined and illogical behavior
  • SetActivePanel should do a SetActiveTabPage instead of the current buggy behavior
  • SetPanelAttribute(.., ATTR_DIMMED) should do a SetTabPageAttribute(..., ATTR_DIMMED)
  • - etc...

This would allow the user to select at runtime if he wants a Multiple Panels application (MDI) or a Single Panel/Multiple Tab application (tabbed SDI) and almost no changes are necessary to the code.

Summary:

Implement CVI Service API for creating and managing Windows Services (and Unix daemons).

 

Description:

Add specialized CVI functions that users can use for creating, installing and managing the entire life-cycle of long-running user services.

Users can thus have a more uniform interface to the system service API and benefit from a higher level of abstraction across multiple platforms (Windows vs. Unix). These services can contain user code for various tasks, that are running in the background.

With the batch built dialog, it is possible to select "all releases" and/or "all debugs". This button causes, that all 32-bit AND 64-bit releases and/or debugs are selected (marked). It would be helpful, if the selection buttons would be splitted in "select all 32-bit releases", "select all 64-bit releases", "select all 32-bit debugs" and "select all 64-bit debugs". When I develop e.g. 32-bit Software, I don't need the 64-bit versions.

 

It would be also helpful, if it is possible to select the sequence of the batch built. For example: project 1 depends on project 4, but project 4 is currently compiled after project 1 etc.

Under labwindows CVI 2015, I develop a program using a state machine. For this I use a "switch".
The program is voluminous, and in order to browse it more quickly, it would be very interesting to allow the collapse and the expansion of the boxes in a structure "switch"

Browse any <file>.c, by right-click on a file in project view file list.

In Window "Source Code Browser/View" Browse Identifier:
Allow to copy entries in column 'Functions' and other columns, if useful.

 

Reason:
This would help to create a content list in <file>.c or any other documentation.

Copy full columns or line by line might be useful.

Hello NI,

 

during program development and debugging typically there is more than just the source window visible, i.e. the lower part of the screen is used by the find or the build output window. Now, if I switch to a different tab/window to edit the UIR file, this build output window will still be there and take valuable space, although it is completely useless for editing the UI. If I close it, it will remain closed even if I switch back to the source code.

 

I would prefer that 'context sensitive' wndows such as 'find results' / 'build output' ... only show up if meaningful, while they are automatically hidden if not needed, i.e. when a UIR window is displayed, and automatically redisplayed if the source code window is back.

 

Thanks for possible consideration,

Wolfgang

Hello,

 

I would consider it useful to have an event for table controls notifying the program if the user has sorted a column, in analogy to the event EVENT_SORT available for tree controls.

 

Thanks Smiley Wink

This issue has been discussed in other threads:

When a stripchart is horizontally resized, the X-scale range can't be changed, so that visible data in shrunk or stretched to the new dimension. But this behavior is not so useful.

It would be better if resizing the chart changed the X-scale accordingly, so that a larger or shorter period would be displayed.

 

But if you set ATTR_POINTS_PER_SCREEN parameter all the data history is cleared, so that it's impossible to resize the chart.

 

I think that resizing a chart in the way I described is a quite common need, so I suggest to implement ATTR_POINTS_PER_SCREEN in a way that doesn't clear the whole data history.

ClearStripChart() should be the only function that clears the chart.

A tree control can be used to implement radio button controls;

in this situation you can't completely dim one of the items (so that it is grayed and the user immediately sees it is inactive) because the function SetTreeItemAttribute() doesn't allow ATTR_DIMMED attribute.

You can dim the item label using SetTreeCellAttribute(), but the check box stays active (see this discussion).

The EVENT_MARK_STATE_CHANGE can be swallowed, but the check box has the aspect of an active check box, even if nothing happens when you click over it.

 

I suggest to add the attribute ATTR_DIMMED to SetTreeItemAttribute() so that the whole item can be dimmed (its check box too)