]> git.saurik.com Git - wxWidgets.git/blob - utils/framelayout/src/cbstore.cpp
Added Aleksandras' framelayout code, with more or less working Linux Makefiles
[wxWidgets.git] / utils / framelayout / src / cbstore.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: No names yet.
3 // Purpose: Contrib. demo
4 // Author: Aleksandras Gluchovas
5 // Modified by:
6 // Created: 27/10/98
7 // RCS-ID: $Id$
8 // Copyright: (c) Aleksandras Gluchovas
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifdef __GNUG__
13 #pragma implementation "cbstore.h"
14 // #pragma interface
15 #endif
16
17 // For compilers that support precompilation, includes "wx.h".
18 #include "wx/wxprec.h"
19
20 #ifdef __BORLANDC__
21 #pragma hdrstop
22 #endif
23
24 #ifndef WX_PRECOMP
25 #include "wx/wx.h"
26 #endif
27
28 #include "cbstore.h"
29
30 /***** Implementation for class wxFrameLayoutSerializer *****/
31
32 IMPLEMENT_SERIALIZER_CLASS( wxFrameLayout,
33 wxFrameLayoutSerializer,
34 wxFrameLayoutSerializer::Serialize,
35 wxFrameLayoutSerializer::Initialize )
36
37 void wxFrameLayoutSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
38 {
39 // wxFrameLayout is a "kind of" wxEvtHandler - perform
40 // serialization of the base class first
41
42 info.SerializeInherited( pObj, store );
43
44 wxFrameLayout* pLayout = (wxFrameLayout*)pObj;
45
46 store.XchgObjPtr( (wxObject**) &pLayout->mpFrame );
47 store.XchgObjPtr( (wxObject**) &pLayout->mpFrameClient );
48
49 for( int i = 0; i != MAX_PANES; ++i )
50
51 store.XchgObjPtr( (wxObject**) &(pLayout->mPanes[i]) );
52
53 // plugins are serialized _after_ panes
54
55 store.XchgObjPtr( (wxObject**) &(pLayout->mpTopPlugin) );
56
57 // and the rest will follow...
58
59 store.XchgObjArray( pLayout->mAllBars );
60
61 store.XchgObjList( pLayout->mBarSpyList );
62
63 store.XchgObjList( pLayout->mFloatedFrames );
64
65 store.XchgObjPtr( (wxObject**) &(pLayout->mpUpdatesMgr) );
66
67 store.XchgBool( pLayout->mFloatingOn );
68
69 store.XchgWxPoint( pLayout->mNextFloatedWndPos );
70
71 store.XchgWxSize( pLayout->mFloatingPosStep );
72
73 store.XchgObj( (wxObject*) &pLayout->mDarkPen );
74 store.XchgObj( (wxObject*) &pLayout->mLightPen );
75 store.XchgObj( (wxObject*) &pLayout->mGrayPen );
76 store.XchgObj( (wxObject*) &pLayout->mBlackPen );
77 store.XchgObj( (wxObject*) &pLayout->mBorderPen );
78 }
79
80 void wxFrameLayoutSerializer::Initialize( wxObject* pObj )
81 {
82 wxFrameLayout* pLayout = (wxFrameLayout*)pObj;
83
84 // wxFrameLayout is a "kind of" wxEvtHandler - perform
85 // wxEvtHandler-specific initialization first
86
87 info.InitializeInherited( pObj );
88
89 //pLayout->RecalcLayout( TRUE );
90 }
91
92 /***** Implementation for class wxFrameLayoutSerializer *****/
93
94 IMPLEMENT_SERIALIZER_CLASS( cbBarSpy,
95 cbBarSpySerializer,
96 cbBarSpySerializer::Serialize,
97 cbBarSpySerializer::Initialize )
98
99 void cbBarSpySerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
100 {
101 // cbBarSpy is a "kind of" wxEvtHandler - perform
102 // serialization of the base class first
103
104 info.SerializeInherited( pObj, store );
105
106 cbBarSpy* pSpy = (cbBarSpy*)pObj;
107
108 store.XchgObjPtr( (wxObject**) &(pSpy->mpLayout) );
109 store.XchgObjPtr( (wxObject**) &(pSpy->mpBarWnd) );
110 }
111
112 void cbBarSpySerializer::Initialize( wxObject* pObj )
113 {
114 // cbBarSpySerializer is a "kind of" wxEvtHandler - perform
115 // wxEvtHandler-specific initialization first
116
117 info.InitializeInherited( pObj );
118
119 cbBarSpy* pSpy = (cbBarSpy*)pObj;
120
121 // is done by wxEventHandler's serializer already!
122
123 //pSpy->mpBarWnd->PushEventHandler( pSpy );
124 }
125
126 /***** Implementation for class cbBarDimHandlerBaseSerializer *****/
127
128 IMPLEMENT_SERIALIZER_CLASS( cbBarDimHandlerBase,
129 cbBarDimHandlerBaseSerializer,
130 cbBarDimHandlerBaseSerializer::Serialize,
131 NO_CLASS_INIT )
132
133 void cbBarDimHandlerBaseSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
134 {
135 cbBarDimHandlerBase* pHandler = (cbBarDimHandlerBase*)pObj;
136
137 store.XchgInt( pHandler->mRefCount );
138 }
139
140 /***** Implementation for class cbDimInfoSerializer *****/
141
142 IMPLEMENT_SERIALIZER_CLASS( cbDimInfo,
143 cbDimInfoSerializer,
144 cbDimInfoSerializer::Serialize,
145 NO_CLASS_INIT )
146
147 void cbDimInfoSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
148 {
149 cbDimInfo* pInfo = (cbDimInfo*)pObj;
150
151 int i = 0;
152
153 for( i = 0; i != MAX_BAR_STATES; ++i )
154
155 store.XchgWxSize( pInfo->mSizes[i] );
156
157 for( i = 0; i != MAX_BAR_STATES; ++i )
158
159 store.XchgWxRect( pInfo->mBounds[i] );
160
161 store.XchgInt ( pInfo->mLRUPane );
162 store.XchgInt ( pInfo->mHorizGap );
163 store.XchgInt ( pInfo->mVertGap );
164
165 store.XchgBool ( pInfo->mIsFixed );
166 store.XchgObjPtr( (wxObject**) &(pInfo->mpHandler) );
167 }
168
169 /***** Implementation for class cbRowInfoSerializer *****/
170
171 IMPLEMENT_SERIALIZER_CLASS( cbRowInfo,
172 cbRowInfoSerializer,
173 cbRowInfoSerializer::Serialize,
174 NO_CLASS_INIT )
175
176 void cbRowInfoSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
177 {
178 cbRowInfo* pInfo = (cbRowInfo*)pObj;
179
180 store.XchgObjArray( pInfo->mBars );
181
182 store.XchgLongArray( pInfo->mSavedRatios );
183
184 store.XchgObjPtr( (wxObject**) &pInfo->mpNext );
185 store.XchgObjPtr( (wxObject**) &pInfo->mpPrev );
186 store.XchgObjPtr( (wxObject**) &pInfo->mpExpandedBar );
187
188 store.XchgBool ( pInfo->mHasUpperHandle );
189 store.XchgBool ( pInfo->mHasLowerHandle );
190 store.XchgBool ( pInfo->mHasOnlyFixedBars );
191 store.XchgInt ( pInfo->mNotFixedBarsCnt );
192
193 // other properties of the row are transient, since
194 // they are reclaculated each time the frame is resized/activated
195 }
196
197 /***** Implementation for class cbBarInfoSerializer *****/
198
199 IMPLEMENT_SERIALIZER_CLASS( cbBarInfo,
200 cbBarInfoSerializer,
201 cbBarInfoSerializer::Serialize,
202 NO_CLASS_INIT )
203
204 void cbBarInfoSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
205 {
206 cbBarInfo* pInfo = (cbBarInfo*)pObj;
207
208 store.XchgWxStr ( pInfo->mName );
209
210 store.XchgWxRect( pInfo->mBounds );
211
212 store.XchgObjPtr( (wxObject**) &(pInfo->mpRow) );
213
214 store.XchgBool ( pInfo->mHasLeftHandle );
215 store.XchgBool ( pInfo->mHasRightHandle );
216
217 store.XchgObj ( (wxObject*) &(pInfo->mDimInfo ) );
218
219 store.XchgInt ( pInfo->mState );
220 store.XchgInt ( pInfo->mAlignment );
221 store.XchgInt ( pInfo->mRowNo );
222
223 store.XchgObjPtr( (wxObject**) &(pInfo->mpBarWnd) );
224
225 store.XchgDouble( pInfo->mLenRatio );
226
227 store.XchgWxPoint( pInfo->mPosIfFloated );
228
229 store.XchgObjPtr( (wxObject**) &(pInfo->mpNext) );
230 store.XchgObjPtr( (wxObject**) &(pInfo->mpPrev) );
231
232 // other properties of the bar are transient, since
233 // they are reclaculated each time the frame is resized/activated
234 }
235
236 /***** Implementation for class cbCommonPanePropertiesSerializer *****/
237
238 IMPLEMENT_SERIALIZER_CLASS( cbCommonPaneProperties,
239 cbCommonPanePropertiesSerializer,
240 cbCommonPanePropertiesSerializer::Serialize,
241 NO_CLASS_INIT )
242
243 void cbCommonPanePropertiesSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
244 {
245 cbCommonPaneProperties* pProps = (cbCommonPaneProperties*)pObj;
246
247 store.XchgBool ( pProps->mRealTimeUpdatesOn );
248 store.XchgBool ( pProps->mOutOfPaneDragOn );
249 store.XchgBool ( pProps->mExactDockPredictionOn );
250 store.XchgBool ( pProps->mNonDestructFirctionOn );
251
252 store.XchgBool ( pProps->mShow3DPaneBorderOn );
253
254 store.XchgBool ( pProps->mBarFloatingOn );
255 store.XchgBool ( pProps->mRowProportionsOn );
256 store.XchgBool ( pProps->mColProportionsOn );
257 store.XchgBool ( pProps->mBarCollapseIconsOn );
258 store.XchgBool ( pProps->mBarDragHintsOn );
259
260 store.XchgWxSize( pProps->mMinCBarDim );
261
262 store.XchgInt( pProps->mResizeHandleSize );
263 }
264
265 /***** Implementation for class *****/
266
267 IMPLEMENT_SERIALIZER_CLASS( cbDockPane,
268 cbDockPaneSerializer,
269 cbDockPaneSerializer::Serialize,
270 NO_CLASS_INIT )
271
272 void cbDockPaneSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
273 {
274 cbDockPane* pPane = (cbDockPane*)pObj;
275
276 store.XchgObj( (wxObject*) &(pPane->mProps) );
277
278 store.XchgInt( pPane->mLeftMargin );
279 store.XchgInt( pPane->mRightMargin );
280 store.XchgInt( pPane->mTopMargin );
281 store.XchgInt( pPane->mBottomMargin );
282
283 store.XchgInt( pPane->mAlignment );
284
285 store.XchgObjArray( pPane->mRows );
286 store.XchgObjPtr ( (wxObject**) &(pPane->mpLayout) );
287 }
288
289 /***** Implementation for class cbUpdatesManagerBaseSerializer *****/
290
291 IMPLEMENT_SERIALIZER_CLASS( cbUpdatesManagerBase,
292 cbUpdatesManagerBaseSerializer,
293 cbUpdatesManagerBaseSerializer::Serialize,
294 NO_CLASS_INIT )
295
296 void cbUpdatesManagerBaseSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
297 {
298 cbUpdatesManagerBase* pMgr = (cbUpdatesManagerBase*)pObj;
299
300 // only back-reference to layout "engine"
301 store.XchgObjPtr( (wxObject**) &(pMgr->mpLayout) );
302 }
303
304 /***** Implementation for class cbPluginBaseSerializer *****/
305
306 IMPLEMENT_SERIALIZER_CLASS( cbPluginBase,
307 cbPluginBaseSerializer,
308 cbPluginBaseSerializer::Serialize,
309 cbPluginBaseSerializer::Initialize )
310
311 void cbPluginBaseSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
312 {
313 // plugin is "a kind" of wxEvtHandler - perform
314 // serialization of the base class first
315
316 info.SerializeInherited( pObj, store );
317
318 cbPluginBase* pPlugin = (cbPluginBase*)pObj;
319
320 store.XchgObjPtr( (wxObject**) &(pPlugin->mpLayout) );
321
322 store.XchgInt( pPlugin->mPaneMask );
323 }
324
325 void cbPluginBaseSerializer::Initialize( wxObject* pObj )
326 {
327 // plugins need extra-initialization, after they are
328 // attached to the frame-layout and pane mask is set
329
330 ( (cbPluginBase*)pObj )->OnInitPlugin();
331 }
332
333 /***** Implementation for class cbRowDragPluginSerializer *****/
334
335 IMPLEMENT_SERIALIZER_CLASS( cbRowDragPlugin,
336 cbRowDragPluginSerializer,
337 cbRowDragPluginSerializer::Serialize,
338 cbRowDragPluginSerializer::Initialize )
339
340 void cbRowDragPluginSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
341 {
342 // plugin is "a kind" of cbPluginBaseSerializer - perform
343 // serialization of the base class first
344
345 info.SerializeInherited( pObj, store );
346
347 cbRowDragPlugin* pPlugin = (cbRowDragPlugin*)pObj;
348
349 store.XchgInt( pPlugin->mSvTopMargin );
350 store.XchgInt( pPlugin->mSvBottomMargin );
351 store.XchgInt( pPlugin->mSvLeftMargin );
352 store.XchgInt( pPlugin->mSvRightMargin );
353
354 store.XchgObjList( pPlugin->mHiddenBars );
355 }
356
357 void cbRowDragPluginSerializer::Initialize( wxObject* pObj )
358 {
359 // plugins need extra-initialization, after they are
360 // attached to the frame-layout and pane mask is set
361
362 ( (cbPluginBase*)pObj )->OnInitPlugin();
363 }
364
365 /***** Implementation for class cbHiddenBarInfoSerializer *****/
366
367 IMPLEMENT_SERIALIZER_CLASS( cbHiddenBarInfo,
368 cbHiddenBarInfoSerializer,
369 cbHiddenBarInfoSerializer::Serialize,
370 NO_CLASS_INIT )
371
372 void cbHiddenBarInfoSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
373 {
374 cbHiddenBarInfo* pInfo = (cbHiddenBarInfo*)pObj;
375
376 store.XchgObjPtr( (wxObject**) &(pInfo->mpBar) );
377 store.XchgInt( pInfo->mRowNo );
378 store.XchgInt( pInfo->mIconNo );
379 store.XchgInt( pInfo->mAlignment );
380 }
381
382 /***** Implementation for class cbFloatedBarWindowSerializer *****/
383
384 IMPLEMENT_SERIALIZER_CLASS( cbFloatedBarWindow,
385 cbFloatedBarWindowSerializer,
386 cbFloatedBarWindowSerializer::Serialize,
387 cbFloatedBarWindowSerializer::Initialize )
388
389 static wxString __gTmpFrameTitle;
390
391 void cbFloatedBarWindowSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
392 {
393 cbFloatedBarWindow* pWnd = (cbFloatedBarWindow*)pObj;
394
395 if ( store.IsLoading() == FALSE )
396
397 __gTmpFrameTitle = pWnd->GetTitle();
398
399 store.XchgWxStr( __gTmpFrameTitle );
400
401 // cbFloatedBarWindow is "a kind" of wxWindow - perform
402 // serialization of the base class first
403
404 wxWindowSerializer::DoSerialize( pObj, store,
405 (wndCreationFn)cbFloatedBarWindowSerializer::CreateFloatedBarWindowFn );
406
407 store.XchgObjPtr( (wxObject**) &(pWnd->mpBar) );
408 store.XchgObjPtr( (wxObject**) &(pWnd->mpLayout) );
409 store.XchgObjPtr( (wxObject**) &(pWnd->mpClientWnd) );
410 }
411
412 void cbFloatedBarWindowSerializer::CreateFloatedBarWindowFn( cbFloatedBarWindow* fbar, wxWindow* parent, const wxWindowID id,
413 const wxPoint& pos, const wxSize& size, long style ,
414 const wxString& name )
415 {
416 fbar->Create( parent, id, __gTmpFrameTitle, pos, size, style );
417 }
418
419 void cbFloatedBarWindowSerializer::Initialize( wxObject* pObj )
420 {
421 // FOR NOW:: nothing
422 }
423
424 /***** Implementation for class wxNewBitmapButtonSerializer *****/
425
426 IMPLEMENT_SERIALIZER_CLASS( wxNewBitmapButton,
427 wxNewBitmapButtonSerializer,
428 wxNewBitmapButtonSerializer::Serialize,
429 wxNewBitmapButtonSerializer::Initialize )
430
431 void wxNewBitmapButtonSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
432 {
433 wxNewBitmapButton* pBtn = (wxNewBitmapButton*)pObj;
434
435 store.XchgInt ( pBtn->mTextToLabelGap );
436 store.XchgInt ( pBtn->mMarginX );
437 store.XchgInt ( pBtn->mMarginY );
438 store.XchgInt ( pBtn->mTextAlignment );
439 store.XchgBool( pBtn->mIsFlat );
440 store.XchgBool( pBtn->mIsSticky );
441
442 store.XchgWxStr( pBtn->mLabelText );
443 store.XchgWxStr( pBtn->mImageFileName );
444 store.XchgInt ( pBtn->mImageFileType );
445
446 store.XchgInt( pBtn->mFiredEventType );
447
448 // cbFloatedBarWindow is "a kind" of wxWindow - perform
449 // serialization of the base class
450
451 wxWindowSerializer::DoSerialize( pObj, store,
452 (wndCreationFn)wxNewBitmapButtonSerializer::CreateNewBmpBtnWindowFn );
453 }
454
455 void wxNewBitmapButtonSerializer::CreateNewBmpBtnWindowFn( wxNewBitmapButton* btn, wxWindow* parent, const wxWindowID id,
456 const wxPoint& pos, const wxSize& size, long style ,
457 const wxString& name )
458 {
459 btn->Create( parent, id, pos, size, style, name );
460
461 //btn->Reshape();
462 btn->mIsCreated = FALSE;
463 btn->Reshape();
464 }
465
466 void wxNewBitmapButtonSerializer::Initialize( wxObject* pObj )
467 {
468 // FOR NOW:: nothing
469 wxNewBitmapButton* pBtn = (wxNewBitmapButton*)pObj;
470
471 //pBtn->Reshape();
472 }
473
474 /***** Implementation for class wxDynamicToolBarSerializer *****/
475
476 IMPLEMENT_SERIALIZER_CLASS( wxDynamicToolBar,
477 wxDynamicToolBarSerializer,
478 wxDynamicToolBarSerializer::Serialize,
479 wxDynamicToolBarSerializer::Initialize )
480
481 void wxDynamicToolBarSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
482 {
483 // cbFloatedBarWindow is "a kind" of wxWindow - perform
484 // serialization of the base class first
485
486 wxWindowSerializer::DoSerialize( pObj, store,
487 (wndCreationFn)wxDynamicToolBarSerializer::CreateDynTBarWindowFn );
488
489 wxDynamicToolBar* pTBar = (wxDynamicToolBar*)pObj;
490
491 store.XchgObjArray( pTBar->mTools );
492 }
493
494 void wxDynamicToolBarSerializer::CreateDynTBarWindowFn( wxDynamicToolBar* tbar, wxWindow* parent, const wxWindowID id,
495 const wxPoint& pos, const wxSize& size, long style ,
496 const wxString& name )
497 {
498 tbar->Create( parent, id, pos, size, style );
499 }
500
501 void wxDynamicToolBarSerializer::Initialize( wxObject* pObj )
502 {
503 // FOR NOW:: nothing
504 }
505
506 /***** Implementation for class wxDynToolInfoSerializer *****/
507
508 IMPLEMENT_SERIALIZER_CLASS( wxDynToolInfo,
509 wxDynToolInfoSerializer,
510 wxDynToolInfoSerializer::Serialize,
511 NO_CLASS_INIT )
512
513 void wxDynToolInfoSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
514 {
515 // cbFloatedBarWindow is "a kind" of wxWindow - perform
516 // serialization of the base class first
517
518 wxDynToolInfo* pInfo = (wxDynToolInfo*)pObj;
519
520 store.XchgWxRect( pInfo->mRect );
521 store.XchgBool ( pInfo->mIsSeparator );
522
523 store.XchgObjPtr( (wxObject**) &pInfo->mpToolWnd );
524 store.XchgInt ( pInfo->mIndex );
525 store.XchgWxSize( pInfo->mRealSize );
526 }
527
528 #include "objstore.h" // tabbed window is serialiable
529
530 /***** Implementation for class wxTabbedWindowSerializer ****/
531
532 IMPLEMENT_SERIALIZER_CLASS( wxTabbedWindow,
533 wxTabbedWindowSerializer,
534 wxTabbedWindowSerializer::Serialize,
535 wxTabbedWindowSerializer::Initialize)
536
537 void wxTabbedWindowSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
538 {
539 wxTabbedWindow* pWnd = (wxTabbedWindow*)pObj;
540
541 // we're kind of window - serialize it first
542
543 if ( store.IsLoading() )
544
545 // FOR NOW::workaround for the mistery
546
547 pWnd->mpTabScroll = (wxScrollBar*)(-1);
548
549 wxWindowSerializer::DoSerialize( pObj, store,
550 (wndCreationFn)wxWindowSerializer::CreateWindowFn,
551 FALSE );
552
553 store.XchgObjList( pWnd->mTabs );
554
555 store.XchgInt( pWnd->mActiveTab );
556 store.XchgInt( pWnd->mTitleHeight );
557 store.XchgInt( pWnd->mLayoutType );
558 store.XchgInt( pWnd->mTitleHeight );
559
560 store.XchgObj( (wxObject*) &(pWnd->mWhitePen) );
561 store.XchgObj( (wxObject*) &(pWnd->mGrayPen) );
562 store.XchgObj( (wxObject*) &(pWnd->mDarkPen) );
563 store.XchgObj( (wxObject*) &(pWnd->mBlackPen) );
564
565 store.XchgObjPtr( (wxObject**) &(pWnd->mpTabScroll ) );
566 store.XchgObjPtr( (wxObject**) &(pWnd->mpHorizScroll) );
567 store.XchgObjPtr( (wxObject**) &(pWnd->mpVertScroll ) );
568
569 store.XchgInt( pWnd->mVertGap );
570 store.XchgInt( pWnd->mHorizGap );
571 store.XchgInt( pWnd->mTitleVertGap );
572 store.XchgInt( pWnd->mTitleHorizGap );
573 store.XchgInt( pWnd->mImageTextGap );
574 store.XchgInt( pWnd->mFirstTitleGap );
575 store.XchgInt( pWnd->mBorderOnlyWidth );
576 }
577
578 void wxTabbedWindowSerializer::Initialize( wxObject* pObj )
579 {
580 wxTabbedWindow* pWnd = (wxTabbedWindow*)pObj;
581
582 pWnd->RecalcLayout(TRUE);
583 }
584
585 /***** Implementation for class twTabInfoSerializer ****/
586
587 IMPLEMENT_SERIALIZER_CLASS( twTabInfo,
588 twTabInfoSerializer,
589 twTabInfoSerializer::Serialize,
590 NO_CLASS_INIT )
591
592 void twTabInfoSerializer::Serialize( wxObject* pObj, wxObjectStorage& store )
593 {
594 twTabInfo* pInfo = (twTabInfo*)pObj;
595
596 store.XchgObjPtr( (wxObject**) &(pInfo->mpContent) );
597
598 // NOTE:: wxSize is NOT a dynamic class unfortunately ...
599
600 store.XchgWxSize( pInfo->mDims );
601
602 store.XchgWxStr ( pInfo->mText );
603 store.XchgWxStr( pInfo->mImageFile );
604
605 store.XchgLong( pInfo->mImageType );
606
607 if ( store.IsLoading() && wxFileExists( pInfo->mImageFile ) )
608
609 pInfo->mBitMap.LoadFile( pInfo->mImageFile, pInfo->mImageType );
610 }
611