IntroductionPossibly the most tedious aspect of native APL/W GUI code is creation and fine-tuning of form layout; never really got on with Arachnid so everything was written and tweaked as text definitions. There's a lot of flexibility in APL/W's native functionality - including adding, removing and changing controls on the fly - which undisciplined programmers can wreak havoc with.
Visual tools for defining and modifying window/form design seem like a good idea, and one "sell" for WPF/XAML is that we can hook ourselves up with industry-standard tools.
So, what's out there and what can we do with it?
Pick-and-click layout is easy to handle, and useable XAML files result (although they may need a little tweaking to iron out confusion about whether ANSI or Unicode is ruling the day).
Two main downsides to Visual Studio as a design tool...
- It's not really intended as just a designer, so it want to make a heap of other files for what it terms a "solution" and by which it means all of the VB (or VC#) code and various support acts. XAML files are really on something of a one-way journey if we pluck them out, tweak them for our own purposes then want to do a bit of redesign.
- I haven't figured out how to create (and impose) styles in Visual Studio - probably can be done, but the nuts-and-bolts haven't revealed themselves to me at present. One of the strengths of WPF/XAML seems to be the ability to use styles to impose uniformity (all your buttons the official company size) and to add flexibility (for those who see utility in things like skins). Having to hand-code style definitions as an after-process is tedious.
There are other similar tools, which I haven't yet looked at. Maybe that will happen as and when I explore KAXAML (and its limitations) further.
Expression Blend is Microsoft's physical realisation of the split, being the designer-targetted GUI design tool. Predictably enough it comes bundled into a mega-package called Expression Studio targetted at the well-heeled corporate market. it does seem to be smarter than Visual Studio in so far as styles are more visibly recognised - but there aren't enough hours in the day (or pounds in the pocket) for further exploration by this writer.
Other ToolsLooks like every little software house out there is seeing "business opportunities" in WPF and XAML and attempting to empty our wallets at every turn. Free trial are usually available, but I'm not very inclined to explore because much of what I've seen hasn't been particularly impressive - I'll add comments whenever I see something that seems to offer true value for money (even value for no money seems a rare thing sometimes...).
Tools to convert "other formats" into XAML files - haven't found one that converts APL...
Not quite sure what these have to offer over and beyond Visual Studio...
Looks like a little sub-industry bolting onto Visual Studio - haven't seen anything beguiling yet...
Tried KAXAML (described above), found that it wasn't too clever when confronted with .NET 4 controls like the Calendar - wasn't convinced that it was offering me a great deal once I'd started to get some workable stuff going in APL and haven't pursued whether or how it could be updated to handle this stuff. A lot of the other XAML editors seem to be similarly dated, so I'm sticking with a tarted-up NotePad replacement, building changes to XAML files incrementally and dealing with the messages spewed into the APL Ststus Window when things go awry.
PSPad is a free-to-use general-purpose editor, nothing particularly special in the way it deals with XAML files. It does offer tab-based editing of multiple files.
XMLPad 3 is a free XML-specific editor and - as such - shows outlining (which is useful once you start nesting Grids, StackPanels and other controls. But it dpoesn't seem to cope with Unicode very well (entering APL characters, for example) and it comes with a lot of assumptions about "teams" and "projects".
XML NotePad 2007
XML NotePad 2007 is also a free XML-specific editor which seems much simpler in its ambitions and does seem to handle input of APL characters (and you can set the display font to be APL-friendly as well).