various bugfixes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8823 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík 2000-11-25 23:14:27 +00:00
parent 2f34c1a97e
commit 9354814833
2 changed files with 33 additions and 26 deletions

View File

@ -315,6 +315,19 @@ void EditorFrame::RefreshTree()
static void RecursivelyExpand(wxTreeCtrl *t, wxTreeItemId item)
{
t->Expand(item);
long cookie;
wxTreeItemId id = t->GetFirstChild(item, cookie);
while (id.IsOk())
{
RecursivelyExpand(t, id);
id = t->GetNextChild(item, cookie);
}
}
bool EditorFrame::SelectNode(wxXmlNode *node, wxTreeItemId *root) bool EditorFrame::SelectNode(wxXmlNode *node, wxTreeItemId *root)
{ {
if (root == NULL) if (root == NULL)
@ -335,14 +348,16 @@ bool EditorFrame::SelectNode(wxXmlNode *node, wxTreeItemId *root)
nd = (dt) ? dt->Node : NULL; nd = (dt) ? dt->Node : NULL;
if (nd == node) if (nd == node)
{ {
RecursivelyExpand(m_TreeCtrl, *root);
m_TreeCtrl->SelectItem(item); m_TreeCtrl->SelectItem(item);
m_TreeCtrl->EnsureVisible(item); m_TreeCtrl->EnsureVisible(item);
return TRUE; return TRUE;
} }
if (m_TreeCtrl->ItemHasChildren(item) && SelectNode(node, &item)) if (m_TreeCtrl->ItemHasChildren(item) && SelectNode(node, &item))
return TRUE; return TRUE;
item = m_TreeCtrl->GetNextChild(*root, cookie); item = m_TreeCtrl->GetNextChild(*root, cookie);
} }
return FALSE; return FALSE;
} }
@ -391,18 +406,6 @@ void EditorFrame::NotifyChanged(int change_type)
static void RecursivelyExpand(wxTreeCtrl *t, wxTreeItemId item)
{
t->Expand(item);
long cookie;
wxTreeItemId id = t->GetFirstChild(item, cookie);
while (id.IsOk())
{
RecursivelyExpand(t, id);
id = t->GetNextChild(item, cookie);
}
}
void EditorFrame::OnTreeSel(wxTreeEvent& event) void EditorFrame::OnTreeSel(wxTreeEvent& event)
{ {
XmlTreeData *dt = (XmlTreeData*)(m_TreeCtrl->GetItemData(event.GetItem())); XmlTreeData *dt = (XmlTreeData*)(m_TreeCtrl->GetItemData(event.GetItem()));

View File

@ -24,6 +24,7 @@
#include "xmlhelpr.h" #include "xmlhelpr.h"
#include "editor.h" #include "editor.h"
#include "preview.h" #include "preview.h"
#include "nodehnd.h"
BEGIN_EVENT_TABLE(PropEditCtrlTxt, PropEditCtrl) BEGIN_EVENT_TABLE(PropEditCtrlTxt, PropEditCtrl)
@ -166,7 +167,8 @@ class PropEditCtrlCoordXY : public PropEditCtrlInt
if (m_c[1].IsEmpty()) m_c[1] = _T("-1"); if (m_c[1].IsEmpty()) m_c[1] = _T("-1");
wxString s; wxString s;
s << m_c[0] << _T(',') << m_c[1]; s << m_c[0] << _T(',') << m_c[1];
if (m_dlg) s << _T('d'); wxString prev = XmlReadValue(GetNode(), m_PropInfo->Name);
if (prev[prev.Len()-1] == _T('d')) s << _T('d');
XmlWriteValue(GetNode(), m_PropInfo->Name, s); XmlWriteValue(GetNode(), m_PropInfo->Name, s);
m_TreeCtrl->SetItemBold(m_TreeCtrl->GetParent(m_TreeItem), TRUE); m_TreeCtrl->SetItemBold(m_TreeCtrl->GetParent(m_TreeItem), TRUE);
} }
@ -199,7 +201,6 @@ class PropEditCtrlCoordXY : public PropEditCtrlInt
protected: protected:
wxString m_c[2]; wxString m_c[2];
bool m_dlg;
int m_which; int m_which;
}; };
@ -213,7 +214,7 @@ class PropEditCtrlCoordDlg : public PropEditCtrlBool
virtual void ReadValue() virtual void ReadValue()
{ {
wxString s = XmlReadValue(GetNode(), m_PropInfo->Name); wxString s = XmlReadValue(GetNode(), m_PropInfo->Name);
if (s.IsEmpty()) m_Choice->SetSelection(0); if (s.IsEmpty()) m_Choice->SetSelection(1);
else if (s[s.Length()-1] == _T('d')) else if (s[s.Length()-1] == _T('d'))
m_Choice->SetSelection(1); m_Choice->SetSelection(1);
else else
@ -232,7 +233,9 @@ class PropEditCtrlCoordDlg : public PropEditCtrlBool
{ {
PropertyInfo *pi = &(((PETreeData*)m_TreeCtrl->GetItemData(ti))->PropInfo); PropertyInfo *pi = &(((PETreeData*)m_TreeCtrl->GetItemData(ti))->PropInfo);
wxString s = XmlReadValue(GetNode(), pi->Name); wxString s = XmlReadValue(GetNode(), pi->Name);
if (s.IsEmpty() || s[s.Length()-1] != _T('d')) if (s.IsEmpty())
return _("true");
else if (s[s.Length()-1] != _T('d'))
return _("false"); return _("false");
else else
return _("true"); return _("true");
@ -356,10 +359,12 @@ wxTreeItemId PropEditCtrlDim::CreateTreeEntry(wxTreeItemId parent, const Propert
// --------------------- PropEditCtrlXMLID ----------------------------- // --------------------- PropEditCtrlXMLID -----------------------------
#define REAL_NODE (NodeHandler::Find(GetNode())->GetRealNode(GetNode()))
void PropEditCtrlXMLID::ReadValue() void PropEditCtrlXMLID::ReadValue()
{ {
m_TextCtrl->SetValue(GetNode()->GetPropVal(_T("name"), wxEmptyString)); m_TextCtrl->SetValue(REAL_NODE->GetPropVal(_T("name"), wxEmptyString));
} }
@ -369,8 +374,8 @@ void PropEditCtrlXMLID::WriteValue()
wxString s =m_TextCtrl->GetValue(); wxString s =m_TextCtrl->GetValue();
if (s.IsEmpty()) s = _T("-1"); if (s.IsEmpty()) s = _T("-1");
GetNode()->DeleteProperty(_T("name")); REAL_NODE->DeleteProperty(_T("name"));
GetNode()->AddProperty(_T("name"), s); REAL_NODE->AddProperty(_T("name"), s);
m_TreeCtrl->SetItemBold(m_TreeItem, TRUE); m_TreeCtrl->SetItemBold(m_TreeItem, TRUE);
EditorFrame::Get()->NotifyChanged(CHANGED_TREE_SELECTED); EditorFrame::Get()->NotifyChanged(CHANGED_TREE_SELECTED);
@ -381,7 +386,7 @@ void PropEditCtrlXMLID::WriteValue()
void PropEditCtrlXMLID::Clear() void PropEditCtrlXMLID::Clear()
{ {
EndEdit(); EndEdit();
GetNode()->DeleteProperty(_T("name")); REAL_NODE->DeleteProperty(_T("name"));
m_TreeCtrl->SetItemBold(m_TreeItem, FALSE); m_TreeCtrl->SetItemBold(m_TreeItem, FALSE);
EditorFrame::Get()->NotifyChanged(CHANGED_TREE_SELECTED); EditorFrame::Get()->NotifyChanged(CHANGED_TREE_SELECTED);
} }
@ -425,16 +430,15 @@ void PropEditCtrlXMLID::OnDetails()
wxString PropEditCtrlXMLID::GetValueAsText(wxTreeItemId ti) wxString PropEditCtrlXMLID::GetValueAsText(wxTreeItemId ti)
{ {
return GetNode()->GetPropVal(_T("name"), wxEmptyString); return REAL_NODE->GetPropVal(_T("name"), wxEmptyString);
} }
bool PropEditCtrlXMLID::IsPresent(const PropertyInfo& pinfo) bool PropEditCtrlXMLID::IsPresent(const PropertyInfo& pinfo)
{ {
return GetNode()->HasProp(_T("name")); return REAL_NODE->HasProp(_T("name"));
} }
#undef REAL_NODE