LabWindows/CVI Idea Exchange

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

I'd like to suggest the possibility to query attributes of a control during debugging, i.e. after the program stops at a breakpoint I would like to have the possibility to obtain the scaling behavior (manual, autoscale) of a graph and the assignment (left/right axis) of a plot...

 

Thanks!

When you have a function to install a callback, for example InstallMainCallback, NewAsyncTimer, InstallComCallback, viInstallHandler, DAQmxRegisterDoneEvent, DAQmxRegisterEveryNSamplesEvent, DAQmxRegisterSignalEvent, etc... it would be nice if the prototype was inserted directly in the source code by pressing Ctrl-D like for variables. Currently you have to open the documentation and do some copy/pasting.

I'm strongly interested in getting back a feature that has already been removed with CVI2013. Until last week, I had good old CVI9.0.1 installed on my PC which was perfect for maintaining my biggest project, a SW tool that has more than 50DLLs around a single executable for controlling lots of devices using a script interpreter for fully flexible process flows.

Some of these DLLs even have cross-references. When modifying a header file that is not only included in the current project but also in other projects of the workspace, I used to see red flagged files in the affected projects to tell me the need of these to be recompiled.

This was really, really helpful to keep the overview!

Unfortunately this feature I don't see anymore in CVI2019 which leads to the fact that I have to either create/maintain a separate list for all external references or the necessity of walking through all projects in my workspace and compile them without knowing the necessity.

Both variants are very uncomfortable and an enormous waste of time in my daily work.

 

I know that this subject has already been refused some time ago, but I really want to encourage you rethinking this "not only nice to have".

I hope you understand my situation.

 

Thanx for supporting. CVI is great and I'm using it since more than 17years!

 

Regards

Manfred

When we are on a string variable in the debugger (for instance in the Variables window or the Watch window or the Array View window), there is currently no way to copy or paste the content of said string. It would be nice to have this basic capability.

It would be great if one could define two colors for user functions, one color for functions declared local to a .c source file, and another color for functions declared globally like in a .h header file or linked file. User-functions are visually the same as all others, black text. Ugh.

If it's too much of a non-compiled linking challenge to apply, at least allow the user to select a section of working code text and change the font color by hand to get to the same place. Being able to change a text chunk background color would be great too. That would be of help to allow the programmer to, say, highlight sections of code that need later work, items for tomorrow, passing along working code to colleagues, etc. 

When editing a panel, you can locate every control in the User Interface Browser at the top right corner of the editor window. In order to highlight some elements in the panels/controls tree, you can collapse all elements and expand only the panel you are interested to. Not exactly a fast and easy process but useful in case of complex UIR files with several panels embedded (and the only way I have found to look at control arrays and their included controls). So far so good.

But if you happen to switch to another window, possibly to revise some code that references the controls you have elaborately selected, and then come back to the UIR editor you will find the UI Browser has reverted to fully expanded and the control you were looking at previously is not event the selected one! That is to say, you've lost all the time spent in tailoring the tree Smiley Mad

In my opinion the UI Browser should retain its state when you switch to another window so that what you were working on is still visible on screen and you don't have to locate it again.

The idea and the code has been originally posted by @nickb here.

This library handles a common need that I handled in a less elegant way as described here.

 

As suggested by @RobertoBozzolo the original code from Nick would be a great addition to the Programmer's Toolbox.

In this way all the users would benefit froma standard tool, without re-inventing the wheel (as I did) Smiley Wink

In the .NET Controller creator, it would be nice:

  • to be able to give a pre-defined list of the only classes it is useful to wrap,
  • or that CVI memorizes the already checked classes it is useful to wrap

in order to generate the wrapper quickly.

 

Because it is very boring to have to regularly check manually only 22 classes among plenty of not collapsed classes.

a screenshot of the CVI dotNET Controller wizard.png

 

Note: I check only desired classes to reduce the compilation time of the wrapper (which is very big with all its classes: 350 000 lines of code in the resulting C file!), as suggested by the CVI manual.

 

Thanks.

CVI provides the ability to use syntax coloring (which is nice Smiley Happy)

Right now, C keywords share one color - these keywords include the data types int, double, ...

 

Unfortunately, the boolean types (bool defined by stdbool.h), including the macros true and false, and the size and pointer difference types are not included, e.g. size_t, intptr_t, ...

 

This is not a problem because CVI also allows adding user-defined tokens for coloring, it even provides the option to add the VISA types.

 

In that sense we have the possibility to have core and extra types marked in two different colors - which is also nice.

 

Now I'd like to mark (my) constants as well, in a different color, and this is not possible.

 

My suggestion thus is to add a second group of user tokens, which can be colored differently.

 

Thanks Smiley Happy

Hello,

I would like a zoom (Ctrl + mouse wheel) when creating .uir panel.

Regards.

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"

If you open a project with many sources and edit a file named zero.c, it takes ages until the browsing information for this file is created.

 

Suggestion: prioritize (all) opened source files when gathering the browsing information.

Hello,

 

working with larger UIs may result in scrollbars showing up in the UI editor. Hence it would be nice if hitting the 'PageUp' or 'PageDown' keys would scroll the page up or down, respectively. Also 'Home', 'End' and the four cursor keys should be supported, similar to their functionality in the text editor. 

 

Thanks!

I would consider it useful if the Build Output would state the total number of errors in a file - right now it says: 1 file with errors, but especially if you start with many errors I find it helpful to see if a change in code reduces the error count.

 

To my knowledge earlier versions of CVI provided this information, which disappeared with clang integration.

 

Related posts are here and here

Easy integration of MS .NET libraries is a highlighted feature LabWindows/CVI. However, programmatically interacting with the GAC from LabWindows/CVI is currently challenging and more worthwhile to do in other environments. A set of functions to programmatically interact with the GAC from LabWindows/CVI would create a more seamless experience for developers.  

Add support for Show Completion to detect when a user is typing in the name of an include file, within the #include brackets or quotes, and display suggestions of headers.

 

The suggested headers can be anything from the supported library headers or user include paths.

 

ShowCompletionsHeaders.png

I have two suggestions for minor improvements of the statusbar, see the figure below:

 

1) If the active window is a source code window I would like to see the name of the function the current line belongs to. If your function is longer, the name will not be visible on the screen and thus one has to scroll up to find out...

 

2) I'd suggest to have a fixed width of the Build Configuration field - right now the width changes e.g. between debug and debug32 and thus all other fields jump left- or rightwards...

 

Thanks!newstatusbar.png

The  shortcut "Ctrl+Space" is for changing the input method in the some system.

  

Even we can change the shutcut, this function is so often to use.

 

The ideal is to make it like the way in some common source editor: when typing from any space position, the completion shows automatically.

 

This could be an option, to toggle on or off in  Edit>> Auto Completion menu item .

While it is possible to programmatically add a menubar to a tab page with LoadMenuBar, it is not possible to do that in the UIR editor.

 

Sometimes I use a tab control to display different scenarios to the user hiding tabs so that he's not aware of the pages not shown: this permits to have a single panel with all elements properly placed and designed on the different pages and programmatically choose which page to display depending on operating conditions or other characteristics. In such a case the tab page behaves like a "normal" panel, but while you can have a standard child panel with its own menubar, you cannot add one to a tab page other than programmatically.

 

It would be a handy to be able to add a menubar to tab pages too in the editor.

First of all : I LOVE the Format File and Format Selection and many thanks for the existing options in the dialog box (pointer for example)

 

Here is what I propose :

 

1 - "Function calls on single line" check box in the Miscellenaous section of the dialog box so that :

 

int CVICALLBACK ScaleIt (int panel, int control, int event, void *callbackData,
                         int eventData1, int eventData2)
{
    int val;
    
    if (event == EVENT_COMMIT)
        {
        GetCtrlVal (panel, control, &val);
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_ACTIVE_YAXIS,
                          VAL_RIGHT_YAXIS);   
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_YMAP_MODE, val);
        SetActiveCtrl (panel, PANEL_GRAPH);
        }
    return 0;
}

 The code above comes from ..\CVI2013\samples\userint\2yaxis.prj

 

Is transformed in :

 

int CVICALLBACK ScaleIt (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
    int val;
    
    if (event == EVENT_COMMIT)
        {
        GetCtrlVal (panel, control, &val);
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_ACTIVE_YAXIS, VAL_RIGHT_YAXIS);   
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_YMAP_MODE, val);
        SetActiveCtrl (panel, PANEL_GRAPH);
        }
    return 0;
}

 

Please note this apply not only to the SetCtrlAttribute() function call but also to the ScaleIt() function itself (very first line)
A long time ago it was OK to restrict ourselves to 80 chars per line but today I feel more confortable with statements on one line

 

2 - "Insert empty line before first statement in function definition" check box in the Miscellenaous section of the dialog box
Especially usefull when you use the Java Formating Option where the '{' is at the end of the line


With the previous sample code :

 

int CVICALLBACK ScaleIt (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
    int val;
    
    if (event == EVENT_COMMIT)
        {
        GetCtrlVal (panel, control, &val);
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_ACTIVE_YAXIS, VAL_RIGHT_YAXIS);   
        SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_YMAP_MODE, val);
        SetActiveCtrl (panel, PANEL_GRAPH);
        }
    return 0;
}

 

The formated source (Java) should be :

 

int CVICALLBACK ScaleIt (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) {
  
  int val;

  if (event == EVENT_COMMIT) {
    GetCtrlVal (panel, control, &val);
    SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_ACTIVE_YAXIS, VAL_RIGHT_YAXIS);
    SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_YMAP_MODE, val);
    SetActiveCtrl (panel, PANEL_GRAPH);
  }
  return 0;
}

 

Instead of : 

 

int CVICALLBACK ScaleIt (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) {
  int val;

  if (event == EVENT_COMMIT) {
    GetCtrlVal (panel, control, &val);
    SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_ACTIVE_YAXIS, VAL_RIGHT_YAXIS);
    SetCtrlAttribute (panel, PANEL_GRAPH, ATTR_YMAP_MODE, val);
    SetActiveCtrl (panel, PANEL_GRAPH);
  }
  return 0;
}

 

Pay attention to the "int val;" declaration with one spacing line in the first code and no spacing line in the second one.

 

Best regards, Philippe