After two years of development I have recently made the first general release of Luke-SDK which is a general purpose development environment. Due to problems with the wx.TreeCtrl on Windows I have concentrated on getting the Linux version into a usable state.
It is aimed at those who are used to a mixed mouse and keyboard style of editing familiar to Windows users. There are only a few special key strokes, such as Shift+Ctrl+V for "smart paste", but it is not necessary to learn a large number of obscure key combinations. It aims to be usable out-of-the-box without the need for plugins. There are only two requirements: Python and wxPython. All other dependencies are optional and assistance is provided for locating the packages and web sites for the compilers, interpreters, debuggers, syntax checkers and build systems for the supported languages: Boo, C, C++, C#, D, Java, JavaScript, Lua, OCaml, Perl, PHP, Pike, Python, Ruby and Tcl/Tk. The user interface makes extensive use of context sensitive menus and every menu starts with a title line that is also a way of obtaining specific help for the menu. Most dialog boxes have a Help button to explain what input is required. There are few options so that new users are not expected to make choices that they may not understand. Unsuitable defaults that may trap unwary users are avoided. Any directory can be opened as a project without prior definition as such. Practically all files in a project can be opened in the IDE or in an external tool. For example, a .glade file can be opened in the Glade Interface Designer or edited as an XML file. The project directory defines the scope of the search-in-files facility that I consider to be one of the most useful features of the IDE. Individual developers can benefit from a local version control system even if they do not have access to a shared repository. This option is provided by Bazaar-VCS - a Python based system promoted by Canonical. The project directory tree shows which new or modified files have not yet been committed to the branch repository. The branch is contained in a hidden subdirectory within the project and is included in the backup zip or tar file that should be made for each release. There is a Smart Terminal that allows interactive shells to operate within a wx.TextCtrl. On Unix such programs need to be connected to a pseudo terminal if they are to operate in interactive rather than batch mode. However, the easy way to connect a Python program to another process is by pipes. I have solved this by writing a small C program to copy to and from the subprocess via the pseudo terminal. The class containing the wx.TextCtrl implements most, but not all of the xterm (VT100) control sequences. The advantage of running the shell in the interface, rather than in a separate application, is that you can do so much more with the results than a xterm clone. In order to enable the user to add tools and wizards with interactive front-ends I have implemented a set of functions for creating a dialog without using wxPython directly. This idea is not fully worked out but is sufficient for basic requirements. With further development it might be worth considering as a separate Python package. There is a built-in method of running commands via sudo so tha Linux system administrators can use it to edit configuration files or i install software.
