FrameLayout window-docking system (WDS) for wxWindows-2.0

(doc-v1.0.1, mailto:alex@soften.ktu.lt)

1. Overview
2. Main components
3. Persistance framework
4. Generated Source Code docs (useless)


1. Overview
===========

Docking is a relatively new method of layouting GUI
components. It allows user to customize his/her workplace
by simply dragging around and resizing contents within 
applications main window. These contents (further refered
as control-bars) can be docked along top, bottom, left and
right sides of the frame, positioning workplace's client area 
window (e.g. current document) in the center of the frame.

2. Main components.
===================

  * parent frame
  * four docking panes
  * control-bars
  * client area

  Parent frame is usually application's main window.
  Frame-Layout system (FL) allows layout compnents
  to be placed into any kind of window such as dialog, 
  panel or modeless-frame.

  Docking panes are rectangluar areas which surround the client
  window along top, bottom, left and right edges. Control-bars
  are docked into these panes.

  Cotrol-bars are named so, because the usually embed common 
  GUI controls such as toolbars, choices, text/tree controls.
  Control-bars can be fixed-size or flexible. For the later 
  ones FL automaticlly places resizing handles along those edges 
  of flexible-bar, which actually can be moved, e.g. edge which 
  is in touch with the client are will have handle to allow 
  ajusting the client's area vs. pane's area.

  Client area can be any provided window such as panel or MDI parent
  window.  FL will resize and position this window to fit the free
  space, which is not occupied by surrounding panes.

  (the rest is "under construction" at the moment)

---------------------------------------------------------------------

Persistance-Framework for wxWindows, 1998 (c) Aleksandras Gluchovas

Contents
========

 1. Abstract
 2. Extending wxWindows object system
 3. Common scenario for making classes persistent
 4. Kinds of persistent objects
 5. PF behavior
 6. Transient objects
 7. Object versioning
 8. Polymorphic persistence
 9. Serializers for common wxWindows classes
10. Class/Macro Reference

1. Abstract
===========

  The persistence-framework (PF) aims to provide
  an easier means of making C++ objects persistent.
  It is solely specialized to store/load (i.e. serialize)
  objects, but not to manipulate their data, therefore
  it cannot act as a real object-database. This PF also could
  be used for implementing undo-able operations on object-
  systems (to some extent). It handles most common specialties 
  of run-time data:

    1) Not-storable (transient) objects
    2) Differences in object structure among different builds
    3) Not-data characteristics of objects - dynamic types
       of class instances

2. "Extending" wxWindows object system
======================================

  PF does not require any modification to existing 
  not-persistent classes. It uses meta-information 
  held in derivatives of wxObject for 
  the purpose of RTTI, thus only the later
  classes can be made persistent. Information
  about class’s persistence is captured into
  static structures, using similar techniques as
  wxWindows system of dynamic-classes is implemented.

3. Common scenario for making classes persistent
================================================

  1) For each persistent class, corresponding serializer-
     class have to be written. Name for the serializer 
     class contains class-name of the traget class
     with "Serializer" appended at the end, e.g. for 
     wxRect there would be wxRectSerializer. 

  2) Two macros DECLARE_SERIALIZER_CLASS(..) and
     IMPLEMENT_SERIALIZER_CLASS(..) have to be placed
     into header and implementation files. These macros will
     "inject" static data about serializer, so as to compose
     a chain of run-time serializer information structures.
   
  3) Declare and implement methods for serialization and
     initialization of the target-class (i.e. the 
     one for which serializer is written). These
     methods should be declared as static in the
     serializer class, and pointers to them are
     passed to IMPLEMENT_SERIALIZER_CLASS(..) macro
     - to complete static information about serializer.

  The above three steps accomplish the "declarative"
  part of making object persistent. For actual storing/loading
  of objects, instances of 'wxObjectStorage' and 
  'wxDataStreamBase' derivative classes have to
  be created. Then references to objects are 
  iterativelly passed to corresponding 'Xchg...' 
  methods of this 'wxObjectStorage' (further referred
  as storage manager) to perform string/loding using 
  the given byte-stream.

  (note: the later approach is overly general,
         thus in the future, improvements will be made
         in order to provide some practical defaults)

4. Kinds of persistent objects
==============================

  There are following data of C++ applications
  can be made persistent:

    1) basic types (int, double, etc)
    2) classes/structures
    3) pointers to objects, objects here
       referred as instances of a class, i.e.
       which can have "wx-run-time-information".
    4) pointers to transient objects,
       also referred as "initial references".

5. PF behavior
===============       

  Basic types are stored in their binary
  representation. Derivatives of 'wxDataStreamBase' 
  may implement storing of basic-types in 
  machine-independent format.

  Serialization of classes proceeds with
  storing of basic types, aggregated objects and
  references (pointers really) to external 
  objects. 

  When reference to other object is encountered,
  it is encoded in the form which does not 
  depend on the current in-memory address of 
  referred object, thus upon loading, 
  it can be restored correctly. After
  serializing reference, storage manager
  immediately performs serialization of the
  object which is referred. Technically, this
  approach allows using streams which cannot
  perform bi-directional read/write operations
  - cannot 'seek', e.g. socket-streams.

  It is not necessary to iterativelly pass
  each persistent object to object storage
  in order to serialize them. Usually run-time
  object structures are "self-contained", i.e.
  objects contain other objects or at least have
  cross-references. Therefore it's enough to
  serialize the "root" object in the system's
  hierarchy, and all the referred objects
  will be automatically serialized.

6. Transient objects
====================

  The objects which are not intended to be
  persistent are referred as transient.
  To prevent serialization of such objects,
  initial references (IRs) to them should be 
  passed to the storage manager, before any  
  loading/storing can proceed. The Order in 
  which they are passed should be the same for loading 
  and storing - since there is a 'sequence-number' for
  each IR which is  generated when serializing the pointer 
  which was identified as be an initial-reference 
  (automatically recognized using hash-tables). 

  Simple example of transient object could be a
  printer object, to which other persistent 
  objects may refer, but the printer itself 
  cannot be serialized. Also in wx-frame-layout
  system, a reference to application's frame window 
  is registered as IR.

7.Object versioning
===================

  NOTE:: implementation of versioning is prototypical -
         not well tested yet.
   
  PF attempts to reduce the burden needed to program
  support for loading/storing multiple versions
  of persistant objects. 

  The versioning of objects is not enforced by PF,
  it is provided as additional possibility. 

  For each distinct version of a class separate 
  serializer have to be written. Implementing such
  serializers is similar to the above described
  not-versioned serializers impl., except that
  different macros should be used - extended
  with "FOR_VERSION" postfix, e.g.
  IMPLEMENT_SERIALIZER_CLASS_FOR_VERSION(..) used instead
  IMPLEMENT_SERIALIZER_CLASS(..), where the version name
  string is additionally passed to the former macro.

  Storage manager will store version information to the 
  the output stream, and read it upon loading - to find 
  matching serializer. An error (for now: exception) will 
  occur when no matching serializer was found. 

  When storing, serializer for the latest version of
  object is used, following the assumption that usually
  the newest object versions exist at run-time. Only
  when staying in files they are "getting older", thus
  it is possible to load older data into newer objects
  (backwards-compatibility), but not to store newer objects
  in the "old format".
  
8. "Polymorphic" persistence
============================

  This mechanism is meant for reducing number of serializers 
  required to write for classes with the same base 
  class and same persistent data that base class, 
  but different behavior.

  The "poliymorphic" persistence is enabled by default, 
  allowing the storage manager to search for serializers 
  of base classes, if the ones for the derived classes were
  not found. 

  This can by disabled by calling SetStrictMatching(TRUE), 
  forcing the manager to abort serialization, if no 
  serializer found, which match the object's class exactly.

  This does not mean however, that instance of the 
  base class is created even if no 'CLASSINFO' data for the 
  derived class were found, in such cases the serialization 
  will be aborted also, i.e. dynamic type of object should
  be always restored preciselly.

  Concrete example: having base class Employee, which has
  info common to all employees. Other classes 'Secretary',
  'Manager', etc are derivatives of 'Employee' and do not
  contain any additional data members. Thus they only
  specify different behavior and can be safely serialized
  by 'EmployeeSerializer' class.

  For wxWindows I've written serializer for wxWindow class, 
  and it can be used to serialize generic wxPanel and other
  derivtives of wxWindow which do not add any additional members.

9. Serializers for common wxWindows objects
==========================================

  There may appear some difficulties to find out
  for which classes serializers are already written
  and for which aren't. because serializer is actually
  a pair of static methods, which can reside (scattered) 
  anywhere among implementation files. In future storage
  manager will be modified to check for duplicated
  serializers (only possible at run-time). Currently 
  serializers the following common wxWindows classes 
  are present:

  wxNode (is serialized "in it's entirely"),
  wxList, wxPoint, wxSize, wxRect, wxColour, wxPen,
  wxBrush, wxEvtHandler, wxWindow, wxTextCtrl,
  wxTreeCtrl (serializes structure and item states),
  wxStaticText, wxScrollBar

  Serializers for these classes are placed in objstore.cpp.
  Serializers for other already-exiting wxWin classes could
  be also placed into this file. For the new (future) 
  wxWin classes which would have advantage of
  being persistent, serializers could be placed into
  their corresponding implementation files (.cpp).

10. Class/Macro Reference
=========================

  >>>> UNDER CONSTRUCTION <<<<

  for now, you may look at comments in the source 
  code (headers especially), the sample and also
  one "Real-World" example of "wx-frame-layout"
  system, where serializers for various classes
  are placed in cbstore.cpp and cbstore.h, serialization
  is performed in MyFrame::SerializeMe(). 

--------------misc. notes, just in case...------------

   When object does not need any extra
   initialization after it is serialized.
   In the case of loading, `Initialize()'
   method can be omitted and `NO_CLASS_INIT'
   constant passed instead of a pointer to the method.

   Since wxString may be configured to be 
   not-wxObject-derivative, extra method is
   included:  wxObjectStorage::XchgWxStr(..)
   to serialize "any-wxString".

   The provided initialization functions are invoked
   only after all objects (i.e. entire "network")
   is loaded into memory, since sometimes initialization
   of one object depend on existence of another.

   "Recommended" that these two methods would 
   be called `Serialize(..)' and `Initialize(..)'
   respectively. They also should conform
   to definitions of `wxObjectSerializationFn'
   and `wxObjectInitializationFn'.

   The body of initialization function (method)
   usually contains invocations to given
   instance of wxObjectStorage, for each
   persistent member of the target class,
   e.g. 

     store.XchgLong( pRect->width  );
   or
     store.XchgObj( (wxObject*) pWnd->GetChildren() );     

   Macro IMPLEMENT_SERIALIZER_FUNCTIONS(..) is not meant
   for implementing static methods of serializer class,
   instead it could be used when it is considered a 
   better way to place serialization functions into global scope,
   rather than in-serializer-class. These macros make
   such approach possible.


Source Code Contents


Classes Reference


cbAntiflickerPlugin

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbAntiflickerPlugin::mpVertBuf

wxBitmap* mpVertBuf

double-buffers are shared "resource" among all instances of antiflicker plugin within the application

TODO:: locking should be implemented, for multithreaded GUIs


cbAntiflickerPlugin::mpLRUBufDc

wxDC* mpLRUBufDc

last-reacently-used buffer


cbAntiflickerPlugin::mLRUArea

wxRect mLRUArea

last-reacently-used area


cbAntiflickerPlugin::FindSuitableBuffer

wxDC* FindSuitableBuffer( const wxRect& forArea )

returns NULL, if sutable buffer is not present


cbAntiflickerPlugin::OnStartDrawInArea

void OnStartDrawInArea( cbStartDrawInAreaEvent& event )

handlers for plugin events


cbFloatedWindow

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxFrameView

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxFrameView::OnInit

void OnInit( )

hooks for specific frame-views


wxFrameView::OnRecreate

void OnRecreate( )

imp. is mandatory


wxFrameManager

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxFrameManager::Init

void Init( wxWindow* pMainFrame, const wxString& settingsFile = "" )

if file name is empty, views are are not saved/loaded


wxFrameManager::GetParentFrame

wxFrame* GetParentFrame( )

synonyms


wxToolLayoutItem

layout item

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


LayoutManagerBase

base class for layouting algorithm implementations

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


BagLayout

layouts items in left-to-right order from top towards bottom

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxDynToolInfo

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxDynamicToolBar

class manages containment and layouting of tool-windows

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxDynamicToolBar::mSepartorSize

int mSepartorSize

public properties

default: 8


wxDynamicToolBar::mVertGap

int mVertGap

default: 0


wxDynamicToolBar::mHorizGap

int mHorizGap

default: 0


wxDynamicToolBar::AddTool

void AddTool( int toolIndex, wxWindow* pToolWindow, const wxSize& size = wxDefaultSize )

overridables


wxDynamicToolBar::AddTool

wxToolBarTool* AddTool( const int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap, const bool toggle = FALSE, const long xPos = -1, const long yPos = -1, wxObject *clientData = NULL, const wxString& helpString1 = "", const wxString& helpString2 = "" )

method from wxToolBarBase (for compatibility), only first two arguments are valid


wxDynamicToolBar::DrawSeparator

void DrawSeparator( wxDynToolInfo& info, wxDC& dc )

the default implementation draws shaded line


wxDynamicToolBar::Layout

void Layout( )

see definitions of orientation types


wxDynamicToolBar::OnSize

void OnSize( wxSizeEvent& event )

event handlers


wxDynamicToolBar::Realize

bool Realize( )

overriden from wxToolBarBase


wxToolWindow

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxToolWindow::mButtons

cbMiniButtonArrayT mButtons

protected really, accesssed only by serializers *


wxToolWindow::mDragOrigin

wxPoint mDragOrigin

drag&drop state variables


wxToolWindow::AddMiniButton

void AddMiniButton( cbMiniButton* pBtn )

buttons are added in right-to-left order


wxToolWindow::GetPreferredSize

wxSize GetPreferredSize( const wxSize& given )

overridables:


cbMiniButton

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbCloseBox

classes specific to wxFrameLayout engine (FOR NOW in here...)

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbCollapseBox

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDockBox

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbFloatedBarWindow

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbFloatedBarWindow::PositionFloatedWnd

void PositionFloatedWnd( int scrX, int scrY, int width, int height )

given coordinates are those of the bar itself floated container window's position and size are ajusted accordingly


cbFloatedBarWindow::GetPreferredSize

wxSize GetPreferredSize( const wxSize& given )

overriden methods of wxToolWindow


MyApp

Define a new application type

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


MyFrame

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxTabbedWindow

class manages and decorates contained "tab"-windows. Draws decorations similar to those in "Project Workplace" of Microsoft Developer Studio 4.xx

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxTabbedWindow::GetLabelFont

wxFont GetLabelFont( )

overrride,to provide different font for tab-labels


wxTabbedWindow::mpTabScroll

wxScrollBar* mpTabScroll

FOR NOW:: scrollbars are actually related to wxPaggedWindow


wxTabbedWindow::mWhitePen

wxPen mWhitePen

public properties (invoke ReclaclLayout(TRUE) to apply changes)

default: RGB(255,255,255)


wxTabbedWindow::mGrayPen

wxPen mGrayPen

default: RGB(192,192,192)


wxTabbedWindow::mDarkPen

wxPen mDarkPen

default: RGB(128,128,128)


wxTabbedWindow::mBlackPen

wxPen mBlackPen

default: RGB( 0, 0, 0)


wxTabbedWindow::mVertGap

int mVertGap

default: 3


wxTabbedWindow::mHorizGap

int mHorizGap

default: 5


wxTabbedWindow::mTitleVertGap

int mTitleVertGap

default: 3


wxTabbedWindow::mTitleHorizGap

int mTitleHorizGap

default: 4


wxTabbedWindow::mImageTextGap

int mImageTextGap

default: 2


wxTabbedWindow::mFirstTitleGap

int mFirstTitleGap

default: 11


wxTabbedWindow::mBorderOnlyWidth

int mBorderOnlyWidth

default: 8


wxTabbedWindow::OnTabAdded

void OnTabAdded( twTabInfo* pInfo )

notifications (can be handled by derivatives)


wxTabbedWindow::AddTab

void AddTab( wxWindow* pContent, wxString tabText, wxString imageFileName = "", long imageType = wxBITMAP_TYPE_BMP )

tabs can be also added when the window is already displayed - "on the fly"

contained window


wxTabbedWindow::AddTab

void AddTab( wxWindow* pContent, wxString tabText, wxBitmap* pImage = NULL )

NOTE:: if this AddTab(..) overload is called, the image bitmap will not be serialized (if performed), use the above method instead, so that images could be restored using the given file names


wxTabbedWindow::GetTabCount

int GetTabCount( )

misc accessors


wxTabbedWindow::HitTest

int HitTest( const wxPoint& pos )

return -1, if non of the title bars was hitted, otherwise the index of the hitted tab title bar


wxTabbedWindow::RecalcLayout

void RecalcLayout( bool andRepaint = TRUE )

should be invoked to redisplay window with changed properties


wxTabbedWindow::OnPaint

void OnPaint( wxPaintEvent& event )

event handlers


wxPaggedWindow

class manages and decorates contained "sheets" (or pages). Draws decorations similar to those in "Output window" of Microsoft Developer Studio 4.xx

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxPaggedWindow::mIsDragged

bool mIsDragged

drag&drop state variables


wxPaggedWindow::OnTabAdded

void OnTabAdded( twTabInfo* pInfo )

adjusts scorllbars to fit around tabs


wxPaggedWindow::GetLabelFont

wxFont GetLabelFont( )

sets smaller font for page-labels


wxPaggedWindow::mTitleRowLen

int mTitleRowLen

actual title row length


wxPaggedWindow::mAdjustableTitleRowLen

int mAdjustableTitleRowLen

setup by dragging mini-sash


wxPaggedWindow::mCurentRowOfs

int mCurentRowOfs

with the mosue pointer


wxPaggedWindow::GetVerticalScrollBar

wxScrollBar& GetVerticalScrollBar( )

NOTE:: use public methods of the base class to add "pages" to this window

misc accessors

below two methods should be called after the tabs were added (AddTab(..)). Set up these scrollbars to match the needs of the tabs added into this area


wxPaggedWindow::HitTest

int HitTest( const wxPoint& pos )

return -1, if non of the title bars was hitted, otherwise the index of the hitted tab title bar


wxPaggedWindow::OnPaint

void OnPaint( wxPaintEvent& event )

event handlers


twTabInfo

helper structure of wxTabbedWindow

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


twTabInfo::mImageFile

wxString mImageFile

used for serialization


MyApp

Define a new application type

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


MyFrame

Define a new frame type

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


MyFrame::CreateTxtCtrl

wxTextCtrl* CreateTxtCtrl( const wxString& txt = "wxTextCtrl", wxWindow* parent = NULL )

helpers for control-creation


MyFrame::CreateDevLayout

wxWindow* CreateDevLayout( wxFrameLayout& layout, wxWindow* pParent )

helpers for layout-creation


MyFrame::MyFrame

MyFrame( wxFrame *frame, char *title, int x, int y, int w, int h )

public


MyFrame::OnClose

bool OnClose( )

event handlers


cbSimpleCustomizationPlugin

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbSimpleCustomizationPlugin::OnCustomizeBar

void OnCustomizeBar( cbCustomizeBarEvent& event )

plugin-event handlers


cbSimpleCustomizationPlugin::OnMenuItemSelected

void OnMenuItemSelected( wxCommandEvent& event )

menu-event handler


wxSerializerInfo

class conceptually simiar to wxClassInfo, execpt that it's static instances hold information about class-serializers rather then about the classes themselves.

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxSerializerInfo::classInfo

wxClassInfo* classInfo

link to corresponding class-info object,


wxSerializerInfo::serFn

wxObjectSerializationFn serFn

established upon invocation of InitializeSerializers()


wxSerializerInfo::serInfoHash

wxHashTable serInfoHash

classInfo <=> serializerInfo


wxSerializerInfo::SerializeInherited

void SerializeInherited( wxObject* pObj, wxObjectStorage& store )

looks up for serializers of the base classes (base1 and base2) of the given object invokes them if present


wxSerializerInfo::InitializeSerializers

void InitializeSerializers( )

static methods


wxSerializerBase

formal base class for all serializers, implemented as classes with static serialization/initialization methods

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxDataStreamBase

defines abstract inferface for data-stream objects, can be implemented as a wrapper class for already existing stream classes

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxObjectStorage

class provides stream-based persistance service for classes derivated from wxObject, which are declared as dynamic classes. Relies on the presence of appropriate serializers for objects, which are being stored/loaded.

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxObjectStorage::mVerSepartorCh

char mVerSepartorCh

can be changed (with countion!)

default: '#'


wxObjectStorage::mMinorMajorSepartorCh

char mMinorMajorSepartorCh

default: '-'


wxObjectStorage::AddInitialRef

void AddInitialRef( wxObject* pObjRef )

adds initial reference, objects referred by such reference are not serialized when storing. When loading, pointers which refere to these "inital objects" are set up to refere to objects provided in by AddInitailRef() method.

NOTE:: initial references should be added always in the same order, since the seq-# of the reference is used as an alias to the real object while storing/loading


wxObjectStorage::SetDataStream

void SetDataStream( wxDataStreamBase& stm )

init/reinit of object-storage


wxObjectStorage::Finalize

void Finalize( )

performs linkng of in-memory references after loading, or links in-stream references after storing has proceeded


wxObjectStorage::XchgChar

void XchgChar( char& chObj )

storage methods for basic types


wxObjectStorage::XchgObj

void XchgObj( wxObject* pWxObj )

storage methods for objects and pointers to objects


wxObjectStorage::XchgWxStr

void XchgWxStr( wxString& str )

storage methods for common wxWindows classes, which may or may not be dymaic, therefor use the below methods instead of XchgObj(..)


wxColourSerializer

The below classes provide "curde" serialization for most common wxWindows objects, i.e. they discard the information which may be contained in the subclassed versions of these classes However, more "fine-grainded" serializers could be written to match these subclasses exactly.

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxPenSerializer

NOTE:: currently "stipple" and "dashes" properties of the pen are not serialized

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxBrushSerializer

NOTE:: currently "stipple" property of the brush is not serialized

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxObjectListSerializer

serializer for wxList, assuming that the list holds derivatives of wxObject.

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxEvtHandlerSerializer

generic serializer for classes derived from wxEvtHandler handler, assuming that they do not add any new properties to wxEvtHandler or these properties are transient

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxWindowSerializer

serializer for generic wxWindow. Serializes position, size, id, reference to parent, list of children, style flags and name string. Could be used for serializing wxWindow and generic wxPanel objects. Separate serializers have to be written for control classes.

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxTextCtrlSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxButtonSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxStaticTextSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxScrollBarSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxTreeCtrlSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxIOStreamWrapper

default implementations of interfaces, used by wxObjectStorage class

FOR NOW:: methods do not yet perform byte-swaps for outputting/reading words in machine-independent format. Better solution would be to write wrapper around the "promissed" protable-data-stream class of wxWindows

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxIOStreamWrapper::mStreamPos

long mStreamPos

precalcualted stream postion,


wxIOStreamWrapper::Close

void Close( )

assuming that the actual stream object is not capable of telling postion of current get/put pointer (e.g. socket-stream)


wxIOStreamWrapper::wxIOStreamWrapper

wxIOStreamWrapper( )

default constructor


wxIOStreamWrapper::wxIOStreamWrapper

wxIOStreamWrapper( iostream& stm, bool forInput = TRUE )

attach this wrapper to already exiting iostream object


wxIOStreamWrapper::Create

bool Create( const char* fileName, bool forInput = TRUE )

creates "fstream" object with the given file name in binary mode, returns FALSE, if stream creation failed

The created fstream object is "owned" by this wrapper, thus it is destored during destruction of this object


wxIOStreamWrapper::Attach

void Attach( iostream& stm, bool forInput = TRUE )

the same as in the second constructor, previousely used stream object is flushed and destroyed (if owned). The attached stream is not "owned" by this wrapper object


GCItem

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


GCItem::mRefs

wxList mRefs

references to other nodes


GarbageCollector

class implements extreamly slow, but probably one of the most simple GC alogrithms

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


GarbageCollector::AddObject

void AddObject( void* pObj, int refCnt = 1 )

prepare data for GC alg.


GarbageCollector::ArrangeCollection

void ArrangeCollection( )

executes GC alg.


GarbageCollector::GetRegularObjects

wxList& GetRegularObjects( )

acces results of the alg.


GarbageCollector::Reset

void Reset( )

removes all date form GC


cbSimpleUpdatesMgr

class implements slightly optimized logic for refreshing areas of frame layout - which actually need to be updated.

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbSimpleUpdatesMgr::OnStartChanges

void OnStartChanges( )

notificiactions received from Frame Layout (in the order, in which they usually would be invoked)


cbSimpleUpdatesMgr::UpdateNow

void UpdateNow( )

refreshes parts of the frame layout, which need an update


wxFrameLayoutSerializer

serialziers for common components of frame-layout engine

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbBarSpySerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbBarDimHandlerBaseSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDimInfoSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbRowInfoSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbBarInfoSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbCommonPanePropertiesSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDockPaneSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbUpdatesManagerBaseSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbPluginBaseSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbRowDragPluginSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbHiddenBarInfoSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbFloatedBarWindowSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxNewBitmapButtonSerializer

serializers for some additional classes (FOR NOW:: also placed here) **

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxDynamicToolBarSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxDynToolInfoSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxTabbedWindowSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


twTabInfoSerializer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbBarSpy

FIXME:: somehow in debug v. originall wxASSERT's are not compiled in...

#undef wxASSERT #define wxASSERT(x) if ( !(x) ) throw;

helper class, used for spying for not-handled mouse events on control-bars and forwarding them to the frame layout

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbBarSpy::ProcessEvent

bool ProcessEvent( wxEvent& event )

overriden


wxFrameLayout

wxFrameLayout manages containment and docking of control bars. which can be docked along top, bottom, righ, or left side of the parent frame

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxFrameLayout::mpFrame

wxWindow* mpFrame

protected really, acessed only by plugins and serializers

parent frame


wxFrameLayout::mpFrameClient

wxWindow* mpFrameClient

client window


wxFrameLayout::mPanes[MAX_PANES]

cbDockPane* mPanes[MAX_PANES]

panes in the panel


wxFrameLayout::mpHorizCursor

wxCursor* mpHorizCursor

misc. cursors


wxFrameLayout::mpNECursor

wxCursor* mpNECursor

no-entry cursor


wxFrameLayout::mDarkPen

wxPen mDarkPen

pens for decoration and shades

default wxColour(128,128,128)


wxFrameLayout::mLightPen

wxPen mLightPen

default white


wxFrameLayout::mGrayPen

wxPen mGrayPen

default wxColour(192,192,192)


wxFrameLayout::mBlackPen

wxPen mBlackPen

default wxColour( 0, 0, 0)


wxFrameLayout::mBorderPen

wxPen mBorderPen

default wxColour(128,192,192)


wxFrameLayout::mNullPen

wxPen mNullPen

transparent pen


wxFrameLayout::mpPaneInFocus

cbDockPane* mpPaneInFocus

pane to which the all mouse input is currently directed (caputred)


wxFrameLayout::mpLRUPane

cbDockPane* mpLRUPane

pane, from which mouse pointer had just leaft


wxFrameLayout::mClntWndBounds

wxRect mClntWndBounds

bounds of client window in parent frame's coordinates


wxFrameLayout::mpTopPlugin

cbPluginBase* mpTopPlugin

current plugin (right-most) plugin which receives events first


wxFrameLayout::mpCaputesInput

cbPluginBase* mpCaputesInput

plugin, which currently has caputred all input events, otherwise NULL


wxFrameLayout::mBarSpyList

wxList mBarSpyList

list of event handlers which are "pushed" onto each bar, to catch mouse events which are not handled by bars, and froward them to the , frome-layout and further to plugins


wxFrameLayout::mFloatedFrames

wxList mFloatedFrames

list of top-most frames which contain floated bars


wxFrameLayout::mAllBars

BarArrayT mAllBars

linked list of references to all bars (docked/floated/hidden)


wxFrameLayout::mClientWndRefreshPending

bool mClientWndRefreshPending

FOR NOW:: dirty stuff...


wxFrameLayout::mpUpdatesMgr

cbUpdatesManagerBase* mpUpdatesMgr

protected really (accessed only by plugins)

refrence to custom updates manager


wxFrameLayout::PositionClientWindow

void PositionClientWindow( )

called to set calculated layout to window objects


wxFrameLayout::GetBarPane

cbDockPane* GetBarPane( cbBarInfo* pBar )

returns panes, to which the given bar belongs


wxFrameLayout::ForwardMouseEvent

void ForwardMouseEvent( wxMouseEvent& event, cbDockPane* pToPane, int eventType )

delegated from "bar-spy"


wxFrameLayout::CanReparent

bool CanReparent( )

NOTE:: reparenting of windows may NOT work on all platforms (reparenting allows control-bars to be floated)


wxFrameLayout::CreateUpdatesManager

cbUpdatesManagerBase* CreateUpdatesManager( )

factory method


wxFrameLayout::wxFrameLayout

wxFrameLayout( )

public members

used only while serializing


wxFrameLayout::~wxFrameLayout

~wxFrameLayout( )

(doesn't destory bar windows)


wxFrameLayout::EnableFloating

void EnableFloating( bool enable = TRUE )

(by default floating of control-bars is ON)


wxFrameLayout::Activate

void Activate( )

Can be called after some other layout has been deactivated, and this one must "take over" the current contents of frame window.

Effectivelly hooks itself to the frame window, re-displays all not-hidden bar-windows and repaints decorations


wxFrameLayout::Deactivate

void Deactivate( )

unhooks itself from frame window, and hides all not-hidden windows

NOTE:: two frame-layouts should not be active at the same time in the same frame window, it would cause messy overlapping of bar windows from both layouts


wxFrameLayout::HideBarWindows

void HideBarWindows( )

also hides the client window if presents


wxFrameLayout::SetFrameClient

void SetFrameClient( wxWindow* pFrameClient )

passes the client window (e.g. MDI-client frame) to be controled by frame layout, the size and position of which should be adjusted to be surrounded by controlbar panes, whenever frame is resized, or dimesnions of control panes change


wxFrameLayout::GetPanesArray

cbDockPane** GetPanesArray( )

used by updates-managers


wxFrameLayout::GetPane

cbDockPane* GetPane( int alignment )

see pane alignment types


wxFrameLayout::AddBar

void AddBar( wxWindow* pBarWnd, cbDimInfo& dimInfo, int alignment = wxTOP, int rowNo = 0, int columnPos = 0, const wxString& name = "bar", bool spyEvents = FALSE, int state = wxCBAR_DOCKED_HORIZONTALLY )

Adds bar information to frame-layout, appearence of layout is not refreshed immediatelly, RefreshNow() can be called if necessary.

NOTES:: argument pBarWnd can by NULL, resulting bar decorations to be drawn around the empty rectangle (filled with default background colour). Argument dimInfo, can be re-used for adding any number of bars, since it is not used directly, instead it's members are copied. If dimensions- handler is present, it's instance shared (reference counted). Dimension handler should always be allocated on the heap!)


wxFrameLayout::RedockBar

bool RedockBar( cbBarInfo* pBar, const wxRect& shapeInParent, cbDockPane* pToPane = NULL, bool updateNow = TRUE )

can be used for repositioning already existing bars. The given bar is first removed from the pane it currently belongs to, and inserted into the pane, which "matches" the given recantular area. If pToPane is not NULL, bar is docked to this given pane

to dock the bar which is floated, use wxFrameLayout::DockBar(..) method


wxFrameLayout::FindBarByName

cbBarInfo* FindBarByName( const wxString& name )

methods for access and modification of bars in frame layout


wxFrameLayout::SetBarState

void SetBarState( cbBarInfo* pBar, int newStatem, bool updateNow )

changes bar's docking state (see possible control bar states)


wxFrameLayout::ApplyBarProperties

void ApplyBarProperties( cbBarInfo* pBar )

reflects changes in bar information structure visually (e.g. moves bar, changes it's dimension info, pane to which it is docked)


wxFrameLayout::RemoveBar

void RemoveBar( cbBarInfo* pBar )

removes bar from layout permanently, hides it's corresponding window if present


wxFrameLayout::RecalcLayout

void RecalcLayout( bool repositionBarsNow = FALSE )

recalcualtes layout of panes, and all bars/rows in each pane


wxFrameLayout::GetUpdatesManager

cbUpdatesManagerBase& GetUpdatesManager( )

NOTE:: in future ubdates-manager will become a normal plugin


wxFrameLayout::SetUpdatesManager

void SetUpdatesManager( cbUpdatesManagerBase* pUMgr )

destroys the previous manager if any, set the new one


wxFrameLayout::GetPaneProperties

void GetPaneProperties( cbCommonPaneProperties& props, int alignment = wxTOP )

NOTE:: changing properties of panes, does not result immediate on-screen update


wxFrameLayout::SetMargins

void SetMargins( int top, int bottom, int left, int right, int paneMask = wxALL_PANES )

TODO:: margins should go into cbCommonPaneProperties in the future

NOTE:: this method should be called before any custom plugins are attached


wxFrameLayout::RefreshNow

void RefreshNow( bool recalcLayout = TRUE )

recalculates layoute and performs on-screen update of all panes


wxFrameLayout::OnSize

void OnSize( wxSizeEvent& event )

event handlers


wxFrameLayout::FirePluginEvent

void FirePluginEvent( cbPluginEvent& event )

plugin-related methods **

should be used, instead of passing the event to ProcessEvent(..) method of the top-plugin directly. This method checks if events are currently captured and ensures that plugin-event is routed correctly.


wxFrameLayout::CaptureEventsForPlugin

void CaptureEventsForPlugin( cbPluginBase* pPlugin )

captures/releases user-input event's for the given plugin Input events are: mouse movement, mouse clicks, keyboard input


wxFrameLayout::CaptureEventsForPane

void CaptureEventsForPane( cbDockPane* toPane )

called by plugins ( also captures/releases mouse in parent frame)


wxFrameLayout::GetTopPlugin

cbPluginBase& GetTopPlugin( )

returns current top-level plugin (the one which receives events first, with an exception if input-events are currently captured by some other plugin)


wxFrameLayout::SetTopPlugin

void SetTopPlugin( cbPluginBase* pPlugin )

hooking custom plugins to frame layout

NOTE:: when hooking one plugin on top of the other - use SetNextHandler(..) or similar methods of wxEvtHandler class to compose the chain of plugins, than pass the left-most handler in this chain to the above methods (assuming that events are delegated from left-most towards right-most handler)

NOTE2:: this secenario is very inconvenient and "low-level", use Add/Push/PopPlugin methods instead


wxFrameLayout::PushPlugin

void PushPlugin( cbPluginBase* pPugin )

similar to wxWindow's "push/pop-event-handler" methods, execept that plugin is *deleted* upon "popping"


wxFrameLayout::PushDefaultPlugins

void PushDefaultPlugins( )

default plugins are : cbPaneDrawPlugin, cbRowLayoutPlugin, cbBarDragPlugin, cbAntiflickerPlugin, cbSimpleCustomizePlugin

this method is automatically invoked, if no plugins were found upon fireing of the first plugin-event, i.e. wxFrameLayout *CONFIGURES* itself


wxFrameLayout::AddPlugin

void AddPlugin( wxClassInfo* pPlInfo, int paneMask = wxALL_PANES )

"Advanced" methods for plugin-configuration using their

dynamic class information (e.g. CLASSINFO(pluginClass) )

first checks if plugin of the given class is already "hooked up", if not, adds it to the top of plugins chain


wxFrameLayout::AddPluginBefore

void AddPluginBefore( wxClassInfo* pNextPlInfo, wxClassInfo* pPlInfo, int paneMask = wxALL_PANES )

first checks if plugin of the givne class already hooked, if so, removes it, and then inserts it to the chain before plugin of the class given by "pNextPlInfo"

NOTE:: this method is "handy" in some cases, where the order of plugin-chain could be important, e.g. one plugin overrides some functionallity of the other already hooked plugin, thefore the former should be hooked before the one who's functionality is being overriden


wxFrameLayout::RemovePlugin

void RemovePlugin( wxClassInfo* pPlInfo )

checks if plugin of the given class is hooked, removes it if found

@param pPlInfo class information structure for the plugin @note @see wxFrameLayout::Method


wxFrameLayout::FindPlugin

cbPluginBase* FindPlugin( wxClassInfo* pPlInfo )

returns NULL, if plugin of the given class is not hooked


cbUpdateMgrData

structure, which is present in each item of layout, it used by any specific updates-manager to store auxilary information to be used by it's specific updating algorithm

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbUpdateMgrData::mPrevBounds

wxRect mPrevBounds

previous state of layout item (in parent frame's coordinates)


cbUpdateMgrData::mIsDirty

bool mIsDirty

overrides result of current-against-previouse bounds comparison,


cbUpdateMgrData::mpCustomData

wxObject* mpCustomData

i.e. requires item to be updated, regardless of it's current area

any custom data stored by specific updates mgr.


cbUpdateMgrData::cbUpdateMgrData

cbUpdateMgrData( )

is-dirty flag is set TRUE initially


cbBarDimHandlerBase

Abstract inteface for bar-size handler classes. These objects receive notifications, whenever the docking state of the bar is changed, thus they have a possibility to adjust the values in cbDimInfo::mSizes accordingly. Specific handlers can be hooked to specific types of bars.

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbBarDimHandlerBase::mRefCount

int mRefCount

since one dim-handler can be asigned


cbBarDimHandlerBase::cbBarDimHandlerBase

cbBarDimHandlerBase( )

to multiple bars, it's instance is refernce-counted

inital refernce count is 0, since handler is not used, until the first invocation of AddRef()


cbBarDimHandlerBase::OnChangeBarState

void OnChangeBarState( cbBarInfo* pBar, int newState )

"bar-state-changes" notification


cbDimInfo

helper classes (used internally by wxFrameLayout class)

holds and manages information about bar demensions

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDimInfo::mSizes[MAX_BAR_STATES]

wxSize mSizes[MAX_BAR_STATES]

preferred sizes for each possible bar state


cbDimInfo::mBounds[MAX_BAR_STATES]

wxRect mBounds[MAX_BAR_STATES]

saved positions and sizes for each


cbDimInfo::mLRUPane

int mLRUPane

possible state, values contain (-1)s if not initialized yet

pane to which this bar was docked before it was floated


cbDimInfo::mVertGap

int mVertGap

(wxTOP,wxBOTTOM,..)

top/bottom gap, separates decorations from the bar's actual window, filled with frame's beckground color, default: 0


cbDimInfo::mHorizGap

int mHorizGap

left/right gap, separates decorations from the bar's actual window, filled with frame's beckground colour, default: 0

NOTE:: gaps are given in frame's coord. orientation


cbDimInfo::mIsFixed

bool mIsFixed

TRUE, if vertical/horizotal dimensions cannot be mannualy adjusted by user using resizing handles. If FALSE, the frame-layout *automatically* places resizing handles among not-fixed bars


cbDimInfo::mpHandler

cbBarDimHandlerBase* mpHandler

NULL, if no handler present


cbDimInfo::cbDimInfo

cbDimInfo( int dh_x, int dh_y, int dv_x, int dv_y, int f_x, int f_y, bool isFixed = TRUE, int horizGap = 6, int vertGap = 6, cbBarDimHandlerBase* pDimHandler = NULL )

dims when docked horizontally


cbDimInfo::~cbDimInfo

~cbDimInfo( )

destroys handler automatically, if present


cbRowInfo

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbRowInfo::mBars

BarArrayT mBars

row content


cbRowInfo::mHasUpperHandle

bool mHasUpperHandle

row flags (set up according to row-relations)


cbRowInfo::mBoundsInParent

wxRect mBoundsInParent

stores precalculated row's bounds in parent frame's coordinates


cbRowInfo::mUMgrData

cbUpdateMgrData mUMgrData

info stored for updates-manager


cbRowInfo::mpExpandedBar

cbBarInfo* mpExpandedBar

NULL, if non of the bars is currently expanded


cbRowInfo::mSavedRatios

cbArrayFloat mSavedRatios

length-ratios bofore some of the bars was expanded


cbRowInfo::GetFirstBar

cbBarInfo* GetFirstBar( )

convenience method


cbBarInfo

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbBarInfo::mName

wxString mName

textual name, by which this bar is refered in layout-costumization dialogs


cbBarInfo::mBounds

wxRect mBounds

stores bar's bounds in pane's coordinates


cbBarInfo::mBoundsInParent

wxRect mBoundsInParent

stores precalculated bar's bounds in parent frame's coordinates


cbBarInfo::mpRow

cbRowInfo* mpRow

back-ref to the row, which contains this bar


cbBarInfo::mHasLeftHandle

bool mHasLeftHandle

are set up according to the types of the surrounding bars in the row


cbBarInfo::mDimInfo

cbDimInfo mDimInfo

preferred sizes for each, control bar state


cbBarInfo::mState

int mState

(see definition of controlbar states)


cbBarInfo::mAlignment

int mAlignment

alignment of the pane to which this


cbBarInfo::mRowNo

int mRowNo

bar is currently placed

row, into which this bar would be placed,


cbBarInfo::mpBarWnd

wxWindow* mpBarWnd

when in the docking state

the actual window object, NULL if no window


cbBarInfo::mLenRatio

double mLenRatio

is attached to the control bar (possible!)

length ratio among not-fixed-size bars


cbBarInfo::mPosIfFloated

wxPoint mPosIfFloated

stored last position when bar was in "floated" state


cbBarInfo::mUMgrData

cbUpdateMgrData mUMgrData

poistion is stored in parent-window's coordinates

info stored for updates-manager


cbBarInfo::mpNext

cbBarInfo* mpNext

next. bar in the row


cbBarInfo::mpPrev

cbBarInfo* mpPrev

prev. bar in the row


cbBarShapeData

used for storing original bar's postions in the row, when the "non-destructive-friction" option is turned ON

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxBarIterator

used for traversing through all bars of all rows in the pane

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxBarIterator::Next

bool Next( )

TRUE, if next bar is available


wxBarIterator::RowInfo

cbRowInfo& RowInfo( )

returns reference to currently traversed row


cbCommonPaneProperties

structure holds configuration options, which are usually the same for all panes in frame layout

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbCommonPaneProperties::mRealTimeUpdatesOn

bool mRealTimeUpdatesOn

look-and-feel configuration

default: ON


cbCommonPaneProperties::mOutOfPaneDragOn

bool mOutOfPaneDragOn

default: ON


cbCommonPaneProperties::mExactDockPredictionOn

bool mExactDockPredictionOn

default: OFF


cbCommonPaneProperties::mNonDestructFirctionOn

bool mNonDestructFirctionOn

default: OFF


cbCommonPaneProperties::mShow3DPaneBorderOn

bool mShow3DPaneBorderOn

default: ON


cbCommonPaneProperties::mBarFloatingOn

bool mBarFloatingOn

FOR NOW:: the below properties are reserved for the "future"

default: OFF


cbCommonPaneProperties::mRowProportionsOn

bool mRowProportionsOn

default: OFF


cbCommonPaneProperties::mColProportionsOn

bool mColProportionsOn

default: ON


cbCommonPaneProperties::mBarCollapseIconsOn

bool mBarCollapseIconsOn

default: OFF


cbCommonPaneProperties::mBarDragHintsOn

bool mBarDragHintsOn

default: OFF


cbCommonPaneProperties::mMinCBarDim

wxSize mMinCBarDim

minimal dimensions for not-fixed bars in this pane (16x16 default)


cbCommonPaneProperties::mResizeHandleSize

int mResizeHandleSize

width/height of resizing sash


cbDockPane

class manages containment and control of control-bars along one of the four edges of the parent frame

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDockPane::mProps

cbCommonPaneProperties mProps

look-and-feel configuration for this pane


cbDockPane::mLeftMargin

int mLeftMargin

pane margins (in frame's coordinate-syst. orientation)

default: 2 pixels


cbDockPane::mRightMargin

int mRightMargin

default: 2 pixels


cbDockPane::mTopMargin

int mTopMargin

default: 2 pixels


cbDockPane::mBottomMargin

int mBottomMargin

default: 2 pixels


cbDockPane::mBoundsInParent

wxRect mBoundsInParent

position of the pane in frame's coordinates


cbDockPane::mPaneWidth

int mPaneWidth

pane width and height in pane's coordinates


cbDockPane::mUMgrData

cbUpdateMgrData mUMgrData

info stored for updates-manager


cbDockPane::mRows

RowArrayT mRows

protected really


cbDockPane::mpLayout

wxFrameLayout* mpLayout

back-ref


cbDockPane::mRowShapeData

wxList mRowShapeData

transient properties

shapes of bars of recently modified row,


cbDockPane::mpStoredRow

cbRowInfo* mpStoredRow

stored when in "non-destructive-firction" mode

row-info for which the shapes are stored


cbDockPane::GetRow

cbRowInfo* GetRow( int row )

protected really (accessed only by plugins)


cbDockPane::GetRowAt

int GetRowAt( int paneY )

return -1, if row is not present at given vertical position


cbDockPane::SyncRowFlags

void SyncRowFlags( cbRowInfo* pRow )

re-setups flags in the row-information structure, so that the would match the changed state of row-items correctly


cbDockPane::IsFixedSize

bool IsFixedSize( cbBarInfo* pInfo )

layout "AI" helpers:


cbDockPane::FrameToPane

void FrameToPane( long* x, long* y )

coordinate translation between parent's frame and this pane


cbDockPane::SetRowHeight

void SetRowHeight( cbRowInfo* pRow, int newHeight )

given row height includes height of row handles, if present


cbDockPane::PaintBarDecorations

void PaintBarDecorations( cbBarInfo* pBar, wxDC& dc )

protected really (accessed only by plugins)

methods for incramental on-screen refreshing of the pane (simply, they are wrappers around corresponding plugin-events)


cbDockPane::cbDockPane

cbDockPane( )

public members


cbDockPane::SetMargins

void SetMargins( int top, int bottom, int left, int right )

sets pane's margins in frame's coordinate orientations


cbDockPane::RemoveBar

void RemoveBar( cbBarInfo* pBar )

does not destroys the info bar , only removes it's reference from this pane


cbDockPane::InsertBar

void InsertBar( cbBarInfo* pBar, const wxRect& atRect )

rect given in the parent frame's coordinates


cbDockPane::InsertBar

void InsertBar( cbBarInfo* pBar, cbRowInfo* pIntoRow )

inserts bar into the given row, with dimensions and position stored in pBarInfo->mBounds. Returns the node of inserted bar


cbDockPane::InsertBar

void InsertBar( cbBarInfo* pBarInfo )

inserts bar, sets its position according to the preferred settings given in (*pBarInfo) structure


cbDockPane::RemoveRow

void RemoveRow( cbRowInfo* pRow )

does not destroy the row object, only removes the corresponding node from this pane


cbDockPane::InsertRow

void InsertRow( cbRowInfo* pRow, cbRowInfo* pBeforeRow )

does not refresh the inserted row immediatelly, if pBeforeRowNode arg. is NULL, row is appended to the end of pane's row list


cbDockPane::SetPaneWidth

void SetPaneWidth( int width )

sets pane's width in pane's coordinates (including margins)


cbDockPane::SetBoundsInParent

void SetBoundsInParent( const wxRect& rect )

set the position and dims. of the pane in parent frame's coordinates


cbDockPane::GetRowList

RowArrayT& GetRowList( )

used by upadates-managers


cbDockPane::GetFirstRow

cbRowInfo* GetFirstRow( )

convenience method


cbDockPane::BarPresent

bool BarPresent( cbBarInfo* pBar )

TRUE, if the given bar node presents in this pane


cbDockPane::GetPaneHeight

int GetPaneHeight( )

retuns height, in pane's coordinates


cbDockPane::HitTestPaneItems

int HitTestPaneItems( const wxPoint& pos, cbRowInfo** ppRow, cbBarInfo** ppBar )

returns result of hit-testing items in the pane, see CB_HITTEST_RESULTS enumeration

position in pane's coorinates


cbDockPane::DrawVertHandle

void DrawVertHandle( wxDC& dc, int x, int y, int height )

protected really (accessed only by plugins)

row/bar resizing related helper-methods


cbDockPane::GetRowShapeData

void GetRowShapeData( cbRowInfo* pRow, wxList* pLst )

cbBarShapeData objects will be placed to given pLst (see comments on cbBarShapeData)


cbDockPane::SetRowShapeData

void SetRowShapeData( cbRowInfo* pRowNode, wxList* pLst )

sets the shape to the given row, using the data provided in pLst


cbUpdatesManagerBase

class declares abstract interface for optimized logic, which should refresh areas of frame layout - that actually need to be updated. Should be extanded, to implemnet custom updating strategy

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbUpdatesManagerBase::mpLayout

wxFrameLayout* mpLayout

protected really, accessed by serializer (if any)


cbUpdatesManagerBase::OnStartChanges

void OnStartChanges( )

notificiactions received from frame-layout (in the order, in which they usually would be invoked). Custom updates-managers may utilize these notifications to implement more "fine-grained" updating strategy


cbUpdatesManagerBase::UpdateNow

void UpdateNow( )

refreshes parts of the frame layout, which need an update


cbPluginEvent

------------------------------------------------------------ "API" for developing custom plugins of Frame Layout Engine TODO:: documentation ------------------------------------------------------------

base class for all control-bar plugin events

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbPluginEvent::mpPane

cbDockPane* mpPane

NOTE:: plugin-event does not need to be a dynamic class

NULL, if event is not addressed to any specific pane


cbPluginEvent::cbPluginEvent

cbPluginEvent( int eventType, cbDockPane* pPane )

OLD STUFF:: // FOR NOW FOR NOW:: all-in-on plugin event structure wxNode* mpObjNode; wxNode* mpObjNodeAux; wxPoint mPos; wxSize mSize; wxDC* mpDC; bool mAuxBoolVal;


cbPluginBase

abstract base class for all control-bar related plugins

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbPluginBase::mpLayout

wxFrameLayout* mpLayout

back-reference to the frame layout


cbPluginBase::mIsReady

bool mIsReady

is TRUE, when plugin is ready to handle events


cbPluginBase::mPaneMask

int mPaneMask

specifies panes, for which this plugin receives events (see pane masks definitions)


cbPluginBase::~cbPluginBase

~cbPluginBase( )

NOTE:: pointer positions of mouse-events sent to plugins are always in pane's coordinates (pane's to which this plugin is hooked)

destroys the whole plugin chain of connected plagins


cbPluginBase::OnInitPlugin

void OnInitPlugin( )

override this method to do plugin-specific initialization (at this point plugin is already attached to the frame layout, and pane masks are set)


cbPluginBase::ProcessEvent

bool ProcessEvent( wxEvent& event )

overriden, to determine whether the target pane specified in the event, matches the pane mask of this plugin (specific plugins do not override this method)


cbLeftDownEvent

event classes, for each corresponding event type (24 currnetly...uhh) **

mouse-events category

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbLeftUpEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbRightDownEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbRightUpEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbMotionEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbLeftDClickEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbLayoutRowEvent

bar/row events category

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbResizeRowEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbLayoutRowsEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbInsertBarEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbResizeBarEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbRemoveBarEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbSizeBarWndEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDrawBarDecorEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDrawRowDecorEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDrawPaneDecorEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDrawBarHandlesEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDrawRowHandlesEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDrawRowBkGroundEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDrawPaneBkGroundEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbStartBarDraggingEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbStartBarDraggingEvent::mPos

wxPoint mPos

is given in frame's coordinates


cbDrawHintRectEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDrawHintRectEvent::mRect

wxRect mRect

is given in frame's coordinates


cbDrawHintRectEvent::mIsInClient

bool mIsInClient

in cleint area hint could be drawn differently,


cbDrawHintRectEvent::mEraseRect

bool mEraseRect

e.g. with fat/hatched border

does not have any impact, if recangle is drawn using XOR-mask


cbDrawHintRectEvent::mLastTime

bool mLastTime

indicates that this event finishes "session" of on-screen drawing,


cbDrawHintRectEvent::cbDrawHintRectEvent

cbDrawHintRectEvent( const wxRect& rect, bool isInClient, bool eraseRect, bool lastTime )

thus associated resources can be freed now


cbStartDrawInAreaEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbStartDrawInAreaEvent::mppDc

wxDC** mppDc

points to pointer, where the reference


cbStartDrawInAreaEvent::cbStartDrawInAreaEvent

cbStartDrawInAreaEvent( const wxRect& area, wxDC** ppDCForArea, cbDockPane* pPane )

to the obtained buffer-context should be placed


cbFinishDrawInAreaEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbCustomizeBarEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbCustomizeBarEvent::mClickPos

wxPoint mClickPos

in parent frame's coordinates


cbCustomizeLayoutEvent

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbCustomizeLayoutEvent::mClickPos

wxPoint mClickPos

in parent frame's coordinates


cbHintAnimationPlugin

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbHintAnimationPlugin::mpScrDc

wxScreenDC* mpScrDc

created while tracking hint-rect


cbHintAnimationPlugin::mCurRect

wxRect mCurRect

FOR NOW:: try it without mutually exculisve locks


cbHintAnimationPlugin::mAnimStarted

bool mAnimStarted

state variables


cbHintAnimationPlugin::mMorphDelay

int mMorphDelay

delay between frames in miliseconds, default: 20


cbHintAnimationPlugin::mMaxFrames

int mMaxFrames

number of iterations for hint morphing, default: 30


cbHintAnimationPlugin::mInClientHintBorder

int mInClientHintBorder

(morph duration = mMorphDelay * mMaxFrames msec)

default: 4 pixels


cbHintAnimationPlugin::mAccelerationOn

bool mAccelerationOn

TRUE, if morph accelerates, otherwise morph


cbHintAnimationPlugin::StartTracking

void StartTracking( )

speed is constant. Default: TRUE

TBD:: get/set methods for above members


MorphInfoT

helper classes

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbHintAnimTimer

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbBarDragPlugin

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbBarDragPlugin::mBarDragStarted

bool mBarDragStarted

plugin is active only in bar-dragging state


cbBarDragPlugin::mpScrDc

wxScreenDC* mpScrDc

created while tracking hint-rect


cbBarDragPlugin::mPrevHintRect

wxRect mPrevHintRect

rectnagle shows the position/dimensions of the bar, if it would be docked now


cbBarDragPlugin::mCanStick

bool mCanStick

flag used to prevent "bouncing" of hint-rectangle


cbBarDragPlugin::mpSrcPane

cbDockPane* mpSrcPane

pane, from which the bar was originally taken


cbBarDragPlugin::mpDraggedBar

cbBarInfo* mpDraggedBar

bar, which is being dragged


cbBarDragPlugin::mInClientHintBorder

int mInClientHintBorder

public properties **

when hint-rect moves within client window area,


cbBarDragPlugin::AdjustHintRect

void AdjustHintRect( wxPoint& mousePos )

the thicker rectangle is drawn using hatched brush, the default border width for this rectangle is 8 pix.


cbBarDragPlugin::StartTracking

void StartTracking( )

on-screen hint-tracking related methods


cbBarDragPlugin::OnMouseMove

void OnMouseMove( cbMotionEvent& event )

handlers for plugin events


cbBarDragPlugin::OnDrawHintRect

void OnDrawHintRect( cbDrawHintRectEvent& event )

handles event, which oriniates from itself


cbRowDragPlugin

Plugin adds row-dragging fuctionality to the pane. Handles mouse/movement and pane-background erasing plugin-events. Behaviour and appearence resembles drag & drop posotioning of the toolbar-rows int Netscape Comunicator 4.xx.

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbRowDragPlugin::mHightColor

wxColour mHightColor

background colours for the highlighted/unhighlighted icons

light-blue for NC-look


cbRowDragPlugin::mLowColor

wxColour mLowColor

light-gray -/-


cbRowDragPlugin::mTrianInnerColor

wxColour mTrianInnerColor

blue -/-


cbRowDragPlugin::mTrianInnerPen

wxPen mTrianInnerPen

black -/-


cbRowDragPlugin::mDragStarted

bool mDragStarted

drag & drop state variables


cbRowDragPlugin::mSvTopMargin

int mSvTopMargin

saved margins of the pane


cbRowDragPlugin::mpPaneImage

wxBitmap* mpPaneImage

on-screen drawing state variables


cbRowDragPlugin::mpRowInFocus

cbRowInfo* mpRowInFocus

NOTE:: if mpRowInFocus is not NULL, then mCollapsedIconInFocus is -1, and v.v. (two different items cannot be in focus at the same time)


cbRowDragPlugin::mpPane

cbDockPane* mpPane

is set up temorarely, while handling event


cbRowDragPlugin::GetHRowsCountForPane

int GetHRowsCountForPane( cbDockPane* pPane )

helpers for drag&drop


cbRowDragPlugin::DrawTrianUp

void DrawTrianUp( wxRect& inRect, wxDC& dc )

"hard-coded metafile" for NN-look


cbRowDragPlugin::OnMouseMove

void OnMouseMove( cbMotionEvent& event )

handlers for plugin events (appearence-independent logic)


cbRowDragPlugin::DrawCollapsedRowIcon

void DrawCollapsedRowIcon( int index, wxDC& dc, bool isHighlighted )

overridables (appearence-depedent)


cbHiddenBarInfo

internal helper-class

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


notStorableClass

forward decl.

sample classes

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


classA

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


classB

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


classASerializer

serialization handlers for the above classes

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


classBSerializer

cast

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbDynToolBarDimHandler

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbRowLayoutPlugin

Simple implementaiton of plugin, which handles row-layouting requests sent from Frame Layout

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbRowLayoutPlugin::mpPane

cbDockPane* mpPane

is set up temorarely, while handling event


cbRowLayoutPlugin::FitBarsToRange

void FitBarsToRange( int from, int till, cbBarInfo* pTheBar, cbRowInfo* pRow )

not-fixed-bars layouting related helpers


cbRowLayoutPlugin::CalcRowHeight

int CalcRowHeight( cbRowInfo& row )

row-layouting helpers (simulate "bar-friction")


cbRowLayoutPlugin::OnResizeRow

void OnResizeRow( cbResizeRowEvent& event )

event handlers


SettingsDlg

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


SettingsDlg::mpRTU_Check

wxCheckBox* mpRTU_Check

"nice thing" about wxWindows:


SettingsDlg::mRealTimeUpdatesOn

bool mRealTimeUpdatesOn

fields/properties


SettingsDlg::ExchgCheck

void ExchgCheck( wxCheckBox* pChk, bool& value )

helpers


cbBarHintsPlugin

Intercepts bar-decoration and sizing events, draws 3d-hints around fixed and flexible bars, similar to those in Microsoft DevStudio 6.x

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbBarHintsPlugin::mpPane

cbDockPane* mpPane

is set up temorarely, while handling event


cbBarHintsPlugin::Draw3DBox

void Draw3DBox( wxDC& dc, const wxPoint& pos, bool pressed )

drawing helpers


cbBarHintsPlugin::mCloseBoxOn

bool mCloseBoxOn

public properties

default: ON


cbBarHintsPlugin::mCollapseBoxOn

bool mCollapseBoxOn

default: ON


cbBarHintsPlugin::mGrooveCount

int mGrooveCount

default: 2 (two shaded bars)


cbBarHintsPlugin::mHintGap

int mHintGap

default: 5 (pixels from above, below, right and left)


cbBarHintsPlugin::mXWeight

int mXWeight

default: 2 (width in pixels of lines which used for drawing cross)


cbBarHintsPlugin::OnSizeBarWindow

void OnSizeBarWindow( cbSizeBarWndEvent& event )

handlers of plugin-events


wxNewBitmapButton

classes declared in this header file

alternative class for wxBmpButton

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


wxNewBitmapButton::mDepressedBmp

wxBitmap mDepressedBmp

source image for rendering


wxNewBitmapButton::mFocusedBmp

wxBitmap mFocusedBmp

labels for particular state

may not be always present -


wxNewBitmapButton::mpDepressedImg

wxBitmap* mpDepressedImg

only if mHasFocusedBmp is TRUE


wxNewBitmapButton::mDragStarted

bool mDragStarted

button state variables;


wxNewBitmapButton::mFiredEventType

int mFiredEventType

type of event which is fired upon depression of this button


wxNewBitmapButton::mBlackPen

wxPen mBlackPen

pens for drawing decorations (borders)


wxNewBitmapButton::GetStateLabel

wxBitmap* GetStateLabel( )

returns the label which match the current button state


wxNewBitmapButton::wxNewBitmapButton

wxNewBitmapButton( const wxString& bitmapFileName, const int bitmapFileType = wxBITMAP_TYPE_BMP, const wxString& labelText = "", int alignText = NB_ALIGN_TEXT_BOTTOM, bool isFlat = TRUE, int firedEventType = wxEVT_COMMAND_MENU_SELECTED, int marginX = 2, int marginY = 2, int textToLabelGap = 2, bool isSticky = FALSE )

use this constructor if buttons have to be persistant


wxNewBitmapButton::SetLabel

void SetLabel( const wxBitmap& labelBitmap, const wxString& labelText = "" )

overridables


wxNewBitmapButton::OnLButtonDown

void OnLButtonDown( wxMouseEvent& event )

event handlers


cbPaneDrawPlugin

Simple, but all-in-one plugin implementation. Resembles look & feel of to MFC control-bars. Handles painting of pane and items in it. Fires bar/layout customization event, when user right-clicks bar/pane. Hooking an instance of this and row-layouting plugins per each pane, would be enough for the frame layout to function properly. (they are plugged in autimatically by wxFrameLayout class)

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbPaneDrawPlugin::mResizeStarted

bool mResizeStarted

resizing bars/rows state variables


cbPaneDrawPlugin::mpDraggedBar

cbBarInfo* mpDraggedBar

also used when in bar-drag action


cbPaneDrawPlugin::mHandleDragArea

wxRect mHandleDragArea

contstraints for dragging the handle


cbPaneDrawPlugin::mpClntDc

wxClientDC* mpClntDc

used for handling, start-draw-in-area events


cbPaneDrawPlugin::mpPane

cbDockPane* mpPane

is set up temorary short-cut, while handling event


cbPaneDrawPlugin::DrawDraggedHandle

void DrawDraggedHandle( const wxPoint& pos, cbDockPane& pane )

helpers


cbPaneDrawPlugin::OnLButtonDown

void OnLButtonDown( cbLeftDownEvent& event )

handlers for plugin-events


cbGCUpdatesMgr

class implements optimized logic for refreshing areas of frame layout - which actually need to be updated. Is used as default updates-manager by wxFrameLayout. it is called "Garbage Collecting" u.mgr for it's impelmentation tries to find out dependencies between bars, and to order them ito "hierarchy", this hierarchical sorting resembles impelmenation of heap-garbage collectors, which resolve dependencies between referencs. Example: there are situations where the order of moving the windows does matter: case 1) ------ --- | A | |B| ------ ---> | | --- --- ------ |B| | A | | | ------ --- (future) (past) past/future positions of A and B windows completely overlapp, i.e. depend on each other, and there is not solution for moving the windows witout refereshing both of them, -- we have cyclic dependency here. The gc. alg will find this cyclic dependecy and will force "refresh" after movement. case 2) ------ | A | ------ ---> --- |B| ------ | | | A | --- ------ --- |B| | | --- (future) (past) in this case past/future positions do not overlapp, thus it's enough only to move windows, without refreshing them. GC will "notice" it. there is also third case, when overlapping is partial in this case the refershing can be also avoided by moving windows in the order of "most-dependant" towards the "least-dependent". GC handles this automatically, by sorting windows by their dependency-level (or "hierarchy") See garbagec.h for more details of this method, garbagec.h/cpp implement sorting of generic-depenencies (does not deal with graphical objects directly) Summary: improves performance when complex/large windows are moved around, by reducing number of repaints. Also helps to avoid dirty non-client areas of moved windows in some sepcal cases of "overlapping anomalies"

Derived from

Public members

Operations

Attributes

Protected members

Operations

Attributes

Private members

Operations

Attributes


cbGCUpdatesMgr::OnStartChanges

void OnStartChanges( )

notificiactions received from Frame Layout :


cbGCUpdatesMgr::UpdateNow

void UpdateNow( )

refreshes parts of the frame layout, which need an update


Enumerations Reference


CB_HITTEST_RESULT

enum CB_HITTEST_RESULT
{
	CB_NO_ITEMS_HITTED,

	CB_UPPER_ROW_HANDLE_HITTED,
	CB_LOWER_ROW_HANDLE_HITTED,
	CB_LEFT_BAR_HANDLE_HITTED,
	CB_RIGHT_BAR_HANDLE_HITTED,
	CB_BAR_CONTENT_HITTED
}

enumeration of hittest results, see cbDockPane::HitTestPaneItems(..)


Type Definitions Reference


MyTestPanel

wxPanel
wxPanel MyTestPanel

FOR NOW::


wxObjectSerializationFn

void (*wxObjectSerializationFn) (wxObject*, wxObjectStorage& )
void (*wxObjectSerializationFn) (wxObject*, wxObjectStorage& ) wxObjectSerializationFn

abstract classes declared

classes which implement the above interfaces

prototypes for serialzatoin/initialization functions


wndCreationFn

(*wndCreationFn)(wxWindow*, wxWindow*, const wxWindowID, 
							 const wxPoint&, const wxSize&, long, const wxString&  )
(*wndCreationFn)(wxWindow*, wxWindow*, const wxWindowID, const wxPoint&, const wxSize&, long, const wxString& ) wndCreationFn

helpers, to ease the creation of serializers for derivatives of wxWindow


BarInfoPtrT

cbBarInfo*
cbBarInfo* BarInfoPtrT

forward declarations


wxEvtHandler::*cbLeftDownHandler

void (wxEvtHandler::*cbLeftDownHandler        )(cbLeftDownEvent&)
void (wxEvtHandler::*cbLeftDownHandler )(cbLeftDownEvent&) wxEvtHandler::*cbLeftDownHandler

forward decls, separated by categories

defs. for handler-methods


Macros Reference


LO_HORIZONTAL

#define LO_HORIZONTAL    0

layouting orientations for tools


BTN_BOX_HEIGHT

#define BTN_BOX_HEIGHT       12

fixed settings


wxTITLE_IMG_AND_TEXT

#define wxTITLE_IMG_AND_TEXT 0

layout types for title bars of the tabs (are selected up by evaluating the available free space )

forward decl.


MINIMAL_QUIT

#define MINIMAL_QUIT 	1

ID for the menu commands


DECLARE_SERIALIZER_CLASS

#define DECLARE_SERIALIZER_CLASS(serializerName) \
 public:\
  static wxSerializerInfo info;;

macros for declaring and implementing serializers both as classes and as a pair of (serialize/init) functions


IMPLEMENT_SERIALIZER_CLASS_FOR_VERSION

#define IMPLEMENT_SERIALIZER_CLASS_FOR_VERSION( name, serializerName, serFn, initFn, versionName) \
	wxSerializerInfo 													             \
		serializerName::info( #name, serFn, initFn, #versionName );

for serializers, which are dedicated for specific versions of persistant classes (further referred as "versioned" serializers)


wxCBAR_DOCKED_HORIZONTALLY

#define wxCBAR_DOCKED_HORIZONTALLY 0

control bar states


MAX_BAR_STATES

#define MAX_BAR_STATES             4

the states are enumerated above


MAX_PANES

#define MAX_PANES      4

one pane for each alignment


wxTOP_PANE

#define wxTOP_PANE 	   0x0001

masks for each pane


cbEVT_PL_LEFT_DOWN

#define cbEVT_PL_LEFT_DOWN           0

event types handled by plugins


EVT_PL_LEFT_DOWN

#define EVT_PL_LEFT_DOWN(func)		     { cbEVT_PL_LEFT_DOWN,		     -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLeftDownHandler        ) & func },

macros for creating event table entries for plugin-events


NB_ALIGN_TEXT_RIGHT

#define NB_ALIGN_TEXT_RIGHT  0

button lable-text alignment types


Global Variables Reference


Global Functions Reference


wxCreateClassInfoTree

void wxCreateClassInfoTree( wxTreeCtrl* pTree, long parentBranchId = 0, long classImageNo = -1 )

creates tree with hierarchically cauptured information about wxWindows dynamic classes (at "current run-time")

existing tree control


wxCreateSerializerInfoTree

void wxCreateSerializerInfoTree( wxTreeCtrl* pTree, long parentBranchId = 0, long classImageNo = -1 )

creates tree with information about serializer-classes (at current run-time) NOTE:: "objstore.cpp" should be compiled in

existing tree control


test_obj_storage

void test_obj_storage( )

cast

---------------------------

Main testing function

---------------------------

include this header and .cpp file into any of your wxWindows projects, and invoke the below function to peform tests


Constants Reference