* wxThread: new functions: wxThread::Pause/Resume, wxThread::GetThreadFromID
* Updates and new objects in utils/serialize * wxLayout*_Serialize are friends of wxLayout* (so I can access to the internal fields) * wxMenu (GTK): SetTitle/GetTitle (basic implementation) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@592 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include <wx/radiobox.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/combobox.h>
|
||||
#include <wx/imaglist.h>
|
||||
#include <wx/objstrm.h>
|
||||
#include <wx/datstrm.h>
|
||||
#include <wx/serbase.h>
|
||||
@@ -57,7 +58,7 @@ void WXSERIAL(wxButton)::LoadObject(wxObjectInputStream& s)
|
||||
|
||||
printf("label = %s\n", WXSTRINGCAST m_label);
|
||||
button->Create(m_parent, m_id, m_label, wxPoint(m_x, m_y), wxSize(m_w, m_h),
|
||||
m_style, m_name);
|
||||
m_style, *m_validator, m_name);
|
||||
}
|
||||
|
||||
void WXSERIAL(wxCheckBox)::StoreObject(wxObjectOutputStream& s)
|
||||
@@ -79,7 +80,7 @@ void WXSERIAL(wxCheckBox)::LoadObject(wxObjectInputStream& s)
|
||||
wxCheckBox *chkbox = (wxCheckBox *)Object();
|
||||
|
||||
chkbox->Create(m_parent, m_id, m_label, wxPoint(m_x, m_y), wxSize(m_w, m_h),
|
||||
m_style, m_name);
|
||||
m_style, *m_validator, m_name);
|
||||
|
||||
chkbox->SetValue(data_s.Read8());
|
||||
}
|
||||
@@ -118,7 +119,7 @@ void WXSERIAL(wxSlider)::LoadObject(wxObjectInputStream& s)
|
||||
value = data_s.Read32();
|
||||
|
||||
slider->Create(m_parent, m_id, value, min, max, wxPoint(m_x, m_y),
|
||||
wxSize(m_w, m_h), m_style, m_name);
|
||||
wxSize(m_w, m_h), m_style, *m_validator, m_name);
|
||||
|
||||
slider->SetTickFreq( 0, data_s.Read32() );
|
||||
slider->SetPageSize( data_s.Read32() );
|
||||
@@ -155,7 +156,7 @@ void WXSERIAL(wxGauge)::LoadObject(wxObjectInputStream& s)
|
||||
|
||||
range = data_s.Read32();
|
||||
gauge->Create(m_parent, m_id, range, wxPoint(m_x, m_y), wxSize(m_w, m_h),
|
||||
m_style, m_name);
|
||||
m_style, *m_validator, m_name);
|
||||
|
||||
gauge->SetShadowWidth( data_s.Read8() );
|
||||
gauge->SetBezelFace( data_s.Read8() );
|
||||
@@ -187,7 +188,7 @@ void WXSERIAL(wxChoice)::LoadObject(wxObjectInputStream& s)
|
||||
int i,num = data_s.Read32();
|
||||
|
||||
choice->Create(m_parent, m_id, wxPoint(m_x, m_y), wxSize(m_w, m_h), 0, NULL,
|
||||
m_style, m_name);
|
||||
m_style, *m_validator, m_name);
|
||||
|
||||
for (i=0;i<num;i++)
|
||||
choice->Append( data_s.ReadString() );
|
||||
@@ -224,26 +225,33 @@ void WXSERIAL(wxListBox)::LoadObject(wxObjectInputStream& s)
|
||||
void WXSERIAL(wxNotebook)::StoreObject(wxObjectOutputStream& s)
|
||||
{
|
||||
wxNotebook *notebook = (wxNotebook *)Object();
|
||||
wxImageList *imaglist = notebook->GetImageList();
|
||||
int i, pcount = notebook->GetPageCount();
|
||||
|
||||
WXSERIAL(wxControl)::StoreObject(s);
|
||||
|
||||
if (s.FirstStage()) {
|
||||
// Don't know how to retrieve images from wxImageList (copy to a DC ?)
|
||||
s.AddChild(imaglist);
|
||||
WXSERIAL(wxControl)::StoreObject(s);
|
||||
return;
|
||||
}
|
||||
|
||||
wxDataOutputStream data_s(s);
|
||||
|
||||
data_s.Write8( pcount );
|
||||
WXSERIAL(wxControl)::StoreObject(s);
|
||||
|
||||
for (i=0;i<pcount;i++)
|
||||
data_s.WriteString( notebook->GetPageText(i) );
|
||||
|
||||
}
|
||||
|
||||
void WXSERIAL(wxNotebook)::LoadObject(wxObjectInputStream& s)
|
||||
{
|
||||
wxNotebook *notebook = (wxNotebook *)Object();
|
||||
int i, pcount;
|
||||
wxImageList *imaglist;
|
||||
|
||||
imaglist = (wxImageList *)s.GetChild(0);
|
||||
s.RemoveChildren(1);
|
||||
|
||||
WXSERIAL(wxControl)::LoadObject(s);
|
||||
|
||||
@@ -293,7 +301,7 @@ void WXSERIAL(wxRadioBox)::LoadObject(wxObjectInputStream& s)
|
||||
items[i] = data_s.ReadString();
|
||||
|
||||
box->Create(m_parent, m_id, m_title, wxPoint(m_x, m_y), wxSize(m_w, m_h),
|
||||
n_items, items, 0, m_style, m_name);
|
||||
n_items, items, 0, m_style, *m_validator, m_name);
|
||||
}
|
||||
|
||||
void WXSERIAL(wxComboBox)::StoreObject(wxObjectOutputStream& s)
|
||||
@@ -326,7 +334,7 @@ void WXSERIAL(wxComboBox)::LoadObject(wxObjectInputStream& s)
|
||||
int i, num, selection;
|
||||
|
||||
box->Create(m_parent, m_id, wxEmptyString, wxPoint(m_x, m_y), wxSize(m_w, m_h),
|
||||
0, NULL, m_style, m_name);
|
||||
0, NULL, m_style, *m_validator, m_name);
|
||||
|
||||
num = data_s.Read8();
|
||||
selection = data_s.Read8();
|
||||
|
@@ -20,6 +20,7 @@
|
||||
#include <wx/pen.h>
|
||||
#include <wx/brush.h>
|
||||
#include <wx/serbase.h>
|
||||
#include <wx/imaglist.h>
|
||||
#include "sergdi.h"
|
||||
|
||||
IMPLEMENT_SERIAL_CLASS(wxBitmap, wxObject)
|
||||
@@ -28,6 +29,7 @@ IMPLEMENT_SERIAL_CLASS(wxColour, wxGDIObject)
|
||||
IMPLEMENT_SERIAL_CLASS(wxFont, wxGDIObject)
|
||||
IMPLEMENT_SERIAL_CLASS(wxPen, wxGDIObject)
|
||||
IMPLEMENT_SERIAL_CLASS(wxBrush, wxGDIObject)
|
||||
IMPLEMENT_SERIAL_CLASS(wxImageList, wxObject)
|
||||
|
||||
IMPLEMENT_ALIAS_SERIAL_CLASS(wxPenList, wxList)
|
||||
IMPLEMENT_ALIAS_SERIAL_CLASS(wxBrushList, wxList)
|
||||
@@ -200,3 +202,29 @@ void WXSERIAL(wxFont)::LoadObject(wxObjectInputStream& s)
|
||||
|
||||
*font = wxFont(psize, face_name, family, style, weight, underlined);
|
||||
}
|
||||
|
||||
void WXSERIAL(wxImageList)::StoreObject(wxObjectOutputStream& s)
|
||||
{
|
||||
wxImageList *list = (wxImageList *)Object();
|
||||
int i;
|
||||
|
||||
if (s.FirstStage()) {
|
||||
for (i=0;i<list->GetImageCount();i++)
|
||||
s.AddChild(list->GetBitmap(i));
|
||||
}
|
||||
|
||||
wxDataOutputStream data_s(s);
|
||||
|
||||
data_s.Write32(list->GetImageCount());
|
||||
}
|
||||
|
||||
void WXSERIAL(wxImageList)::LoadObject(wxObjectInputStream& s)
|
||||
{
|
||||
int i, count;
|
||||
wxImageList *list = (wxImageList *)Object();
|
||||
wxDataInputStream data_s(s);
|
||||
|
||||
count = data_s.Read32();
|
||||
for (i=0;i<count;i++)
|
||||
list->Add(*((wxBitmap *)s.GetChild(i)));
|
||||
}
|
||||
|
@@ -25,6 +25,7 @@ DECLARE_SERIAL_CLASS(wxColour, wxGDIObject)
|
||||
DECLARE_SERIAL_CLASS(wxFont, wxGDIObject)
|
||||
DECLARE_SERIAL_CLASS(wxPen, wxGDIObject)
|
||||
DECLARE_SERIAL_CLASS(wxBrush, wxGDIObject)
|
||||
DECLARE_SERIAL_CLASS(wxImageList, wxObject)
|
||||
|
||||
//DECLARE_SERIAL_CLASS(wxSize, wxObject)
|
||||
//DECLARE_SERIAL_CLASS(wxRealPoint, wxObject)
|
||||
|
@@ -22,19 +22,26 @@
|
||||
#include <wx/frame.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/menu.h>
|
||||
#include <wx/dialog.h>
|
||||
#include <wx/serbase.h>
|
||||
#include <wx/statusbr.h>
|
||||
#include <wx/mdi.h>
|
||||
#include "serwnd.h"
|
||||
|
||||
|
||||
IMPLEMENT_SERIAL_CLASS(wxWindow, wxObject)
|
||||
IMPLEMENT_SERIAL_CLASS(wxIndividualLayoutConstraint, wxObject)
|
||||
IMPLEMENT_SERIAL_CLASS(wxLayoutConstraints, wxObject)
|
||||
IMPLEMENT_ALIAS_SERIAL_CLASS(wxValidator, wxObject)
|
||||
IMPLEMENT_SERIAL_CLASS(wxFrame, wxWindow)
|
||||
IMPLEMENT_SERIAL_CLASS(wxPanel, wxWindow)
|
||||
//IMPLEMENT_SERIAL_CLASS(wxDialog, wxWindow)
|
||||
IMPLEMENT_SERIAL_CLASS(wxDialog, wxWindow)
|
||||
IMPLEMENT_SERIAL_CLASS(wxMenuBar, wxWindow)
|
||||
IMPLEMENT_SERIAL_CLASS(wxMenuItem, wxObject)
|
||||
IMPLEMENT_SERIAL_CLASS(wxMenu, wxObject)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void WXSERIAL(wxWindow)::StoreObject(wxObjectOutputStream& s)
|
||||
{
|
||||
wxWindow *win_object = (wxWindow *)Object();
|
||||
@@ -42,8 +49,13 @@ void WXSERIAL(wxWindow)::StoreObject(wxObjectOutputStream& s)
|
||||
|
||||
if (s.FirstStage()) {
|
||||
s.AddChild(win_object->GetConstraints());
|
||||
// s.AddChild(&(win_object->GetDefaultBackgroundColour()));
|
||||
// s.AddChild(&(win_object->GetDefaultForegroundColour()));
|
||||
s.AddChild(win_object->GetValidator());
|
||||
|
||||
// BAD HACK, but I don't have access to the internal variable of wxWindow.
|
||||
m_bg_colour = win_object->GetDefaultBackgroundColour();
|
||||
m_fg_colour = win_object->GetDefaultForegroundColour();
|
||||
s.AddChild(&m_bg_colour);
|
||||
s.AddChild(&m_fg_colour);
|
||||
s.AddChild(win_object->GetFont());
|
||||
while (node) {
|
||||
s.AddChild(node->Data());
|
||||
@@ -95,15 +107,16 @@ void WXSERIAL(wxWindow)::LoadObject(wxObjectInputStream& s)
|
||||
|
||||
/* I assume we will never create raw wxWindow object */
|
||||
|
||||
// This will be done by wxLayoutConstraints, as we need an initialized object.
|
||||
// win_object->SetConstraints((wxLayoutConstraints *)s.GetChild(0));
|
||||
// win_object->SetDefaultBackgroundColour(*((wxColour *)s.GetChild(1)));
|
||||
// win_object->SetDefaultForegroundColour(*((wxColour *)s.GetChild(2)));
|
||||
win_object->SetFont(*((wxFont *)s.GetChild(1)));
|
||||
m_validator = (wxValidator *)s.GetChild(1);
|
||||
win_object->SetDefaultBackgroundColour(*((wxColour *)s.GetChild(2)));
|
||||
win_object->SetDefaultForegroundColour(*((wxColour *)s.GetChild(3)));
|
||||
win_object->SetFont(*((wxFont *)s.GetChild(4)));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void WXSERIAL(wxIndividualLayoutConstraint)::StoreObject
|
||||
(wxObjectOutputStream& s)
|
||||
{
|
||||
@@ -141,6 +154,8 @@ void WXSERIAL(wxIndividualLayoutConstraint)::
|
||||
lay_object->otherEdge = (wxEdge)data_s.Read8();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void WXSERIAL(wxLayoutConstraints)::StoreObject(wxObjectOutputStream& s)
|
||||
{
|
||||
wxLayoutConstraints *lay_object = (wxLayoutConstraints *)Object();
|
||||
@@ -188,6 +203,8 @@ void WXSERIAL(wxLayoutConstraints)::LoadObject(wxObjectInputStream& s)
|
||||
((wxWindow *)s.GetParent())->SetConstraints(lay_object);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void WXSERIAL(wxFrame)::StoreObject(wxObjectOutputStream& s)
|
||||
{
|
||||
wxFrame *frame = (wxFrame *)Object();
|
||||
@@ -222,12 +239,15 @@ void WXSERIAL(wxFrame)::LoadObject(wxObjectInputStream& s)
|
||||
wxDataInputStream data_s(s);
|
||||
|
||||
frame->SetMenuBar(mbar);
|
||||
frame->Create(m_parent, m_id, m_title, wxPoint(m_x, m_y), wxSize(m_w, m_h),
|
||||
m_style, m_name);
|
||||
if (frame->GetClassInfo() == CLASSINFO(wxFrame))
|
||||
frame->Create(m_parent, m_id, m_title, wxPoint(m_x, m_y),
|
||||
wxSize(m_w, m_h), m_style, m_name);
|
||||
|
||||
frame->CreateStatusBar(data_s.Read8());
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void WXSERIAL(wxMenuBar)::StoreObject(wxObjectOutputStream& s)
|
||||
{
|
||||
wxMenuBar *mbar = (wxMenuBar *)Object();
|
||||
@@ -263,6 +283,8 @@ void WXSERIAL(wxMenuBar)::LoadObject(wxObjectInputStream& s)
|
||||
// WXSERIAL(wxWindow)::LoadObject(s);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void WXSERIAL(wxMenu)::StoreObject(wxObjectOutputStream& s)
|
||||
{
|
||||
wxMenu *menu = (wxMenu *)Object();
|
||||
@@ -293,6 +315,8 @@ void WXSERIAL(wxMenu)::LoadObject(wxObjectInputStream& s)
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void WXSERIAL(wxMenuItem)::StoreObject(wxObjectOutputStream& s)
|
||||
{
|
||||
wxMenuItem *item = (wxMenuItem *)Object();
|
||||
@@ -324,6 +348,8 @@ void WXSERIAL(wxMenuItem)::LoadObject(wxObjectInputStream& s)
|
||||
item->SetSubMenu( (wxMenu *)s.GetChild(0) );
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void WXSERIAL(wxPanel)::StoreObject(wxObjectOutputStream& s)
|
||||
{
|
||||
WXSERIAL(wxWindow)::StoreObject(s);
|
||||
@@ -336,3 +362,48 @@ void WXSERIAL(wxPanel)::LoadObject(wxObjectInputStream& s)
|
||||
((wxPanel *)Object())->Create(m_parent, m_id, wxPoint(m_x, m_y),
|
||||
wxSize(m_w, m_h), m_style, m_name);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void WXSERIAL(wxDialog)::StoreObject(wxObjectOutputStream& s)
|
||||
{
|
||||
WXSERIAL(wxWindow)::StoreObject(s);
|
||||
}
|
||||
|
||||
void WXSERIAL(wxDialog)::LoadObject(wxObjectInputStream& s)
|
||||
{
|
||||
WXSERIAL(wxWindow)::LoadObject(s);
|
||||
|
||||
((wxDialog *)Object())->Create(m_parent, m_id, m_title, wxPoint(m_x, m_y),
|
||||
wxSize(m_w, m_h), m_style, m_name);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void WXSERIAL(wxMDIParentFrame)::StoreObject(wxObjectOutputStream& s)
|
||||
{
|
||||
wxMDIParentFrame *frame = (wxMDIParentFrame *)Object();
|
||||
|
||||
if (s.FirstStage()) {
|
||||
s.AddChild(frame->GetClientWindow());
|
||||
WXSERIAL(wxMDIParentFrame)::StoreObject(s);
|
||||
return;
|
||||
}
|
||||
|
||||
WXSERIAL(wxMDIParentFrame)::StoreObject(s);
|
||||
}
|
||||
|
||||
void WXSERIAL(wxMDIParentFrame)::LoadObject(wxObjectInputStream& s)
|
||||
{
|
||||
wxMDIParentFrame *frame = (wxMDIParentFrame *)Object();
|
||||
wxMDIClientWindow *client;
|
||||
|
||||
client = (wxMDIClientWindow *) s.GetChild(0);
|
||||
s.RemoveChildren(1);
|
||||
|
||||
frame->Create(m_parent, m_id, m_title, wxPoint(m_x, m_y),
|
||||
wxSize(m_w, m_h), m_style, m_name);
|
||||
// client->CreateClient(this, style_client);
|
||||
|
||||
WXSERIAL(wxFrame)::LoadObject(s);
|
||||
}
|
||||
|
@@ -35,16 +35,20 @@ class WXSERIAL(wxWindow) : public WXSERIAL(wxObject)
|
||||
wxWindowID m_id;
|
||||
wxString m_name, m_title, m_label;
|
||||
wxWindow *m_parent;
|
||||
wxValidator *m_validator;
|
||||
wxColour m_bg_colour, m_fg_colour;
|
||||
long m_style;
|
||||
};
|
||||
|
||||
DECLARE_SERIAL_CLASS(wxIndividualLayoutConstraint, wxObject)
|
||||
DECLARE_SERIAL_CLASS(wxLayoutConstraints, wxObject)
|
||||
DECLARE_ALIAS_SERIAL_CLASS(wxValidator, wxObject)
|
||||
DECLARE_SERIAL_CLASS(wxFrame, wxWindow)
|
||||
DECLARE_SERIAL_CLASS(wxPanel, wxWindow)
|
||||
//DECLARE_SERIAL_CLASS(wxDialog, wxWindow)
|
||||
DECLARE_SERIAL_CLASS(wxDialog, wxWindow)
|
||||
DECLARE_SERIAL_CLASS(wxMenuBar, wxWindow)
|
||||
DECLARE_SERIAL_CLASS(wxMenuItem, wxObject)
|
||||
DECLARE_SERIAL_CLASS(wxMenu, wxObject)
|
||||
DECLARE_SERIAL_CLASS(wxMDIParentFrame, wxFrame)
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user