
Revision history for version 1.0:
Changes in version 1.0
- Ebuilder now check whether your design has changed before exit, save
and load and give you an (optional) warning.
- Added a tabwidget for easier access to different design views.
- Added toolbars for easy widget saving, loading and new widget
creation. Combined with key shortcuts for CTRL-n (new), CTRL-o (open) and
CTRL-s (save).
- Added windows-like key mapping for CTRL-c (copy), CTRL-x (cut),
CTRL-v (paste) and DEL (delete) while in the widget tree.
- You can now use the arrow keys to move around in the widget tree in
the same way you would in the windows explorer. You can open and close
branches by pressing the right and left arrow buttons. To pop up the
properties dialog for a node, press the Return key while it is selected.
- Added Fortify support and source code.
- Now using standard geometry management for all widgets. Makes GeoMgr
class obsolete.
- Removed all pre-2.x support.
- Introduced a new concept which will make it easier to extend
Ebuilder. At startup, the Designer object consults a MetaFactory to
request the type of objects that should be available for the user in
designs. New objects are created through object factories, which can be
found by using the MetaFactory. The object factories are also used to find
the pixmap to use in the widget toolbar and the widget tree. Finally, the
object factories are used to obtain a list of PropPage objects to use for
configuring the properties These new concepts make it possible to write a
new ObjectFactory and accompanying PropPage classes to support new widget
types.
- Added QFrame, QMainWindow, QFrame, QTabWidget and QTabDialog to
baseclass types.
- Minor fix in misbehaving PlaceHolder
- Added support for a UserWidget, a widget that shows itself with the
name of the actual class the user wishes to use, but is actually only a
QWidget. It allows setting QWidget properties such as geometry and
background color.
- Added rudimentary support for layouts to the widget inspector. You
can now use QHBoxLayout, QVBoxLayout and QGridLayout to the classes where
this would make sense. The layouts can be named explicitely by the user,
or automatically by Ebuilder. By choosing names for your layouts you can
add commands to the constructor of your class to manipulate the layout of
your design during construction.
- Added the possibility to fix the height and the width seperately.
- Added new widgets: QSplitter QMainWindow and QSpinBox.
Revision history for version 0.5x:
Changes in version 0.56d
-
Changed the name of StorageModule::export() to StorageModule::writecpp()
because "export" is a reserved word in C++.
-
Fixed CheckBoxPage which performed an incorrect cast to QRadioButton,
causing segmentation faults.
-
When saving a file, the .wdg extension is now automatically added to the
file name if it's missing.
-
When changing the color of a widget, incorrect code was generated to set
the palette using "QWidget::setPalette(pal)", instead of
"QWidget::setPalette(gpal)".
-
DesignModule::renameNode now checks for validity of the new
name.
-
DesignModule now checks for duplicate names in your design.
-
Renamed Makefiles to GNUmakefile to make it clear we need GNU
make.
-
Changed name of parse.y to parse.l because many people had trouble
compiling this file. '.l' is the convention for lex files, anyway.
-
Removed src directory which contained .wdg files for Ebuilder components
because of its outdated content.
-
Minor update in TUTORIAL. A button was misnamed.
-
Removed doxygen entries in the GNUmakefile.
Changes in version 0.56c
-
Fixed import problem on Linux which caused (null) text in export
of empty member function arguments and return types.
Changes in version 0.56b
-
Fixed qmultiliedit.h versus qmultilineedit.h problem for different
version of Qt.
-
Added missing #if construct to prefmdl.cc for Qt 2.xx compatible
include files.
-
Added scrollToNode(TreeNode *) member function to TreeWidget
-
Fixed possible problem with null pointer assignments to QString type
in storemdl.cc during import of .wdg files
Changes in version 0.56a
-
More fixes for Qt-2.xx compatibility
Changes in version 0.56
-
Fixed TreeWidget::setCurrentNode bug
-
Other changes/fixes in TreeWidget (new source file name a.o.)
-
Fixed compilation for Qt-2.xx
-
Fixed DesignModule QPopupMenu index errors
Changes in version 0.55
-
Fixed cut/delete bug for the TreeWidget caused by bugfixes made in 0.54
-
Widgets now snap to the grid also during move and resize operations.
-
Added #defines for 'true' and 'false' boolean values for solaris
Changes in version 0.54
-
Fixed a memory leak in TreeWidget. It didn't delete the QPixmap canvas
it used
-
Fixed a problem in the TreeWidget which would cause TreeNodes at the end
of a tree branch not to be deleted, aka a memory leak.
-
Fixed a memory leak in DesignModule. It didn't delete the WidgetInfo for
the current widget after exit
-
Fixed incorrect delete[] of pics array in DesignModule
-
Moved 'extern StorageModule *parseObj' declaration from 'storemdl.h' to
parse.y, where it belongs
-
Changed the name of the WidgetInfo class to WidgetData because of a
possible name conflict with an internal Qt class.
-
Added a command line flag '-f' to directly load a design at startup
-
Changed the declaration of TreeWidget::sizeHint to const
-
Added #ifdefs for true and false boolean values to tree.cc
Changes in version 0.53
-
It is now no longer possible to delete the class constructor and desctructor
(bet you didn't even notice that you could do that).
-
The TreeWidget has been rewritten from scratch to make it faster, better
and generally more usable. It now supports treenode expansion and offers
the possiblity to move portions of the tree to other locations. I still
think it is more usable than the QListView. Check out the html
docs for this class.
-
You can now raise and lower widgets so you can change the order in which
they appear in the widget tree.
-
If you use at least Qt version 1.40, you will be able to cut and paste
widgets in the tree. If you use Qt 1.33 or before, cut-paste will not work
completely like you might expect. All children of the pasted widgets get
moved to (0, 0) with respect to their parent. Unfortunately, this is not
visible on the screen. This is due to a bug in QWidget::recreate().
Changes in version 0.52:
-
Fixed incorrect generation of function bodies for SIGNALs
Changes in version 0.51:
-
Added default destructors to all classes in Ebuilder to keep Solaris g++
happy. It crashes with internal compiler error without them.
Changes in version 0.5:
-
Ebuilder looks a bit different since the separate windows for Tree View,
Member Functions, Member Variables and Include Files are now accessible
as different views from a single window.
-
A single panel is now used to list and edit/write member functions and
their documentation. No more modal windows.
-
You can now set the verbose level of Ebuilder which controls the
amount of anoying messages you will receive during saving and exporting.
-
You can now document your class, your member functions and your member
variables. Ebuilder will generate doxygen-style html documentation from
it.
-
The export member function of the StorageModule has been cleaned up a bit.
It no longer sorts your member functions and variables by type during export.
It exports them as it finds them. However, the Member Function - and Member
Variable View give you the possibility to sort your members.
-
The geometry manager used in Ebuilder, GeoMgr, is a little bit smarter
now. If you resize a widget in such a way that its child widgets get squashed
beyond recognition, you can now undo the situation by resizing to the original
size.
-
Fixed a stupid bug in the DesignModule which created dialogs which were
really modal if you checked the Modal checkbox. This effectively froze
the whole program.
-
Fixed a bug in export code which would create initializers using ': QWidget(parent
name)' instead of ': QWidget(parent, name)'.
-
A single config.mk file is used in the root of the distribtion to set the
flags used for building the applications and examples.
-
The WidgetInspector class and its pages are now built as a static lib in
a separate directory.