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).
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.
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).
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]
The code referenced in this document is distributed under the NATIONAL INSTRUMENTS SOFTWARE LICENSE TERMS (Sample Code License) - http://ni.com/samplecodelicense
Very nice work. It definitely needed to be done.
Thanks for making the "UI-challenged" among us look good.
Thanks for this SimonH. After reading this i have makin a better UI.
Would you (or someone) be able to save it in a way that could be used by LV 8.6?
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...
Actually, it is relatively easy to produce colored text with a system colored background, even on gradient backgrounds such as an XP tab.
The key is to not use a system control, since they have their colors locked down.
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.
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.)
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.
It sounds like you need to create a VI Package already
I agree with Jim
Yes - Please make a VI package for us.
Good work Simon, thanks for sharing.
Great to see this as a VIPM package!
Would it be possible to have a package usable with LV 8.2?
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:
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.
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?
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.
The .zip files work for me.
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.
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!
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?
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.
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.
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.
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).
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.
Would it be possible to have a package usable with LV 8.2?
Simon - great job and again, another nice presentation at NIWeek....Don
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).
EDIT: Sorry, I did not see that there is a second page. It's already answered.
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.
I've got LabVIEW 2009 (9.0) and I installed "Missing System Controls" by unzipping the attached zip file in the ...\menu\Controls folder.
This has been an issue since LabVIEW 8.5. It is probably related to the issues I had in this thread:
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.
Very intutive. nice work.
Super Job! Thanks
I miss the Digital Wapheform Graph do you plan to make it? Also an Button "Create"/ "New" could be very usefull.
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.
Never mind, answered my own question. Nice work on the control suite!
Well done,Thank you!
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.
I agree that both image and text should move together upon button push. Good catch. Maybe Simon will submit an update?
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...
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.
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!
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?
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?
I asked for this before. I would like to see the time "Time Stamp" control in System Style...
Would this do?
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.
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.
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.