Ticket #1392: 1392.diff
File 1392.diff, 4.1 KB (added by , 9 years ago) |
---|
-
source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/Object.cpp
1 /* Copyright (C) 201 4Wildfire Games.1 /* Copyright (C) 2015 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * 4 4 * 0 A.D. is free software: you can redistribute it and/or modify … … 71 72 72 73 void OnFirstDisplay(); 73 74 void ShowActorViewer(bool show); 75 void OnSelectedObjectsChange(const std::vector<AtlasMessage::ObjectID>& selectedObjects); 74 76 75 77 private: 76 78 void OnViewerSetting(wxCommandEvent& evt); … … 88 90 int m_ViewerPropPointsMode; // 0 disabled, 1 for point markers, 2 for point markers + axes 89 91 90 92 wxPanel* m_ViewerPanel; 93 wxScrolledWindow* m_TemplateNames; 91 94 92 95 ObjectSidebarImpl* p; 93 96 … … 462 512 mainSizer->Add(playerVariationSizer, wxSizerFlags().Expand()); 463 513 464 514 // ---------------------------------------------------------------------------------- 515 // --- display template name 516 wxSizer* displaySizer = new wxStaticBoxSizer(wxVERTICAL, this, _("Selected entity templates")); 517 m_TemplateNames = new wxScrolledWindow(this); 518 m_TemplateNames->SetMinSize(wxSize(250, -1)); 519 m_TemplateNames->SetScrollRate(0, 5); 520 wxSizer* scrollwindowSizer = new wxBoxSizer(wxVERTICAL); 521 m_TemplateNames->SetSizer(scrollwindowSizer); 522 displaySizer->Add(m_TemplateNames, wxSizerFlags().Proportion(1).Expand()); 523 m_TemplateNames->Layout(); 524 mainSizer->AddSpacer(3); 525 mainSizer->Add(displaySizer, wxSizerFlags().Proportion(1).Expand()); 465 526 527 g_SelectedObjects.RegisterObserver(0, &ObjectBottomBar::OnSelectedObjectsChange, this); 528 466 529 SetSizer(mainSizer); 467 530 } 468 531 532 void ObjectBottomBar::OnSelectedObjectsChange(const std::vector<AtlasMessage::ObjectID>& selectedObjects) 533 { 534 Freeze(); 535 wxSizer* sizer = m_TemplateNames->GetSizer(); 536 sizer->Clear(true); 537 AtlasMessage::qGetSelectedObjectsTemplateNames objectTemplatesName(selectedObjects); 538 objectTemplatesName.Post(); 539 std::vector<std::string> names = *objectTemplatesName.names; 540 for (std::vector<std::string>::const_iterator it = names.begin(); it != names.end(); ++it) 541 { 542 wxString idTemplate((*it).c_str()); 543 wxStaticText* templateName= new wxStaticText(m_TemplateNames, wxID_ANY, idTemplate); 544 sizer->Add(templateName, wxSizerFlags().Align(wxALIGN_LEFT)); 545 } 546 Thaw(); 547 sizer->FitInside(m_TemplateNames); 548 } 549 469 550 void ObjectBottomBar::OnFirstDisplay() 470 551 { 471 552 // We use messages here because the simulation is not init'd otherwise (causing a crash) -
source/tools/atlas/GameInterface/Handlers/ObjectHandlers.cpp
975 1125 AtlasView::GetView_Game()->SetBandbox(msg->show, (float)msg->sx0, (float)msg->sy0, (float)msg->sx1, (float)msg->sy1); 976 1126 } 977 1127 978 } 1128 QUERYHANDLER(GetSelectedObjectsTemplateNames) 1129 { 1130 std::vector<entity_id_t> ids = *msg->ids; 1131 std::vector<std::string> names; 1132 1133 CmpPtr<ICmpTemplateManager> cmpTemplateManager(*g_Game->GetSimulation2(), SYSTEM_ENTITY); 1134 ENSURE(cmpTemplateManager); 1135 1136 for (size_t i = 0; i < ids.size(); ++i) 1137 { 1138 entity_id_t id = (entity_id_t)ids[i]; 1139 std::string templateName = cmpTemplateManager->GetCurrentTemplateName(id); 1140 names.push_back(templateName); 1141 } 1142 1143 std::sort(names.begin(), names.end()); 1144 names.erase(std::unique(names.begin(), names.end()), names.end()); 1145 msg->names = names; 1146 } 1147 No newline at end of file -
source/tools/atlas/GameInterface/Messages.h
693 712 ((Position, position)) 694 713 ); 695 714 715 QUERY(GetSelectedObjectsTemplateNames, 716 ((std::vector<ObjectID>, ids)) 717 , 718 ((std::vector<std::string>, names)) 719 ); 696 720 721 697 722 #ifndef MESSAGES_SKIP_SETUP 698 723 #include "MessagesSetup.h" 699 724 #endif