Ticket #1392: 1392.2.diff
File 1392.2.diff, 4.8 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 94 96 DECLARE_EVENT_TABLE(); 95 97 }; 96 98 … … 462 511 mainSizer->Add(playerVariationSizer, wxSizerFlags().Expand()); 463 512 464 513 // ---------------------------------------------------------------------------------- 514 // --- display template name 515 wxSizer* displaySizer = new wxStaticBoxSizer(wxVERTICAL, this, _("Selected entity templates")); 516 m_TemplateNames = new wxScrolledWindow(this); 517 m_TemplateNames->SetMinSize(wxSize(250, -1)); 518 m_TemplateNames->SetScrollRate(0, 5); 519 wxSizer* scrollwindowSizer = new wxBoxSizer(wxVERTICAL); 520 m_TemplateNames->SetSizer(scrollwindowSizer); 521 displaySizer->Add(m_TemplateNames, wxSizerFlags().Proportion(1).Expand()); 522 m_TemplateNames->Layout(); 523 mainSizer->AddSpacer(3); 524 mainSizer->Add(displaySizer, wxSizerFlags().Proportion(1).Expand()); 465 525 526 g_SelectedObjects.RegisterObserver(0, &ObjectBottomBar::OnSelectedObjectsChange, this); 527 466 528 SetSizer(mainSizer); 467 529 } 468 530 531 static wxControl* CreateTemplateNameObject(wxWindow* parent, const std::string templateName, int counterTemplate) 532 { 533 wxString idTemplate(templateName.c_str()); 534 if (counterTemplate > 1) 535 idTemplate.Append(wxString::Format(wxT("(%i)"), counterTemplate)); 536 537 wxStaticText* templateNameObject= new wxStaticText(parent, wxID_ANY, idTemplate); 538 return templateNameObject; 539 } 540 void ObjectBottomBar::OnSelectedObjectsChange(const std::vector<AtlasMessage::ObjectID>& selectedObjects) 541 { 542 Freeze(); 543 wxSizer* sizer = m_TemplateNames->GetSizer(); 544 sizer->Clear(true); 545 AtlasMessage::qGetSelectedObjectsTemplateNames objectTemplatesName(selectedObjects); 546 objectTemplatesName.Post(); 547 std::vector<std::string> names = *objectTemplatesName.names; 548 int counterTemplate = 0; 549 std::string lastTemplateName = ""; 550 for (std::vector<std::string>::const_iterator it = names.begin(); it != names.end(); ++it) 551 { 552 if (lastTemplateName == "") 553 lastTemplateName = (*it); 554 555 if (lastTemplateName == (*it)) 556 { 557 ++counterTemplate; 558 continue; 559 } 560 561 sizer->Add(CreateTemplateNameObject(m_TemplateNames, lastTemplateName, counterTemplate), wxSizerFlags().Align(wxALIGN_LEFT)); 562 563 lastTemplateName = (*it); 564 counterTemplate = 1; 565 } 566 567 //add the last template 568 sizer->Add(CreateTemplateNameObject(m_TemplateNames, lastTemplateName, counterTemplate), wxSizerFlags().Align(wxALIGN_LEFT)); 569 570 Thaw(); 571 sizer->FitInside(m_TemplateNames); 572 } 573 469 574 void ObjectBottomBar::OnFirstDisplay() 470 575 { 471 576 // We use messages here because the simulation is not init'd otherwise (causing a crash) -
source/tools/atlas/GameInterface/Handlers/ObjectHandlers.cpp
975 1149 AtlasView::GetView_Game()->SetBandbox(msg->show, (float)msg->sx0, (float)msg->sy0, (float)msg->sx1, (float)msg->sy1); 976 1150 } 977 1151 1152 QUERYHANDLER(GetSelectedObjectsTemplateNames) 1153 { 1154 std::vector<entity_id_t> ids = *msg->ids; 1155 std::vector<std::string> names; 1156 1157 CmpPtr<ICmpTemplateManager> cmpTemplateManager(*g_Game->GetSimulation2(), SYSTEM_ENTITY); 1158 ENSURE(cmpTemplateManager); 1159 1160 for (size_t i = 0; i < ids.size(); ++i) 1161 { 1162 entity_id_t id = (entity_id_t)ids[i]; 1163 std::string templateName = cmpTemplateManager->GetCurrentTemplateName(id); 1164 names.push_back(templateName); 1165 } 1166 1167 std::sort(names.begin(), names.end()); 1168 msg->names = names; 978 1169 } 1170 } -
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