File indexing completed on 2024-04-06 12:11:43
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include <functional>
0015
0016 #include "TGFrame.h"
0017
0018
0019 #include "Fireworks/Core/interface/FWSummaryManager.h"
0020 #include "Fireworks/Core/interface/FWSelectionManager.h"
0021 #include "Fireworks/Core/interface/FWEventItemsManager.h"
0022 #include "Fireworks/Core/interface/FWModelChangeManager.h"
0023 #include "Fireworks/Core/interface/FWColorManager.h"
0024 #include "Fireworks/Core/interface/FWGUIManager.h"
0025 #include "Fireworks/Core/interface/FWEventItem.h"
0026
0027 #include "Fireworks/Core/src/FWCollectionSummaryWidget.h"
0028 #include "Fireworks/Core/interface/FWDataCategories.h"
0029
0030 #include "Fireworks/Core/src/FWCompactVerticalLayout.h"
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043 FWSummaryManager::FWSummaryManager(TGFrame* iParent,
0044 FWSelectionManager* sm,
0045 FWEventItemsManager* eim,
0046 FWGUIManager* gm,
0047 FWModelChangeManager* cm,
0048 FWColorManager* colorm)
0049 : m_guiManager(gm), m_colorManager(colorm), m_itemChanged(false) {
0050 colorm->colorsHaveChanged_.connect(std::bind(&FWSummaryManager::colorsChanged, this));
0051 sm->selectionChanged_.connect(std::bind(&FWSummaryManager::selectionChanged, this, std::placeholders::_1));
0052 eim->newItem_.connect(std::bind(&FWSummaryManager::newItem, this, std::placeholders::_1));
0053 eim->goingToClearItems_.connect(std::bind(&FWSummaryManager::removeAllItems, this));
0054 eim->goingToClearItems_.connect(std::bind(&FWModelChangeManager::itemsGoingToBeClearedSlot, cm));
0055
0056 m_pack = new TGVerticalFrame(iParent);
0057 m_pack->SetLayoutManager(new FWCompactVerticalLayout(m_pack));
0058 const unsigned int backgroundColor = 0x2f2f2f;
0059 m_pack->SetBackgroundColor(backgroundColor);
0060 cm->changeSignalsAreDone_.connect(std::bind(&FWSummaryManager::changesDone, this));
0061 }
0062
0063
0064
0065
0066
0067
0068 FWSummaryManager::~FWSummaryManager() {}
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085 void FWSummaryManager::newItem(FWEventItem* iItem) {
0086 TGLayoutHints* hints = new TGLayoutHints(kLHintsExpandX);
0087 FWCollectionSummaryWidget* lst = new FWCollectionSummaryWidget(m_pack, *iItem, hints);
0088 m_pack->AddFrame(lst, hints);
0089 m_collectionWidgets.push_back(lst);
0090 bool backgroundIsWhite = m_colorManager->backgroundColorIndex() == FWColorManager::kWhiteIndex;
0091 lst->setBackgroundToWhite(backgroundIsWhite);
0092 iItem->goingToBeDestroyed_.connect(std::bind(&FWSummaryManager::itemDestroyed, this, std::placeholders::_1));
0093 iItem->itemChanged_.connect(std::bind(&FWSummaryManager::itemChanged, this, std::placeholders::_1));
0094 lst->Connect("requestForInfo(FWEventItem*)", "FWSummaryManager", this, "requestForInfo(FWEventItem*)");
0095 lst->Connect("requestForFilter(FWEventItem*)", "FWSummaryManager", this, "requestForFilter(FWEventItem*)");
0096 lst->Connect("requestForErrorInfo(FWEventItem*)", "FWSummaryManager", this, "requestForError(FWEventItem*)");
0097 lst->Connect("requestForController(FWEventItem*)", "FWSummaryManager", this, "requestForController(FWEventItem*)");
0098 lst->Connect("requestForModelContextMenu(Int_t,Int_t)",
0099 "FWSummaryManager",
0100 this,
0101 "requestForSelectedModelContextMenu(Int_t,Int_t)");
0102 }
0103
0104 void FWSummaryManager::itemDestroyed(const FWEventItem* iItem) {
0105 m_pack->HideFrame(m_collectionWidgets[iItem->id()]);
0106 m_pack->RemoveFrame(m_collectionWidgets[iItem->id()]);
0107 delete m_collectionWidgets[iItem->id()];
0108 m_collectionWidgets[iItem->id()] = nullptr;
0109 m_pack->Layout();
0110 gClient->NeedRedraw(m_pack);
0111 }
0112
0113 void FWSummaryManager::itemChanged(const FWEventItem*) { m_itemChanged = true; }
0114
0115 void FWSummaryManager::removeAllItems() {
0116 for (std::vector<FWCollectionSummaryWidget*>::iterator it = m_collectionWidgets.begin(),
0117 itEnd = m_collectionWidgets.end();
0118 it != itEnd;
0119 ++it) {
0120 if (nullptr != *it) {
0121 m_pack->HideFrame(*it);
0122 m_pack->RemoveFrame(*it);
0123 delete *it;
0124 *it = nullptr;
0125 }
0126 }
0127 m_collectionWidgets.clear();
0128 m_pack->Layout();
0129 gClient->NeedRedraw(m_pack);
0130 }
0131
0132 void FWSummaryManager::selectionChanged(const FWSelectionManager& iSM) {}
0133
0134 void FWSummaryManager::changesDone() {
0135 if (m_itemChanged) {
0136 m_pack->Layout();
0137 m_itemChanged = false;
0138 }
0139 }
0140
0141 void FWSummaryManager::colorsChanged() {
0142 bool backgroundIsWhite = m_colorManager->backgroundColorIndex() == FWColorManager::kWhiteIndex;
0143
0144 if (m_colorManager->isColorSetLight()) {
0145 m_pack->SetBackgroundColor(TGFrame::GetDefaultFrameBackground());
0146 } else {
0147 const unsigned int backgroundColor = 0x2f2f2f;
0148 m_pack->SetBackgroundColor(backgroundColor);
0149 }
0150 gClient->NeedRedraw(m_pack);
0151 for (std::vector<FWCollectionSummaryWidget*>::iterator it = m_collectionWidgets.begin(),
0152 itEnd = m_collectionWidgets.end();
0153 it != itEnd;
0154 ++it) {
0155 if (nullptr != *it) {
0156 (*it)->setBackgroundToWhite(backgroundIsWhite);
0157 }
0158 }
0159 }
0160
0161 void FWSummaryManager::requestForInfo(FWEventItem* iItem) { m_guiManager->showEDIFrame(kData); }
0162 void FWSummaryManager::requestForFilter(FWEventItem* iItem) { m_guiManager->showEDIFrame(kFilter); }
0163 void FWSummaryManager::requestForError(FWEventItem* iItem) { m_guiManager->showEDIFrame(); }
0164
0165 void FWSummaryManager::requestForController(FWEventItem* iItem) { m_guiManager->showEDIFrame(); }
0166
0167 void FWSummaryManager::requestForSelectedModelContextMenu(Int_t iGlobalX, Int_t iGlobalY) {
0168 m_guiManager->showSelectedModelContextMenu(iGlobalX, iGlobalY, nullptr);
0169 }
0170
0171
0172
0173
0174 TGCompositeFrame* FWSummaryManager::widget() const { return m_pack; }
0175
0176
0177
0178