X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..fd495ab3ea1282ddb8bb0cd0fb79fc758ae5fcee:/utils/dialoged/src/edtree.cpp diff --git a/utils/dialoged/src/edtree.cpp b/utils/dialoged/src/edtree.cpp index 168fa100cd..26babac2e5 100644 --- a/utils/dialoged/src/edtree.cpp +++ b/utils/dialoged/src/edtree.cpp @@ -39,6 +39,7 @@ BEGIN_EVENT_TABLE(wxResourceEditorProjectTree, wxTreeCtrl) EVT_LEFT_DCLICK(wxResourceEditorProjectTree::LeftDClick) +//EVT_LEFT_DOWN(wxResourceEditorProjectTree::LeftClick) EVT_TREE_SEL_CHANGED(IDC_TREECTRL, wxResourceEditorProjectTree::OnSelChanged) END_EVENT_TABLE() @@ -48,27 +49,104 @@ 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 = ((wxResourceTreeData *)GetItemData(sel))->GetResource(); + 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)) { @@ -84,9 +162,33 @@ void wxResourceEditorProjectTree::OnSelChanged(wxTreeEvent& WXUNUSED(event)) wxItemResource* res = ((wxResourceTreeData *)GetItemData(sel))->GetResource(); 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") - return; - - wxResourceManager::GetCurrentResourceManager()->Edit(res); -} + { + 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()