]> git.saurik.com Git - wxWidgets.git/blob - utils/serialize/serext.cpp
* Added serialization code to the repository
[wxWidgets.git] / utils / serialize / serext.cpp
1 #ifdef __GNUG__
2 #pragma implementation "serext.h"
3 #endif
4
5 #include <wx/splitter.h>
6 #include <wx/objstrm.h>
7 #include <wx/datstrm.h>
8 #include "serext.h"
9
10 IMPLEMENT_SERIAL_CLASS(wxSplitterWindow, wxWindow)
11
12 void WXSERIAL(wxSplitterWindow)::StoreObject(wxObjectOutputStream& s)
13 {
14 wxSplitterWindow *splitter = (wxSplitterWindow *)Object();
15 WXSERIAL(wxWindow)::StoreObject(s);
16
17 if (s.FirstStage()) {
18 s.AddChild( splitter->GetWindow1() );
19 s.AddChild( splitter->GetWindow2() );
20 return;
21 }
22
23 wxDataOutputStream data_s(s);
24 data_s.Write8( splitter->GetSplitMode() );
25 data_s.Write32( splitter->GetSashSize() );
26 data_s.Write8( splitter->GetBorderSize() );
27 data_s.Write32( splitter->GetSashPosition() );
28 data_s.Write32( splitter->GetMinimumPaneSize() );
29 }
30
31 void WXSERIAL(wxSplitterWindow)::LoadObject(wxObjectInputStream& s)
32 {
33 wxSplitterWindow *splitter = (wxSplitterWindow *)Object();
34 WXSERIAL(wxWindow)::LoadObject(s);
35
36 wxDataInputStream data_s(s);
37 int split_mode, sash_size, border_size, sash_position, min_pane_size;
38
39 split_mode = data_s.Read8();
40 sash_size = data_s.Read32();
41 border_size = data_s.Read8();
42 sash_position = data_s.Read32();
43 min_pane_size = data_s.Read32();
44
45 splitter->Create(m_parent, m_id, wxPoint(m_x, m_y), wxSize(m_w, m_h), m_style,
46 m_name);
47
48 if (s.GetChild(1)) {
49 if (data_s.Read8() == wxSPLIT_VERTICAL)
50 splitter->SplitVertically((wxWindow *)s.GetChild(0),
51 (wxWindow *)s.GetChild(1), sash_position);
52 else
53 splitter->SplitHorizontally((wxWindow *)s.GetChild(0),
54 (wxWindow *)s.GetChild(1), sash_position);
55 }
56
57 splitter->SetSashSize(sash_size);
58 splitter->SetBorderSize(border_size);
59 splitter->SetMinimumPaneSize(min_pane_size);
60 }