+ WxBlackBox::WeakPointer mBox;
+ DECLARE_EVENT_TABLE();
+
+ };
+
+ BEGIN_EVENT_TABLE(WxFrame, wxFrame)
+ // EVT_CLOSE(WxFrame::OnCloseWindow)
+ END_EVENT_TABLE();
+ //==========================================Window ========================
+
+ //==================================================================
+ WxFrame::WxFrame(WxBlackBox::Pointer b,
+ wxWindow *parent,
+ wxString title,
+ wxSize size)
+ :
+ wxFrame( parent,
+ -1,
+ title,
+ wxDefaultPosition,
+ size,
+ wxRESIZE_BORDER |
+ wxSYSTEM_MENU |
+ wxCLOSE_BOX |
+ wxMAXIMIZE_BOX |
+ wxMINIMIZE_BOX |
+ wxCAPTION
+ ),
+ mBox(b)
+ {
+ bbtkDebugMessage("widget",9,"["<<b->bbGetName()<<"] WxFrame()"
+ <<std::endl);
+ Wx::IncNbWindowsAlive();
+ b->bbSetWindow(this);
+ // Insert the widget into the window
+ wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
+ b->bbUserCreateWidget(this);
+ wxWindow* widget = b->bbGetOutputWidget();
+ sizer->Add( widget, 1, wxALL|wxGROW, 2);
+ SetSizer(sizer);
+ Layout();
+ }
+ //==================================================================
+ //==================================================================
+ WxFrame::~WxFrame()
+ {
+
+printf("EED WxFrame::~WxFrame\n");
+
+ if (mBox.lock())
+ {
+ bbtkDebugMessage("widget",9,"["<<mBox.lock()->bbGetName()
+ <<"] $$$$$$$$$$$$$$$$$$$ ~WxFrame()"
+ <<std::endl);
+ } else {
+ bbtkDebugMessage("widget",9,"[DEAD] $$$$$$$$$$$$$$$$$$$$$ ~WxFrame()"<<std::endl);
+ //bbtkDebugMessage("widget",9,"WxFrame::~WxFrame()"<<std::endl);
+ } // if mBox.lock()
+ if (mBox.lock())
+ {
+ mBox.lock()->bbSetWindow(0);
+ } // if mBox.lock()
+ Wx::DecNbWindowsAlive();
+ }
+ //==================================================================
+ //==================================================================
+ void WxFrame::OnCloseWindow(wxCloseEvent& event)
+ {
+ if (mBox.lock())
+ bbtkDebugMessage("widget",9,"["<<mBox.lock()->bbGetName()
+ <<"] $$$$$$$$$$$$$$$ WxFrame::OnCloseWindow()"<<std::endl);
+ else
+ bbtkDebugMessage("widget",9,"[DEAD] WxFrame::OnCloseWindow()"
+ <<std::endl);
+ if (mBox.lock()) mBox.lock()->bbSetWindow(0);
+ Wx::DecNbWindowsAlive();
+
+ bbtkDebugMessage("widget",9,
+ "$$$$$$$$$$$$$$$ Destroy !!!"<<std::endl);
+ // this->Destroy();
+ }
+ //==================================================================
+
+ //====================================================SetWin=====================
+ // WxDialog
+ //=========================================================================
+
+ //==================================================================
+ // Dialog window which is modal
+ class BBTK_EXPORT WxDialog : public wxDialog
+ {
+ public:
+ WxDialog(WxBlackBox::Pointer box,
+ wxWindow *parent,
+ wxString title,
+ wxSize size);
+ ~WxDialog();
+ void OnCloseWindow(wxCloseEvent& event);