pyBzEdit Mercurial
Status: Beta
Brought to you by:
djlawler
01/19/2014 - no release yet... But the project SHOULD work with python 3.3 and the new (Phoenix) version of wxWindows. 05/01/2011 Release 0.7.0 Worked on ironing out some bugs that caused this program to not work on Linux (Xubuntu 10.10) and OSX. 02/26/2011 For performance, maintainability and other reasons, I have eliminated the IronPython and Jython versions. These were nice experiments and did work, however I need to concentrate any time I have (very little), on one version. The python/wxPython version has the highest performance, best cross platform story and decent development tools (pydev on Eclipse for debugging and refactoring, or just simple text editing for quick things). This code is still very lightly tested (just 2 users that I know about). Please save your work with different names (save as), and often if you try to use this. If you actually open issues on this site I will try to see if I can reproduce and fix what you find. PyBzEdit does do some nice things compared to the official BZWorkbench: 1. Easier to set up a development environment 2. Better user interface IMHO (tree control) 3. Has working undo and redo 4. Digests more maps Having said that, BZworkbench has better and more developers and will always be much faster due to it being coded in C++. Older notes: Miscellaneous Notes and Ramblings: I have split the project into three sections one for Python, one for IronPython and one for Jython. Common programs are in the 'common' directory. I wrote the Vector class to eliminate the dependency on OpenTK in most modules which allowed me to port the project back to Python using only wxPython and PyOpenGl. The Vector class is probaly much slower than the nice stuff in OpenTK...but it is not too noticable so far. I had REAL fun bug squashing and modifying how this class worked. It probably sucks... but it works for what pyBzEdit needs. Don't expect it to be feature complete or awesome. Somewhere along the line I went 'insane' and decided to play with a Jython version as well. Ironpython specific stuff is in ipython subdirectory Python specific stuff is in cpython subdirctory Jython specific stuff is in the jpython subdirectory The OpenGlForm.py programs in all subdirectories append ".." to sys.path so that they can find the common programs. 03/18/2010 The program 'works' and will allow you to view bzflag maps/worlds. It can even download textures from http servers IF you have internet access. I have thrown a lot of oddball maps at it and it appears to digest them. This includes all 2.0 type objects (that I am aware of)! This program is NOT 'stable' and you should BACKUP ANY WORLD FILES before you play with them! YOU HAVE BEEN WARNED!!!! It DOES -now- allow you to move objects with the mouse. I use Eclipse/Pydev to work with all versions due to it's ability to run all versions of python and debug some (all?). Gave up on Netbeans because the debugging did not work for me. For heavy IronPython work (creating forms or debugging) there is also a SharpDevelop project in the ipython directory. I also frequently use Scite to edit when I don't want a bulky IDE getting in the way. Python version: You need to have Python, wxPython, and PyOpenGL installed - that is all! Then just run from the source. See ReadMe.txt in the cpython directory for more information. IronPython version: You just need IronPython 2.6 or above. OpenTK and the Multi-Select Treeview are included in the project in DLL form. I am using OpenTK to do anything in OpenGL (www.opentk.com). I am using the CodersLab Multi-Select Treeview for the left hand treeview (http://sourceforge.net/projects/mstreeview). Lastly, I am using my own RichTextBox derived class as the text editor. In theory all of these controls should be cross platform. On Linux and Mac -unfortunately- you need to use Mono 2.6 or higher due to winforms bugs in earlier versions See ReadMe.txt in the ipython directory for more information. Jython version: I use jython 2.5.1. jogl is included (for windows) in the project. See ReadMe.txt in the jpython directory for more information. What does not work: 1. Everything is edited in 'text'. Eventually, everything should be edited in a nice object specific forms. 2. Teleports and Links. They will be read and display properly....but cannot be edited reliably! 3. Editing multiple objects does not work. You have to edit one at a time...but now if you add more objects as text, they will be loaded propery. This is a new feature and not well tested yet. 4. Very little error checking - I need to add a lot of sanity checking! 5. Before we get to the point where there are nice forms to edit eveything maybe I could generate sample objects of 'your choice' with a button or menu? Editing the text is not so hard if you don't have to guess at the possible fields. 6. Dynamic colors, Texture Matrixes - you can edit them...but they do not display 'dynamically' (in fact they have no effect at all...yet). Things to maybe do: background thread for displaying dynamic objects/texture matrices? logging for debugging? lots of comments unit tests! lots of error checking and handling plugins - This would be a natural for python...you could create a cool script to repeat a selected object (or objects) over some sort of 'path'. Then have it show on the menu and be able to execute it from the editor - and see the results right away.