#include <Fireworks/Core/interface/CmsShowModelPopup.h>
Description: <one line="" class="" summary>="">
Usage: <usage>
Definition at line 52 of file CmsShowModelPopup.h.
CmsShowModelPopup::CmsShowModelPopup | ( | FWDetailViewManager * | iManager, |
FWSelectionManager * | iSelMgr, | ||
const FWColorManager * | iColorMgr, | ||
const TGWindow * | p = 0 , |
||
UInt_t | w = 1 , |
||
UInt_t | h = 1 |
||
) |
Definition at line 55 of file CmsShowModelPopup.cc.
References FWDialogBuilder::addCheckbox(), FWDialogBuilder::addColorPicker(), FWDialogBuilder::addHSeparator(), FWDialogBuilder::addHSlider(), FWDialogBuilder::addLabel(), FWDialogBuilder::expand(), fillModelPopup(), FWDialogBuilder::indent(), m_changes, m_colorSelectWidget, m_dialogBuilder, m_isVisibleButton, m_modelLabel, m_opacitySlider, m_openDetailedViewButtons, and FWSelectionManager::selectionChanged_.
: TGTransientFrame(gClient->GetDefaultRoot(),p,w,h), m_detailViewManager(iManager), m_colorManager(iColorMgr), m_dialogBuilder(0) { m_changes = iSelMgr->selectionChanged_.connect(boost::bind(&CmsShowModelPopup::fillModelPopup, this, _1)); SetCleanup(kDeepCleanup); TGVerticalFrame* vf = new TGVerticalFrame(this); AddFrame(vf, new TGLayoutHints(kLHintsExpandX|kLHintsExpandY, 2, 2, 2, 4)); m_dialogBuilder = new FWDialogBuilder(vf); // Do the layouting of the various widgets. m_dialogBuilder->indent(4) .addLabel(" ", 14, 1, &m_modelLabel) .addLabel("Color", 8) .addColorPicker(iColorMgr, &m_colorSelectWidget).expand(false) .addHSeparator() .addLabel("Opacity", 8) .addHSlider(150, &m_opacitySlider) .addHSeparator(2) .addCheckbox("Visible", &m_isVisibleButton) .addHSeparator(); // Dummy button for detail views. Can be overidden. TGTextButton *detailedViewButton = new TGTextButton(this, "Open Detailed View", 0); AddFrame(detailedViewButton, new TGLayoutHints(kLHintsExpandX, 4, 4, 4, 4)); m_openDetailedViewButtons.push_back(detailedViewButton); m_colorSelectWidget->Connect("ColorChosen(Color_t)", "CmsShowModelPopup", this, "changeModelColor(Color_t)"); m_isVisibleButton->Connect("Toggled(Bool_t)", "CmsShowModelPopup", this, "toggleModelVisible(Bool_t)"); m_opacitySlider->Connect("PositionChanged(Int_t)", "CmsShowModelPopup", this, "changeModelOpacity(Int_t)"); SetWindowName("Object Controller"); MapSubwindows(); Resize(GetDefaultSize()); Layout(); fillModelPopup(*iSelMgr); }
CmsShowModelPopup::~CmsShowModelPopup | ( | ) | [virtual] |
Definition at line 107 of file CmsShowModelPopup.cc.
References disconnectAll(), m_changes, m_colorSelectWidget, m_isVisibleButton, and m_opacitySlider.
{ m_changes.disconnect(); m_colorSelectWidget->Disconnect("ColorSelected(Pixel_t)", this, "changeModelColor(Pixel_t)"); m_opacitySlider->Disconnect("PositionChanged(Int_t)", this, "changeModelOpacity(Int_t)"); m_isVisibleButton->Disconnect("Toggled(Bool_t)", this, "toggleModelVisible(Bool_t)"); disconnectAll(); }
CmsShowModelPopup::CmsShowModelPopup | ( | const CmsShowModelPopup & | ) | [private] |
void CmsShowModelPopup::changeModelColor | ( | Color_t | color | ) |
Change the color of the selected objects.
NOTES:
Definition at line 311 of file CmsShowModelPopup.cc.
References FWEventItem::ModelInfo::displayProperties(), alignCSCRings::e, i, info, m_models, and FWDisplayProperties::setColor().
{ if (m_models.empty()) return; FWChangeSentry sentry(*(m_models.begin()->item()->changeManager())); for (std::set<FWModelId>::iterator i = m_models.begin(), e = m_models.end(); i != e; ++i) { const FWEventItem::ModelInfo &info = i->item()->modelInfo(i->index()); FWDisplayProperties changeProperties = info.displayProperties(); changeProperties.setColor(color); i->item()->setDisplayProperties(i->index(), changeProperties); } }
void CmsShowModelPopup::changeModelOpacity | ( | Int_t | opacity = 100 | ) |
Change the opacity of the selected objects. See above in changeModelColor for additional notes.
Definition at line 330 of file CmsShowModelPopup.cc.
References FWEventItem::ModelInfo::displayProperties(), alignCSCRings::e, i, info, m_models, and FWDisplayProperties::setTransparency().
{ if (m_models.empty()) return; FWChangeSentry sentry(*(m_models.begin()->item()->changeManager())); for (std::set<FWModelId>::iterator i = m_models.begin(), e = m_models.end(); i != e; ++i) { const FWEventItem::ModelInfo &info = i->item()->modelInfo(i->index()); FWDisplayProperties changeProperties = info.displayProperties(); changeProperties.setTransparency(100 - opacity); i->item()->setDisplayProperties(i->index(), changeProperties); } }
CmsShowModelPopup::ClassDef | ( | CmsShowModelPopup | , |
0 | |||
) |
void CmsShowModelPopup::clicked | ( | ) |
Definition at line 372 of file CmsShowModelPopup.cc.
References fwrapper::cs, FWDetailViewManager::detailViewsFor(), m_detailViewManager, m_models, and FWDetailViewManager::openDetailViewFor().
{ TGTextButton *cs = static_cast<TGTextButton *>(gTQSender); int iIndex = cs->WidgetId(); std::vector<std::string> viewChoices = m_detailViewManager->detailViewsFor(*(m_models.begin())); m_detailViewManager->openDetailViewFor( *(m_models.begin()), *(viewChoices.begin()+iIndex) ); }
virtual void CmsShowModelPopup::CloseWindow | ( | ) | [inline, virtual] |
Definition at line 63 of file CmsShowModelPopup.h.
{ UnmapWindow(); }
void CmsShowModelPopup::colorSetChanged | ( | ) |
Definition at line 265 of file CmsShowModelPopup.cc.
References FWDisplayProperties::color(), FWEventItem::ModelInfo::displayProperties(), alignCSCRings::e, i, info, m_colorSelectWidget, m_models, AlCaHLTBitMon_ParallelJobs::p, and FWColorSelect::SetColorByIndex().
Referenced by FWGUIManager::finishUpColorChange().
{ for (std::set<FWModelId>::iterator i = m_models.begin(), e = m_models.end(); i != e; ++i) { const FWEventItem::ModelInfo &info = i->item()->modelInfo(i->index()); const FWDisplayProperties &p = info.displayProperties(); m_colorSelectWidget->SetColorByIndex(p.color(), kFALSE); } }
void CmsShowModelPopup::disconnectAll | ( | ) |
This is invoked to when no object is selected and sets the dialog in a disabled look.
Definition at line 280 of file CmsShowModelPopup.cc.
References alignCSCRings::e, i, m_colorSelectWidget, m_destroyedConn, m_isVisibleButton, m_modelChangedConn, m_modelLabel, m_opacitySlider, m_openDetailedViewButtons, and FWColorSelect::SetColorByIndex().
Referenced by fillModelPopup(), and ~CmsShowModelPopup().
{ m_modelChangedConn.disconnect(); m_destroyedConn.disconnect(); // m_item = 0; // m_model = 0; m_modelLabel->SetText("No object selected"); m_colorSelectWidget->SetColorByIndex(kRed,kFALSE); m_isVisibleButton->SetDisabledAndSelected(kTRUE); m_colorSelectWidget->SetEnabled(kFALSE); m_opacitySlider->SetEnabled(kFALSE); m_isVisibleButton->SetEnabled(kFALSE); m_openDetailedViewButtons.front()->SetEnabled(kFALSE); m_openDetailedViewButtons.front()->SetText("Open Detail View ..."); assert(!m_openDetailedViewButtons.empty()); for(size_t i = 1, e = m_openDetailedViewButtons.size(); i != e; ++i) { TGCompositeFrame* cf = (TGCompositeFrame*)m_openDetailedViewButtons[i]->GetParent(); cf->HideFrame(m_openDetailedViewButtons[i]); } }
void CmsShowModelPopup::fillModelPopup | ( | const FWSelectionManager & | iSelMgr | ) |
this updates the dialog when selection changes. It also handles multiple Selections by updating only the widgets which have non controversial (i.e. different across selected objects) values.
Definition at line 136 of file CmsShowModelPopup.cc.
References FWEventItem::changed_, FWDisplayProperties::color(), FWDetailViewManager::detailViewsFor(), disconnectAll(), FWEventItem::ModelInfo::displayProperties(), alignCSCRings::e, FWEventItem::goingToBeDestroyed_, i, getHLTprescales::index, info, FWDisplayProperties::isVisible(), m_colorSelectWidget, m_destroyedConn, m_detailViewManager, m_isVisibleButton, m_modelChangedConn, m_modelLabel, m_models, m_opacitySlider, m_openDetailedViewButtons, FWEventItem::modelInfo(), FWEventItem::modelName(), FWEventItem::name(), alignCSCRings::s, FWSelectionManager::selected(), FWColorSelect::SetColorByIndex(), FWDisplayProperties::transparency(), and updateDisplay().
Referenced by CmsShowModelPopup().
{ disconnectAll(); // Handles the case in which the selection is empty. if (iSelMgr.selected().empty()) return; // Handle the case in which the selection is not empty. bool multipleNames = false, multipleColors = false, multipleVis = false, multipleTransparecy = false; m_models = iSelMgr.selected(); std::set<FWModelId>::const_iterator id = m_models.begin(); const FWEventItem* item = id->item(); const FWEventItem::ModelInfo info = item->modelInfo(id->index()); const FWDisplayProperties &props = info.displayProperties(); // The old logic was broken here. It was enought that the last item // was the same as the first one, and all of them would have been considered // equal. This should fix it. The idea is that if any of the elements in // models in [1, N] are different from the first, then we consider the // set with multipleXYZ. for (std::set<FWModelId>::const_iterator i = ++(m_models.begin()), e = m_models.end(); i != e; ++i) { const FWEventItem::ModelInfo &nextInfo = i->item()->modelInfo(i->index()); const FWDisplayProperties &nextProps = nextInfo.displayProperties(); multipleNames = multipleNames || (item->name() != i->item()->name()); multipleColors = multipleColors || (props.color() != nextProps.color()); multipleVis = multipleVis || (props.isVisible() != nextProps.isVisible()); multipleTransparecy = multipleTransparecy || (props.transparency() != nextProps.transparency()); } // Handle the name. std::ostringstream s; if (multipleNames) s << m_models.size() << " objects"; else s << m_models.size() << " " << item->name(); m_modelLabel->SetText(s.str().c_str()); if (m_models.size()==1) { m_modelLabel->SetText(item->modelName(id->index()).c_str()); std::vector<std::string> viewChoices = m_detailViewManager->detailViewsFor(*id); m_openDetailedViewButtons.front()->SetEnabled(viewChoices.size()>0); //be sure we show just the right number of buttons if(viewChoices.size() > m_openDetailedViewButtons.size()) { for(size_t i = 0, e = m_openDetailedViewButtons.size(); i != e; ++i) { // printf("show existing buttons\n"); TGCompositeFrame* cf = (TGCompositeFrame*)m_openDetailedViewButtons[i]->GetParent(); cf->ShowFrame(m_openDetailedViewButtons[i]); } //now we make additional buttons TGTextButton *button; for(size_t index = m_openDetailedViewButtons.size(); index < viewChoices.size(); ++index) { // printf("add new button %s \n ", viewChoices[index].c_str()); button = new TGTextButton(this, "dummy", index); AddFrame(button, new TGLayoutHints(kLHintsExpandX, 4, 4, 4, 4)); TGCompositeFrame* cf = (TGCompositeFrame*)button->GetParent(); cf->MapWindow(); cf->MapSubwindows(); m_openDetailedViewButtons.push_back(button); button->Connect("Clicked()", "CmsShowModelPopup", this, "clicked()"); } } else if (!viewChoices.empty()) { // printf("show button subset %d \n", viewChoices.size()); for (size_t i = 0, e = viewChoices.size(); i != e; ++i) { TGCompositeFrame* cf = (TGCompositeFrame*)m_openDetailedViewButtons[i]->GetParent(); cf->ShowFrame(m_openDetailedViewButtons[i]); } } //set the names for (size_t i = 0, e = viewChoices.size(); i != e; ++i) { m_openDetailedViewButtons[i]->SetText(("Open " + viewChoices[i] + " Detail View ...").c_str()); } } // Set the various widgets. m_colorSelectWidget->SetColorByIndex(props.color(), kFALSE); m_opacitySlider->SetPosition(100 - props.transparency()); m_isVisibleButton->SetDisabledAndSelected(props.isVisible()); m_opacitySlider->SetEnabled(kTRUE); m_colorSelectWidget->SetEnabled(kTRUE); m_isVisibleButton->SetEnabled(kTRUE); m_modelChangedConn = item->changed_.connect(boost::bind(&CmsShowModelPopup::updateDisplay, this)); m_destroyedConn = item->goingToBeDestroyed_.connect(boost::bind(&CmsShowModelPopup::disconnectAll, this)); Resize(GetDefaultSize()); Layout(); }
void CmsShowModelPopup::openDetailedView | ( | ) |
Definition at line 364 of file CmsShowModelPopup.cc.
References FWDetailViewManager::detailViewsFor(), m_detailViewManager, m_models, and FWDetailViewManager::openDetailViewFor().
{ std::vector<std::string> viewChoices = m_detailViewManager->detailViewsFor(*(m_models.begin())); m_detailViewManager->openDetailViewFor( *(m_models.begin()), viewChoices.front() ); }
const CmsShowModelPopup& CmsShowModelPopup::operator= | ( | const CmsShowModelPopup & | ) | [private] |
void CmsShowModelPopup::toggleModelVisible | ( | Bool_t | on = kTRUE | ) |
Change (not toggle actually) the visibility of selected objects. See changeModelColor for additional notes.
Definition at line 349 of file CmsShowModelPopup.cc.
References FWEventItem::ModelInfo::displayProperties(), i, info, m_models, and FWDisplayProperties::setIsVisible().
{ if(m_models.empty()) return; FWChangeSentry sentry(*(m_models.begin()->item()->changeManager())); for (std::set<FWModelId>::iterator i = m_models.begin(); i != m_models.end(); ++i) { const FWEventItem::ModelInfo &info = i->item()->modelInfo(i->index()); FWDisplayProperties changeProperties = info.displayProperties(); changeProperties.setIsVisible(on); i->item()->setDisplayProperties(i->index(), changeProperties); } }
void CmsShowModelPopup::updateDisplay | ( | ) |
Based on the actual models properties, update the GUI.
Definition at line 245 of file CmsShowModelPopup.cc.
References FWDisplayProperties::color(), FWEventItem::ModelInfo::displayProperties(), alignCSCRings::e, i, info, FWDisplayProperties::isVisible(), m_colorSelectWidget, m_isVisibleButton, m_models, m_opacitySlider, AlCaHLTBitMon_ParallelJobs::p, FWColorSelect::SetColorByIndex(), and FWDisplayProperties::transparency().
Referenced by fillModelPopup().
{ for (std::set<FWModelId>::iterator i = m_models.begin(), e = m_models.end(); i != e; ++i) { const FWEventItem::ModelInfo &info = i->item()->modelInfo(i->index()); const FWDisplayProperties &p = info.displayProperties(); m_colorSelectWidget->SetColorByIndex(p.color(), kFALSE); if (p.isVisible()) m_isVisibleButton->SetState(kButtonDown, kFALSE); else m_isVisibleButton->SetState(kButtonUp, kFALSE); m_opacitySlider->SetPosition(100 - p.transparency()); } }
friend class CmsShowModelPopupDetailViewButtonAdapter [friend] |
Definition at line 56 of file CmsShowModelPopup.h.
sigc::connection CmsShowModelPopup::m_changes [private] |
Definition at line 98 of file CmsShowModelPopup.h.
Referenced by CmsShowModelPopup(), and ~CmsShowModelPopup().
const FWColorManager* CmsShowModelPopup::m_colorManager [private] |
Definition at line 101 of file CmsShowModelPopup.h.
Definition at line 90 of file CmsShowModelPopup.h.
Referenced by CmsShowModelPopup(), colorSetChanged(), disconnectAll(), fillModelPopup(), updateDisplay(), and ~CmsShowModelPopup().
sigc::connection CmsShowModelPopup::m_destroyedConn [private] |
Definition at line 97 of file CmsShowModelPopup.h.
Referenced by disconnectAll(), and fillModelPopup().
Definition at line 100 of file CmsShowModelPopup.h.
Referenced by clicked(), fillModelPopup(), and openDetailedView().
Definition at line 103 of file CmsShowModelPopup.h.
Referenced by CmsShowModelPopup().
TGCheckButton* CmsShowModelPopup::m_isVisibleButton [private] |
Definition at line 91 of file CmsShowModelPopup.h.
Referenced by CmsShowModelPopup(), disconnectAll(), fillModelPopup(), updateDisplay(), and ~CmsShowModelPopup().
sigc::connection CmsShowModelPopup::m_modelChangedConn [private] |
Definition at line 96 of file CmsShowModelPopup.h.
Referenced by disconnectAll(), and fillModelPopup().
TGLabel* CmsShowModelPopup::m_modelLabel [private] |
Definition at line 89 of file CmsShowModelPopup.h.
Referenced by CmsShowModelPopup(), disconnectAll(), and fillModelPopup().
std::set<FWModelId> CmsShowModelPopup::m_models [private] |
Definition at line 95 of file CmsShowModelPopup.h.
Referenced by changeModelColor(), changeModelOpacity(), clicked(), colorSetChanged(), fillModelPopup(), openDetailedView(), toggleModelVisible(), and updateDisplay().
TGHSlider* CmsShowModelPopup::m_opacitySlider [private] |
Definition at line 102 of file CmsShowModelPopup.h.
Referenced by CmsShowModelPopup(), disconnectAll(), fillModelPopup(), updateDisplay(), and ~CmsShowModelPopup().
std::vector<TGTextButton*> CmsShowModelPopup::m_openDetailedViewButtons [private] |
Definition at line 92 of file CmsShowModelPopup.h.
Referenced by CmsShowModelPopup(), disconnectAll(), and fillModelPopup().