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.
Classes Reference
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxBitmap* mpVertBuf double-buffers are shared "resource" among all instances of antiflicker plugin within the application TODO:: locking should be implemented, for multithreaded GUIs wxDC* mpLRUBufDc last-reacently-used buffer wxRect mLRUArea last-reacently-used area wxDC* FindSuitableBuffer( const wxRect& forArea ) returns NULL, if sutable buffer is not present void OnStartDrawInArea( cbStartDrawInAreaEvent& event ) handlers for plugin events
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
void OnInit( ) hooks for specific frame-views void OnRecreate( ) imp. is mandatory
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
void Init( wxWindow* pMainFrame, const wxString& settingsFile = "" ) if file name is empty, views are are not saved/loaded wxFrame* GetParentFrame( ) synonyms layout item
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
base class for layouting algorithm implementations
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
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
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
class manages containment and layouting of tool-windows
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
int mSepartorSize public properties default: 8 int mVertGap default: 0 int mHorizGap default: 0 void AddTool( int toolIndex, wxWindow* pToolWindow, const wxSize& size = wxDefaultSize ) overridables 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 void DrawSeparator( wxDynToolInfo& info, wxDC& dc ) the default implementation draws shaded line void Layout( ) see definitions of orientation types void OnSize( wxSizeEvent& event ) event handlers bool Realize( ) overriden from wxToolBarBase
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
cbMiniButtonArrayT mButtons protected really, accesssed only by serializers * wxPoint mDragOrigin drag&drop state variables void AddMiniButton( cbMiniButton* pBtn ) buttons are added in right-to-left order wxSize GetPreferredSize( const wxSize& given ) overridables:
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
classes specific to wxFrameLayout engine (FOR NOW in here...)
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
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 wxSize GetPreferredSize( const wxSize& given ) overriden methods of wxToolWindow Define a new application type
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
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
wxFont GetLabelFont( ) overrride,to provide different font for tab-labels wxScrollBar* mpTabScroll FOR NOW:: scrollbars are actually related to wxPaggedWindow wxPen mWhitePen public properties (invoke ReclaclLayout(TRUE) to apply changes) default: RGB(255,255,255) wxPen mGrayPen default: RGB(192,192,192) wxPen mDarkPen default: RGB(128,128,128) wxPen mBlackPen default: RGB( 0, 0, 0) int mVertGap default: 3 int mHorizGap default: 5 int mTitleVertGap default: 3 int mTitleHorizGap default: 4 int mImageTextGap default: 2 int mFirstTitleGap default: 11 int mBorderOnlyWidth default: 8 void OnTabAdded( twTabInfo* pInfo ) notifications (can be handled by derivatives) 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 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 int GetTabCount( ) misc accessors int HitTest( const wxPoint& pos ) return -1, if non of the title bars was hitted, otherwise the index of the hitted tab title bar void RecalcLayout( bool andRepaint = TRUE ) should be invoked to redisplay window with changed properties void OnPaint( wxPaintEvent& event ) event handlers 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
bool mIsDragged drag&drop state variables void OnTabAdded( twTabInfo* pInfo ) adjusts scorllbars to fit around tabs wxFont GetLabelFont( ) sets smaller font for page-labels int mTitleRowLen actual title row length int mAdjustableTitleRowLen setup by dragging mini-sash int mCurentRowOfs with the mosue pointer 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 int HitTest( const wxPoint& pos ) return -1, if non of the title bars was hitted, otherwise the index of the hitted tab title bar void OnPaint( wxPaintEvent& event ) event handlers helper structure of wxTabbedWindow
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxString mImageFile used for serialization Define a new application type
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Define a new frame type
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxTextCtrl* CreateTxtCtrl( const wxString& txt = "wxTextCtrl", wxWindow* parent = NULL ) helpers for control-creation wxWindow* CreateDevLayout( wxFrameLayout& layout, wxWindow* pParent ) helpers for layout-creation MyFrame( wxFrame *frame, char *title, int x, int y, int w, int h ) public bool OnClose( ) event handlers
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
void OnCustomizeBar( cbCustomizeBarEvent& event ) plugin-event handlers void OnMenuItemSelected( wxCommandEvent& event ) menu-event handler 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
wxClassInfo* classInfo link to corresponding class-info object, wxObjectSerializationFn serFn established upon invocation of InitializeSerializers() wxHashTable serInfoHash classInfo <=> serializerInfo 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 void InitializeSerializers( ) static methods 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
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
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
char mVerSepartorCh can be changed (with countion!) default: '#' char mMinorMajorSepartorCh default: '-' 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 void SetDataStream( wxDataStreamBase& stm ) init/reinit of object-storage void Finalize( ) performs linkng of in-memory references after loading, or links in-stream references after storing has proceeded void XchgChar( char& chObj ) storage methods for basic types void XchgObj( wxObject* pWxObj ) storage methods for objects and pointers to objects 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(..) 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
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
NOTE:: currently "stipple" property of the brush is not serialized
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
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
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
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
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
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
long mStreamPos precalcualted stream postion, void Close( ) assuming that the actual stream object is not capable of telling postion of current get/put pointer (e.g. socket-stream) wxIOStreamWrapper( ) default constructor wxIOStreamWrapper( iostream& stm, bool forInput = TRUE ) attach this wrapper to already exiting iostream object 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 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
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxList mRefs references to other nodes 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
void AddObject( void* pObj, int refCnt = 1 ) prepare data for GC alg. void ArrangeCollection( ) executes GC alg. wxList& GetRegularObjects( ) acces results of the alg. void Reset( ) removes all date form GC 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
void OnStartChanges( ) notificiactions received from Frame Layout (in the order, in which they usually would be invoked) void UpdateNow( ) refreshes parts of the frame layout, which need an update serialziers for common components of frame-layout engine
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
serializers for some additional classes (FOR NOW:: also placed here) **
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
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
bool ProcessEvent( wxEvent& event ) overriden 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
wxWindow* mpFrame protected really, acessed only by plugins and serializers parent frame wxWindow* mpFrameClient client window cbDockPane* mPanes[MAX_PANES] panes in the panel wxCursor* mpHorizCursor misc. cursors wxCursor* mpNECursor no-entry cursor wxPen mDarkPen pens for decoration and shades default wxColour(128,128,128) wxPen mLightPen default white wxPen mGrayPen default wxColour(192,192,192) wxPen mBlackPen default wxColour( 0, 0, 0) wxPen mBorderPen default wxColour(128,192,192) wxPen mNullPen transparent pen cbDockPane* mpPaneInFocus pane to which the all mouse input is currently directed (caputred) cbDockPane* mpLRUPane pane, from which mouse pointer had just leaft wxRect mClntWndBounds bounds of client window in parent frame's coordinates cbPluginBase* mpTopPlugin current plugin (right-most) plugin which receives events first cbPluginBase* mpCaputesInput plugin, which currently has caputred all input events, otherwise NULL 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 wxList mFloatedFrames list of top-most frames which contain floated bars BarArrayT mAllBars linked list of references to all bars (docked/floated/hidden) bool mClientWndRefreshPending FOR NOW:: dirty stuff... cbUpdatesManagerBase* mpUpdatesMgr protected really (accessed only by plugins) refrence to custom updates manager void PositionClientWindow( ) called to set calculated layout to window objects cbDockPane* GetBarPane( cbBarInfo* pBar ) returns panes, to which the given bar belongs void ForwardMouseEvent( wxMouseEvent& event, cbDockPane* pToPane, int eventType ) delegated from "bar-spy" bool CanReparent( ) NOTE:: reparenting of windows may NOT work on all platforms (reparenting allows control-bars to be floated) cbUpdatesManagerBase* CreateUpdatesManager( ) factory method wxFrameLayout( ) public members used only while serializing ~wxFrameLayout( ) (doesn't destory bar windows) void EnableFloating( bool enable = TRUE ) (by default floating of control-bars is ON) 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 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 void HideBarWindows( ) also hides the client window if presents 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 cbDockPane** GetPanesArray( ) used by updates-managers cbDockPane* GetPane( int alignment ) see pane alignment types 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!) 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 cbBarInfo* FindBarByName( const wxString& name ) methods for access and modification of bars in frame layout void SetBarState( cbBarInfo* pBar, int newStatem, bool updateNow ) changes bar's docking state (see possible control bar states) 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) void RemoveBar( cbBarInfo* pBar ) removes bar from layout permanently, hides it's corresponding window if present void RecalcLayout( bool repositionBarsNow = FALSE ) recalcualtes layout of panes, and all bars/rows in each pane cbUpdatesManagerBase& GetUpdatesManager( ) NOTE:: in future ubdates-manager will become a normal plugin void SetUpdatesManager( cbUpdatesManagerBase* pUMgr ) destroys the previous manager if any, set the new one void GetPaneProperties( cbCommonPaneProperties& props, int alignment = wxTOP ) NOTE:: changing properties of panes, does not result immediate on-screen update 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 void RefreshNow( bool recalcLayout = TRUE ) recalculates layoute and performs on-screen update of all panes void OnSize( wxSizeEvent& event ) event handlers 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. void CaptureEventsForPlugin( cbPluginBase* pPlugin ) captures/releases user-input event's for the given plugin Input events are: mouse movement, mouse clicks, keyboard input void CaptureEventsForPane( cbDockPane* toPane ) called by plugins ( also captures/releases mouse in parent frame) 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) 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 void PushPlugin( cbPluginBase* pPugin ) similar to wxWindow's "push/pop-event-handler" methods, execept that plugin is *deleted* upon "popping" 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 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 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 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 cbPluginBase* FindPlugin( wxClassInfo* pPlInfo ) returns NULL, if plugin of the given class is not hooked 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
wxRect mPrevBounds previous state of layout item (in parent frame's coordinates) bool mIsDirty overrides result of current-against-previouse bounds comparison, wxObject* mpCustomData i.e. requires item to be updated, regardless of it's current area any custom data stored by specific updates mgr. cbUpdateMgrData( ) is-dirty flag is set TRUE initially 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
int mRefCount since one dim-handler can be asigned 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() void OnChangeBarState( cbBarInfo* pBar, int newState ) "bar-state-changes" notification 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
wxSize mSizes[MAX_BAR_STATES] preferred sizes for each possible bar state wxRect mBounds[MAX_BAR_STATES] saved positions and sizes for each int mLRUPane possible state, values contain (-1)s if not initialized yet pane to which this bar was docked before it was floated int mVertGap (wxTOP,wxBOTTOM,..) top/bottom gap, separates decorations from the bar's actual window, filled with frame's beckground color, default: 0 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 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 cbBarDimHandlerBase* mpHandler NULL, if no handler present 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( ) destroys handler automatically, if present
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
BarArrayT mBars row content bool mHasUpperHandle row flags (set up according to row-relations) wxRect mBoundsInParent stores precalculated row's bounds in parent frame's coordinates cbUpdateMgrData mUMgrData info stored for updates-manager cbBarInfo* mpExpandedBar NULL, if non of the bars is currently expanded cbArrayFloat mSavedRatios length-ratios bofore some of the bars was expanded cbBarInfo* GetFirstBar( ) convenience method
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxString mName textual name, by which this bar is refered in layout-costumization dialogs wxRect mBounds stores bar's bounds in pane's coordinates wxRect mBoundsInParent stores precalculated bar's bounds in parent frame's coordinates cbRowInfo* mpRow back-ref to the row, which contains this bar bool mHasLeftHandle are set up according to the types of the surrounding bars in the row cbDimInfo mDimInfo preferred sizes for each, control bar state int mState (see definition of controlbar states) int mAlignment alignment of the pane to which this int mRowNo bar is currently placed row, into which this bar would be placed, wxWindow* mpBarWnd when in the docking state the actual window object, NULL if no window double mLenRatio is attached to the control bar (possible!) length ratio among not-fixed-size bars wxPoint mPosIfFloated stored last position when bar was in "floated" state cbUpdateMgrData mUMgrData poistion is stored in parent-window's coordinates info stored for updates-manager cbBarInfo* mpNext next. bar in the row cbBarInfo* mpPrev prev. bar in the row 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
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
bool Next( ) TRUE, if next bar is available cbRowInfo& RowInfo( ) returns reference to currently traversed row 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
bool mRealTimeUpdatesOn look-and-feel configuration default: ON bool mOutOfPaneDragOn default: ON bool mExactDockPredictionOn default: OFF bool mNonDestructFirctionOn default: OFF bool mShow3DPaneBorderOn default: ON bool mBarFloatingOn FOR NOW:: the below properties are reserved for the "future" default: OFF bool mRowProportionsOn default: OFF bool mColProportionsOn default: ON bool mBarCollapseIconsOn default: OFF bool mBarDragHintsOn default: OFF wxSize mMinCBarDim minimal dimensions for not-fixed bars in this pane (16x16 default) int mResizeHandleSize width/height of resizing sash 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
cbCommonPaneProperties mProps look-and-feel configuration for this pane int mLeftMargin pane margins (in frame's coordinate-syst. orientation) default: 2 pixels int mRightMargin default: 2 pixels int mTopMargin default: 2 pixels int mBottomMargin default: 2 pixels wxRect mBoundsInParent position of the pane in frame's coordinates int mPaneWidth pane width and height in pane's coordinates cbUpdateMgrData mUMgrData info stored for updates-manager RowArrayT mRows protected really wxFrameLayout* mpLayout back-ref wxList mRowShapeData transient properties shapes of bars of recently modified row, cbRowInfo* mpStoredRow stored when in "non-destructive-firction" mode row-info for which the shapes are stored cbRowInfo* GetRow( int row ) protected really (accessed only by plugins) int GetRowAt( int paneY ) return -1, if row is not present at given vertical position void SyncRowFlags( cbRowInfo* pRow ) re-setups flags in the row-information structure, so that the would match the changed state of row-items correctly bool IsFixedSize( cbBarInfo* pInfo ) layout "AI" helpers: void FrameToPane( long* x, long* y ) coordinate translation between parent's frame and this pane void SetRowHeight( cbRowInfo* pRow, int newHeight ) given row height includes height of row handles, if present 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( ) public members void SetMargins( int top, int bottom, int left, int right ) sets pane's margins in frame's coordinate orientations void RemoveBar( cbBarInfo* pBar ) does not destroys the info bar , only removes it's reference from this pane void InsertBar( cbBarInfo* pBar, const wxRect& atRect ) rect given in the parent frame's coordinates 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 void InsertBar( cbBarInfo* pBarInfo ) inserts bar, sets its position according to the preferred settings given in (*pBarInfo) structure void RemoveRow( cbRowInfo* pRow ) does not destroy the row object, only removes the corresponding node from this pane 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 void SetPaneWidth( int width ) sets pane's width in pane's coordinates (including margins) void SetBoundsInParent( const wxRect& rect ) set the position and dims. of the pane in parent frame's coordinates RowArrayT& GetRowList( ) used by upadates-managers cbRowInfo* GetFirstRow( ) convenience method bool BarPresent( cbBarInfo* pBar ) TRUE, if the given bar node presents in this pane int GetPaneHeight( ) retuns height, in pane's coordinates 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 void DrawVertHandle( wxDC& dc, int x, int y, int height ) protected really (accessed only by plugins) row/bar resizing related helper-methods void GetRowShapeData( cbRowInfo* pRow, wxList* pLst ) cbBarShapeData objects will be placed to given pLst (see comments on cbBarShapeData) void SetRowShapeData( cbRowInfo* pRowNode, wxList* pLst ) sets the shape to the given row, using the data provided in pLst 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
wxFrameLayout* mpLayout protected really, accessed by serializer (if any) 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 void UpdateNow( ) refreshes parts of the frame layout, which need an update ------------------------------------------------------------ "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
cbDockPane* mpPane NOTE:: plugin-event does not need to be a dynamic class NULL, if event is not addressed to any specific pane 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; abstract base class for all control-bar related plugins
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxFrameLayout* mpLayout back-reference to the frame layout bool mIsReady is TRUE, when plugin is ready to handle events int mPaneMask specifies panes, for which this plugin receives events (see pane masks definitions) ~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 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) 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) 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
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
bar/row events category
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxPoint mPos is given in frame's coordinates
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxRect mRect is given in frame's coordinates bool mIsInClient in cleint area hint could be drawn differently, bool mEraseRect e.g. with fat/hatched border does not have any impact, if recangle is drawn using XOR-mask bool mLastTime indicates that this event finishes "session" of on-screen drawing, cbDrawHintRectEvent( const wxRect& rect, bool isInClient, bool eraseRect, bool lastTime ) thus associated resources can be freed now
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxDC** mppDc points to pointer, where the reference cbStartDrawInAreaEvent( const wxRect& area, wxDC** ppDCForArea, cbDockPane* pPane ) to the obtained buffer-context should be placed
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxPoint mClickPos in parent frame's coordinates
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxPoint mClickPos in parent frame's coordinates
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxScreenDC* mpScrDc created while tracking hint-rect wxRect mCurRect FOR NOW:: try it without mutually exculisve locks bool mAnimStarted state variables int mMorphDelay delay between frames in miliseconds, default: 20 int mMaxFrames number of iterations for hint morphing, default: 30 int mInClientHintBorder (morph duration = mMorphDelay * mMaxFrames msec) default: 4 pixels bool mAccelerationOn TRUE, if morph accelerates, otherwise morph void StartTracking( ) speed is constant. Default: TRUE TBD:: get/set methods for above members helper classes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
bool mBarDragStarted plugin is active only in bar-dragging state wxScreenDC* mpScrDc created while tracking hint-rect wxRect mPrevHintRect rectnagle shows the position/dimensions of the bar, if it would be docked now bool mCanStick flag used to prevent "bouncing" of hint-rectangle cbDockPane* mpSrcPane pane, from which the bar was originally taken cbBarInfo* mpDraggedBar bar, which is being dragged int mInClientHintBorder public properties ** when hint-rect moves within client window area, void AdjustHintRect( wxPoint& mousePos ) the thicker rectangle is drawn using hatched brush, the default border width for this rectangle is 8 pix. void StartTracking( ) on-screen hint-tracking related methods void OnMouseMove( cbMotionEvent& event ) handlers for plugin events void OnDrawHintRect( cbDrawHintRectEvent& event ) handles event, which oriniates from itself 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
wxColour mHightColor background colours for the highlighted/unhighlighted icons light-blue for NC-look wxColour mLowColor light-gray -/- wxColour mTrianInnerColor blue -/- wxPen mTrianInnerPen black -/- bool mDragStarted drag & drop state variables int mSvTopMargin saved margins of the pane wxBitmap* mpPaneImage on-screen drawing state variables 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) cbDockPane* mpPane is set up temorarely, while handling event int GetHRowsCountForPane( cbDockPane* pPane ) helpers for drag&drop void DrawTrianUp( wxRect& inRect, wxDC& dc ) "hard-coded metafile" for NN-look void OnMouseMove( cbMotionEvent& event ) handlers for plugin events (appearence-independent logic) void DrawCollapsedRowIcon( int index, wxDC& dc, bool isHighlighted ) overridables (appearence-depedent) internal helper-class
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
forward decl. sample classes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
serialization handlers for the above classes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
cast
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
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
cbDockPane* mpPane is set up temorarely, while handling event void FitBarsToRange( int from, int till, cbBarInfo* pTheBar, cbRowInfo* pRow ) not-fixed-bars layouting related helpers int CalcRowHeight( cbRowInfo& row ) row-layouting helpers (simulate "bar-friction") void OnResizeRow( cbResizeRowEvent& event ) event handlers
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxCheckBox* mpRTU_Check "nice thing" about wxWindows: bool mRealTimeUpdatesOn fields/properties void ExchgCheck( wxCheckBox* pChk, bool& value ) helpers 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
cbDockPane* mpPane is set up temorarely, while handling event void Draw3DBox( wxDC& dc, const wxPoint& pos, bool pressed ) drawing helpers bool mCloseBoxOn public properties default: ON bool mCollapseBoxOn default: ON int mGrooveCount default: 2 (two shaded bars) int mHintGap default: 5 (pixels from above, below, right and left) int mXWeight default: 2 (width in pixels of lines which used for drawing cross) void OnSizeBarWindow( cbSizeBarWndEvent& event ) handlers of plugin-events classes declared in this header file alternative class for wxBmpButton
Derived from
Public members
Operations
Attributes
Protected members
Operations
Attributes
Private members
Operations
Attributes
wxBitmap mDepressedBmp source image for rendering wxBitmap mFocusedBmp labels for particular state may not be always present - wxBitmap* mpDepressedImg only if mHasFocusedBmp is TRUE bool mDragStarted button state variables; int mFiredEventType type of event which is fired upon depression of this button wxPen mBlackPen pens for drawing decorations (borders) wxBitmap* GetStateLabel( ) returns the label which match the current button state 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 void SetLabel( const wxBitmap& labelBitmap, const wxString& labelText = "" ) overridables void OnLButtonDown( wxMouseEvent& event ) event handlers 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
bool mResizeStarted resizing bars/rows state variables cbBarInfo* mpDraggedBar also used when in bar-drag action wxRect mHandleDragArea contstraints for dragging the handle wxClientDC* mpClntDc used for handling, start-draw-in-area events cbDockPane* mpPane is set up temorary short-cut, while handling event void DrawDraggedHandle( const wxPoint& pos, cbDockPane& pane ) helpers void OnLButtonDown( cbLeftDownEvent& event ) handlers for plugin-events
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
void OnStartChanges( ) notificiactions received from Frame Layout : void UpdateNow( ) refreshes parts of the frame layout, which need an update Enumerations Reference
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
FOR NOW:: void (*wxObjectSerializationFn) (wxObject*, wxObjectStorage& )void (*wxObjectSerializationFn) (wxObject*, wxObjectStorage& ) wxObjectSerializationFn abstract classes declared classes which implement the above interfaces prototypes for serialzatoin/initialization functions helpers, to ease the creation of serializers for derivatives of wxWindow forward declarations void (wxEvtHandler::*cbLeftDownHandler )(cbLeftDownEvent&)void (wxEvtHandler::*cbLeftDownHandler )(cbLeftDownEvent&) wxEvtHandler::*cbLeftDownHandler forward decls, separated by categories defs. for handler-methods Macros Reference
layouting orientations for tools fixed settings layout types for title bars of the tabs (are selected up by evaluating the available free space ) forward decl. ID for the menu commands macros for declaring and implementing serializers both as classes and as a pair of (serialize/init) functions for serializers, which are dedicated for specific versions of persistant classes (further referred as "versioned" serializers) control bar states the states are enumerated above one pane for each alignment masks for each pane event types handled by plugins macros for creating event table entries for plugin-events button lable-text alignment types Global Variables Reference
Global Functions Reference
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 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 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
cbAntiflickerPlugin
cbAntiflickerPlugin::mpVertBuf
cbAntiflickerPlugin::mpLRUBufDc
cbAntiflickerPlugin::mLRUArea
cbAntiflickerPlugin::FindSuitableBuffer
cbAntiflickerPlugin::OnStartDrawInArea
cbFloatedWindow
wxFrameView
wxFrameView::OnInit
wxFrameView::OnRecreate
wxFrameManager
wxFrameManager::Init
wxFrameManager::GetParentFrame
wxToolLayoutItem
LayoutManagerBase
BagLayout
wxDynToolInfo
wxDynamicToolBar
wxDynamicToolBar::mSepartorSize
wxDynamicToolBar::mVertGap
wxDynamicToolBar::mHorizGap
wxDynamicToolBar::AddTool
wxDynamicToolBar::AddTool
wxDynamicToolBar::DrawSeparator
wxDynamicToolBar::Layout
wxDynamicToolBar::OnSize
wxDynamicToolBar::Realize
wxToolWindow
wxToolWindow::mButtons
wxToolWindow::mDragOrigin
wxToolWindow::AddMiniButton
wxToolWindow::GetPreferredSize
cbMiniButton
cbCloseBox
cbCollapseBox
cbDockBox
cbFloatedBarWindow
cbFloatedBarWindow::PositionFloatedWnd
cbFloatedBarWindow::GetPreferredSize
MyApp
MyFrame
wxTabbedWindow
wxTabbedWindow::GetLabelFont
wxTabbedWindow::mpTabScroll
wxTabbedWindow::mWhitePen
wxTabbedWindow::mGrayPen
wxTabbedWindow::mDarkPen
wxTabbedWindow::mBlackPen
wxTabbedWindow::mVertGap
wxTabbedWindow::mHorizGap
wxTabbedWindow::mTitleVertGap
wxTabbedWindow::mTitleHorizGap
wxTabbedWindow::mImageTextGap
wxTabbedWindow::mFirstTitleGap
wxTabbedWindow::mBorderOnlyWidth
wxTabbedWindow::OnTabAdded
wxTabbedWindow::AddTab
wxTabbedWindow::AddTab
wxTabbedWindow::GetTabCount
wxTabbedWindow::HitTest
wxTabbedWindow::RecalcLayout
wxTabbedWindow::OnPaint
wxPaggedWindow
wxPaggedWindow::mIsDragged
wxPaggedWindow::OnTabAdded
wxPaggedWindow::GetLabelFont
wxPaggedWindow::mTitleRowLen
wxPaggedWindow::mAdjustableTitleRowLen
wxPaggedWindow::mCurentRowOfs
wxPaggedWindow::GetVerticalScrollBar
wxPaggedWindow::HitTest
wxPaggedWindow::OnPaint
twTabInfo
twTabInfo::mImageFile
MyApp
MyFrame
MyFrame::CreateTxtCtrl
MyFrame::CreateDevLayout
MyFrame::MyFrame
MyFrame::OnClose
cbSimpleCustomizationPlugin
cbSimpleCustomizationPlugin::OnCustomizeBar
cbSimpleCustomizationPlugin::OnMenuItemSelected
wxSerializerInfo
wxSerializerInfo::classInfo
wxSerializerInfo::serFn
wxSerializerInfo::serInfoHash
wxSerializerInfo::SerializeInherited
wxSerializerInfo::InitializeSerializers
wxSerializerBase
wxDataStreamBase
wxObjectStorage
wxObjectStorage::mVerSepartorCh
wxObjectStorage::mMinorMajorSepartorCh
wxObjectStorage::AddInitialRef
wxObjectStorage::SetDataStream
wxObjectStorage::Finalize
wxObjectStorage::XchgChar
wxObjectStorage::XchgObj
wxObjectStorage::XchgWxStr
wxColourSerializer
wxPenSerializer
wxBrushSerializer
wxObjectListSerializer
wxEvtHandlerSerializer
wxWindowSerializer
wxTextCtrlSerializer
wxButtonSerializer
wxStaticTextSerializer
wxScrollBarSerializer
wxTreeCtrlSerializer
wxIOStreamWrapper
wxIOStreamWrapper::mStreamPos
wxIOStreamWrapper::Close
wxIOStreamWrapper::wxIOStreamWrapper
wxIOStreamWrapper::wxIOStreamWrapper
wxIOStreamWrapper::Create
wxIOStreamWrapper::Attach
GCItem
GCItem::mRefs
GarbageCollector
GarbageCollector::AddObject
GarbageCollector::ArrangeCollection
GarbageCollector::GetRegularObjects
GarbageCollector::Reset
cbSimpleUpdatesMgr
cbSimpleUpdatesMgr::OnStartChanges
cbSimpleUpdatesMgr::UpdateNow
wxFrameLayoutSerializer
cbBarSpySerializer
cbBarDimHandlerBaseSerializer
cbDimInfoSerializer
cbRowInfoSerializer
cbBarInfoSerializer
cbCommonPanePropertiesSerializer
cbDockPaneSerializer
cbUpdatesManagerBaseSerializer
cbPluginBaseSerializer
cbRowDragPluginSerializer
cbHiddenBarInfoSerializer
cbFloatedBarWindowSerializer
wxNewBitmapButtonSerializer
wxDynamicToolBarSerializer
wxDynToolInfoSerializer
wxTabbedWindowSerializer
twTabInfoSerializer
cbBarSpy
cbBarSpy::ProcessEvent
wxFrameLayout
wxFrameLayout::mpFrame
wxFrameLayout::mpFrameClient
wxFrameLayout::mPanes[MAX_PANES]
wxFrameLayout::mpHorizCursor
wxFrameLayout::mpNECursor
wxFrameLayout::mDarkPen
wxFrameLayout::mLightPen
wxFrameLayout::mGrayPen
wxFrameLayout::mBlackPen
wxFrameLayout::mBorderPen
wxFrameLayout::mNullPen
wxFrameLayout::mpPaneInFocus
wxFrameLayout::mpLRUPane
wxFrameLayout::mClntWndBounds
wxFrameLayout::mpTopPlugin
wxFrameLayout::mpCaputesInput
wxFrameLayout::mBarSpyList
wxFrameLayout::mFloatedFrames
wxFrameLayout::mAllBars
wxFrameLayout::mClientWndRefreshPending
wxFrameLayout::mpUpdatesMgr
wxFrameLayout::PositionClientWindow
wxFrameLayout::GetBarPane
wxFrameLayout::ForwardMouseEvent
wxFrameLayout::CanReparent
wxFrameLayout::CreateUpdatesManager
wxFrameLayout::wxFrameLayout
wxFrameLayout::~wxFrameLayout
wxFrameLayout::EnableFloating
wxFrameLayout::Activate
wxFrameLayout::Deactivate
wxFrameLayout::HideBarWindows
wxFrameLayout::SetFrameClient
wxFrameLayout::GetPanesArray
wxFrameLayout::GetPane
wxFrameLayout::AddBar
wxFrameLayout::RedockBar
wxFrameLayout::FindBarByName
wxFrameLayout::SetBarState
wxFrameLayout::ApplyBarProperties
wxFrameLayout::RemoveBar
wxFrameLayout::RecalcLayout
wxFrameLayout::GetUpdatesManager
wxFrameLayout::SetUpdatesManager
wxFrameLayout::GetPaneProperties
wxFrameLayout::SetMargins
wxFrameLayout::RefreshNow
wxFrameLayout::OnSize
wxFrameLayout::FirePluginEvent
wxFrameLayout::CaptureEventsForPlugin
wxFrameLayout::CaptureEventsForPane
wxFrameLayout::GetTopPlugin
wxFrameLayout::SetTopPlugin
wxFrameLayout::PushPlugin
wxFrameLayout::PushDefaultPlugins
wxFrameLayout::AddPlugin
wxFrameLayout::AddPluginBefore
wxFrameLayout::RemovePlugin
wxFrameLayout::FindPlugin
cbUpdateMgrData
cbUpdateMgrData::mPrevBounds
cbUpdateMgrData::mIsDirty
cbUpdateMgrData::mpCustomData
cbUpdateMgrData::cbUpdateMgrData
cbBarDimHandlerBase
cbBarDimHandlerBase::mRefCount
cbBarDimHandlerBase::cbBarDimHandlerBase
cbBarDimHandlerBase::OnChangeBarState
cbDimInfo
cbDimInfo::mSizes[MAX_BAR_STATES]
cbDimInfo::mBounds[MAX_BAR_STATES]
cbDimInfo::mLRUPane
cbDimInfo::mVertGap
cbDimInfo::mHorizGap
cbDimInfo::mIsFixed
cbDimInfo::mpHandler
cbDimInfo::cbDimInfo
cbDimInfo::~cbDimInfo
cbRowInfo
cbRowInfo::mBars
cbRowInfo::mHasUpperHandle
cbRowInfo::mBoundsInParent
cbRowInfo::mUMgrData
cbRowInfo::mpExpandedBar
cbRowInfo::mSavedRatios
cbRowInfo::GetFirstBar
cbBarInfo
cbBarInfo::mName
cbBarInfo::mBounds
cbBarInfo::mBoundsInParent
cbBarInfo::mpRow
cbBarInfo::mHasLeftHandle
cbBarInfo::mDimInfo
cbBarInfo::mState
cbBarInfo::mAlignment
cbBarInfo::mRowNo
cbBarInfo::mpBarWnd
cbBarInfo::mLenRatio
cbBarInfo::mPosIfFloated
cbBarInfo::mUMgrData
cbBarInfo::mpNext
cbBarInfo::mpPrev
cbBarShapeData
wxBarIterator
wxBarIterator::Next
wxBarIterator::RowInfo
cbCommonPaneProperties
cbCommonPaneProperties::mRealTimeUpdatesOn
cbCommonPaneProperties::mOutOfPaneDragOn
cbCommonPaneProperties::mExactDockPredictionOn
cbCommonPaneProperties::mNonDestructFirctionOn
cbCommonPaneProperties::mShow3DPaneBorderOn
cbCommonPaneProperties::mBarFloatingOn
cbCommonPaneProperties::mRowProportionsOn
cbCommonPaneProperties::mColProportionsOn
cbCommonPaneProperties::mBarCollapseIconsOn
cbCommonPaneProperties::mBarDragHintsOn
cbCommonPaneProperties::mMinCBarDim
cbCommonPaneProperties::mResizeHandleSize
cbDockPane
cbDockPane::mProps
cbDockPane::mLeftMargin
cbDockPane::mRightMargin
cbDockPane::mTopMargin
cbDockPane::mBottomMargin
cbDockPane::mBoundsInParent
cbDockPane::mPaneWidth
cbDockPane::mUMgrData
cbDockPane::mRows
cbDockPane::mpLayout
cbDockPane::mRowShapeData
cbDockPane::mpStoredRow
cbDockPane::GetRow
cbDockPane::GetRowAt
cbDockPane::SyncRowFlags
cbDockPane::IsFixedSize
cbDockPane::FrameToPane
cbDockPane::SetRowHeight
cbDockPane::PaintBarDecorations
cbDockPane::cbDockPane
cbDockPane::SetMargins
cbDockPane::RemoveBar
cbDockPane::InsertBar
cbDockPane::InsertBar
cbDockPane::InsertBar
cbDockPane::RemoveRow
cbDockPane::InsertRow
cbDockPane::SetPaneWidth
cbDockPane::SetBoundsInParent
cbDockPane::GetRowList
cbDockPane::GetFirstRow
cbDockPane::BarPresent
cbDockPane::GetPaneHeight
cbDockPane::HitTestPaneItems
cbDockPane::DrawVertHandle
cbDockPane::GetRowShapeData
cbDockPane::SetRowShapeData
cbUpdatesManagerBase
cbUpdatesManagerBase::mpLayout
cbUpdatesManagerBase::OnStartChanges
cbUpdatesManagerBase::UpdateNow
cbPluginEvent
cbPluginEvent::mpPane
cbPluginEvent::cbPluginEvent
cbPluginBase
cbPluginBase::mpLayout
cbPluginBase::mIsReady
cbPluginBase::mPaneMask
cbPluginBase::~cbPluginBase
cbPluginBase::OnInitPlugin
cbPluginBase::ProcessEvent
cbLeftDownEvent
cbLeftUpEvent
cbRightDownEvent
cbRightUpEvent
cbMotionEvent
cbLeftDClickEvent
cbLayoutRowEvent
cbResizeRowEvent
cbLayoutRowsEvent
cbInsertBarEvent
cbResizeBarEvent
cbRemoveBarEvent
cbSizeBarWndEvent
cbDrawBarDecorEvent
cbDrawRowDecorEvent
cbDrawPaneDecorEvent
cbDrawBarHandlesEvent
cbDrawRowHandlesEvent
cbDrawRowBkGroundEvent
cbDrawPaneBkGroundEvent
cbStartBarDraggingEvent
cbStartBarDraggingEvent::mPos
cbDrawHintRectEvent
cbDrawHintRectEvent::mRect
cbDrawHintRectEvent::mIsInClient
cbDrawHintRectEvent::mEraseRect
cbDrawHintRectEvent::mLastTime
cbDrawHintRectEvent::cbDrawHintRectEvent
cbStartDrawInAreaEvent
cbStartDrawInAreaEvent::mppDc
cbStartDrawInAreaEvent::cbStartDrawInAreaEvent
cbFinishDrawInAreaEvent
cbCustomizeBarEvent
cbCustomizeBarEvent::mClickPos
cbCustomizeLayoutEvent
cbCustomizeLayoutEvent::mClickPos
cbHintAnimationPlugin
cbHintAnimationPlugin::mpScrDc
cbHintAnimationPlugin::mCurRect
cbHintAnimationPlugin::mAnimStarted
cbHintAnimationPlugin::mMorphDelay
cbHintAnimationPlugin::mMaxFrames
cbHintAnimationPlugin::mInClientHintBorder
cbHintAnimationPlugin::mAccelerationOn
cbHintAnimationPlugin::StartTracking
MorphInfoT
cbHintAnimTimer
cbBarDragPlugin
cbBarDragPlugin::mBarDragStarted
cbBarDragPlugin::mpScrDc
cbBarDragPlugin::mPrevHintRect
cbBarDragPlugin::mCanStick
cbBarDragPlugin::mpSrcPane
cbBarDragPlugin::mpDraggedBar
cbBarDragPlugin::mInClientHintBorder
cbBarDragPlugin::AdjustHintRect
cbBarDragPlugin::StartTracking
cbBarDragPlugin::OnMouseMove
cbBarDragPlugin::OnDrawHintRect
cbRowDragPlugin
cbRowDragPlugin::mHightColor
cbRowDragPlugin::mLowColor
cbRowDragPlugin::mTrianInnerColor
cbRowDragPlugin::mTrianInnerPen
cbRowDragPlugin::mDragStarted
cbRowDragPlugin::mSvTopMargin
cbRowDragPlugin::mpPaneImage
cbRowDragPlugin::mpRowInFocus
cbRowDragPlugin::mpPane
cbRowDragPlugin::GetHRowsCountForPane
cbRowDragPlugin::DrawTrianUp
cbRowDragPlugin::OnMouseMove
cbRowDragPlugin::DrawCollapsedRowIcon
cbHiddenBarInfo
notStorableClass
classA
classB
classASerializer
classBSerializer
cbDynToolBarDimHandler
cbRowLayoutPlugin
cbRowLayoutPlugin::mpPane
cbRowLayoutPlugin::FitBarsToRange
cbRowLayoutPlugin::CalcRowHeight
cbRowLayoutPlugin::OnResizeRow
SettingsDlg
SettingsDlg::mpRTU_Check
SettingsDlg::mRealTimeUpdatesOn
SettingsDlg::ExchgCheck
cbBarHintsPlugin
cbBarHintsPlugin::mpPane
cbBarHintsPlugin::Draw3DBox
cbBarHintsPlugin::mCloseBoxOn
cbBarHintsPlugin::mCollapseBoxOn
cbBarHintsPlugin::mGrooveCount
cbBarHintsPlugin::mHintGap
cbBarHintsPlugin::mXWeight
cbBarHintsPlugin::OnSizeBarWindow
wxNewBitmapButton
wxNewBitmapButton::mDepressedBmp
wxNewBitmapButton::mFocusedBmp
wxNewBitmapButton::mpDepressedImg
wxNewBitmapButton::mDragStarted
wxNewBitmapButton::mFiredEventType
wxNewBitmapButton::mBlackPen
wxNewBitmapButton::GetStateLabel
wxNewBitmapButton::wxNewBitmapButton
wxNewBitmapButton::SetLabel
wxNewBitmapButton::OnLButtonDown
cbPaneDrawPlugin
cbPaneDrawPlugin::mResizeStarted
cbPaneDrawPlugin::mpDraggedBar
cbPaneDrawPlugin::mHandleDragArea
cbPaneDrawPlugin::mpClntDc
cbPaneDrawPlugin::mpPane
cbPaneDrawPlugin::DrawDraggedHandle
cbPaneDrawPlugin::OnLButtonDown
cbGCUpdatesMgr
cbGCUpdatesMgr::OnStartChanges
cbGCUpdatesMgr::UpdateNow
CB_HITTEST_RESULT
MyTestPanel
wxPanel
wxPanel MyTestPanel
wxObjectSerializationFn
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
BarInfoPtrT
cbBarInfo*
cbBarInfo* BarInfoPtrT
wxEvtHandler::*cbLeftDownHandler
LO_HORIZONTAL
#define LO_HORIZONTAL 0
BTN_BOX_HEIGHT
#define BTN_BOX_HEIGHT 12
wxTITLE_IMG_AND_TEXT
#define wxTITLE_IMG_AND_TEXT 0
MINIMAL_QUIT
#define MINIMAL_QUIT 1
DECLARE_SERIALIZER_CLASS
#define DECLARE_SERIALIZER_CLASS(serializerName) \
public:\
static wxSerializerInfo info;;
IMPLEMENT_SERIALIZER_CLASS_FOR_VERSION
#define IMPLEMENT_SERIALIZER_CLASS_FOR_VERSION( name, serializerName, serFn, initFn, versionName) \
wxSerializerInfo \
serializerName::info( #name, serFn, initFn, #versionName );
wxCBAR_DOCKED_HORIZONTALLY
#define wxCBAR_DOCKED_HORIZONTALLY 0
MAX_BAR_STATES
#define MAX_BAR_STATES 4
MAX_PANES
#define MAX_PANES 4
wxTOP_PANE
#define wxTOP_PANE 0x0001
cbEVT_PL_LEFT_DOWN
#define cbEVT_PL_LEFT_DOWN 0
EVT_PL_LEFT_DOWN
#define EVT_PL_LEFT_DOWN(func) { cbEVT_PL_LEFT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (cbLeftDownHandler ) & func },
NB_ALIGN_TEXT_RIGHT
#define NB_ALIGN_TEXT_RIGHT 0
wxCreateClassInfoTree
wxCreateSerializerInfoTree
test_obj_storage