To start off, I'm fairly pleased with Wrye Bash's wizards. It was a "first" attempt at a language interpreter (first = after two rewrites) and it met all of my objectives.
That being said, I'm sure there are some areas that it can improved in. Got gripes? Got ideas? Got things you really wish were available for wizards? This is were to let me know. I want you feedback! I want your criticism!
Now, keep in mind the underlying goals here:
- THE UNBREAKABLE RULE: Don't do anything that cannot be done manually through the default BAIN interface. This doesn't mean that if you can't do it, it wont get added; but there will have to be a way to add it into the default interface as well.
- Ease of use for the user. This mostly applies to the UI side of wizards, like the different screens available, and what is shown on them.
- Ease of use for the modder. It has to be easy for wizard writers to do their job, and for someone else to read that wizard to figure out what it's doing. It also should be easy to lean how to make a wizard do what you want, without anything extra other than the language reference. This is one of the areas that I don't have much idea on. I wrote the language, so I'm already stuck in my ways (more or less)... but some of you other guys might be missing different constructs, or don't like the way the language syntax is, etc. Let me know!
- Built in functions, etc. Another area I'm polling for ideas on. I've more or less run out of ideas here, except when the occasional feature gets added to BAIN, adding an appropriate function to the wizards as well.
- Backwards compatability: newer versions of Bash will have to be able to execute older wizards. So no breaking changes. I'm willing to give on this, with a compelling enough argument, but remember I will also have to write something to convert old syntax wizards into new syntax wizards.
Now, for the ideas: [New][Currently being worked on][Finished]
- [Lojack] User defined functions: Something along the lines of this syntax:
SpoilerFunction MyFunction( argument, argument, etc )
...code here...
EndFunction
- [Lojack] Shader package editing (I'm already working on this one). Basically, the idea is, if you put a .vso or .pso file in the right folder structure in an installer, Wrye Bash will recognize it and automatically insert it into the applicable sdp. My current idea is, say you want to replace BOLT.pso in shaderpackage019.sdp. You would put your replacement in "YourPackage\Shaders\shaderpackage019.sdp\BOLT.pso" Other thoughts on this are welcome.
- [Arthmoor][andalaybay]: Look into setting "Auto-anneal/Install Wizards" to ON by default. Done: changed to ON by default. I also added a new checkbox to the Finish page, so even if this isn't on, the user can choose to install the package after the wizard.
- [Arthmoor][andalaybay]: Figure out if it's still a good idea not to enable mods by default after installing.
- [andalaybay]: Allow the wizard to make changes to INI files, to allow configuring it from within the wizard.
- Done: http://oblivionworks.svn.sourceforge.net/viewvc/oblivionworks/Programs/Wrye%20Bash/Mopy/wizards.html#EditINI
- Note that the tweak only gets automatically applied if the target INI resides in the same installer as the wizard.
- I might need to change the naming scheme on the generated tweak file, to not get overridden
- I might possibly allow tweaks to Oblivion.ini to get applied as well
- Done: http://oblivionworks.svn.sourceforge.net/viewvc/oblivionworks/Programs/Wrye%20Bash/Mopy/wizards.html#EditINI
- [alt3rn1ty]: Fix the slowdown caused by extracting images for wizards. This is most noticable when a solid archive is used. EDIT: BAIN will now extract all images in the package at the beginning of the wizard. This will slow down initial execution a little (noticeable on large files, or archives will a lot of images), but improve dialog responsiveness. Currently BAIN doesn't try to determine which images to extract, it just does them all. This saves time for solid archives, but probably makes it slower for non-solid archives. The best comprimise I could come up with, but suggestions are always welcome.
- [Surazal]: Ability to retrieve folder names. OBMM syntax isSpoilerFor Each DataFolder
[RecurseSubfolders] [SearchString]
Allows you to process the BAIN sub packages without having to hardcode all the folder names. This means I can add new folders without having to change the script and reduces typo issues. - [Surazal]: Ability to retrieve file names. OBMM syntax isSpoilerFor Each DataFile
[RecurseSubfolders] [SearchString]
I use this capability to derive an associated ESP name by manipulating the file name string. For example, if the sub package contains "Better Cities Full Vwalk.esp" I can derive "Better Cities Full.esp" and check if it is installed in order to determine whether the sub package should be activated. - [Surazal]: Ability to execute script contained in a variable. Syntax is:SpoilerExec(lines)
Runs a string as if it were part of the script. Can be used with variables and loops to dynamically construct option menus. - [Surazal]:Ability to change file names during installation. OBMM syntax isSpoilerCopyDataFile
The end result is that a descriptive KF file name is copied to a standard KF file name that is referenced in the ESPs that use the animation.
Example: CopyDataFile "Mur_Zik 25% faster sixy walk with facial expressions.kf" to "0FemaleVariableWalk_Gorgeous.kf"
We already have support for renaming esm's and esp's, although it's not very well tested so there may be a few bugs. It wouldn't be hard to extend this to data files, but I do want to be sure it's working right before more people start using it. - [myk002][alt3rn1ty]: Enabling the "Previous" button. A bit trickier than it might seem at first, because the wizard screens are dynamically generated. There isn't a clear "Previous" page. An option would be to remember the user's answers for each page, then restart the script from the beginning, supplying those answers up to the point that the "Previous" page is reached.
- [alt3rn1ty][Metallicow]: Resizable wizards!
- [Metallicow][alt3rn1ty: Now make them remember their previous size - Done. Wizards remember both their previous size, and position now.
- [wrinklyninja]: Make it more obvious that you can double click on an image to see it in full. I can have the cursor change to a magnifying glass, that should help.
- [Arthmoor]: Detect if a mod is active via Wizard function.
- Implemented with the GetEspmStatus function.
- [alt3rn1ty]: Allow SelectOne dialogs to show an image and text in the 'Description' box, even when no default option is specified.
- [Metallicow]: Message box and Display Image.
Lets get those creative juices flowing.