UI Interest Group Documents

cancel
Showing results for 
Search instead for 
Did you mean: 

The "Missing" System Control Suite

One of the first things I tell people who want to make "better" UIs in LabVIEW is to always use the System controls.  System controls fit in well with the rest of the operating system and other programs that your user is familiar with.  Good UIs help your user become comfortable faster.  Familiarity breeds comfort etc. etc.

The one downside to this advice is that for some controls there is no System equivalent.  There is no graph in the system palette since there is no defined graph control in Windows -- notice that system utilities such as Perfmon and Task Manager have visually different graphs.  Clusters, arrays, error clusters, gauges etc. are other special LabVIEW control types that aren't common OS controls and as such aren't in the System palette.

Well, since the OS doesn't define how these controls should look, I decided to take a stab.  Here is my effort to round out the System control palette with a number of the more specific LabVIEW controls customized to fit in well with the default OS controls (at least on Windows).

Missing System Pack All.png

Credits:

Installation Instructions:

Unzip the attached "Missing System Controls.zip" file in your <LabVIEW Install Directory>\menus\Controls\ folder and then restart LabVIEW to add all the above controls (and more) to your palette.  Note:  these controls were made in LabVIEW 2009.

or

Simply run the attached "Missing System Controls Installer.vi" -- this is a little experiment of mine.  The VI contains all the .ctl file data stored as diagram constants and writes them to the appropriate files depending on which version of LabVIEW you select (currently only LV 2009 and the 2010 Beta would be supported since I wrote everything in LV 2009).

or

ni_ctl_system20-1.0.0-2.ogp contains the controls as a VI package installable with VI Package Manager.

Create Your Own Buttons!

If you like the iconized buttons and want more it's easy to create your own (although please share if you do create some).  Grab some icons from the web (see link above) and watch this video to learn how:

[Note: The "Fake System Time Stamp.vi" is not part of this package - it's an experiment for someone in the Comment thread. Sorry if this is not the right place to attach it! - ChristinaR]

[Note: I added the "Missing System Graphs 1.vi" which attempts to update the "missing system style" graphs so their plot legends are not still in the Modern style. If I broke any of their functionality in the process, please let me know. - ChristinaR. Part 2: I added "Missing System Graphs 2.vi" which makes the Scale Format button on the Scale Legend a little bigger, to move the light off the decal]

[Note: I added "Missing System Array 1.vi" which has the index display changed to a system numeric. - ChristinaR]

[Note: I added "System Mixed Signal Graph.ctl" which is an attempt at a system-style mixed signal graph. - ChristinaR]

Software License

The code referenced in this document is distributed under the NATIONAL INSTRUMENTS SOFTWARE LICENSE TERMS (Sample Code License) - http://ni.com/samplecodelicense

Comments
jkurtw
NI Employee

Well done sir.    

Active Participant TroyK
Active Participant

Very nice work. It definitely needed to be done.

Troy - CLD "If a hammer is the only tool you have, everything starts to look like a nail." ~ Maslow/Kaplan - Law of the instrument
Active Participant cirrusio
Active Participant

Outstanding, Simon.

Member Ski
Member

Thanks for making the "UI-challenged" among us look good.

Member YogeshaYS
Member

Thanks for this SimonH. After reading this i have makin a better UI.

Member Paul_Conaway
Member

Would you (or someone) be able to save it in a way that could be used by LV 8.6?

Active Participant LabBEAN
Active Participant

Very nice, Simon.

Because Windows XP places colored text upon the recessed frame, we place the control label / caption likewise.  However, as far as I know, it is not possible to place colored text in a system-colored label, so we just make it bold.

Here's what I mean:

It would be nice (IMO) to drop down arrays and clusters with the recessed frame and label as shown above.  For instances where the label is too long for the recessed frame, folks could just move the label up.  Or, maybe you could adjust the current error cluster and make a separate version of the cluster and array (keeping the more classic array and cluster you already made).

Here is a UI for reference.

Just a thought...


Certified LabVIEW Architect
TestScript: Free Python/LabVIEW Connector

One global to rule them all,
One double-click to find them,
One interface to bring them all
and in the panel bind them.
DFGray
NI Employee

Actually, it is relatively easy to produce colored text with a system colored background, even on gradient backgrounds such as an XP tab.

  1. Drop a Classic Simple String control.
  2. Drop a System Label and type some text into it so it will stick around.
  3. Use the color picker tool to get the color of the System Label.
  4. Apply the color to the Simple String.  When you do, the Simple String will blend in with whatever background it is placed on.  You can do this with almost any text string, as long as it does not belong to a system control.
  5. Change the text color in the Simple String to whatever you wish.  I would recommend a system color.
  6. Delete the System Label.  It was only used to get its color.

The key is to not use a system control, since they have their colors locked down.

This account is no longer active. Contact ShadesOfGray for current posts and information.
Active Participant LabBEAN
Active Participant

Thanks Dr. Gray.

Out of expedience, I usually just use the label of the system control (less maintenance and less to remember when there are several UI VIs).

As the Windows theme or the OS changes, the black bold will look 'okay' and be visible, while certain system colors vary considerably.

That said, good idea.  I'll keep the "simple string" in mind.


Certified LabVIEW Architect
TestScript: Free Python/LabVIEW Connector

One global to rule them all,
One double-click to find them,
One interface to bring them all
and in the panel bind them.
Active Participant TroyK
Active Participant

8.6 added, Installer doesn't seem to work quite right for it though. You'll need to copy the 8.6 files over the ones saved in the LabVIEW folder. (Or disable that function in the Installer vi.)

Troy - CLD "If a hammer is the only tool you have, everything starts to look like a nail." ~ Maslow/Kaplan - Law of the instrument
SimonH
NI Employee

Thanks TroyK!

The installer won't work for previous versions -- it has the LabVIEW 2009 .ctl file data stored as block diagram constants which get written to disk when you run it. 

There is no reason to run the installer VI if you are already downloading the zip file.  Unzipping to the correct folder and restarted LabVIEW will do everything you need.

Active Participant Jim_Kring Active Participant
Active Participant

It sounds like you need to create a VI Package already

JKI Blog
Active Participant Elijah_K
Active Participant

I agree with Jim

Elijah Kerry
Chief Product Manager, Software Platform
_______________________________________________
Follow my Software Engineering for LabVIEW Blog
Member Martin.D
Member

Yes - Please make a VI package for us.

Good work Simon, thanks for sharing.

Certified LabVIEW Architect
Active Participant Christian_L
Active Participant

Added a VI Package of the controls.

authored by
Christian L, CLA
Principal Partner Development Manager - Partner Program - National Instruments

  
Active Participant crelf Active Participant
Active Participant

Great to see this as a VIPM package!





Copyright © 2004-2018 Christopher G. Relf. Some Rights Reserved. This posting is licensed under a Creative Commons Attribution 2.5 License.
Active Participant vix
Active Participant

Would it be possible to have a package usable with LV 8.2?

Vix
-------------------------------------------
In claris non fit interpretatio

-------------------------------------------
Using LV from 7
Using LW/CVI from 6.0
Active Participant PhillipBrooks
Active Participant

One thing that would be nice is some system style controls for I/O palette items; such as the VISA and DAQ sessions.

I created an XP style VISA session control that can be found in this post:

http://forums.ni.com/ni/board/message?board.id=170&message.id=416261


Now is the right time to use %^<%Y-%m-%dT%H:%M:%S%3uZ>T
If you don't hate time zones, you're not a real programmer.

"You are what you don't automate"
Inplaceness is synonymous with insidiousness

Not applicable

Thank you, it is good work. I miss the timestamp control. I like your graph solution. Thanks for the link to the good icon gallery.

Active Participant rex1030
Active Participant

As always, great work simon. I can't wait to start playing with it.

To all you guys that keep asking him to make a package, don't you have to pay for VI Package Manager Professional to be able to create packages? I'm sure if one of you donated the license to him, he would be happy to use it to create a package. I mean, it's only $999 right?

---------------------------------
[will work for kudos]
SimonH
NI Employee

Thanks for all the kind words.

Jim and the good guys at JKI help me out with creating packages so if people like that format I can do it.  I just tend to post the .zip files first.

Member npoling
Member

The .zip files work for me.

Not applicable

Oh I found a bad solution for the timestamp control:

Use a classic timestamp control. Make everything transparent besides the browse button. and then bring a system string control in the background. This control has than the functionality of a timestamp control and is system style.

Member aThanatos
Member

Nice Job!

I have a question: I was setting a 'VISA Configuring Serial' block, then I've created a control for this block and I tried to replace it with one of you controls but I couldn't.

Please could you help me to change this? Thanks!

Member WG-
Member

I've a question related to this package.

The first plot of a chart is kind of smooth, however plots that you add after the first one aren't "smooth" at all. I tried to edit the chart control to make a second plot also "smooth" however I don't know (or can't) edit this. SimonH can you help me with this?

SimonH
NI Employee

aThanatos,

Unfortunately there isn't a great way to do what you're trying to do.  The VISA Resource Name control has more functionality than a ring control but isn't as customizable (so I can't make it look like the other customized controls).

One option I've used in the past is to use a string or combo box control and wire that into the VISA input of your subVI.  Strings can be coerced to VISA resource names, enums and other number based datatypes can't.

Your other option (provided the VISA resource names are known) would be to create a lookup table of sorts where the ring control is the index to your array of VISA resource names, the indexed value is then passed to the subVI.

SimonH
NI Employee

WouterG,

Absolutely -- the setting you are looking for is called "Anti-Aliased" - right click on your second plot in the plot legend and select it from the menu.

I also modified the color and line thickness of the first plot using the same method.

Active Participant rex1030
Active Participant

Ok I gotta say this set is amazing. When I changed all the controls to the ones you submitted with the sweet icons my supervisor was like, "Wow! How did you do that?" (of course i told him "magic")

Anyways, ironicly enough I feel that your "missing control suite" is ... well ... missing something.

I need a record button! Is there any way you can please please post a new version of this with a record button in the same suite. You have a play and pause, but no record. Knowing how much NI focuses on data acquisition, how can we not have one?

Also, if I expand the controls vertically, the icon is no longer centered but instead stays at the top left. Is there any way to keep it centered or scale the image. I bet scaling would require vector images huh. Is the centering thing possible?

Thanks for posting this and making me and my VI's look sexy lol. Thanks for a great UI package and I look forward to your updates.

---------------------------------
[will work for kudos]
SimonH
NI Employee

Here's arecord button but keep in mind it's really easy to make these yourself. 

Here's a video of the basics http://www.youtube.com/watch?v=2NdqXh67mak and the only trick to the vertical buttons is to replace the background in the false state with a completely transparent PNG image and resize appropriately.

I'm not aware of a way to center the decal as you expand the button but that doesn't mean it's not possible.  How big are you trying to make them?  If you want a large size you'd be better off making your own buttons (again it only takes a few seconds once you have the icon).

Active Participant rex1030
Active Participant

Wow, you're right that was fast.

I really just want the most used buttons (like record) about twice as large vertically as the others so the user can click them quicker and more effortlessly. I've had problems trying to create the auto-recentering decal and I was really just wondering if anyone had been able to figure out how to do it really.

I didn't want to be modifying your pack and reposting revisions that you didnt make is all. Plus I tried to make a pack similar to this before and I guess I left the icons too big and the pack came out looking like it was made by Matel and not very professional looking lol. Its really my failure of not being much of a graphic artist really (though I do try). You just seem... better at it than me

I will be making a sweet control pack here soon for a project I am working on so I'll post that for the community when I get done. I want to make it really sharp looking and robust (as many of the controls as I can do) so we will see how it turns out I guess.

Thanks again for the control suite, its really awesome and we can all tell you put some time and effort into it. Its so much better than what I had been coming up with. I use it all the time now.

---------------------------------
[will work for kudos]
Member CaoWJ
Member

Would it be possible to have a package usable with LV 8.2?

Member Mirash
Member

Impressive!

Coding is a combination of intelligent and creative work - someone
Active Participant DonRoth
Active Participant

Simon - great job and again, another nice presentation at NIWeek....Don

Knight of NI Knight of NI
Knight of NI

WouterG wrote:

The first plot of a chart is kind of smooth, however plots that you add after the first one aren't "smooth" at all. I tried to edit the chart control to make a second plot also "smooth" however I don't know (or can't) edit this.


                   

Resize the plot legend for the correct number of plots, then click the desired legend and select "anti-aliased" (this option is apparently not available from the properties dialog).

anti-aliased.png

EDIT: Sorry, I did not see that there is a second page. It's already answered.


LabVIEW Champion Do more with less code and in less time
Member BenG.
Member

I think I found a bug. When I replace a Modern Waveform Graph in one of my VIs The Plot Legend and Graph Palette appear in the LabVIEW default Modern style. (see below) This appearance persits after saving/reopening the VI file. When I place a new System Waveform Graph the Plot Legend and Graph Palette appear in the "Missing System Controls" style.

graph.bmp

I've got LabVIEW 2009 (9.0) and I installed "Missing System Controls" by unzipping the attached zip file in the ...\menu\Controls folder.

Active Participant Matthew_Kelton
Active Participant

This has been an issue since LabVIEW 8.5.  It is probably related to the issues I had in this thread:

http://forums.ni.com/t5/LabVIEW/plot-legend-customization-bug-in-8-5/m-p/606538

It appears the CAR is still active as of LV2010.  I have had issues where a control with customize plot legend won't even drop correctly in newer versions of LV, while others will.

I believe I have had luck in dropping the new control, which is displayed correctly, then copying and pasting it over the existing control.  You will still have to do some work to get the appearance back to what you want, but it will conserver your block diagram connections for property and method nodes, local variables, and terminal connections.

Member ParthaPratim
Member

Very intutive. nice work.

~Partha
Member weierand
Member

Hello,

Super Job! Thanks

I miss the Digital Wapheform Graph do you plan to make it? Also an Button "Create"/ "New" could be very usefull.

Best regards

Andreas Weier

Member mjjaeger
Member

Simon,

How did you customize the look of the scrollbars in the array controls?  I'm trying to make a "system-style" Listbox control, but I can't figure out how to change the default Labview-style scrollbars.  Any help would be appreciated.

Thanks,

Mark

Never mind, answered my own question.  Nice work on the control suite!

Member Qianli
Member

Well done,Thank you!

Member Mike W.
Member

Is it just me or are the boolean system button images not shifting down and to the right one pixel on button press?

BTW, I really like this collection of controls.

Active Participant LabBEAN
Active Participant

I agree that both image and text should move together upon button push.  Good catch.  Maybe Simon will submit an update?


Certified LabVIEW Architect
TestScript: Free Python/LabVIEW Connector

One global to rule them all,
One double-click to find them,
One interface to bring them all
and in the panel bind them.
Member shew82
Member

If I remember correctly, it is actually surprisingly difficult to make a button with a decal that works in the normal way (shifting with the button press)... If memory serves me correctly it involves have a system button that was created in LabVIEW 7 or something escoteric like that...

Member gosenbach
Member

Shrew82 is correct. To get that effect, you need to do some magic with the led rocker switch control in LV 7.1 and then convert over to a newer version. Check the jki forum, they at one time had instructions in a "how did we do that " section.

Gregory Osenbach, CLA
Fluke
Member Photon1
Member

Absolutely outstanding Simon!!!  I have been pushing the importance of well designed, custom UIs for about 10 years now and it's nice to see that I'm not alone!  Great job! 

Member Alifiya_Hirani
Member

Hey Simon, gr8 job. I too wanna use it but I have labview 8.5.1. version. Can you down save it to 8.5.1 and post it?

Not applicable

Hello,

I asked for this before. I would like to see the time "Time Stamp" control in System Style. I know, that I can use a Double in System Style, but it is another Data Type and there is no Browse Button.

I really like the SystemStyle Graphs. But everything special like Graph Palette, Plot Legend, Cursor Legend and Scale Legend has still "Modern" Style. I think especially the Graph Palette is important for a lot of users. Maybe at least the Graph Palette can be added?

Another missing Control is the ColorBox but it is less important for me.

Can you help me?

Sletrab

Active Participant PhillipBrooks
Active Participant

sletrab wrote:


                       

Hello,

I asked for this before. I would like to see the time "Time Stamp" control in System Style...


                   

Would this do?

https://decibel.ni.com/content/docs/DOC-10017


Now is the right time to use %^<%Y-%m-%dT%H:%M:%S%3uZ>T
If you don't hate time zones, you're not a real programmer.

"You are what you don't automate"
Inplaceness is synonymous with insidiousness

Not applicable

Hello PhillipBrooks,

Thanks for the reply. I took a look of it. This control does not adapt to the control style of the system. So if our customer switch to a different style it looks like from outer space.Double and Browse Button.jpg

I would prefer the workaround with a Double and the Browse Button of a Timestamp in Classic Style. But it is also only a workaround.

DFGray
NI Employee

To get it to adapt to system style, you need to use system controls in your original.  Unfortunately, system controls have little customization.  Were I to attack this, I think I would us an XControl composed of three system controls - a text box for the display, a button for the browse button, and a digital control to supply the up/down buttons (mostly hidden).  I am not sure it would work, but it is worth a shot.

This account is no longer active. Contact ShadesOfGray for current posts and information.
Contributors