Old Virtual Pen Project History
28 fev 2002
- Playing around with .net. This could very well be the replacement
technology I was looking for. A front-end could easily be implemented using .net
WinForms. Just ordered a few books on the subject (C#, .net, WinForms,
etc.).
- Fixed a problem in the back-end, where dialogs were never deleted.
- The asynchronicity of the back-end with respect to the front-end can
induce stange looping behaviours if the front-end interleaves variable
changes with those of the back-end... Eeek.
27 feb 2002
- Working on visual selection feed-back.
- EPSITEC meeting.
26 feb 2002
- Implemented the missing parts of the rectangular zone object selection.
This required the support of commands ViewRightPress
and ViewRightRelease, which invoke the
document view HandleRightPress and HandleRightRelease
methods, which generate the StartObjectSelection,
BeginRectInObjectSelection, UpdateRectInObjectSelection,
EndRectInObjectSelection and ValidateObjectSelection
commands.
- Updated todo list.
- Updated display in the WidgetGraphicBoard
class.
25 feb 2002
- End of cleanup in the attribute edition code; this touched all the A-...
source files, DocObjAttr.h, DocObjAttr.cpp,
the command parser and the style edition manager.
- Implemented a new version of the AttrSetValue
command.
- Removed all the Styled::Context related
code; the context is really no longer used, since the path to the active
styles is now maintained in the style edition manager, thanks to Styled::Record
and Styled::PropPath collections.
- The command manager can now optimise away useless transactions (when zero
or just one command is in a transaction block, the transaction block does
not add anything).
- Added an Optimise method for the command
execution classes : there is a new CMD_IMPLEMENT_OPTIMISE
macro used to define it. Read more here.
- The document manager creates properly flagged styles in CreateNewFamilyStyle.
From the previous TODO list :
- The notifications can be buffered (delayed); method DelayNotify
sets the document in a recording mode; no notification gets forwarded until DelayNotify
gets turned off.
- Addressed the question about object/alias locking.
- Binding between style and family is now OK. Following the first alias
referrer leads to the family block.
- Updated documentation (aliases, commands,
family manager and styles).
23 feb 2002
- Non-VP work. Mainly maintainance.
21 feb 2002
- Whole day in Geneva; conference organised by Microsoft Switzerland with
Don Box about .net and the CLR. Impressive...
20 feb 2002
- Cleaning up attribute edition code. While doing this, I decided to launch
into another refactoring session... ended 25 feb 2002.
- Started refactoring of the property access, delegating as much as possible
to the style edition manager (Styled::Manager);
most of the logic currently in the user interface controllers (e.g. UIStyledLineSimple)
can be replaced by generic algorithms, based on the attribute editor
interface (VP::DocAttr::EditorOp).
- Work in progress : Styled::Manager::ReadValue/WriteValue
supersede the AccessReadOnly/ReadWrite
methods. The old methods are still there but will have to be removed soon. A-LineStyle.cpp
must be cleaned up too...
- VP::DocAttr::SetValue/GetValue
need some polishing.
- DocManager::SetFamilyStyle uses a ReplaceStyle semantic when updating the style edition
manager, which allows for much less notifications/updates than before, when
a style is replaced by its exact clone.
19 feb 2002
- Working on the style modification and cloning mechanisms.
- Fixed a few problems which caused lots of redundant updates bound to the
style change notifications. By the way, extended the GUISyn::Variables
class to maintain a cache of the VP::Unit::Val
associated to every variable.
- Cleaned up the styled.cpp and objclone.cpp
source files.
18 feb 2002
- Fixed bug in document initialisation (introduced while refactoring last
week), which caused VP to crash when loading documents.
- When creating figures, the style used for each figure is shared/cloned
automatically, as needed. This required a change in class DocManager,
to notify class Styled::Manager when the
operating mode of the document manager changes.
15 feb 2002
- Finished refactoring of styles and family management.
- Fixed a nasty bug which caused the previous implementation to crash (and
which was the cause for all this change).
- Removed command CloneFamilyStyle.
Replaced it with a pair of CloneStyle
and SetFamilyStyle commands.
- Added transactions to the Cmd::Manager
class which allow for both glueing together commands and rolling back
commands if a sequence gets aborted.
- Next things to do will be to :
- Clean up the styled.cpp and objclone.cpp
source files.ü
- Clean up the attribute edition code.ü
- Enable the use of the attribute editor to simplify the implementation
of the GUI.ü
14 feb 2002
- Refactoring the styles and family management. Following modifications have
been completed today :
- Removed both style roots (full style list and auto style list) from
class Document.
- Moved the families one level up the hierarchy. Families are now at the
top level of the document, as root blocks.
- Updated the DocObj::Family::Manager
and the DocObj::Style::Manager.
- The FamilyManager class in the
back-end was updated.
- The project is now broken and requires more updating, specifically class DocManager
and command CloneStyle require some
additional work.
- The documentation is not up-to-date anymore.
13 feb 2002
- Still more design. I feel much more confortable today, since I think I
have found a way to simplify all the styles/families/cloning/undo/redo
stuff, which gave me so much headaches recently.
- Compiled the whole project with Visual Studio .net (aka VC++ 7) and it
caused some trouble compiling (a few C++ conformance problems). The code
produced by VC++ 7 does not work properly. I will not investigate this
today.
12 feb 2002
- More design... I am still not finished with the styles problems.
11 feb 2002
- Working on style edition.
- Added command CloneFamilyStyle
while reworking the style edition tools.
08 feb 2002
- Upgraded OPaC OPTextLine into OPSmartTextLine
in order to support a command line history.
- Added support for keyboard shortcuts; pressing the Return
key in the debugger command window now sends the command to the back-end.
07 feb 2002
- Documented the commands added the day before (CloneStyle,
ReplaceAlias)
and updated a set of related documents.
- Fixed bugs in the DeleteObject and ObjectCreation
commands.
06 feb 2002
- Oops... I almost missed a very important point : every modification
done while editing styles should be undoable. This adds a lot of constraints
on the way cloning/replacing of styles is implemented.
- Fixed several problems with the undo/redo mechanism, broken a few months
ago. Now, it is again possible to undo and redo a drawing and have it work
as expected.
- Added following commands to the back-end : CloneStyle
and ReplaceAlias needed by the style edition
dialog, Undo, Redo,
PurgeUndo and PurgeRedo
for testing purposes.
CloneStyle and ReplaceAlias seem to
be working as expected.
- Added support in the document manager for zombie objects (deleted objects
which no longer exist, but which index cannot be reused, unless it gets
explicitely resurrected).
05 feb 2002
- Tackling the style replacement and cloning mechanism. This is much more
complex and far-reaching as I expected first. I had forgotten to take into
account the fact that the attribute edition dialog would have to be able to
cope with several selected objects, with different subsets of style
families.
04 feb 2002
- Found and fixed a bug which hung the back-end; a synchronisation with WDGS
could fail if the data returned by WDGS crossed the end of the circular
communication buffer and was split into halves.
01 feb 2002
- Working on the user interface.
31 jan 2002
- Working on the user interface.
- The StyledManager class (Style Edition
Manager) still does not provide everything needed for automatic cloning of
styles on modification, but we are almost there.
- More Smaky troubles; this time, a solution was found, so everything should
be fine from now on.
30 jan 2002
- Working on the user interface.
- In the todo list, there is no longer anything in the Fix
ASAP section.
- Smaky troubles took some time (investigation without any positive result)
and distracted me from my current style UI (re)design.
29 jan 2002
- Microsoft DevDays in Geneva on .NET.
28 jan 2002
- Intel C++ compiler version 5 finally produced executables... which did not
work as expected in Release mode, because Ref::Resolve
was fixed the wrong way.
After a lots of hours of tedious bug seeking and template-twisting, VP now
compiles properly on both Visual C++ version 5/6 and Intel C++
version 5.
- Redesigning details in the attribute edition procedure. Things are still
not as clear to me as they should be.
26-27 jan 2002
- Tried compiling the whole project (VP, OPaC, GUISyn) with Visual C++
version 6, using the Intel C++ compiler version 5. Some work is
still needed to get everything compile and link properly, since Intel's C++
compiler is much more standard conformant and picked up a lot of errors
missed by Microsoft Visual Studio 5 compiler.
25 jan 2002
- Youpie ! When editing a value in the user interface, the attribute
sample pane gets updated properly and the style gets updated. This is a
milestone.
- Trying to compile the whole project with Visual Studio 6 and the Intel
Compiler, version 5.0; a few changes were needed for OPaC to compile.
24 jan 2002
- Added support for GUISyn macros.
- I am ill... once again; not much valuable work.
23 jan 2002
- Working on OPaC for a better integration with the front-end.
- The macro widgets are now implemented by external code, located in the
back-end, not in the GUISyn library.
GUISYN_MACRO_INSERTER (name) defines a
widget macro; the code has access to the current widget context (context)
and the root widget (root).
22 jan 2002
- Class WidgetDropLine supports keyboard
navigation of the drop-down list; this required improvement of the OPaC
menu.
- Work needed on the Smaky - off topic, but took some time.
21 jan 2002
- Adding a drop-down list which was missing from the OPaC library. It
is currently located in the front-end and implemented by class WidgetDropLine.
- Improved look & feel of OPaC OPTextLine;
modified also OPMenu, OPMenuArchitect
and OPWindow.
- Added more symbolic colors to OPaC (for the text line and the window bar,
mainly).
- Added preliminary support for macro widgets; creating a GUISyn widget with
the macro=name tag calls GUISyn::Widget::InsertMacro
(name), which can then
populate the widget as needed.
18 jan 2002
- More design, first draft implementation of the line style edition.
17 jan 2002
- Added documentation about the styles
and the automatic styles.
- Fixed a small problem in ObjectStore::DuplicateObject,
which simply copied links bitwise. Copying a link requires some maintainance
on the referrer side.
- Added function to clone a style and all its sub-styles; this will be used
by the full sample user interface, when an existing style is modified.
- Design phase : how to manage style edition (detailed design needed).
16 jan 2002
- Continuing work on the style edition UI classes.
- Introduced a new way to delay redraws in the user interface, which removes
all the flicker when the GUI is being modified and updated in several steps.
From the back-end, simply call BackdoorProcessor::PostBatchRedraw
to enable or disable the batch redrawing (enable = redraw postponed, disable
= immediate redraw).
- Cleaned up and simplified command management. Exec,
DialogNotify and the {}
substitution mechanisms have been reworked. Moreover, there is now a simple
way to declare parsable enums.
- Added support to read pixels back from the icon to get their RGB
components; this is very useful for the color picker bar.
15 jan 2002
- Updated GUISyn::Variables. This had
ramifications into the TempMem::Pool and Allocator
management, Association and Pair
classes, etc.
- VP does no longer leak memory when communicating between front-end and
back-end.
- Started implementation of the style edition UI classes (UIStyledPaint
and UIStyledLine for now, based on a new
common UIControlChild).
14 jan 2002
- Modified OPaC OPBoxView class so that we
can use it as a separator in a dialog.
- Added support to dynamically add and remove parts of dialogs through
GUISyn.
- Updated the OPaC garbage collector (it was never updated after the big
changes undertaken last century, which changed the way the references are
handled). Re-enabled it.
- Memory is being eaten up at excessive rates by the front-end : GUISyn::Variables
class uses a pool to clone local variables and strings, which is only freed
when the variables are deleted... but they are long lived !
- Implemented dialog event notification through the DialogNotify
command, which calls DialogHelperOp::NotifyEvent.
11 jan 2002
- Added more debugging commands (see full command
list).
- Implemented basic commands for the full sample user interface. Clicking on
the color wells changes the selected style (still work to be done here).
- Started implementation of a new icon grid widget, which can be used to
pick colors from a grid of cells or pick colors from an image.
10 jan 2002
- Fixed DocView::HandleLeftPress.
- Fixed Cmd::Manager::Execute.
- When loading a document, the view now gets fully synchronised.
- Removed experimental stuff (ui-experimental.cpp)
and turned it into something more solid (ui-main.cpp).
- Added documentation about commands and the special !action
variable.
- Improved the FullSample controller class;
this implied extending GUISyn to add more specialised icons (namely icon.led.radio
and icon.led.switch).
- Fixed initialisation of GUISyn widgets; they were not set to their
original state when they were created, but only when the variables were
modified later on.
09 jan 2002
- Fixed BackdoorPacketSpy, so that the last
command gets stored to the backdoor-packet.history
file before the application crashes.
- Fixed loading : former family managers get ResetAndDeleted
and then reinstanciated based on the new document. Flushed family style
cache.
- The line sample painted by the Sampler
class now extracts the real line style information from the selected style.
- The widgets which rely on user icons get updated when their icon
definition gets changed by the back-end. This implied adding a dictionary
mapping from user icon names to views.
08 jan 2002
There has been a quiet period for some time. This was the result of my
web-edition platform (laptop) being repaired by DELL. Furthermore, I was off
duty from december 22 up to january 6. Now, I have returned to VP's internals...
Things have not changed much since mid-december.
- Added experimental line style family, which unconvered several small
design errors.
- Debugging in order to get things straight, and remember what was done
where, how and why.
- Fixed small bug with polygonal figures; when clicking on the last grip,
this added one more point before terminating the creation. The press/release
events had to be suppressed when a grip was clicked.
- Added a section 'Fix ASAP' to
the things to do list.
History of previous months.