LabVIEW Project Providers

cancel
Showing results for 
Search instead for 
Did you mean: 

Project Providers Documentation

This document contains an introduction to developing LabVIEW Project Providers.  The documentation and examples collectively demostrate most current features of the Project Provider Framework.

 

Important Note:

The LabVIEW Project Provider framework is an unsupported feature of LabVIEW. The only documentation for it exists in this community group, and it is community supported only. While NI has no plans to modify or break the existing APIs, there is no guarantee that all features will work in future versions of LabVIEW. Please use at your own risk.

 

 

Message 1 of 20
(11,974 Views)

Hi,

I've have some feedback on this document. First, I think it covers most of the questions I at least had and it well structured and very interesting reading. Two things that crossed my mind:

1) Page 11-12. Shouldn't there also be a type string, GUID etc. for packed libraries?

2) I do miss some discussions in the documents regarding race conditions and how to deal with this. What happens if two project providers installed implements the same event? Will both events be executed or just one? E.g. two project providers implements the Item_Init event. Both providers tries to set an overlay icon. Who will end up winning? I believe a solution would be to first check if an item should be updated and not update the item. E.g. if you are using classes or libraries, these could be tagged and a check could be performed to see if this class or library is something my project provider should update.

Mattias

0 Kudos
Message 2 of 20
(11,499 Views)

Hi Mattias,

I am glad to know that you are finding the documentation helpful and interesting.  Thanks a lot for the feedback.

1) I have added the GUID for packed libraries to the document.

2) This is a very good point. I missed this in the documentation and thanks for bringing it up now.

If two project providers implement the same event like Item_Init both the events will be executed in the order in which the providers are loaded in the framewrok.

But user doesn't have a control over the order in which the providers are loaded.

Now if both the providers try to set an overlay icon, depending on the overlaying images and the order of the providers you will see the icon updated with a layered image of the overlay images.

Here are some examples. Overlay images:

1. sampleoverlay2.png2. check.png      3. sampleoverlay.png(3 image is not a transparent image)  

When I overlay a VI icon by  images 1 and 2, I will get:

overlayVi1.png

When I overlay a VI icon by  images 2 and 3, I can get:

overlayVi2.png

    or

overlayVi3.png

You are right it should always be checked whether the item should be updated or not before actually updating the item. Similar functionality is implemented in Item_Init of  SecondaryProviderExample2 of the uploaded examples.

Please keep the good feedback coming!!

-Sumedha

Sumedha Ganjoo | LabVIEW R&D
Message 3 of 20
(11,499 Views)

Hi,

Thanks for the clarification. Really good example.

I found one more thing missing. I do believe that there also should be a type string, GUID etc. for "Property Definition", the new LabVIEW Class Properties introduced in LV 2010.

Thanks,

Mattias

0 Kudos
Message 4 of 20
(11,501 Views)

I have updated the document with the GUID and type string for "Property Definition".  Please let us know if you see anything else missing.

Thanks for the feedback!

Regards,

Sumedha

Sumedha Ganjoo | LabVIEW R&D
0 Kudos
Message 5 of 20
(11,501 Views)

Hi all,

Please note that I have updated the following two VIs in the Project Provider Examples.zip to correctly use the API VI mxLvSetPopupMenuBatch.vi

1. In SecondaryProviderExample1 the SecondaryProviderExample1_Provider_OnPopupMenu.vi

2. In DummyPrimaryProvider the PrimaryProviderExample_Provider_OnPopupMenu.vi

Thanks,

Sumedha

Sumedha Ganjoo | LabVIEW R&D
0 Kudos
Message 6 of 20
(11,501 Views)

There is an issue with the documention for Global_OnUpdateCommand within the Project Provider Interface Vi's Document.

The Inputs/Outputs as outlined are not correct and cause the Labview to hard crash.  The Inputs/Outputs should mirror those of SCC_Global_OnUpdateCommand.vi found in <resource>\Framework\Providers\SCC.

Its missing a Menu Item Out Output

0 Kudos
Message 7 of 20
(11,501 Views)

Hi,

I was wondering if there is a GUID String for the project itself so that I can have individual menu items on right clicking on the project

Thanks,

Ruediger

0 Kudos
Message 8 of 20
(11,500 Views)

already found out with mxLvGetNIIM.vi

0 Kudos
Message 9 of 20
(11,500 Views)

I've been trying to get the LV_TortoiseGit (https://forums.ni.com/t5/Git-User-Group/Labview-Tortoise-Git-Integration-LV-TortoiseGit-v0-8-1-1/gpm...) addon working, and am getting error messages trying to use .NET assemblies. I have documented the errors here: https://forums.ni.com/t5/LabVIEW/NET-Constructor-Nodes-give-Error-1-when-used-in-existing-project/td...

 

I believe the errors are a result of the addon using this API's mxLvSetName.vi to rename the Project heading at the top of the tree in the Project Explorer (this is done to append the git Branch that is currently checked-out). I have commented this function out and am not seeing the error anymore.

 

Project Items seem to have a Name property as well as a Display Name property. The documentation for this API seems to indicate that the mxLvSetName.vi modifies the Display Name, but it seems to modify the actual Name property instead. In any case, the mxLvSetName.vi wreaks havoc on .NET assembly loading.

 

Why does this occur? Is there a mxLvSetDisplayName.vi somewhere or an equivalent? What other way could the user easily be notified of something like the current Branch right from the Project Explorer?

 

EDIT:

The problem was caused by an invalid character in the name that was being used (I believe it was the colon ':' symbol). Changing the way the name is generated solved the problem.

0 Kudos
Message 10 of 20
(10,798 Views)