WoW UI Designer

These notes refer to wowuides.exe version 1.1.x, the public beta release.

Introduction

This is the WoW UI Designer initially mentioned here. It started off as an idea I had to be able to load in any addon frame and edit it like you would a form in Borland C++ Builder (my development environment of choice until recently). From that it developed into a full IDE, with the ability to edit lua scripts, and xml files in both code and designer views. Hopefully in the months ahead, it will develop into the only choice for WoW interface developers even if the visual designer is not powerful enough for them.

Features

* Native Win32 application developed in C# 2005 requiring .Net v2.0. Compatible with Windows XP Home(Untested) and Professional(Tested), Windows 2003 Server (Untested), and Windows 2000 Professional (Tested) with the latest service packs;
* Multiple docking form interface in the style of Microsoft's development environments, provides flexibility for the user and developer;
* Tight integration with Blizzard's World of Warcraft game, providing editors for their open User Interface standard that use XML and Lua 5.0 standards;
* Flexible renderer to display any LayoutFrame element defined in an XML file validated against Blizzard's UI.XSD schema;
*Embedded ActiproSoftware editor provides syntax highlighting for XML and LUA files, and the ability to display calltips in the future;
* Visual designer to create new forms and edit them. Uses skin files to define what components can be placed, what properties they have, and how to convert between the XML and Windows.Forms;
* This release WILL NOT handle your existing UI files within the editor, it can only handle files that it itself created.
* Lots of other stuff yet to do!

Note: You will need to uninstall previous installations before installing 1.1.107 as the new installer is not backwards compatible.

1.1.106: Beta Release 17 (11Oct07)
* Should now work on 64-bit versions of Windows XP.
* Templates loaded from addons now go into the Addons list.
+ Changed start up behaviour, the environment is now not created at start up by default, reducing load time significantly.
> New command line argument /lf loads the framexml on start up.
> New command line argument /la loads the framexml and addons on start up.
> New menu command Tools | Load FrameXML loads the framexml as required.
> New menu command Project | Load Environment loads the framexml, the addon and its dependencies.
> Loading a UI designer form will load the framexml first if it is not already loaded.

1.0.300.10: Beta Release 15 (14Dec06)
+ Now hosts Lua 5.1.1 instead of 5.0.3 to be compliant with the new client. Internal structure parser should also handle the new constructs.
+ Handles new method of MPQ searching (also searches locale directory inside of \Data). Thanks Blizzard for changing this every damn patch.

1.0.300.7: Beta Release 12
+ Added lots of options for the text editor, check them out!
+ Reintroduced autocomplete list for the XML editor, there are typing triggers for bringing up select lists, and you can use CTRL-SPACE to bring up the list when inside elements.
+ Reintroduced smart indenting for lua and xml.
* Fixed bug when opening a file that does not exist, it will now use the correct language syntax based on file extension.

1.0.300.3: Beta Release 9
+ Added a symbol library. When the application first starts, it will parse each lua file for symbols, and whilst editing you can CONTROL-LEFT CLICK on a symbol to go to where it is defined.
+ Added an update application feature.
* Fixed path comparision when trailing '\' were different.

1.0.300.2: Beta Release 8
+ Added a help window that links directly to WoWWiki. Press F1 on a known function and it will bring up the wiki for that function.
* Reintroduced tooltips for known functions within the editor. Hovering the mouse over the function name will bring up a short summary.
* Updated highlighting definitions for new 1.10 functions.
* Updated apidoc definitions for new 1.10 functions (still very incomplete).
* Filled in more functionality in the Project Explorer, most of the context menus will work now.
+ Added code folding for block comments.
+ Added special region tokens for folding arbrarily defined regions of a file, use --#region [Description] to start, --#endregion to end (note: no space between -- & #)

1.0.300.0: Beta Release 6
* Large rewrite with new editor control and image editor.

1.0.200.5(4f): Beta Release 5
* Hopefully made the auto-indent a little more intelligent.
+ Added a Go To command for going to a line number.
+ Added initial support for XML autocomplete.
* Fixed up defaultCopy skin mechanism to set parent propertly.
+ Added Uppercase/Lowercase to context menu of edit control.
* Fixed up all forms to have consistant appearance with different themes.

1.0.200.4: Beta Release 4
* Some more text editor enhancements, including auto-indenting/unindenting, and brace highlighting.
+ Now has full support for reading data files directly from the MPQ files.
* Options has 2 separate directory entries, one for the install directory (containing the MPQ files), and another work directory.
+ Added a zip library and a utility to zip up your addon project files.
+ Added a utility to copy addon project files from the work directory to the WoW install directory.

1.0.200.3: Beta Release 3
+ Added a hide context menu command to the Frame explorers to hide sub-frames from the render.
* Xml files that do not validate are included in the File List with an error marker.
* Fixed BLP reader to read uncompressed texture files.
+ Options to add file extensions pointing to the application.
+ Project editor form now allows you to set localized properties, and handles 1.9 LoadWith property.
* Fixed a bug that didn't allow more than one instance of the application to run.

1.0.200.2: Beta Release 2
* Found what was causing extra error markers in the XML syntax highlighting and fixed with a new lexer dll.
+ Added line numbers and code folding to the editor, with options to turn them on and off, rearranged the options dialog to suite.
* Can now open text files with the Open File... command.
* Fixed up a few frame definitions so that they can be used as base frames in skins.
+ Added a new component to the Default skin, Multiline Edit Box with full scroll capabilities.

1.0.200.1: Beta Release 1
* Changed manifest file to work on IA-64 Windows versions.
+ Added a context menu to the file list to easily allow a project to be opened.
* Put in a work around so that addons with circular dependencies will still load.
+ Added an option to disable real-time error marking on the edit control.
* Changed the way window locations are stored between sessions, now stored in the registry and not version dependant.

1.0.200.0: Beta Release
* New version number for first public release.

1.0.100.13: Beta Release Candidate 3 (Internal)
* Changed the update strategy of the structure form to update only when the lua file is valid, this is a bit less distracting when typing.
* Now clears error markers from the whole file to eradicate left behind tails.
* Played with the message view to make it a bit less flashy when typing Lua.
+ Added the ability to set the GetLocale() return value (see the Options dialog), be careful as it isn't checked.
* Made addon loading take into account dependencies.

1.0.100.12: Beta Release Candidate 2a
* Release to test the program against the release version of the tools and framework.

1.0.100.11: Beta Release Candidate 2
+ Added a new skin called "Basic", this exposes most of the frame types and a majority of their properties.
* Changed the skin format and handling a little to make it more straightforward.
* Made it so placing any xml file in the skins directory will install it as a skin.
+ Added functionality to the Slider and StatusBar frame types to draw the bar and thumb texture.
+ Added custom type converter to backdrop that allows you to select from a list of predefined backdrops.
+ Added custom type converter to textures and fontstrings that allows you to clear and set them properly.
* Fixed a hang bug with the editor error marking.

1.0.100.9: Beta Release Candidate 1
* Fixed up a bug in the XML loader not correctly inheriting sub-frames, also ScrollFrames fixed up.
* When positioning frames, the renderer will now look for named parents.
+ Added some icons to the File List tree view to represent frame types.
+ Added icons to the format menu.
+ Added a texture viewer editor to xml properties that use textures.
* Changed the color type to use the standard colour editor.
+ Added filtering to the message view, and column-click sorting.
* Error marker now showing up when lua parser finds a syntax error.
* Changed Delete key handling for the editor control.

1.0.100.8: Alpha 9 Release
* Fixed freezing when lua parser couldn't find a token before the end of the file.
+ Added a window menu to display the list of windows in the document view.
+ Added a format menu to the UI designer view with some component alignment commands.
* When pasting components back onto a form, the new components are centred within the parent, instead of over the top of the old components.
+ Added a Renderer menu when the Renderer is displayed.
+ Project Explorer now contains a tree listing of all the frames defined in the project, this is updated when any file is saved.
+ New command with the Renderer allows you to rewrite the XML file that contains the frame you are viewing, changing properties will change those values in the output.
* Mass code changes to better support outputting XML that is close to what is read in, taking into account inheritance.

1.0.100.7: Alpha 8 Release
+ Now handles reading in lua files for the interpreter, should handle Euro globalstrings.lua correctly now.
* Fixed a bug where an invalid XML file in a project would cause the whole project not to load.
* Updated version numbers on DLLs so that the installer will overwrite old ones if they are present.

1.0.100.6: Alpha 7 Release
+ Comes in an install package now.
* Script support in the designer should be a little better now, can access scripts of sub-frames.

1.0.100.5: Alpha 6 Release
* Ensure line endings are all CRLF, and specify UTF-8 encoding when saving.
+ Structure view now tries to show tables that are defined in the source.
* Structure view now updates on error, and will only show contents prior to the error.
+ Message window will now show a Lua syntax error if available, as you are typing.
* Structure view should remember what is opened as things appear and disappear when typing.
* Docking state file is now stored in the same directory as the executable.
* Structure view will clear when buffer is closed.

1.0.100.4: Alpha 5 Release
+ About box.
+ Tooltips for known WoW functions displayed in editor, added apidoc.xsd containing the schema for the docfile. Some functions defined in api/*.xml
+ Added a toolbar with basic functions.
+ Expand scripts defined in an XML file within the project explorer.
+ Added support for include tag for XML files, this is now used alot in 1.8.
+ Now includes its own Lua parser.
+ Added a structure window for editing Lua Files, shows functions and variables defined within the file.
+ Options to not verify XML files against the schema, can turn off verification for Blizzard files only.
+ Now has a proper application icon!
+ Added a tutorial

1.0.100.3: Alpha 4 Patch
+ Added keywords for WoW API so that they are syntax highlighed (Thanks Beladona for the list)
+ Added skin file page to options.
+ Added editor customisation page to options.
+ Added per character saved variable support (1.8 feature).
+ Added support for changing the file load order in the project explorer, can use context menu or drag files around.
* Fixed copy/paste for UI visual editor.
* Fixed globalisation issues.
* Find form has some improved functionality.
* Debug file written to same directory as wowuides.exe.
* Hopefully fixed hard crashes with lua interpretor and text labels with odd characters.
- Removed need for wow.exe to be in WoW override folder.

I'm starting to learn LUA to add to my other programming knowledge and was wanting to do some addons in WoW and was wondering if this project was still active or worth using for developing addons or if I should get a LUA and XML editor seperate?

If there is a good no-cost option that works better then this please let me know, if this is the best choice and its still being updated ect please tell me.

Hey, I really like this IDE, but, I'm a GNU/Linux man. I wondered if you, or perhaps myself, could port this to GNU/Linux using Mono. Most Windows .Net/C# apps compile without any problems using Mono within a GNU/Linux build environment. I have been programming several years and would be very interested in helping or managing a GNU/Linux port. Thank you in advance.

Originally posted by MikeClark Second is the tutorial needs some updating, there are a few deprecated commands in it (this. and getglobal) I never got this to work, but if you have the layers working in game you can use the /framestack command and mouse over things and see exactly how they reference themselves and that worked really well.

also I found that registering events was easier in the long run to do in the Lua file, rather than the xml, but it probably does not matter.

If you or anyone has interest i could be talked into updating the tutorial a little.

also does anyone know of a good code snippet repository? perhaps we should start one for the project.

After a little research (new to Lua/WoW API, but not to programming), here are the changes to make the Tutorial work:

Step 8.
In the line: "go down to the script property OnEvent, for this enter TutFormEvent(); exactly" change TutFormEvent(); to TutFormEvent(self, event, ...);

In the line: "finally go down to the OnLoad script property and enter this:RegisterEvent("VARIABLES_LOADED"); exactly" change this:RegisterEvent("VARIABLES_LOADED"); to self:RegisterEvent("VARIABLES_LOADED");

Step 14.
In the line: "Because we called a function TutFormEvent() on the OnEvent event of our form" change TutFormEvent() to TutFormEvent(self, event, ...)

Because of the depreciated functions, the Lua code should subsequently be changed to this:

its way cool... but i found a few bugs in the app, and also have some great ideas that it should feature... at first it was kinda difficult, but now its like i know exactly what im doing... just like visual basic... kinda...

i was wondering thou, is there anyway to access /SAVEDVARIABLES/ while wow is running, it seems that if wow is running it keep the variables in memory, if you ReloadUI() then it dumps them to ADDONNAME.Lua in the /SAVEDVARIABLES/ folder...

this is what im trying to accomplish...

if i open /SAVEDVARIABLES/ADDONNAME.LUA and edit it in notepad, then save... alt-tab to wow... ReloadUI(), the values i saved in notepad are erased... wow does a memory dump and erases them... to the current things in memory.. ive played with it a little bit, but.... no luck...

im trying to edit a database while im online so i can quit asking my guild members to type commands for me.... please help...

I've been using this IDE for a few days and it makes it so much easier to program. But I am coming across a problem with the GUI portion of the designer. I dropped a Combobox onto the Frame, and I filled in the "Items" collection area with my items. However, when I run the AddOn in WoW, the Combobox doesn't do anything, no dropdown list.

Originally posted by MikeClark bottom line is if you have wow running at all, you will get that error. I tried all the ways to set this up and have not been successful. Shut down wow and open the editor, make sure the directories are set up right. I have been using it this way for about a month.

Why not just copy the entire client directory somewhere else and tell 'WoW UI Designer' to use that copy instead of the one you use to play with? You could even change the Windows registry key to regard the copy's new directory as the World of Warcraft intsallation directory; the original copy of the game could then be used for playing while you have 'WoW UI Desginer' open on the copy.

When I format my windows computer, which I do every six months or so, I typically just copy the entire WoW directory to my wife's computer, reFormat/reInstall, and then copy it back; I don't have to reInstall the game or set up all my addons the way I like them again by doing it this way. The only (small) problem is that there's no registry key for InstallPath doing it this way, unless you manually enter it, which isn't very hard to do after a little searching on Google; I even made myself a .reg file to do it for me. The bottom line is that playing World of Warcraft doesn't actually need this Windows registry anyways, but it makes installing 'WoW UI Designer' easier to install, which also doesn't matter because you can just tell it where your game is installed in the options.

Most people have large hard disk drives these days with nothing better to do than fill them with thousands of movies and songs which they won't ever watch again. Why not put all that wasted space to some good use?

bottom line is if you have wow running at all, you will get that error. I tried all the ways to set this up and have not been successful. Shut down wow and open the editor, make sure the directories are set up right. I have been using it this way for about a month.

First of all I apologize if I am posting this topic/reply in the wrong area, I am seeking help for a problem with "WOW UI Designer"

I am missing the file "interface\framexml\ui.xsd" and I am receiving the error of this file not being found, and I am wondering whether this file has something to do with the skin selection. The problem with the skin detection is when I click to select a skin none of the skins show up as options. I checked the folder for the skins, and yes they are there but not showing up on the list.

I am currently running on Windows 7. I know this program was not specified to be compatible with Windows 7, but it works fine besides that missing file and unable to select a skin for the designer. I would appreciate any help or direction to fixing this problem, because I do not think it's a bug, only a problem with my files.