Changeset View
Changeset View
Standalone View
Standalone View
source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/Object.cpp
Show First 20 Lines • Show All 92 Lines • ▼ Show 20 Lines | private: | ||||
ObjectSidebarImpl* p; | ObjectSidebarImpl* p; | ||||
DECLARE_EVENT_TABLE(); | DECLARE_EVENT_TABLE(); | ||||
}; | }; | ||||
struct ObjectSidebarImpl | struct ObjectSidebarImpl | ||||
{ | { | ||||
ObjectSidebarImpl(ScenarioEditor& scenarioEditor) : | ObjectSidebarImpl(ScenarioEditor& scenarioEditor) : | ||||
m_ObjectListBox(NULL), m_ActorViewerActive(false), | m_ObjectListView(nullptr), m_ActorViewerActive(false), | ||||
vladislavbelov: `NULL` > `nullptr`. | |||||
m_ActorViewerEntity(L"actor|structures/fndn_1x1.xml"), | m_ActorViewerEntity(L"actor|structures/fndn_1x1.xml"), | ||||
m_ActorViewerAnimation("idle"), m_ActorViewerSpeed(0.f), | m_ActorViewerAnimation("idle"), m_ActorViewerSpeed(0.f), | ||||
m_ObjectSettings(scenarioEditor.GetObjectSettings()) | m_ObjectSettings(scenarioEditor.GetObjectSettings()) | ||||
{ | { | ||||
} | } | ||||
wxListBox* m_ObjectListBox; | wxListView* m_ObjectListView; | ||||
std::vector<AtlasMessage::sObjectsListItem> m_Objects; | std::vector<AtlasMessage::sObjectsListItem> m_Objects; | ||||
ObservableScopedConnection m_ToolConn; | ObservableScopedConnection m_ToolConn; | ||||
bool m_ActorViewerActive; | bool m_ActorViewerActive; | ||||
std::wstring m_ActorViewerEntity; | std::wstring m_ActorViewerEntity; | ||||
std::string m_ActorViewerAnimation; | std::string m_ActorViewerAnimation; | ||||
float m_ActorViewerSpeed; | float m_ActorViewerSpeed; | ||||
Observable<ObjectSettings>& m_ObjectSettings; | Observable<ObjectSettings>& m_ObjectSettings; | ||||
Show All 37 Lines | ) | ||||
strings.Add(_("Actors (all)")); | strings.Add(_("Actors (all)")); | ||||
wxChoice* objectType = new wxChoice(scrolledWindow, ID_ObjectType, wxDefaultPosition, wxDefaultSize, strings); | wxChoice* objectType = new wxChoice(scrolledWindow, ID_ObjectType, wxDefaultPosition, wxDefaultSize, strings); | ||||
objectType->SetSelection(0); | objectType->SetSelection(0); | ||||
scrollSizer->Add(objectType, wxSizerFlags().Expand()); | scrollSizer->Add(objectType, wxSizerFlags().Expand()); | ||||
scrollSizer->AddSpacer(3); | scrollSizer->AddSpacer(3); | ||||
// ------------------------------------------------------------------------------------------ | // ------------------------------------------------------------------------------------------ | ||||
m_Impl->m_ObjectListBox = new wxListBox(scrolledWindow, ID_SelectObject, wxDefaultPosition, wxDefaultSize, 0, nullptr, wxLB_SINGLE|wxLB_HSCROLL); | m_Impl->m_ObjectListView = new wxListView(scrolledWindow, ID_SelectObject, wxDefaultPosition, wxDefaultSize, wxLC_REPORT | wxLC_SINGLE_SEL); | ||||
scrollSizer->Add(m_Impl->m_ObjectListBox, wxSizerFlags().Proportion(1).Expand()); | m_Impl->m_ObjectListView->AppendColumn(_("Template Name"), wxLIST_FORMAT_LEFT, wxLIST_AUTOSIZE); | ||||
scrollSizer->Add(m_Impl->m_ObjectListView, wxSizerFlags().Proportion(1).Expand()); | |||||
Not Done Inline ActionsWhat's the minimal wxWidgets version that supports this combination of flags? (I remember asserts about alignment flags for some versions) vladislavbelov: What's the minimal wxWidgets version that supports this combination of flags? (I remember… | |||||
Done Inline Actionsfrom documentation minimal 2.9 trompetin17: from documentation
https://github.com/wxWidgets/wxWidgets/blob/WX_2_9_0_BRANCH/interface/wx/lis… | |||||
scrollSizer->AddSpacer(3); | scrollSizer->AddSpacer(3); | ||||
// ------------------------------------------------------------------------------------------ | // ------------------------------------------------------------------------------------------ | ||||
scrollSizer->Add(new wxButton(scrolledWindow, ID_ToggleViewer, _("Switch to Actor Viewer")), wxSizerFlags().Expand()); | scrollSizer->Add(new wxButton(scrolledWindow, ID_ToggleViewer, _("Switch to Actor Viewer")), wxSizerFlags().Expand()); | ||||
// ------------------------------------------------------------------------------------------ | // ------------------------------------------------------------------------------------------ | ||||
▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | void ObjectSidebar::OnFirstDisplay() | ||||
FilterObjects(); | FilterObjects(); | ||||
} | } | ||||
void ObjectSidebar::FilterObjects() | void ObjectSidebar::FilterObjects() | ||||
{ | { | ||||
int filterType = wxDynamicCast(FindWindow(ID_ObjectType), wxChoice)->GetSelection(); | int filterType = wxDynamicCast(FindWindow(ID_ObjectType), wxChoice)->GetSelection(); | ||||
wxString filterName = wxDynamicCast(FindWindow(ID_ObjectFilter), wxTextCtrl)->GetValue(); | wxString filterName = wxDynamicCast(FindWindow(ID_ObjectFilter), wxTextCtrl)->GetValue(); | ||||
m_Impl->m_ObjectListBox->Freeze(); | m_Impl->m_ObjectListView->Freeze(); | ||||
m_Impl->m_ObjectListBox->Clear(); | m_Impl->m_ObjectListView->DeleteAllItems(); | ||||
for (std::vector<AtlasMessage::sObjectsListItem>::iterator it = m_Impl->m_Objects.begin(); it != m_Impl->m_Objects.end(); ++it) | for (std::vector<AtlasMessage::sObjectsListItem>::iterator it = m_Impl->m_Objects.begin(); it != m_Impl->m_Objects.end(); ++it) | ||||
Done Inline ActionsMaybe listViewItemId? Because for me itemIdListView sounds like a view of an id. vladislavbelov: Maybe `listViewItemId`? Because for me `itemIdListView` sounds like a view of an id. | |||||
{ | { | ||||
if (it->type == filterType) | if (it->type == filterType) | ||||
{ | { | ||||
wxString id = it->id.c_str(); | |||||
wxString name = it->name.c_str(); | wxString name = it->name.c_str(); | ||||
Done Inline ActionsThis can be inside the condition block below. vladislavbelov: This can be inside the condition block below. | |||||
if (name.Lower().Find(filterName.Lower()) != wxNOT_FOUND) | if (name.Lower().Find(filterName.Lower()) != wxNOT_FOUND) | ||||
{ | { | ||||
m_Impl->m_ObjectListBox->Append(name, new wxStringClientData(id)); | wxString id = it->id.c_str(); | ||||
wxListItem item; | |||||
item.SetColumn(0); | |||||
item.SetText(name); | |||||
Done Inline ActionsIs it possible to replace the itemIdListView by m_Impl->m_ObjectListView->GetItemCount()? vladislavbelov: Is it possible to replace the `itemIdListView` by `m_Impl->m_ObjectListView->GetItemCount()`? | |||||
item.SetId(m_Impl->m_ObjectListView->GetItemCount()); | |||||
item.SetData(new wxStringClientData(id)); | |||||
Not Done Inline ActionsIs that true that the item takes ownership of the data pointer? vladislavbelov: Is that true that the item takes ownership of the data pointer? | |||||
m_Impl->m_ObjectListView->InsertItem(item); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
m_Impl->m_ObjectListBox->Thaw(); | m_Impl->m_ObjectListView->SetColumnWidth(0, wxLIST_AUTOSIZE); | ||||
m_Impl->m_ObjectListView->Thaw(); | |||||
Done Inline ActionsWhy there is two place where the column width is set? vladislavbelov: Why there is two place where the column width is set? | |||||
Done Inline ActionsActually I was follow code, in wxListView you can set the size just for only cell or column, Im going to remove the item.SetWidth trompetin17: Actually I was follow code, in wxListView you can set the size just for only cell or column, Im… | |||||
} | } | ||||
void ObjectSidebar::OnToggleViewer(wxCommandEvent& WXUNUSED(evt)) | void ObjectSidebar::OnToggleViewer(wxCommandEvent& WXUNUSED(evt)) | ||||
{ | { | ||||
if (m_Impl->m_ActorViewerActive) | if (m_Impl->m_ActorViewerActive) | ||||
{ | { | ||||
m_ScenarioEditor.GetToolManager().SetCurrentTool(_T(""), NULL); | m_ScenarioEditor.GetToolManager().SetCurrentTool(_T(""), NULL); | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
m_ScenarioEditor.GetToolManager().SetCurrentTool(_T("ActorViewerTool"), NULL); | m_ScenarioEditor.GetToolManager().SetCurrentTool(_T("ActorViewerTool"), NULL); | ||||
} | } | ||||
} | } | ||||
void ObjectSidebar::OnSelectType(wxCommandEvent& WXUNUSED(evt)) | void ObjectSidebar::OnSelectType(wxCommandEvent& WXUNUSED(evt)) | ||||
{ | { | ||||
FilterObjects(); | FilterObjects(); | ||||
} | } | ||||
void ObjectSidebar::OnSelectObject(wxCommandEvent& evt) | void ObjectSidebar::OnSelectObject(wxListEvent& evt) | ||||
{ | { | ||||
if (evt.GetInt() < 0) | if (evt.GetInt() < 0) | ||||
return; | return; | ||||
wxString id = static_cast<wxStringClientData*>(evt.GetClientObject())->GetData(); | wxString id = reinterpret_cast<wxStringClientData*>(evt.GetData())->GetData(); | ||||
// Always update the actor viewer's state even if it's inactive, | // Always update the actor viewer's state even if it's inactive, | ||||
// so it will be correct when first enabled | // so it will be correct when first enabled | ||||
m_Impl->m_ActorViewerEntity = id; | m_Impl->m_ActorViewerEntity = id; | ||||
if (m_Impl->m_ActorViewerActive) | if (m_Impl->m_ActorViewerActive) | ||||
{ | { | ||||
m_Impl->ActorViewerPostToGame(); | m_Impl->ActorViewerPostToGame(); | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
// On selecting an object, enable the PlaceObject tool with this object | // On selecting an object, enable the PlaceObject tool with this object | ||||
m_ScenarioEditor.GetToolManager().SetCurrentTool(_T("PlaceObject"), &id); | m_ScenarioEditor.GetToolManager().SetCurrentTool(_T("PlaceObject"), &id); | ||||
} | } | ||||
} | } | ||||
void ObjectSidebar::OnSelectFilter(wxCommandEvent& WXUNUSED(evt)) | void ObjectSidebar::OnSelectFilter(wxCommandEvent& WXUNUSED(evt)) | ||||
{ | { | ||||
FilterObjects(); | FilterObjects(); | ||||
} | } | ||||
BEGIN_EVENT_TABLE(ObjectSidebar, Sidebar) | BEGIN_EVENT_TABLE(ObjectSidebar, Sidebar) | ||||
EVT_CHOICE(ID_ObjectType, ObjectSidebar::OnSelectType) | EVT_CHOICE(ID_ObjectType, ObjectSidebar::OnSelectType) | ||||
EVT_TEXT(ID_ObjectFilter, ObjectSidebar::OnSelectFilter) | EVT_TEXT(ID_ObjectFilter, ObjectSidebar::OnSelectFilter) | ||||
EVT_LISTBOX(ID_SelectObject, ObjectSidebar::OnSelectObject) | EVT_LIST_ITEM_SELECTED(ID_SelectObject, ObjectSidebar::OnSelectObject) | ||||
EVT_BUTTON(ID_ToggleViewer, ObjectSidebar::OnToggleViewer) | EVT_BUTTON(ID_ToggleViewer, ObjectSidebar::OnToggleViewer) | ||||
END_EVENT_TABLE(); | END_EVENT_TABLE(); | ||||
////////////////////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////////////////////// | ||||
class PlayerComboBox : public wxComboBox | class PlayerComboBox : public wxComboBox | ||||
{ | { | ||||
public: | public: | ||||
▲ Show 20 Lines • Show All 347 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator
NULL > nullptr.