File indexing completed on 2024-04-06 12:11:44
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include "TClass.h"
0015 #include "TROOT.h"
0016 #include <cassert>
0017 #include <iostream>
0018 #include <functional>
0019
0020
0021 #include "Fireworks/Core/interface/FWViewManagerBase.h"
0022 #include "Fireworks/Core/interface/FWModelChangeManager.h"
0023 #include "Fireworks/Core/interface/FWColorManager.h"
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 FWViewManagerBase::FWViewManagerBase() : m_context(nullptr), m_changeManager(nullptr), m_colorManager(nullptr) {}
0037
0038
0039
0040
0041
0042
0043 FWViewManagerBase::~FWViewManagerBase() {}
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060 void* FWViewManagerBase::createInstanceOf(const TClass* iBaseClass, const char* iNameOfClass) {
0061
0062 Int_t error;
0063 assert(iBaseClass != nullptr);
0064
0065
0066 TClass* c = TClass::GetClass(iNameOfClass);
0067 if (nullptr == c) {
0068
0069
0070
0071
0072
0073 gROOT->LoadMacro((std::string(iNameOfClass) + ".C+").c_str(), &error);
0074 c = TClass::GetClass(iNameOfClass);
0075 if (nullptr == c) {
0076 std::cerr << "failed to find " << iNameOfClass << std::endl;
0077 return nullptr;
0078 }
0079 }
0080 void* inst = c->New();
0081 void* baseClassInst = c->DynamicCast(iBaseClass, inst);
0082 if (nullptr == baseClassInst) {
0083 std::cerr << "conversion to " << iBaseClass->ClassName() << " for class " << iNameOfClass << " failed" << std::endl;
0084 return nullptr;
0085 }
0086 return baseClassInst;
0087 }
0088
0089 void FWViewManagerBase::modelChangesComingSlot() {
0090
0091 this->modelChangesComing();
0092 }
0093 void FWViewManagerBase::modelChangesDoneSlot() {
0094
0095 this->modelChangesDone();
0096 }
0097 void FWViewManagerBase::colorsChangedSlot() { this->colorsChanged(); }
0098
0099 void FWViewManagerBase::setChangeManager(FWModelChangeManager* iCM) {
0100 assert(nullptr != iCM);
0101 m_changeManager = iCM;
0102 m_changeManager->changeSignalsAreComing_.connect(std::bind(&FWViewManagerBase::modelChangesComing, this));
0103 m_changeManager->changeSignalsAreDone_.connect(std::bind(&FWViewManagerBase::modelChangesDone, this));
0104 }
0105
0106 void FWViewManagerBase::setColorManager(FWColorManager* iCM) {
0107 assert(nullptr != iCM);
0108 m_colorManager = iCM;
0109 m_colorManager->colorsHaveChanged_.connect(std::bind(&FWViewManagerBase::colorsChanged, this));
0110
0111 colorsChanged();
0112 }
0113
0114
0115
0116
0117
0118 FWModelChangeManager& FWViewManagerBase::changeManager() const {
0119 assert(m_changeManager != nullptr);
0120 return *m_changeManager;
0121 }
0122
0123 FWColorManager& FWViewManagerBase::colorManager() const {
0124 assert(m_colorManager != nullptr);
0125 return *m_colorManager;
0126 }