Ideas (from .NET)
mGill
I come from a .NET programming background and found a bit difficult to program IGOR, but here are some things I find useful from Microsoft's .NET Visual Studio environment:
1. Ability to pass structures as objects without having to make a bunch of global variables in a folder, especially useful if passing properties between functions.
2. Highlighting misspelled functions or highlighting potential problems before actually compiling the code, like a real-time compile-preview. Visual Studio has a list at the bottom of the screen with the potential errors it finds.
3. Make a "file" browser for all the procedure files, reports, panels,... that are part of the experiment that looks like the data browser. Possibly allow the panel to have its own embedded code file, much like when you create a new form in VB.NET/C# you can double click the form and its code pops up. When you save the experiment the code for reproducing that form is also saved in the panel's code file.
4. Make the tools strip for panel design contain buttons and all the other components that you can add to the panel. Perhaps it'll be easier to make en enhanced panel/form designer with a lot more prebuilt user-interface components
5. Ability to dock windows to sides of the screen like one would in Photoshop or Visual Studio.
6. I like .NET's idea of events for forms where you can trigger code for things like "panel position moved" or "panel closed". Same for graphs and tables so that it'll be easier to monitor when graphs are closed by the user but are required to be open for procedures. I know you can go check that its open every time. .NET solves this by running an Events Background Thread
7. I can never figure if you can add an image onto a panel.
8. The help files are comprehensive but aren't as easy to follow. Microsoft's MSDN help files almost always provide a working code example (not just a snippet) of every command and the common ways one would use it. This is what I think is more user-friendly: http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx
9. Have panel templates with common panel designs that one could work off of.
10. I also like the code structure like "someVariable.convertToString" where the "." can give way to returning a value or even editing like "someWave.waveType=int16"
I'll keep adding some more ideas as I keep programming in IGOR.
-Max
Some of your comments represent things that are really cool, and we might implement them if we had as many software engineers as Microsoft does :) That would cover suggestion 2), I think.
Some of them are things we will put on our wish list. I really like your suggestion of having buttons on the tool palette for a control panel, for instance. And, of course, you should be able to drag them from the palette to your panel.
Igor has structures, but they aren't as capable as C or C# or C++ structures. Execute this command on Igor's command line:
DisplayHelpTopic "Structures in Functions"
Probably not quite what you're looking for, but try Misc->Window Browser. Then go to Windows->Control->Window Browser->Window Browser.
Also, try putting this in your main Procedure window:
#include <ProcedureBrowser>
Then go to the Misc menu and select Procedure Browser.
DisplayHelpTopic "Window Hook Functions"
You can paste a picture into a control panel's draw layer. Or you could embed a graph in a panel with an image plot.
We would like that, too!
John Weeks
WaveMetrics, Inc.
support@wavemetrics.com
June 29, 2009 at 05:09 pm - Permalink
I think various folks have created various parts of such an "experiment" browser already. It might make a useful project for someone to collect the pieces.
This might also be possible to build as a package ... a "panel designer" panel.
Have you looked at the TidyScreen package (http://www.igorexchange.com/project/TidyScreen) as a start ... it is designed to allow you to move/shift collections of windows precisely to defined locations with a bit of ease.
Both of these ideas perhaps lend themselves to expansion within the IgorExchange site, especially building a database of command information from a template.
Sounds good.
--
J. J. Weimer
Chemistry / Chemical & Materials Engineering, UAH
June 29, 2009 at 06:14 pm - Permalink