wxAUI: fixed pane saving design thinko

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40323 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Alex Bligh
2006-07-25 13:16:41 +00:00
parent e8427971f6
commit 1320116514
2 changed files with 59 additions and 60 deletions

View File

@@ -429,7 +429,7 @@ public:
bool DetachPane(wxWindow* window); bool DetachPane(wxWindow* window);
wxString SavePaneInfo(wxPaneInfo& pane); wxString SavePaneInfo(wxPaneInfo& pane);
wxString LoadPaneInfo(wxString pane_part, wxPaneInfo &pane); void LoadPaneInfo(wxString pane_part, wxPaneInfo &pane);
wxString SavePerspective(); wxString SavePerspective();

View File

@@ -958,66 +958,68 @@ wxString wxFrameManager::SavePaneInfo(wxPaneInfo& pane)
return result; return result;
} }
// Load a "pane" with the pane infor settings in pane_part; return the remainder of the // Load a "pane" with the pane infor settings in pane_part
// string void wxFrameManager::LoadPaneInfo(wxString pane_part, wxPaneInfo &pane)
wxString wxFrameManager::LoadPaneInfo(wxString pane_part, wxPaneInfo &pane)
{ {
// replace escaped characters so we can // replace escaped characters so we can
// split up the string easily // split up the string easily
pane_part.Replace(wxT("\\|"), wxT("\a")); pane_part.Replace(wxT("\\|"), wxT("\a"));
pane_part.Replace(wxT("\\;"), wxT("\b")); pane_part.Replace(wxT("\\;"), wxT("\b"));
wxString val_part = pane_part.BeforeFirst(wxT(';')); while(1)
pane_part = pane_part.AfterFirst(wxT(';')); {
wxString val_name = val_part.BeforeFirst(wxT('=')); wxString val_part = pane_part.BeforeFirst(wxT(';'));
wxString value = val_part.AfterFirst(wxT('=')); pane_part = pane_part.AfterFirst(wxT(';'));
val_name.MakeLower(); wxString val_name = val_part.BeforeFirst(wxT('='));
val_name.Trim(true); wxString value = val_part.AfterFirst(wxT('='));
val_name.Trim(false); val_name.MakeLower();
value.Trim(true); val_name.Trim(true);
value.Trim(false); val_name.Trim(false);
value.Trim(true);
if (val_name.empty()) value.Trim(false);
return wxEmptyString;
if (val_name.empty())
if (val_name == wxT("name")) break;
pane.name = value;
else if (val_name == wxT("caption")) if (val_name == wxT("name"))
pane.caption = value; pane.name = value;
else if (val_name == wxT("state")) else if (val_name == wxT("caption"))
pane.state = (unsigned int)wxAtoi(value.c_str()); pane.caption = value;
else if (val_name == wxT("dir")) else if (val_name == wxT("state"))
pane.dock_direction = wxAtoi(value.c_str()); pane.state = (unsigned int)wxAtoi(value.c_str());
else if (val_name == wxT("layer")) else if (val_name == wxT("dir"))
pane.dock_layer = wxAtoi(value.c_str()); pane.dock_direction = wxAtoi(value.c_str());
else if (val_name == wxT("row")) else if (val_name == wxT("layer"))
pane.dock_row = wxAtoi(value.c_str()); pane.dock_layer = wxAtoi(value.c_str());
else if (val_name == wxT("pos")) else if (val_name == wxT("row"))
pane.dock_pos = wxAtoi(value.c_str()); pane.dock_row = wxAtoi(value.c_str());
else if (val_name == wxT("prop")) else if (val_name == wxT("pos"))
pane.dock_proportion = wxAtoi(value.c_str()); pane.dock_pos = wxAtoi(value.c_str());
else if (val_name == wxT("bestw")) else if (val_name == wxT("prop"))
pane.best_size.x = wxAtoi(value.c_str()); pane.dock_proportion = wxAtoi(value.c_str());
else if (val_name == wxT("besth")) else if (val_name == wxT("bestw"))
pane.best_size.y = wxAtoi(value.c_str()); pane.best_size.x = wxAtoi(value.c_str());
else if (val_name == wxT("minw")) else if (val_name == wxT("besth"))
pane.min_size.x = wxAtoi(value.c_str()); pane.best_size.y = wxAtoi(value.c_str());
else if (val_name == wxT("minh")) else if (val_name == wxT("minw"))
pane.min_size.y = wxAtoi(value.c_str()); pane.min_size.x = wxAtoi(value.c_str());
else if (val_name == wxT("maxw")) else if (val_name == wxT("minh"))
pane.max_size.x = wxAtoi(value.c_str()); pane.min_size.y = wxAtoi(value.c_str());
else if (val_name == wxT("maxh")) else if (val_name == wxT("maxw"))
pane.max_size.y = wxAtoi(value.c_str()); pane.max_size.x = wxAtoi(value.c_str());
else if (val_name == wxT("floatx")) else if (val_name == wxT("maxh"))
pane.floating_pos.x = wxAtoi(value.c_str()); pane.max_size.y = wxAtoi(value.c_str());
else if (val_name == wxT("floaty")) else if (val_name == wxT("floatx"))
pane.floating_pos.y = wxAtoi(value.c_str()); pane.floating_pos.x = wxAtoi(value.c_str());
else if (val_name == wxT("floatw")) else if (val_name == wxT("floaty"))
pane.floating_size.x = wxAtoi(value.c_str()); pane.floating_pos.y = wxAtoi(value.c_str());
else if (val_name == wxT("floath")) else if (val_name == wxT("floatw"))
pane.floating_size.y = wxAtoi(value.c_str()); pane.floating_size.x = wxAtoi(value.c_str());
else { else if (val_name == wxT("floath"))
wxFAIL_MSG(wxT("Bad Perspective String")); pane.floating_size.y = wxAtoi(value.c_str());
else {
wxFAIL_MSG(wxT("Bad Perspective String"));
}
} }
// replace escaped characters so we can // replace escaped characters so we can
@@ -1029,7 +1031,7 @@ wxString wxFrameManager::LoadPaneInfo(wxString pane_part, wxPaneInfo &pane)
pane_part.Replace(wxT("\a"), wxT("|")); pane_part.Replace(wxT("\a"), wxT("|"));
pane_part.Replace(wxT("\b"), wxT(";")); pane_part.Replace(wxT("\b"), wxT(";"));
return pane_part; return;
} }
@@ -1133,10 +1135,7 @@ bool wxFrameManager::LoadPerspective(const wxString& layout, bool update)
pane_part.Replace(wxT("\a"), wxT("|")); pane_part.Replace(wxT("\a"), wxT("|"));
pane_part.Replace(wxT("\b"), wxT(";")); pane_part.Replace(wxT("\b"), wxT(";"));
while (!pane_part.empty()) LoadPaneInfo(pane_part, pane);
{
pane_part = LoadPaneInfo(pane_part, pane);
}
wxPaneInfo& p = GetPane(pane.name); wxPaneInfo& p = GetPane(pane.name);
if (!p.IsOk()) if (!p.IsOk())