LabVIEW Idea Exchange

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

Problem: There are currently two ways of moving or transferring a VI or CTL from one lvlib or lvclass to another (or from having no owner to having an owner).

Method 1: Drag-and-Drop. Select the VI or CTL, drag to desired lvlib or lvclass, drop in desired location.

  • This works well in small to medium projects, and will probably remain the quickest and most common way of moving a item from one owner to another.
  • This does not work well in large projects, which can have dozens or hundreds of classes and libraries, sometimes deeply nested within complex virtual folder structures (for good reason). In this situation dragging the item can take a long time, especially when the destination lvlib or lvclass is "off the screen" and slowly scrolling through the project becomes necessary. This is done by hovering the mouse in just the right region in the top or bottom of the Project Explorer. This can be tedious and wastes time.

Method 2: Remove and Re-add. Select the VI or CTL, remove it from its current owner by right-click >> "Remove from Library" or by pressing Delete key, select destination lvlib or lvclass, right-click >> Add >> File... , then select the file on disk (this last step can take time in large projects with large folder structures).

  • This can be quicker than method 1 in large projects.
  • This method is technically a workaround. It does not directly transfer ownership of the item.

Note: Both methods usually now also require moving the file on disk to the new owner's folder location. This can be done using the Project Explorer Files view, but is an additional step that takes time. It's also possible to simply forget to move the file on disk (best practice is not encouraged). 

 

Solution:

  • Right-click the VI or CTL, select Move to... option
  • A window appears. This window may use a Combo Box or a Listbox to display a list of all the lvlibs and lvclasses available in the project.
  • The user selects the desired destination owner and presses OK.
  • The item is moved to the destination library.

1 (edited).png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Nice-to-haves

  • The Move to... window may contain buttons or other mechanisms (e.g. clickable datagrid headers) that enable the user to sort the libraries and classes in the project by name in alphabetical or inverse alphabetical order, and to filter: display only lvlibs, display only classes.
  • When the selected VI or CTL is initially part of a lvlib or lvclass, that owner will be omitted from the list displayed in the Move to... window.
  • The Move to... window could contain a tickbox named "Also move on disk to new owner's folder?" or similar. When this is ticked, the item is also moved on disk to the folder of the new owner. This would remove the need to use the Files view to move the item on disk (would save time) and would help encourage a best practice (member items should be located in the same folder as their owner).
  • The Move to... option should be available when multiple items are selected. The items may initially be owned by the same owner, or may be owned by different initial owners.

This idea is inspired by the "Project Explorer "Move to Owner Folder" option in Files view" idea.

Each page of a tab control should behave just like a pane does.

This means it should be possible to put splitter bars on a tab page.

This way one could build real nice front panels that look good when resizing, even when using tab controls.

 

At the moment I always have to decide: Do I need several tabs or is it important to be able to resize the panel?

There is no way to have both at the same time

 

(OK, there is one way - but I know much better ways to spend my time than programming all those pixel calculations to resize every control programmatically  :smileytongue:)

 

Here is a quick scetch of a dialog front panel that could be improved very much by using splitter bars and  "fit control to pane":

 

 TabCtlExample.png

 

Look what happens when the panel is resized: It's a big waste of space that could be put to a better use by extending the tree.

 

  TabCtlExample2.png

 

It would be nice if I could select many controls, indicator references, etc... And right click and have it add to a build array. It would automatically add the correct number of array connections and wire the selected control neatly and automatically. This would save a lot of time. This could be done for a lot of things.

 

19315i60939DE58AC3B889

Then select attach to build array to get:

 

19317iDC47DB148E66DDCA

I envision a structure much like a case structure, in which you select your event for evaluating the code inside the structure and the values become constants at the node. The interior would allow code that may normally not be able to run on the host for example, on fpga it might allow the use of doubles and strings and resized arrays, because it isn't actually going to be executed on the host just evaluated and stored as a constant. This would allow for more configuration for fpga and even have some benefits at the traditional desktop environment. For example you could set the structure to evaluate on app build and produce a string constant that is the build date so the build date could be shown on UI to help distinguish builds. 

image.png

When you select several items the "right-click" functionality is available only for common operations.  One of those common operations for several controls and indicators would be to set the current value to default or set the default value to the current value.  Both of these are available from the menu option for multiple selections.

 

However, this option is removed from the right click option when multiple items are selected.  Why?  Simple UI configuration.

I am a big fan of LabView!  This idea is meant to be a positive suggestion, and I hope it will be taken as such.

I almost wish this post was in jest; it is not.  This is a serious suggestion that, in my opinion would improve the NI LabView program, save cost, and be much better for the environment.

 

I recently purchased Application Builder for LabView (both Great products).  I received my Application Builder via FedEx.  It comes in a very nice looking heavy mailing package with the bold label "NI LabVIEW 2010 Add-On Software.  I think there must have been a FedEx overwrap with the following forms:

-Printed shipping manager page with the FedEx Bar Code

-Printed packing Pick Slip (two pages) with a certificate of conformance on page 1 of 2 and a signed page 2 of 2 by the Vice President of Quality and Continuous Improvement (I am not making this up)

 

Now, inside of the envelope is

-The standard folded yellow installation instruction page

-A certificate of ownership! (same serial number as is printed on the outside of the heavy mailing envelope)

-A card which says (really!) "Where is my Media?"  The card says: "In an effort to reduce the impact on the environment, National Instruments no longer ships media with these kits.

 

Now, I assume by this point everyone sees the irony here, and where I am going with this New Idea for LabView!

 

IDEA: Upon successful purchase and proper payment of a LabView Add-On Software package: Email the serial number to the authorized user.

Optionally (if required by legal), send the paper Certificate of Ownership (one page!) to the authorized user, or if allowed by legal, Email a PDF of the Certificate of Ownership to the authorized user.

 

Savings:

Beautiful outer envelope and stack of printed pages made in Ireland - Well, not needed (Give them other work, I don't want to see lost jobs)

Shipping cost and impact on the environment (Ireland to Austin) SAVED

Storage cost and space at NI Austin SAVED

Shipping cost and Air Freight Austin to end user SAVED (less jet fuel impact on the environment)

Less paper to be recycled by end user SAVED, positive impact on less energy needed for recycling!

 

 

It would be nice to select a number of controls or indicators, right click & change settings easily such as  "enabled", change "Representation". It would speed up programming.

 

I'm a bit surprised that I could not find this suggestion already...but hopefully then it's not just an oversight by me...:

 

In the Edit Events dialog you can only add events from one source at a time, it should be possible to select multiple sources and add the same single (OR multiple there as well) events from those sources in one go. The event source selection should filter the events-list so that only the events that are common for the selected sources are shown.

 

In pictures...you should be able to do what I have imagined(!) doing in the bottom picture here:

 

multisource.gif

Do you know what happens if you run this code?

 

Listbox_1.png

 

 

 

Well, the not very useful result looks like this:

 

Listbox_2.png

 

 

 

What it should look like is this:

 

 

Listbox_3.png

 

So yeah, we can use the Top Row property and make sure we don't go under zero and that we're going in the correct direction, etc., but I don't really see any use for the current behavior, so I say that the listbox should display the selected value automatically, at least as an option.

 

Incidentallly, this also applies to multicolumn listboxes and trees.

I decided to dive into the world of custom error rings, andit is a clean way to implement customized errors throughout a project.

 

That being said, forcing the custom error file to be in the user.lib folder makes this feature quite a bit less useful for me. I am working on a project with source code control and multiple developers. Since the custom error code file is in user.lib, it is not in my source code repository, and is awkward to share between developers. 

 

I propose that custom error codes should be a project level feature. 99% of the error codes I want to add are specific to a certain project, so I don't need them in other projects, however I do want them to distribute with my project. I understand how to distribute this with my built application, but during development it is not as easy to share.

 

I am proposing that the error code text editor should be in the Project menu, and the error code file should not be required to be in user.lib (allowing it to be stored in a repository and shared among developers easily).

At present, build paths in build specs are stored as absolute paths, unless the path happens to be in the same folder as the project. Relative paths that are a level or more up from the project folder are not supported. Modifying the XML directly does not support relative paths either.

 

_carl_0-1711030809967.png

 

When working on multi-developer projects, where source control root folders may be different, this can be a serious annoyance.  One of the better workarounds at the moment is to build to a non-desired relative path (within the project folder) and then to run a post-build action to move the generated files to the desired location.

 

But it shouldn't have to be this way -- relative paths should just work.  (They are supported elsewhere in projects, such as with dependencies.)

 

(Note: this is the follow-up to a post on the LabVIEW forum about the same issue.)

Anyone building an executable in LabVIEW probably ran at one point or another into the situation where you exit the app, but the window stays open. So, you do some research and find out that you can call the Quit LabVIEW primitive () or close all the windows in the app to make it really exit. If you add the Quit LV primitive, you then probably encounter this - you test the app in LabVIEW, then when you stop it, LabVIEW suddenly disappears, requiring you to add code which will only call the primitive when you're running as an executable.

 

So, what if LV had an easier way of handling this?

 

Here are some options:

  1. Add another primitive which will only work in EXEs.
  2. Add an input on this primitive which will tell it to only work in EXEs.
  3. Add a VI to the palettes which will wrap this primitive and allow the user to select when it's valid (default - only in EXE). That VI can also have an error input. This is the method I use today (the VI is in user.lib), but it would be better if NI shipped this VI.
  4. AND MUCH BETTER - executables should exit by default when all visible VIs finish running. Thanks Randy.
Message Edited by Support on 04-12-2010 09:26 AM

We currently need to use for loops to convert between arrays and sets:

Current Situation.png

This is not a bad thing in principle, but in my opinion there are multiple issues with it:

  1. These loops require a lot of space on the block diagram, which distracts from the *actual* code. The for loop provided on the palette in particular is absurdly large (and has a label attached to it). Most users probably won't use it more than once.
  2. The same code is used in many places to do the exact same job. This is a strong indicator for reusable code in the form of SubVIs.
  3. An empty for loop can confuse users who are new to sets.

I think LabVIEW should ship with malleable VIs to take care of conversions between 1D Arrays and Sets, because everyone who uses sets will need them eventually:

Suggested Solution.png

Download All

Show the Context Help for packed project library VI terminals. Without it, development suffers. For example, a wire conflict occurs but the nature of the source or sink type is not available for inspection.

pplhlp.bmp

I use .ini files for alot of my configuration setups and like to add comments after the key value for future reference and clarity.

 

The problem is that if you write to the .ini file, all comments formatting (i.e. white space) is removed resulting in a .ini file that looks like a bomb has gone off in it. 

 

Below is a snapshot of before and after the write for clarity:

 

 

 Before.PNG

 

 

After.PNG

 

 

Ive spoken to tech support and they confirmed that due to the nature of how the VIs are written this is the default behaviour. For clarity and full understanding I have included their response below:

 

 

I've been looking through the source code for the config file vi's and I've found where the tabs are disappearing. During the open config file function, the existing keys are parsed. This includes trimming any whitespace, which is why all your neatly aligned columns with tabs are disappearing, in the general case.

This can be overcome by modifying the file. The config files are all found in <LabVIEW>/vi.lib/Utility/config.llb/NI_LVConfig.lvlib.

In this library you will need to modify "Parse Key Value Pair.vi". Remove the "trim whitespace" function in the false case, which is currently removing whitespace before the comment. This will lead to all the whitespace remaining.

However, this will only work for keys which are not edited. When you write a key, this all changes. At the low level, the "Add Key.vi" is doing the formatting of the key. In here, you can see in the true>true>true case that there is space added between value and comment, which simply reformats the key to have 4 space characters before the comment. You could change this space constant to tab constant (maybe just have 3 of them), which would preserve most of what you are intending to keep. It will be slightly subject to the length of text affecting the tab alignment. If you need to sort this, you could use a bit of code which reads the string length and decides how many tabs to insert.

 

 

This method will work, however it is laborious and time consuming. For me personally it would be a great addition if there were a boolean control that allowed me to set whether to preserve the original formatting or not (True by default). You could even argue that there is no need to have the option to turn it on/off, simply preserve the original format by default then edit the original document after if you so wish.

 

Any comments or thoughts on this would be appreciated.

 

Regards

 

Mitch

 

There are lots of Ideas on the connector pane layout, tip strips etc. This is perhaps a variant of some of those, but it seems to me to be a very simple one.

 

When I click on the connector pane, the control or indicator that it links to is highlighted, allowing me to find it on the front panel easily.

When I click on a control.... hmmm, now where is it on the connector pane?

 

Why not shade in the corresponding connector on the pane when a control/indicator is clicked?

This would save tedious mouse work to investigate connector wiring - particularly when inheriting code from someone else.

 

18913i31407E55960D2BA0

nvb.png

 

More often than not, I just Create Constant on that terminal and leave it at zero, either cause the diagram isn't going to be seen anyway or because I'm just going to call Clean Up Diagram afterwards. I think it would make sense if this terminal was merely Recommended rather than Required.

I hope the picture speaks for itself.

/Y

 

BundleSuggestion.png

Remark: I'm using LV2015SP1 - maybe there is already a change in LV2016.

 

Sometimes it's very useful to modify a front-panel decoration element programatically. E.g. moving it, changing its size, color or visability. All of those properties do already exist.

Because a decoration element does not have a property node, it must be searched via the decorations-property of the pane. The problem here is, that there no possibility identify a particular decorcation element because there seems not to be any identifier property.

 

What I'm requesting to resolve this awkward situation is to give all decoration elements a label-text property (or any other identifier property) which can be set during programing time by the LabVIEW programmer.

 

decoration_label.png

 

Hi,

 

I think it would be nice to have this function on LabVIEW when using lvclass.

 

 

carloandreslpz_0-1650651726106.png

 

By this way would be easy to add new elements to the class private data.

 

Regards.