Ticket #1392: 1392.diff

File 1392.diff, 4.1 KB (added by trompetin17, 9 years ago)
  • source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/Object.cpp

     
    1 /* Copyright (C) 2014 Wildfire Games.
     1/* Copyright (C) 2015 Wildfire Games.
    22 * This file is part of 0 A.D.
    33 *
    44 * 0 A.D. is free software: you can redistribute it and/or modify
     
    7172
    7273    void OnFirstDisplay();
    7374    void ShowActorViewer(bool show);
     75    void OnSelectedObjectsChange(const std::vector<AtlasMessage::ObjectID>& selectedObjects);
    7476
    7577private:
    7678    void OnViewerSetting(wxCommandEvent& evt);
     
    8890    int m_ViewerPropPointsMode; // 0 disabled, 1 for point markers, 2 for point markers + axes
    8991
    9092    wxPanel* m_ViewerPanel;
     93    wxScrolledWindow* m_TemplateNames;
    9194
    9295    ObjectSidebarImpl* p;
    9396
     
    462512    mainSizer->Add(playerVariationSizer, wxSizerFlags().Expand());
    463513
    464514    // ----------------------------------------------------------------------------------
     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());
    465526
     527    g_SelectedObjects.RegisterObserver(0, &ObjectBottomBar::OnSelectedObjectsChange, this);
     528
    466529    SetSizer(mainSizer);
    467530}
    468531
     532void 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
    469550void ObjectBottomBar::OnFirstDisplay()
    470551{
    471552    // We use messages here because the simulation is not init'd otherwise (causing a crash)
  • source/tools/atlas/GameInterface/Handlers/ObjectHandlers.cpp

     
    9751125    AtlasView::GetView_Game()->SetBandbox(msg->show, (float)msg->sx0, (float)msg->sy0, (float)msg->sx1, (float)msg->sy1);
    9761126}
    9771127
    978 }
     1128QUERYHANDLER(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

     
    693712        ((Position, position))
    694713        );
    695714
     715QUERY(GetSelectedObjectsTemplateNames,
     716        ((std::vector<ObjectID>, ids))
     717        ,
     718        ((std::vector<std::string>, names))
     719        );
    696720
     721
    697722#ifndef MESSAGES_SKIP_SETUP
    698723#include "MessagesSetup.h"
    699724#endif