GUI Editor

Table of Contents

Requirements

Intro

Simply start src/text.py with an python interpreter. Be aware that the GUI Editor is only tested unter Linux with GTK+ version 2.4.

The goal of this editor is to edit XRC-files simply by dragging controls into a frame. It should be as simple as possible to create a dialog or an other frame. It should not be necessary to use a tree representation of the widget hierarchy.

The design of the gui editor is more towards stetic. Unfortunately this is only for GTK+, and not for wxWidgets. But there are a lot of gui designers for wxWidgets. But all known gui editors out there forcing the user to work with the widget tree.

Usage

When you use this programm you will see that it is in a pre-alpha stage. Most important functions are not implemented (like saving and opening xrc).

This version is a very simple prototype, click in the Toolbox-Window on the "Frame"-Button and a new window is opened. Now you can drag arbitrary control widgets into this frame. When a control is drawn over a frame black rectangle indicate where the control would be inserted.

When a control is clicked the property view changes. Now are the properties of the selected control are displayed and can be changed by editing.

Download

The current version of the gui editor can be downloaded at http://hoelzl-bros.de/~johannes/2005/gui-editor/gui-editor.tar.bz2. Currently there is no version numbering nor is version control used.

Internal Documentation

Currently the modules are not very good documentated. But here a quick overview about some mechanism used in the gui editor:

Unified wx Elements

There is no distinction between sizers and widgets. Both are LayoutElements. This simplifies the drag and drop mechanism. The LayoutElement objects have itself not always a wxObject connected and the wxObject itself can change in the livetime of the LayoutElement object. This is needed to move a entire widget tree and at the creationtime of the widget.

The drag and drop of widgets is controlled by four methods in LayoutElement which must be implemented by sizers and widgets which own child widgets. See the documentation to selectInsertPoint(), insert(), getInsertInfo() and getCursorDim().