From: <da...@us...> - 2008-01-27 23:10:32
|
Revision: 2707 http://hugin.svn.sourceforge.net/hugin/?rev=2707&view=rev Author: dangelo Date: 2008-01-27 15:10:30 -0800 (Sun, 27 Jan 2008) Log Message: ----------- Tried to fix layout problems in CPEditor panel. Started to use custom XRC handlers instead of unknown class in XRC (currently only CPEditorPanel, CPImageCtrl, OptimizePanel). Seems to work fine on wxGTK. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp hugin/trunk/src/hugin1/hugin/CPEditorPanel.h hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp hugin/trunk/src/hugin1/hugin/CPImageCtrl.h hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp hugin/trunk/src/hugin1/hugin/OptimizePanel.h hugin/trunk/src/hugin1/hugin/huginApp.cpp hugin/trunk/src/hugin1/hugin/xrc/cp_editor_panel.xrc hugin/trunk/src/hugin1/hugin/xrc/main_frame.xrc Modified: hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp 2008-01-27 19:57:29 UTC (rev 2706) +++ hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp 2008-01-27 23:10:30 UTC (rev 2707) @@ -111,18 +111,46 @@ EVT_BUTTON(XRCID("cp_editor_previous_img"), CPEditorPanel::OnPrevImg) EVT_BUTTON(XRCID("cp_editor_next_img"), CPEditorPanel::OnNextImg) EVT_BUTTON(XRCID("cp_editor_finetune_button"), CPEditorPanel::OnFineTuneButton) - EVT_SIZE(CPEditorPanel::OnSize) +// EVT_SIZE(CPEditorPanel::OnSize) END_EVENT_TABLE() -CPEditorPanel::CPEditorPanel(wxWindow * parent, PT::Panorama * pano) - : cpCreationState(NO_POINT), m_pano(pano), m_leftImageNr(UINT_MAX), - m_rightImageNr(UINT_MAX), m_listenToPageChange(true), m_detailZoomFactor(1), - m_selectedPoint(UINT_MAX), m_restoreLayoutOnResize(false), - m_leftRot(CPImageCtrl::ROT0), m_rightRot(CPImageCtrl::ROT0) +CPEditorPanel::CPEditorPanel() { + DEBUG_TRACE("**********************"); + m_pano = 0; + +} +bool CPEditorPanel::Create(wxWindow* parent, wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxString& name) +{ + DEBUG_TRACE(" Create called *************"); + if (! wxPanel::Create(parent, id, pos, size, style, name) ) { + return false; + } + // for debugging: + SetBackgroundColour(wxTheColourDatabase->Find(wxT("KHAKI"))); + + cpCreationState = NO_POINT; + m_leftImageNr=UINT_MAX; + m_rightImageNr=UINT_MAX; + m_listenToPageChange=true; + m_detailZoomFactor=1; + m_selectedPoint=UINT_MAX; + m_restoreLayoutOnResize=false; + m_leftRot=CPImageCtrl::ROT0; + m_rightRot=CPImageCtrl::ROT0; + DEBUG_TRACE(""); - wxXmlResource::Get()->LoadPanel(this, parent, wxT("cp_editor_panel")); + wxXmlResource::Get()->LoadPanel(this, wxT("cp_editor_panel")); + wxPanel * panel = XRCCTRL(*this, "cp_editor_panel", wxPanel); + panel->SetBackgroundColour(wxTheColourDatabase->Find(wxT("BLUE"))); + wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL ); + topsizer->Add(panel, 1, wxEXPAND, 0); + #ifdef HUGIN_CP_IMG_TAB wxPoint tabsz(1,14); tabsz = ConvertDialogToPixels(tabsz); @@ -132,12 +160,18 @@ m_leftTabs->SetSizeHints(1,tabH,1000,tabH,-1,-1); #endif #ifdef HUGIN_CP_IMG_CHOICE - m_leftChoice = XRCCTRL(*this, "cp_editor_left_choice", wxChoice); + m_leftChoice = XRCCTRL(*this, "cp_editor_left_choice", wxChoice); #endif +#if 0 m_leftImg = new CPImageCtrl(this); wxXmlResource::Get()->AttachUnknownControl(wxT("cp_editor_left_img"), m_leftImg); +#else + m_leftImg = XRCCTRL(*this, "cp_editor_left_img", CPImageCtrl); + assert(m_leftImg); + m_leftImg->Init(this); +#endif // right image #ifdef HUGIN_CP_IMG_TAB @@ -145,11 +179,19 @@ m_rightTabs->SetSizeHints(1,tabH,1000,tabH,-1,-1); #endif #ifdef HUGIN_CP_IMG_CHOICE - m_rightChoice = XRCCTRL(*this, "cp_editor_right_choice", wxChoice); + m_rightChoice = XRCCTRL(*this, "cp_editor_right_choice", wxChoice); #endif - m_rightImg = new CPImageCtrl(this); - wxXmlResource::Get()->AttachUnknownControl(wxT("cp_editor_right_img"), - m_rightImg); + +#if 0 + m_rightImg = new CPImageCtrl(this); + wxXmlResource::Get()->AttachUnknownControl(wxT("cp_editor_right_img"), + m_rightImg); +#else + m_rightImg = XRCCTRL(*this, "cp_editor_right_img", CPImageCtrl); + assert(m_rightImg); + m_rightImg->Init(this); +#endif + #ifdef USE_FINETUNEFRAME // setup finetune frame m_fineTuneFrame = new CPFineTuneFrame(this, *pano); @@ -205,72 +247,72 @@ m_estimateCB = XRCCTRL(*this,"cp_editor_auto_estimate", wxCheckBox); DEBUG_ASSERT(m_estimateCB); -#ifdef USE_WX253 - // setup scroll window for the controls under the images - m_cp_ctrls = XRCCTRL(*this, "cp_controls_panel", wxScrolledWindow); - DEBUG_ASSERT(m_cp_ctrls); - m_cp_ctrls->SetSizeHints(20, 20); - m_cp_ctrls->FitInside(); - m_cp_ctrls->SetScrollRate(10, 10); - - // setup splitter between the images. + // setup splitter between images m_cp_splitter_img = XRCCTRL(*this, "cp_editor_panel_img_splitter", wxSplitterWindow); - DEBUG_ASSERT(m_cp_splitter_img); + DEBUG_ASSERT(m_cp_splitter_img); + m_cp_splitter_img->SetSashGravity(0.5); wxPanel * leftWindow = XRCCTRL(*this, "cp_editor_split_img_left", wxPanel); DEBUG_ASSERT(leftWindow); wxPanel * rightWindow = XRCCTRL(*this, "cp_editor_split_img_right", wxPanel); DEBUG_ASSERT(rightWindow); - if ( m_cp_splitter_img->IsSplit() ) { + if (m_cp_splitter_img->IsSplit()) m_cp_splitter_img->Unsplit(); - } - leftWindow->Show(true); - rightWindow->Show(true); -#ifdef USE_WX26x - m_cp_splitter_img->SetSashGravity(0.5); -#endif - m_cp_splitter_img->SplitVertically( leftWindow, rightWindow ); - m_cp_splitter_img->SetMinimumPaneSize(20); + m_cp_splitter_img->SplitVertically(leftWindow, rightWindow, 0); - // setup splitter between images and bottom row. m_cp_splitter = XRCCTRL(*this, "cp_editor_panel_splitter", wxSplitterWindow); - DEBUG_ASSERT(m_cp_splitter); -#endif + DEBUG_ASSERT(m_cp_splitter); + m_cp_splitter->SetSashGravity(0.75); - // apply selection from xrc file - wxCommandEvent dummy; - dummy.SetInt(XRCCTRL(*this,"cp_editor_zoom_box",wxComboBox)->GetSelection()); - OnZoom(dummy); + // setup scroll window for the controls under the images + m_cp_ctrls = XRCCTRL(*this, "cp_controls_panel", wxScrolledWindow); + DEBUG_ASSERT(m_cp_ctrls); + m_cp_ctrls->SetSizeHints(20, 20); + m_cp_ctrls->FitInside(); + m_cp_ctrls->SetScrollRate(10, 10); - wxConfigBase *config = wxConfigBase::Get(); m_autoAddCB->SetValue(config->Read(wxT("/CPEditorPanel/autoAdd"),0l) != 0 ); m_fineTuneCB->SetValue(config->Read(wxT("/CPEditorPanel/fineTune"),1l) != 0 ); m_estimateCB->SetValue(config->Read(wxT("/CPEditorPanel/autoEstimate"),1l) != 0 ); - // disable controls by default - m_cpModeChoice->Disable(); + // disable controls by default + m_cpModeChoice->Disable(); m_addButton->Disable(); m_delButton->Disable(); m_autoAddCB->Disable(); m_fineTuneCB->Disable(); m_estimateCB->Disable(); - XRCCTRL(*this, "cp_editor_finetune_button", wxButton)->Disable(); - XRCCTRL(*this, "cp_editor_zoom_box", wxComboBox)->Disable(); - XRCCTRL(*this, "cp_editor_previous_img", wxButton)->Disable(); - XRCCTRL(*this, "cp_editor_next_img", wxButton)->Disable(); + XRCCTRL(*this, "cp_editor_finetune_button", wxButton)->Disable(); + XRCCTRL(*this, "cp_editor_zoom_box", wxComboBox)->Disable(); + XRCCTRL(*this, "cp_editor_previous_img", wxButton)->Disable(); + XRCCTRL(*this, "cp_editor_next_img", wxButton)->Disable(); #ifdef HUGIN_CP_IMG_CHOICE m_leftChoice->Disable(); m_rightChoice->Disable(); #endif + // apply zoom specified in xrc file + wxCommandEvent dummy; + dummy.SetInt(XRCCTRL(*this,"cp_editor_zoom_box",wxComboBox)->GetSelection()); + OnZoom(dummy); + + SetSizer( topsizer ); + topsizer->SetSizeHints( this ); + + return true; +} + +void CPEditorPanel::Init(PT::Panorama * pano) +{ + m_pano=pano; // observe the panorama m_pano->addObserver(this); + } - CPEditorPanel::~CPEditorPanel() { DEBUG_TRACE("dtor"); @@ -309,7 +351,12 @@ DEBUG_TRACE("dtor end"); } +void CPEditorPanel::RestoreLayoutOnNextResize() +{ +} + + void CPEditorPanel::RestoreLayout() { DEBUG_TRACE(""); @@ -2203,11 +2250,14 @@ DEBUG_TRACE(" size:" << sz.x << "," << sz.y << " client: "<< csz.x << "," << csz.y << " virtual: "<< vsz.x << "," << vsz.y); - Layout(); + //Layout(); + /* if (m_restoreLayoutOnResize) { m_restoreLayoutOnResize = false; RestoreLayout(); } + */ + e.Skip(); } CPImageCtrl::ImageRotation CPEditorPanel::GetRot(double yaw, double pitch, double roll) @@ -2234,3 +2284,34 @@ } return rot; } + +IMPLEMENT_DYNAMIC_CLASS(CPEditorPanel, wxPanel) + +CPEditorPanelXmlHandler::CPEditorPanelXmlHandler() + : wxXmlResourceHandler() +{ + AddWindowStyles(); +} + +wxObject *CPEditorPanelXmlHandler::DoCreateResource() +{ + XRC_MAKE_INSTANCE(cp, CPEditorPanel) + + cp->Create(m_parentAsWindow, + GetID(), + GetPosition(), GetSize(), + GetStyle(wxT("style")), + GetName()); + + SetupWindow( cp); + + return cp; +} + +bool CPEditorPanelXmlHandler::CanHandle(wxXmlNode *node) +{ + return IsOfClass(node, wxT("CPEditorPanel")); +} + +IMPLEMENT_DYNAMIC_CLASS(CPEditorPanelXmlHandler, wxXmlResourceHandler) + Modified: hugin/trunk/src/hugin1/hugin/CPEditorPanel.h =================================================================== --- hugin/trunk/src/hugin1/hugin/CPEditorPanel.h 2008-01-27 19:57:29 UTC (rev 2706) +++ hugin/trunk/src/hugin1/hugin/CPEditorPanel.h 2008-01-27 23:10:30 UTC (rev 2707) @@ -84,8 +84,12 @@ public: /** ctor. */ - CPEditorPanel(wxWindow * parent, PT::Panorama * pano); + CPEditorPanel(); + bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const wxString& name = wxT("panel")); + + void Init(PT::Panorama * pano); + /** dtor. */ virtual ~CPEditorPanel(); @@ -96,12 +100,8 @@ void RestoreLayout(); /// hack to restore the layout on next resize - void RestoreLayoutOnNextResize() - { - m_restoreLayoutOnResize = true; - } + void RestoreLayoutOnNextResize(); - /// set left image void setLeftImage(unsigned int imgNr); /// set right image @@ -315,6 +315,21 @@ // needed for receiving events. DECLARE_EVENT_TABLE(); + + DECLARE_DYNAMIC_CLASS(CPEditorPanel) + }; +/** xrc handler */ +class CPEditorPanelXmlHandler : public wxXmlResourceHandler +{ + DECLARE_DYNAMIC_CLASS(CPEditorPanelXmlHandler) + +public: + CPEditorPanelXmlHandler(); + virtual wxObject *DoCreateResource(); + virtual bool CanHandle(wxXmlNode *node); +}; + + #endif // _CPEDITORPANEL_H Modified: hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp 2008-01-27 19:57:29 UTC (rev 2706) +++ hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp 2008-01-27 23:10:30 UTC (rev 2707) @@ -132,20 +132,25 @@ EVT_TIMER(-1, CPImageCtrl::OnTimer) END_EVENT_TABLE() -CPImageCtrl::CPImageCtrl(CPEditorPanel* parent, wxWindowID id, +bool CPImageCtrl::Create(wxWindow * parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name) - : wxScrolledWindow(parent, id, pos, size, style, name), - selectedPointNr(0), - editState(NO_IMAGE), - scaleFactor(1), fitToWindow(false), - m_showSearchArea(false), m_searchRectWidth(0), - m_showTemplateArea(false), m_templateRectWidth(0), - m_tempZoom(false),m_savedScale(1), m_editPanel(parent), - m_imgRotation(ROT0) { + wxScrolledWindow::Create(parent, id, pos, size, style, name); + selectedPointNr = 0; + editState = NO_IMAGE; + scaleFactor = 1; + fitToWindow = false; + m_showSearchArea = false; + m_searchRectWidth = 0; + m_showTemplateArea = false; + m_templateRectWidth = 0; + m_tempZoom = false; + m_savedScale = 1; + m_editPanel = 0; + m_imgRotation = ROT0; wxString filename; @@ -195,8 +200,15 @@ m_mouseInWindow = false; m_forceMagnifier = false; m_timer.SetOwner(this); + + return true; } +void CPImageCtrl::Init(CPEditorPanel * parent) +{ + m_editPanel = parent; +} + CPImageCtrl::~CPImageCtrl() { DEBUG_TRACE("dtor"); @@ -793,7 +805,11 @@ vector<wxRect>::const_iterator itr; if (m_labelPos.size() == points.size() && m_labelPos.size() > 0) { for(int i=m_labelPos.size()-1; i >= 0; i--) { +#ifdef USE_WX28x if (m_labelPos[i].Inside(mousePos)) { +#else + if (m_labelPos[i].Contains(mousePos)) { +#endif pointNr = i; return KNOWN_POINT_SELECTED; } @@ -1452,3 +1468,32 @@ Scroll( x, y); } +IMPLEMENT_DYNAMIC_CLASS(CPImageCtrl, wxScrolledWindow) + +CPImageCtrlXmlHandler::CPImageCtrlXmlHandler() + : wxXmlResourceHandler() +{ + AddWindowStyles(); +} + +wxObject *CPImageCtrlXmlHandler::DoCreateResource() +{ + XRC_MAKE_INSTANCE(cp, CPImageCtrl) + + cp->Create(m_parentAsWindow, + GetID(), + GetPosition(), GetSize(), + GetStyle(wxT("style")), + GetName()); + + SetupWindow( cp); + + return cp; +} + +bool CPImageCtrlXmlHandler::CanHandle(wxXmlNode *node) +{ + return IsOfClass(node, wxT("CPImageCtrl")); +} + +IMPLEMENT_DYNAMIC_CLASS(CPImageCtrlXmlHandler, wxXmlResourceHandler) Modified: hugin/trunk/src/hugin1/hugin/CPImageCtrl.h =================================================================== --- hugin/trunk/src/hugin1/hugin/CPImageCtrl.h 2008-01-27 19:57:29 UTC (rev 2706) +++ hugin/trunk/src/hugin1/hugin/CPImageCtrl.h 2008-01-27 23:10:30 UTC (rev 2707) @@ -102,17 +102,15 @@ public: /** ctor. */ - CPImageCtrl(CPEditorPanel* parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxHSCROLL | wxVSCROLL, - const wxString& name=wxT("CPImageCtrl")); - - CPImageCtrl() : scaleFactor(1),fitToWindow(false) { } + bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const wxString& name = wxT("panel")); + + void Init(CPEditorPanel * parent); + + /** dtor. */ ~CPImageCtrl(); @@ -431,8 +429,19 @@ wxTimer m_timer; DECLARE_EVENT_TABLE(); + DECLARE_DYNAMIC_CLASS(CPImageCtrl) }; +/** xrc handler */ +class CPImageCtrlXmlHandler : public wxXmlResourceHandler +{ + DECLARE_DYNAMIC_CLASS(CPImageCtrlXmlHandler) +public: + CPImageCtrlXmlHandler(); + virtual wxObject *DoCreateResource(); + virtual bool CanHandle(wxXmlNode *node); +}; + #endif // _CPIMAGECTRL_H Modified: hugin/trunk/src/hugin1/hugin/MainFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2008-01-27 19:57:29 UTC (rev 2706) +++ hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2008-01-27 23:10:30 UTC (rev 2707) @@ -204,11 +204,13 @@ } #ifdef __unix__ + /* splash = new wxSplashScreen(bitmap, wxSPLASH_CENTRE_ON_SCREEN|wxSPLASH_NO_TIMEOUT, 0, NULL, -1, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER|wxSTAY_ON_TOP); + */ #else splash = new wxSplashScreen(bitmap, wxSPLASH_CENTRE_ON_SCREEN|wxSPLASH_NO_TIMEOUT, @@ -220,7 +222,7 @@ wxLogFatalError(_("Fatal installation error\nThe file data/splash.png was not found at:") + huginApp::Get()->GetXRCPath()); abort(); } - splash->Refresh(); + //splash->Refresh(); wxYield(); // save our pointer @@ -300,15 +302,28 @@ // create the custom widget referenced by the main_frame XRC DEBUG_TRACE(""); +#if 1 + cpe = XRCCTRL(*this, "cp_editor_panel_unknown", CPEditorPanel); + assert(cpe); + cpe->Init(&pano); +#else cpe = new CPEditorPanel(this,&pano); wxXmlResource::Get()->AttachUnknownControl(wxT("cp_editor_panel_unknown"), cpe); - +#endif + +#if 1 + opt_panel = XRCCTRL(*this, "optimizer_panel_unknown", OptimizePanel); + assert(opt_panel); + opt_panel->Init(&pano); +#else + opt_panel = XRCCTRL(*this, opt_panel = new OptimizePanel(this, &pano); // create the custom widget referenced by the main_frame XRC DEBUG_TRACE(""); wxXmlResource::Get()->AttachUnknownControl(wxT("optimizer_panel_unknown"), opt_panel); +#endif opt_photo_panel = new OptimizePhotometricPanel(this, &pano); // create the custom widget referenced by the main_frame XRC Modified: hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp 2008-01-27 19:57:29 UTC (rev 2706) +++ hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp 2008-01-27 23:10:30 UTC (rev 2707) @@ -66,13 +66,31 @@ OPT_YRP_B, OPT_YRP_BV, OPT_ALL, OPT_CUSTOM, OPT_END_MARKER}; +OptimizePanel::OptimizePanel() +{ + DEBUG_TRACE(""); +} -OptimizePanel::OptimizePanel(wxWindow * parent, PT::Panorama * pano) - : m_pano(pano) +bool OptimizePanel::Create(wxWindow* parent, wxWindowID id , const wxPoint& pos, const wxSize& size, long style, const wxString& name) { DEBUG_TRACE(""); - wxXmlResource::Get()->LoadPanel(this, parent, wxT("optimize_panel")); + // Not needed here, wxPanel::Create is called by LoadPanel below + if (! wxPanel::Create(parent, id, pos, size, style, name) ) { + return false; + } + // create a sub-panel and load class into it! + + // wxPanel::Create is called in here! + wxXmlResource::Get()->LoadPanel(this, wxT("optimize_panel")); + wxPanel * panel = XRCCTRL(*this, "optimize_panel", wxPanel); + + wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL ); + topsizer->Add(panel, 1, wxEXPAND, 0); + + SetSizer( topsizer ); + topsizer->SetSizeHints( this ); + m_yaw_list = XRCCTRL(*this, "optimizer_yaw_list", wxCheckListBox); m_pitch_list = XRCCTRL(*this, "optimizer_pitch_list", wxCheckListBox); m_roll_list = XRCCTRL(*this, "optimizer_roll_list", wxCheckListBox); @@ -102,6 +120,14 @@ m_mode_cb->Disable(); m_edit_cb->Disable(); + return true; +} + +void OptimizePanel::Init(PT::Panorama * pano) +{ + DEBUG_TRACE(""); + m_pano = pano; + // wxConfigBase * config = wxConfigBase::Get(); // long w = config->Read(wxT("/OptimizerPanel/width"),-1); // long h = config->Read(wxT("/OptimizerPanel/height"),-1); @@ -115,6 +141,7 @@ // observe the panorama m_pano->addObserver(this); + } OptimizePanel::~OptimizePanel() @@ -749,3 +776,35 @@ } m_edit_cb->Enable(mode != OPT_PAIRWISE); } + + +IMPLEMENT_DYNAMIC_CLASS(OptimizePanel, wxPanel) + + +OptimizePanelXmlHandler::OptimizePanelXmlHandler() + : wxXmlResourceHandler() +{ + AddWindowStyles(); +} + +wxObject *OptimizePanelXmlHandler::DoCreateResource() +{ + XRC_MAKE_INSTANCE(cp, OptimizePanel) + + cp->Create(m_parentAsWindow, + GetID(), + GetPosition(), GetSize(), + GetStyle(wxT("style")), + GetName()); + + SetupWindow( cp); + + return cp; +} + +bool OptimizePanelXmlHandler::CanHandle(wxXmlNode *node) +{ + return IsOfClass(node, wxT("OptimizePanel")); +} + +IMPLEMENT_DYNAMIC_CLASS(OptimizePanelXmlHandler, wxXmlResourceHandler) Modified: hugin/trunk/src/hugin1/hugin/OptimizePanel.h =================================================================== --- hugin/trunk/src/hugin1/hugin/OptimizePanel.h 2008-01-27 19:57:29 UTC (rev 2706) +++ hugin/trunk/src/hugin1/hugin/OptimizePanel.h 2008-01-27 23:10:30 UTC (rev 2707) @@ -37,9 +37,15 @@ public: - OptimizePanel(wxWindow * parent, PT::Panorama * pano); + OptimizePanel(); + + /** Delayed creation */ + bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const wxString& name = wxT("panel")); + virtual ~OptimizePanel(); + void Init(PT::Panorama * pano); + /** receives notification about panorama changes */ virtual void panoramaChanged(PT::Panorama & pano); /** receives notification about panorama changes */ @@ -108,7 +114,20 @@ private: DECLARE_EVENT_TABLE() + DECLARE_DYNAMIC_CLASS(OptimizePanel) }; +/** xrc handler */ +class OptimizePanelXmlHandler : public wxXmlResourceHandler +{ + DECLARE_DYNAMIC_CLASS(OptimizePanelXmlHandler) + +public: + OptimizePanelXmlHandler(); + virtual wxObject *DoCreateResource(); + virtual bool CanHandle(wxXmlNode *node); +}; + + #endif // _WXPANOCOMMAND_H Modified: hugin/trunk/src/hugin1/hugin/huginApp.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/huginApp.cpp 2008-01-27 19:57:29 UTC (rev 2706) +++ hugin/trunk/src/hugin1/hugin/huginApp.cpp 2008-01-27 23:10:30 UTC (rev 2707) @@ -34,6 +34,7 @@ #include "hugin/config_defaults.h" #include "hugin/huginApp.h" #include "hugin/PanoPanel.h" +#include "hugin/CPEditorPanel.h" #include "base_wx/PTWXDlg.h" #include "hugin/CommandHistory.h" #include "hugin/wxPanoCommand.h" @@ -185,7 +186,12 @@ InitXmlResource(); #else + // add custom XRC handlers + wxXmlResource::Get()->AddHandler(new OptimizePanelXmlHandler()); + wxXmlResource::Get()->AddHandler(new CPEditorPanelXmlHandler()); + wxXmlResource::Get()->AddHandler(new CPImageCtrlXmlHandler()); + // load XRC files wxXmlResource::Get()->Load(m_xrcPrefix + wxT("crop_panel.xrc")); wxXmlResource::Get()->Load(m_xrcPrefix + wxT("nona_panel.xrc")); wxXmlResource::Get()->Load(m_xrcPrefix + wxT("ptstitcher_panel.xrc")); Modified: hugin/trunk/src/hugin1/hugin/xrc/cp_editor_panel.xrc =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/cp_editor_panel.xrc 2008-01-27 19:57:29 UTC (rev 2706) +++ hugin/trunk/src/hugin1/hugin/xrc/cp_editor_panel.xrc 2008-01-27 23:10:30 UTC (rev 2707) @@ -39,7 +39,7 @@ <border>3</border> </object> <object class="sizeritem"> - <object class="unknown" name="cp_editor_left_img"/> + <object class="CPImageCtrl" name="cp_editor_left_img"/> <option>1</option> <flag>wxALL|wxEXPAND</flag> <border>3</border> @@ -74,7 +74,7 @@ <border>3</border> </object> <object class="sizeritem"> - <object class="unknown" name="cp_editor_right_img"/> + <object class="CPImageCtrl" name="cp_editor_right_img"/> <option>1</option> <flag>wxALL|wxEXPAND</flag> <border>3</border> @@ -301,6 +301,7 @@ </object> </object> <orientation>horizontal</orientation> + <sashpos>-300</sashpos> <style>wxSP_3DSASH|wxSP_NO_XP_THEME|wxSP_LIVE_UPDATE</style> </object> <option>1</option> @@ -309,4 +310,4 @@ </object> <style>wxWANTS_CHARS</style> </object> -</resource> \ No newline at end of file +</resource> Modified: hugin/trunk/src/hugin1/hugin/xrc/main_frame.xrc =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/main_frame.xrc 2008-01-27 19:57:29 UTC (rev 2706) +++ hugin/trunk/src/hugin1/hugin/xrc/main_frame.xrc 2008-01-27 23:10:30 UTC (rev 2707) @@ -35,11 +35,11 @@ </object> <object class="notebookpage"> <label>Control Points</label> - <object class="unknown" name="cp_editor_panel_unknown"/> + <object class="CPEditorPanel" name="cp_editor_panel_unknown"/> </object> <object class="notebookpage"> <label>Optimizer</label> - <object class="unknown" name="optimizer_panel_unknown"/> + <object class="OptimizePanel" name="optimizer_panel_unknown"/> </object> <object class="notebookpage"> <label>Exposure</label> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |