X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fd71308fc89eac2dd212b715eba68a993fa78f53..fd495ab3ea1282ddb8bb0cd0fb79fc758ae5fcee:/utils/dialoged/src/edtree.cpp diff --git a/utils/dialoged/src/edtree.cpp b/utils/dialoged/src/edtree.cpp index 7bcd95b772..26babac2e5 100644 --- a/utils/dialoged/src/edtree.cpp +++ b/utils/dialoged/src/edtree.cpp @@ -38,55 +38,157 @@ #include "reseditr.h" BEGIN_EVENT_TABLE(wxResourceEditorProjectTree, wxTreeCtrl) - EVT_LEFT_DCLICK(wxResourceEditorProjectTree::LeftDClick) - EVT_TREE_SEL_CHANGED(IDC_TREECTRL, wxResourceEditorProjectTree::OnSelChanged) +EVT_LEFT_DCLICK(wxResourceEditorProjectTree::LeftDClick) +//EVT_LEFT_DOWN(wxResourceEditorProjectTree::LeftClick) +EVT_TREE_SEL_CHANGED(IDC_TREECTRL, wxResourceEditorProjectTree::OnSelChanged) END_EVENT_TABLE() wxResourceEditorProjectTree::wxResourceEditorProjectTree(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style): - wxTreeCtrl(parent, id, pos, size, style) + long style): +wxTreeCtrl(parent, id, pos, size, style) { } -void wxResourceEditorProjectTree::LeftDClick(wxMouseEvent& WXUNUSED(event)) +/* +void wxResourceEditorProjectTree::LeftClick(wxMouseEvent &event) { -#if 0 long sel = GetSelection(); if (sel == -1) return; - + if (GetItemData(sel) == 0) + { + event.Skip(); return; + } + + wxItemResource* res = ((wxResourceTreeData *)GetItemData(sel))->GetResource(); - wxItemResource* res = (wxItemResource*) GetItemData(sel); wxString resType(res->GetType()); + + wxResourceEditorFrame *frame = (wxResourceEditorFrame *)wxWindow::GetParent(); + wxResourceManager *manager = frame->manager; + + long selParent = wxTreeCtrl::GetParent(sel); + if (resType != "wxDialog" && resType != "wxDialogBox" && resType != "wxPanel") + { + wxWindow *win = manager->FindWindowForResource(res); + + // Check to see if the item selected in on the current dialog being + // displayed. If not, then we will have to find the items parent dialog + if (!win) + { + // The item is on a dialog other than the one currently being + // shown/worked on, so find the parent dialog, switch to use + // its resource manager, and then find the window in the dialog + wxItemResource* resParent = ((wxResourceTreeData *)GetItemData(selParent))->GetResource(); + wxResourceManager::GetCurrentResourceManager()->Edit(resParent); + win = manager->FindWindowForResource(res); + } +/ * + if (win) + manager->GetCurrentResourceManager()->EditWindow(win); +* / + } +// else +// manager->EditSelectedResource(); + + event.Skip(); + +} // wxResourceEditorProjectTree::LeftClick() +*/ + +void wxResourceEditorProjectTree::LeftDClick(wxMouseEvent& WXUNUSED(event)) +{ + long sel = GetSelection(); + if (sel == -1) return; + + if (GetItemData(sel) == 0) + return; + + wxItemResource* res = ((wxResourceTreeData *)GetItemData(sel))->GetResource(); + + wxString resType(res->GetType()); wxResourceEditorFrame *frame = (wxResourceEditorFrame *)wxWindow::GetParent(); wxResourceManager *manager = frame->manager; - manager->EditSelectedResource(); -#endif -} + long selParent = wxTreeCtrl::GetParent(sel); + + wxWindow *win = NULL; + if (resType != "wxDialog" && resType != "wxDialogBox" && resType != "wxPanel") + { + win = manager->FindWindowForResource(res); + + // Check to see if the item selected in on the current dialog being + // displayed. If not, then we will have to find the items parent dialog + if (!win) + { + // The item is on a dialog other than the one currently being + // shown/worked on, so find the parent dialog, switch to use + // its resource manager, and then find the window in the dialog + wxItemResource* resParent = ((wxResourceTreeData *)GetItemData(selParent))->GetResource(); + wxResourceManager::GetCurrentResourceManager()->Edit(resParent); + win = manager->FindWindowForResource(res); + } + + if (win) + manager->GetCurrentResourceManager()->EditWindow(win); + } + else + { +// manager->EditSelectedResource(); + win = manager->FindWindowForResource(res); + wxResourceManager::GetCurrentResourceManager()->EditWindow(win); + } + + +} // wxResourceEditorProjectTree::LeftDClick() + void wxResourceEditorProjectTree::OnSelChanged(wxTreeEvent& WXUNUSED(event)) { long sel = GetSelection(); if (sel == -1) return; - + if (GetItemData(sel) == 0) return; - + if (m_invalid) return; - - wxItemResource* res = (wxItemResource*) GetItemData(sel); + + wxItemResource* res = ((wxResourceTreeData *)GetItemData(sel))->GetResource(); wxString resType(res->GetType()); - if (resType != "wxDialog" && resType != "wxDialogBox" && resType != "wxPanel") - return; - wxResourceManager::GetCurrentResourceManager()->Edit(res); -} + wxResourceEditorFrame *frame = (wxResourceEditorFrame *)wxWindow::GetParent(); + wxResourceManager *manager = frame->manager; + + long selParent = wxTreeCtrl::GetParent(sel); + + if (resType != "wxDialog" && resType != "wxDialogBox" && resType != "wxPanel") + { + wxWindow *win = manager->FindWindowForResource(res); + + // Check to see if the item selected in on the current dialog being + // displayed. If not, then we will have to find the items parent dialog + if (!win) + { + // The item is on a dialog other than the one currently being + // shown/worked on, so find the parent dialog, switch to use + // its resource manager, and then find the window in the dialog + wxItemResource* resParent = ((wxResourceTreeData *)GetItemData(selParent))->GetResource(); + wxResourceManager::GetCurrentResourceManager()->Edit(resParent); + win = manager->FindWindowForResource(res); + } + +// if (win) +// manager->GetCurrentResourceManager()->EditWindow(win); + } + else + wxResourceManager::GetCurrentResourceManager()->Edit(res); + +} // wxResourceEditorProjectTree::OnSelChanged()