Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <boost/bind.hpp>
00016
00017 #include "TGFrame.h"
00018
00019
00020 #include "Fireworks/Core/interface/FWSummaryManager.h"
00021 #include "Fireworks/Core/interface/FWSelectionManager.h"
00022 #include "Fireworks/Core/interface/FWEventItemsManager.h"
00023 #include "Fireworks/Core/interface/FWModelChangeManager.h"
00024 #include "Fireworks/Core/interface/FWColorManager.h"
00025 #include "Fireworks/Core/interface/FWGUIManager.h"
00026 #include "Fireworks/Core/interface/FWEventItem.h"
00027
00028 #include "Fireworks/Core/src/FWCollectionSummaryWidget.h"
00029 #include "Fireworks/Core/interface/FWDataCategories.h"
00030
00031 #include "Fireworks/Core/src/FWCompactVerticalLayout.h"
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 FWSummaryManager::FWSummaryManager(TGFrame* iParent,
00045 FWSelectionManager* sm,
00046 FWEventItemsManager* eim,
00047 FWGUIManager* gm,
00048 FWModelChangeManager* cm,
00049 FWColorManager* colorm
00050 ) :
00051 m_guiManager(gm),
00052 m_colorManager(colorm),
00053 m_itemChanged(false)
00054 {
00055 colorm->colorsHaveChanged_.connect(boost::bind(&FWSummaryManager::colorsChanged,this));
00056 sm->selectionChanged_.connect(boost::bind(&FWSummaryManager::selectionChanged,this,_1));
00057 eim->newItem_.connect(boost::bind(&FWSummaryManager::newItem,
00058 this, _1) );
00059 eim->goingToClearItems_.connect(boost::bind(&FWSummaryManager::removeAllItems, this));
00060 eim->goingToClearItems_.connect(boost::bind(&FWModelChangeManager::itemsGoingToBeClearedSlot, cm));
00061
00062 m_pack = new TGVerticalFrame(iParent);
00063 m_pack->SetLayoutManager( new FWCompactVerticalLayout(m_pack));
00064 const unsigned int backgroundColor=0x2f2f2f;
00065 m_pack->SetBackgroundColor(backgroundColor);
00066 cm->changeSignalsAreDone_.connect(boost::bind(&FWSummaryManager::changesDone,this));
00067 }
00068
00069
00070
00071
00072
00073
00074 FWSummaryManager::~FWSummaryManager()
00075 {
00076 }
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 void
00094 FWSummaryManager::newItem(FWEventItem* iItem)
00095 {
00096 TGLayoutHints* hints = new TGLayoutHints(kLHintsExpandX);
00097 FWCollectionSummaryWidget* lst = new FWCollectionSummaryWidget(m_pack,*iItem,hints);
00098 m_pack->AddFrame(lst, hints);
00099 m_collectionWidgets.push_back(lst);
00100 bool backgroundIsWhite = m_colorManager->backgroundColorIndex()==FWColorManager::kWhiteIndex;
00101 lst->setBackgroundToWhite(backgroundIsWhite);
00102 iItem->goingToBeDestroyed_.connect(boost::bind(&FWSummaryManager::itemDestroyed,this,_1));
00103 iItem->itemChanged_.connect(boost::bind(&FWSummaryManager::itemChanged,this,_1));
00104 lst->Connect("requestForInfo(FWEventItem*)","FWSummaryManager",this,"requestForInfo(FWEventItem*)");
00105 lst->Connect("requestForFilter(FWEventItem*)","FWSummaryManager",this,"requestForFilter(FWEventItem*)");
00106 lst->Connect("requestForErrorInfo(FWEventItem*)","FWSummaryManager",this,"requestForError(FWEventItem*)");
00107 lst->Connect("requestForController(FWEventItem*)","FWSummaryManager",this,"requestForController(FWEventItem*)");
00108 lst->Connect("requestForModelContextMenu(Int_t,Int_t)","FWSummaryManager",this,"requestForSelectedModelContextMenu(Int_t,Int_t)");
00109 }
00110
00111 void
00112 FWSummaryManager::itemDestroyed(const FWEventItem* iItem)
00113 {
00114 m_pack->HideFrame(m_collectionWidgets[iItem->id()]);
00115 m_pack->RemoveFrame(m_collectionWidgets[iItem->id()]);
00116 delete m_collectionWidgets[iItem->id()];
00117 m_collectionWidgets[iItem->id()]=0;
00118 m_pack->Layout();
00119 gClient->NeedRedraw(m_pack);
00120 }
00121
00122 void
00123 FWSummaryManager::itemChanged(const FWEventItem*)
00124 {
00125 m_itemChanged = true;
00126 }
00127
00128 void
00129 FWSummaryManager::removeAllItems()
00130 {
00131 for(std::vector<FWCollectionSummaryWidget*>::iterator it = m_collectionWidgets.begin(),
00132 itEnd = m_collectionWidgets.end();
00133 it != itEnd;
00134 ++it) {
00135 if(0!=*it) {
00136 m_pack->HideFrame(*it);
00137 m_pack->RemoveFrame(*it);
00138 delete *it;
00139 *it=0;
00140 }
00141 }
00142 m_collectionWidgets.clear();
00143 m_pack->Layout();
00144 gClient->NeedRedraw(m_pack);
00145 }
00146
00147 void
00148 FWSummaryManager::selectionChanged(const FWSelectionManager& iSM)
00149 {
00150 }
00151
00152 void
00153 FWSummaryManager::changesDone()
00154 {
00155 if(m_itemChanged) {
00156 m_pack->Layout();
00157 m_itemChanged=false;
00158 }
00159 }
00160
00161 void
00162 FWSummaryManager::colorsChanged()
00163 {
00164 bool backgroundIsWhite = m_colorManager->backgroundColorIndex()==FWColorManager::kWhiteIndex;
00165
00166 if(m_colorManager->isColorSetLight()) {
00167 m_pack->SetBackgroundColor(TGFrame::GetDefaultFrameBackground());
00168 } else {
00169 const unsigned int backgroundColor=0x2f2f2f;
00170 m_pack->SetBackgroundColor(backgroundColor);
00171 }
00172 gClient->NeedRedraw(m_pack);
00173 for(std::vector<FWCollectionSummaryWidget*>::iterator it = m_collectionWidgets.begin(),
00174 itEnd = m_collectionWidgets.end();
00175 it != itEnd;
00176 ++it) {
00177 if(0!=*it) {
00178 (*it)->setBackgroundToWhite(backgroundIsWhite);
00179 }
00180 }
00181 }
00182
00183 void
00184 FWSummaryManager::requestForInfo(FWEventItem* iItem)
00185 {
00186 m_guiManager->showEDIFrame(kData);
00187 }
00188 void
00189 FWSummaryManager::requestForFilter(FWEventItem* iItem)
00190 {
00191 m_guiManager->showEDIFrame(kFilter);
00192 }
00193 void
00194 FWSummaryManager::requestForError(FWEventItem* iItem)
00195 {
00196 m_guiManager->showEDIFrame();
00197 }
00198
00199 void
00200 FWSummaryManager::requestForController(FWEventItem* iItem)
00201 {
00202 m_guiManager->showEDIFrame();
00203 }
00204
00205 void
00206 FWSummaryManager::requestForSelectedModelContextMenu(Int_t iGlobalX, Int_t iGlobalY)
00207 {
00208 m_guiManager->showSelectedModelContextMenu(iGlobalX,iGlobalY,0);
00209 }
00210
00211
00212
00213
00214 TGCompositeFrame*
00215 FWSummaryManager::widget() const
00216 {
00217 return m_pack;
00218 }
00219
00220
00221
00222