![]() |
![]() |
#include <Fireworks/Core/interface/CmsShowMain.h>
Public Member Functions | |
void | appendData () |
CmsShowMain (int argc, char *argv[]) | |
const fireworks::Context * | context () const |
void | doExit () |
void | fileChangedSlot (const TFile *file) |
const fwlite::Event * | getCurrentEvent () const |
bool | getVersionCheck () const |
void | notified (TSocket *) |
void | openData () |
void | openDataViaURL () |
virtual void | quit () |
void | resetInitialization () |
virtual | ~CmsShowMain () |
Protected Member Functions | |
virtual void | eventChangedImp () |
Private Member Functions | |
virtual void | autoLoadNewEvent () |
void | checkLiveMode () |
virtual void | checkPosition () |
CmsShowMain (const CmsShowMain &) | |
void | connectSocket () |
void | filterButtonClicked () |
void | loadGeometry () |
void | navigatorChangedFilterState (int) |
const CmsShowMain & | operator= (const CmsShowMain &) |
void | postFiltering (bool) |
void | preFiltering () |
void | reachedBeginning () |
void | reachedEnd () |
void | setLiveMode () |
void | setupDataHandling () |
void | setupSocket (unsigned int) |
virtual void | stopPlaying () |
Private Attributes | |
std::auto_ptr< fireworks::Context > | m_context |
std::vector< std::string > | m_inputFiles |
UInt_t | m_lastXEventSerial |
bool | m_live |
int | m_liveTimeout |
std::auto_ptr< SignalTimer > | m_liveTimer |
bool | m_loadedAnyInputFile |
std::auto_ptr < FWLiteJobMetadataManager > | m_metadataManager |
std::auto_ptr< TMonitor > | m_monitor |
std::auto_ptr< CmsShowNavigator > | m_navigator |
bool | m_noVersionCheck |
const TFile * | m_openFile |
std::auto_ptr< CmsShowSearchFiles > | m_searchFiles |
Description: Displays an fwlite::Event in ROOT
Usage: <usage>
Definition at line 61 of file CmsShowMain.h.
CmsShowMain::CmsShowMain | ( | int | argc, |
char * | argv[] | ||
) |
Definition at line 112 of file CmsShowMain.cc.
References CmsShowTaskExecutor::addTask(), cond::ecalcond::all, dir2webdir::argc, dirstructure::argv, CmsShowMainBase::configFilename(), connectSocket(), gather_cfg::cout, alignCSCRings::e, CmsShowMainBase::eiManager(), AutoLibraryLoader::enable(), FWColorPopup::EnableFreePalette(), exception, cmsRelvalreport::exit, f, fmt, fwLog, CmsShowMainBase::geometryFilename(), CmsShowMainBase::guiManager(), kAdvancedRenderCommandOpt, kAdvancedRenderOpt, kAutoSaveAllViews, kChainCommandOpt, kConfigFileCommandOpt, kConfigFileOpt, kEnableFPE, fwlog::kError, kEveCommandOpt, kEveOpt, kFieldCommandOpt, kFreePaletteCommandOpt, kGeomFileCommandOpt, kGeomFileOpt, kHelpCommandOpt, kHelpOpt, fwlog::kInfo, kInputFilesCommandOpt, kInputFilesOpt, kLiveCommandOpt, kLogLevelCommandOpt, kLogLevelOpt, kLoopCommandOpt, kLoopOpt, kNoConfigFileCommandOpt, kNoConfigFileOpt, kNoVersionCheck, kPlainRootCommandOpt, kPlayCommandOpt, kPlayOpt, kPortCommandOpt, kRootInteractiveCommandOpt, kSimGeomFileCommandOpt, kSimGeomFileOpt, kSoftCommandOpt, FWMagField::kUser, kZeroWinOffsets, testEve_cfg::level, CmsShowMainBase::loadGeometry(), m_context, m_inputFiles, m_metadataManager, m_navigator, m_noVersionCheck, AlCaHLTBitMon_ParallelJobs::options, AlCaHLTBitMon_ParallelJobs::p, FWGUIManager::resetWMOffsets(), DTTTrigCorrFirst::run, CmsShowMainBase::setAutoSaveAllViewsFormat(), CmsShowMainBase::setConfigFilename(), FWEventItemsManager::setContext(), CmsShowMainBase::setGeometryFilename(), setLiveMode(), CmsShowNavigator::setMaxNumberOfFilesToChain(), CmsShowMainBase::setPlayLoop(), fwlog::setPresentLogLevel(), CmsShowMainBase::setSimGeometryFilename(), CmsShowMainBase::setup(), CmsShowMainBase::setupAutoLoad(), CmsShowMainBase::setupConfiguration(), setupDataHandling(), CmsShowMainBase::setupDebugSupport(), setupSocket(), CmsShowMainBase::setupViewManagers(), CmsShowTaskExecutor::startDoingTasks(), CmsShowMainBase::startupTasks(), AlCaHLTBitMon_QueryRunRegistry::string, and w().
: CmsShowMainBase(), m_navigator(new CmsShowNavigator(*this)), m_metadataManager(new FWLiteJobMetadataManager()), m_context(new fireworks::Context(changeManager(), selectionManager(), eiManager(), colorManager(), m_metadataManager.get())), m_loadedAnyInputFile(false), m_openFile(0), m_live(false), m_liveTimer(new SignalTimer()), m_liveTimeout(600000), m_lastXEventSerial(0), m_noVersionCheck(false) { try { TGLWidget* w = TGLWidget::Create(gClient->GetDefaultRoot(), kTRUE, kTRUE, 0, 10, 10); delete w; } catch (std::exception& iException) { fwLog(fwlog::kError) << "Failed creating an OpenGL window: " << iException.what() << "\n" "Things to check:\n" "- Is DISPLAY environment variable set?\n" "- Are OpenGL libraries installed?\n" "- If running remotely, make sure you use 'ssh -X' or 'ssh -Y'.\n" "See also: https://twiki.cern.ch/twiki/bin/viewauth/CMS/WorkBookFireworks\n"; gSystem->Exit(1); } eiManager()->setContext(m_context.get()); std::string descString(argv[0]); descString += " [options] <data file>\nGeneral"; namespace po = boost::program_options; po::options_description desc(descString); desc.add_options() (kInputFilesCommandOpt, po::value< std::vector<std::string> >(), "Input root files") (kConfigFileCommandOpt, po::value<std::string>(), "Include configuration file") (kNoConfigFileCommandOpt, "Empty configuration") (kNoVersionCheck, "No file version check") (kGeomFileCommandOpt, po::value<std::string>(), "Include geometry file") (kSimGeomFileCommandOpt,po::value<std::string>(), "Set simulation geometry file to browser") (kFieldCommandOpt, po::value<double>(), "Set magnetic field value explicitly. Default is auto-field estimation") (kRootInteractiveCommandOpt, "Enable root interactive prompt") (kSoftCommandOpt, "Try to force software rendering to avoid problems with bad hardware drivers") (kHelpCommandOpt, "Display help message"); po::options_description livedesc("Live Event Display"); livedesc.add_options() (kPlayCommandOpt, po::value<float>(), "Start in play mode with given interval between events in seconds") (kPortCommandOpt, po::value<unsigned int>(), "Listen to port for new data files to open") (kLoopCommandOpt, "Loop events in play mode") (kChainCommandOpt, po::value<unsigned int>(), "Chain up to a given number of recently open files. Default is 1 - no chain") (kLiveCommandOpt, "Enforce playback mode if a user is not using display") (kAutoSaveAllViews, po::value<std::string>(), "Auto-save all views with given prefix (run_event_lumi_view.png is appended)"); po::options_description debugdesc("Debug"); debugdesc.add_options() (kLogLevelCommandOpt, po::value<unsigned int>(), "Set log level starting from 0 to 4 : kDebug, kInfo, kWarning, kError") (kEveCommandOpt, "Show TEveBrowser to help debug problems") (kEnableFPE, "Enable detection of floating-point exceptions"); po::options_description rnrdesc("Appearance"); rnrdesc.add_options() (kFreePaletteCommandOpt, "Allow free color selection (requires special configuration!)") (kZeroWinOffsets, "Disable auto-detection of window position offsets") (kAdvancedRenderCommandOpt, "Enable line anti-aliasing"); po::positional_options_description p; p.add(kInputFilesOpt, -1); po::options_description hiddendesc("hidden"); hiddendesc.add_options(); po::options_description all(""); all.add(desc).add(rnrdesc).add(livedesc).add(debugdesc); int newArgc = argc; char **newArgv = argv; po::variables_map vm; try{ po::store(po::command_line_parser(newArgc, newArgv). options(all).positional(p).run(), vm); po::notify(vm); } catch ( const std::exception& e) { // Return with exit status 0 to avoid generating crash reports fwLog(fwlog::kError) << e.what() << std::endl; std::cout << all <<std::endl; exit(0); } if(vm.count(kHelpOpt)) { std::cout << all <<std::endl; exit(0); } if(vm.count(kLogLevelOpt)) { fwlog::LogLevel level = (fwlog::LogLevel)(vm[kLogLevelOpt].as<unsigned int>()); fwlog::setPresentLogLevel(level); } if(vm.count(kPlainRootCommandOpt)) { fwLog(fwlog::kInfo) << "Plain ROOT prompt requested" << std::endl; return; } const char* cmspath = gSystem->Getenv("CMSSW_BASE"); if(0 == cmspath) { throw std::runtime_error("CMSSW_BASE environment variable not set"); } // input file if (vm.count(kInputFilesOpt)) { m_inputFiles = vm[kInputFilesOpt].as< std::vector<std::string> >(); } if (!m_inputFiles.size()) fwLog(fwlog::kInfo) << "No data file given." << std::endl; else if (m_inputFiles.size() == 1) fwLog(fwlog::kInfo) << "Input " << m_inputFiles.front() << std::endl; else fwLog(fwlog::kInfo) << m_inputFiles.size() << " input files; first: " << m_inputFiles.front() << ", last: " << m_inputFiles.back() << std::endl; // configuration file if (vm.count(kConfigFileOpt)) { setConfigFilename(vm[kConfigFileOpt].as<std::string>()); if (access(configFilename(), R_OK) == -1) { fwLog(fwlog::kError) << "Specified configuration file does not exist. Quitting.\n"; exit(0); } } else { if (vm.count(kNoConfigFileOpt)) { fwLog(fwlog::kInfo) << "No configuration is loaded, show everything.\n"; setConfigFilename(""); } else setConfigFilename("default.fwc"); } fwLog(fwlog::kInfo) << "Config " << configFilename() << std::endl; // geometry if (vm.count(kGeomFileOpt)) { setGeometryFilename(vm[kGeomFileOpt].as<std::string>()); } else { // fwLog(fwlog::kInfo) << "No geom file name. Choosing default.\n"; setGeometryFilename("cmsGeom10.root"); } fwLog(fwlog::kInfo) << "Geometry file " << geometryFilename() << "\n"; if (vm.count(kSimGeomFileOpt)) { setSimGeometryFilename(vm[kSimGeomFileOpt].as<std::string>()); } else { setSimGeometryFilename("cmsSimGeom-14.root"); } // Free-palette palette if (vm.count(kFreePaletteCommandOpt)) { FWColorPopup::EnableFreePalette(); fwLog(fwlog::kInfo) << "Palette restriction removed on user request!\n"; } bool eveMode = vm.count(kEveOpt); //Delay creating guiManager and enabling autoloading until here so that if we have a 'help' request we don't // open any graphics or build dictionaries AutoLibraryLoader::enable(); TEveManager::Create(kFALSE, "FIV"); setup(m_navigator.get(), m_context.get(), m_metadataManager.get()); if (vm.count(kZeroWinOffsets)) { guiManager()->resetWMOffsets(); fwLog(fwlog::kInfo) << "Window offsets reset on user request!\n"; } if ( vm.count(kAdvancedRenderOpt) ) { TEveLine::SetDefaultSmooth(kTRUE); } //figure out where to find macros //tell ROOT where to find our macros CmsShowTaskExecutor::TaskFunctor f; // first check if port is not occupied if (vm.count(kPortCommandOpt)) { f=boost::bind(&CmsShowMain::setupSocket, this, vm[kPortCommandOpt].as<unsigned int>()); startupTasks()->addTask(f); } f=boost::bind(&CmsShowMainBase::loadGeometry,this); startupTasks()->addTask(f); f=boost::bind(&CmsShowMainBase::setupViewManagers,this); startupTasks()->addTask(f); f=boost::bind(&CmsShowMainBase::setupConfiguration,this); startupTasks()->addTask(f); f=boost::bind(&CmsShowMain::setupDataHandling,this); startupTasks()->addTask(f); if (vm.count(kLoopOpt)) setPlayLoop(); if (eveMode) { f = boost::bind(&CmsShowMainBase::setupDebugSupport,this); startupTasks()->addTask(f); } if(vm.count(kChainCommandOpt)) { f = boost::bind(&CmsShowNavigator::setMaxNumberOfFilesToChain, m_navigator.get(), vm[kChainCommandOpt].as<unsigned int>()); startupTasks()->addTask(f); } if (vm.count(kPlayOpt)) { f = boost::bind(&CmsShowMainBase::setupAutoLoad, this, vm[kPlayOpt].as<float>()); startupTasks()->addTask(f); } if(vm.count(kLiveCommandOpt)) { f = boost::bind(&CmsShowMain::setLiveMode, this); startupTasks()->addTask(f); } if(vm.count(kFieldCommandOpt)) { m_context->getField()->setSource(FWMagField::kUser); m_context->getField()->setUserField(vm[kFieldCommandOpt].as<double>()); } if(vm.count(kAutoSaveAllViews)) { std::string fmt = vm[kAutoSaveAllViews].as<std::string>(); fmt += "%u_%u_%u_%s.png"; setAutoSaveAllViewsFormat(fmt); } if(vm.count(kNoVersionCheck)) { m_noVersionCheck=true; } if(vm.count(kEnableFPE)) { gSystem->SetFPEMask(); } if (vm.count(kPortCommandOpt)) { f=boost::bind(&CmsShowMain::connectSocket, this); startupTasks()->addTask(f); } startupTasks()->startDoingTasks(); }
CmsShowMain::~CmsShowMain | ( | ) | [virtual] |
Definition at line 371 of file CmsShowMain.cc.
References FWSelectionManager::clearSelection(), and CmsShowMainBase::selectionManager().
{ //avoids a seg fault from eve which happens if eve is terminated after the GUI is gone selectionManager()->clearSelection(); }
CmsShowMain::CmsShowMain | ( | const CmsShowMain & | ) | [private] |
void CmsShowMain::appendData | ( | ) |
Definition at line 484 of file CmsShowMain.cc.
References checkPosition(), FWGUIManager::clearStatus(), CmsShowMainBase::draw(), FWGUIManager::getMainFrame(), CmsShowMainBase::guiManager(), m_loadedAnyInputFile, m_navigator, FWGUIManager::titleChanged(), and FWGUIManager::updateStatus().
Referenced by setupDataHandling().
{ const char* kRootType[] = {"ROOT files","*.root", 0, 0}; TGFileInfo fi; fi.fFileTypes = kRootType; /* this is how things used to be done: fi.fIniDir = "."; this is bad because the destructor calls delete[] on fIniDir. */ fi.fIniDir = new char[128]; strncpy(fi.fIniDir, ".", 127); guiManager()->updateStatus("waiting for data file ..."); new TGFileDialog(gClient->GetDefaultRoot(), guiManager()->getMainFrame(), kFDOpen, &fi); guiManager()->updateStatus("loading file ..."); if (fi.fFilename) { m_navigator->appendFile(fi.fFilename, false, false); m_loadedAnyInputFile = true; checkPosition(); draw(); guiManager()->titleChanged(m_navigator->frameTitle()); } guiManager()->clearStatus(); }
void CmsShowMain::autoLoadNewEvent | ( | ) | [private, virtual] |
Implements CmsShowMainBase.
Definition at line 539 of file CmsShowMain.cc.
References checkPosition(), CmsShowMainBase::draw(), FWGUIManager::enableActions(), CmsShowMainBase::forward(), CmsShowMainBase::guiManager(), CmsShowMainBase::loop(), m_loadedAnyInputFile, m_monitor, m_navigator, reachedEnd(), CmsShowMainBase::startAutoLoadTimer(), and CmsShowMainBase::stopAutoLoadTimer().
{ stopAutoLoadTimer(); // case when start with no input file if (!m_loadedAnyInputFile) { if (m_monitor.get()) startAutoLoadTimer(); return; } bool reachedEnd = (forward() && m_navigator->isLastEvent()) || (!forward() && m_navigator->isFirstEvent()); if (loop() && reachedEnd) { forward() ? m_navigator->firstEvent() : m_navigator->lastEvent(); draw(); } else if (!reachedEnd) { forward() ? m_navigator->nextEvent() : m_navigator->previousEvent(); draw(); } // stop loop in case no loop or monitor mode if (reachedEnd && (loop() || m_monitor.get()) == kFALSE) { if (forward() && m_navigator->isLastEvent()) { guiManager()->enableActions(); checkPosition(); } if ((!forward()) && m_navigator->isFirstEvent()) { guiManager()->enableActions(); checkPosition(); } } else startAutoLoadTimer(); }
void CmsShowMain::checkLiveMode | ( | ) | [private] |
Definition at line 829 of file CmsShowMain.cc.
References CmsShowMainBase::guiManager(), CmsShowMainBase::isPlaying(), m_lastXEventSerial, m_liveTimeout, m_liveTimer, FWGUIManager::playEventsAction(), and CSGContinuousAction::switchMode().
Referenced by setLiveMode().
{ m_liveTimer->TurnOff(); #if defined(R__LINUX) TGX11 *x11 = dynamic_cast<TGX11*>(gVirtualX); if (x11) { XAnyEvent *ev = (XAnyEvent*) x11->GetNativeEvent(); // printf("serial %d \n",(int)ev->serial ); if ( !isPlaying() && m_lastXEventSerial == ev->serial ) guiManager()->playEventsAction()->switchMode(); m_lastXEventSerial = ev->serial; } #endif m_liveTimer->SetTime((Long_t)(m_liveTimeout)); m_liveTimer->Reset(); m_liveTimer->TurnOn(); }
void CmsShowMain::checkPosition | ( | ) | [private, virtual] |
Implements CmsShowMainBase.
Definition at line 586 of file CmsShowMain.cc.
References FWGUIManager::disableNext(), FWGUIManager::disablePrevious(), CSGAction::enable(), CmsShowMainFrame::enableNavigatorControls(), FWGUIManager::getMainFrame(), CmsShowMainBase::guiManager(), CSGAction::isEnabled(), CmsShowMainBase::isPlaying(), CmsShowMainBase::loop(), m_monitor, m_navigator, and FWGUIManager::playEventsAction().
Referenced by appendData(), autoLoadNewEvent(), navigatorChangedFilterState(), notified(), openData(), openDataViaURL(), postFiltering(), setupDataHandling(), and stopPlaying().
{ if ((m_monitor.get() || loop() ) && isPlaying()) return; guiManager()->getMainFrame()->enableNavigatorControls(); if (m_navigator->isFirstEvent()) guiManager()->disablePrevious(); if (m_navigator->isLastEvent()) { guiManager()->disableNext(); // force enable play events action in --port mode if (m_monitor.get() && !guiManager()->playEventsAction()->isEnabled()) guiManager()->playEventsAction()->enable(); } }
void CmsShowMain::connectSocket | ( | ) | [private] |
Definition at line 680 of file CmsShowMain.cc.
References m_monitor.
Referenced by CmsShowMain().
{ m_monitor->Connect("Ready(TSocket*)","CmsShowMain",this,"notified(TSocket*)"); }
const fireworks::Context* CmsShowMain::context | ( | ) | const [inline] |
Definition at line 81 of file CmsShowMain.h.
References m_context.
Referenced by CmsShowNavigator::getProcessList(), and CmsShowNavigator::updateFileFilters().
{ return m_context.get(); };
void CmsShowMain::doExit | ( | ) |
Definition at line 401 of file CmsShowMain.cc.
References FWGUIManager::evePreTerminate(), CmsShowMainBase::guiManager(), and m_context.
Referenced by DieTimer::Notify().
{ // pre terminate eve m_context->deleteEveElements(); guiManager()->evePreTerminate(); // sleep at least 150 ms // windows in ROOT GUI are destroyed in 150 ms timeout after gSystem->Sleep(151); gSystem->ProcessEvents(); gSystem->ExitLoop(); }
void CmsShowMain::eventChangedImp | ( | ) | [protected, virtual] |
Reimplemented from CmsShowMainBase.
Definition at line 449 of file CmsShowMain.cc.
References getCurrentEvent(), CmsShowMainBase::guiManager(), m_metadataManager, m_navigator, m_openFile, and FWGUIManager::titleChanged().
{ CmsShowMainBase::eventChangedImp(); guiManager()->titleChanged(m_navigator->frameTitle()); m_metadataManager->update(new FWLiteJobMetadataUpdateRequest(getCurrentEvent(), m_openFile)); }
void CmsShowMain::fileChangedSlot | ( | const TFile * | file | ) |
Definition at line 439 of file CmsShowMain.cc.
References mergeVDriftHistosByStation::file, getCurrentEvent(), CmsShowMainBase::guiManager(), m_metadataManager, m_navigator, m_openFile, and FWGUIManager::titleChanged().
Referenced by setupDataHandling().
{ m_openFile = file; if (file) guiManager()->titleChanged(m_navigator->frameTitle()); m_metadataManager->update(new FWLiteJobMetadataUpdateRequest(getCurrentEvent(), m_openFile)); }
void CmsShowMain::filterButtonClicked | ( | ) | [private] |
Definition at line 779 of file CmsShowMain.cc.
References CmsShowMainBase::guiManager(), CmsShowNavigator::kWithdrawn, m_navigator, and FWGUIManager::showEventFilterGUI().
Referenced by setupDataHandling().
{ if (m_navigator->getFilterState() == CmsShowNavigator::kWithdrawn ) guiManager()->showEventFilterGUI(); else m_navigator->toggleFilterEnable(); }
const fwlite::Event * CmsShowMain::getCurrentEvent | ( | ) | const |
Definition at line 431 of file CmsShowMain.cc.
References m_navigator.
Referenced by eventChangedImp(), and fileChangedSlot().
{ if (m_navigator.get()) return static_cast<const fwlite::Event*>(m_navigator->getCurrentEvent()); return 0; }
bool CmsShowMain::getVersionCheck | ( | ) | const [inline] |
Definition at line 82 of file CmsShowMain.h.
References m_noVersionCheck.
Referenced by CmsShowNavigator::appendFile(), and CmsShowNavigator::openFile().
{ return !m_noVersionCheck; }
void CmsShowMain::loadGeometry | ( | ) | [private] |
Reimplemented from CmsShowMainBase.
void CmsShowMain::navigatorChangedFilterState | ( | int | state | ) | [private] |
Definition at line 768 of file CmsShowMain.cc.
References checkPosition(), CmsShowMainBase::guiManager(), m_navigator, FWGUIManager::setFilterButtonIcon(), and FWGUIManager::setFilterButtonText().
Referenced by setupDataHandling().
{ guiManager()->setFilterButtonIcon(state); if (m_navigator->filesNeedUpdate() == false) { guiManager()->setFilterButtonText(m_navigator->filterStatusMessage()); checkPosition(); } }
void CmsShowMain::notified | ( | TSocket * | iSocket | ) |
Definition at line 687 of file CmsShowMain.cc.
References checkPosition(), CmsShowMainBase::draw(), convertXMLtoSQLite_cfg::fileName, CmsShowMainBase::forward(), CmsShowMainBase::guiManager(), CmsShowMainBase::isPlaying(), m_live, m_loadedAnyInputFile, m_monitor, m_navigator, alignCSCRings::s, getRunRegistry::server, AlCaHLTBitMon_QueryRunRegistry::string, and FWGUIManager::updateStatus().
{ TServerSocket* server = dynamic_cast<TServerSocket*> (iSocket); if (server) { TSocket* connection = server->Accept(); if (connection) { m_monitor->Add(connection); std::stringstream s; s << "received connection from "<<iSocket->GetInetAddress().GetHostName(); guiManager()->updateStatus(s.str().c_str()); } } else { char buffer[4096]; memset(buffer,0,sizeof(buffer)); if (iSocket->RecvRaw(buffer, sizeof(buffer)) <= 0) { m_monitor->Remove(iSocket); //std::stringstream s; //s << "closing connection to "<<iSocket->GetInetAddress().GetHostName(); //m_guiManager->updateStatus(s.str().c_str()); delete iSocket; return; } std::string fileName(buffer); std::string::size_type lastNonSpace = fileName.find_last_not_of(" \n\t"); if (lastNonSpace != std::string::npos) { fileName.erase(lastNonSpace+1); } std::stringstream s; s <<"New file notified '"<<fileName<<"'"; guiManager()->updateStatus(s.str().c_str()); bool appended = m_navigator->appendFile(fileName, true, m_live); if (appended) { if (m_live && isPlaying() && forward()) m_navigator->activateNewFileOnNextEvent(); else if (!isPlaying()) checkPosition(); // bootstrap case: --port and no input file if (!m_loadedAnyInputFile) { m_loadedAnyInputFile = true; m_navigator->firstEvent(); if (!isPlaying()) draw(); } std::stringstream sr; sr <<"New file registered '"<<fileName<<"'"; guiManager()->updateStatus(sr.str().c_str()); } else { std::stringstream sr; sr <<"New file NOT registered '"<<fileName<<"'"; guiManager()->updateStatus(sr.str().c_str()); } } }
void CmsShowMain::openData | ( | ) |
Definition at line 460 of file CmsShowMain.cc.
References checkPosition(), FWGUIManager::clearStatus(), CmsShowMainBase::draw(), FWGUIManager::getMainFrame(), CmsShowMainBase::guiManager(), m_loadedAnyInputFile, m_navigator, and FWGUIManager::updateStatus().
Referenced by setupDataHandling().
{ const char* kRootType[] = {"ROOT files","*.root", 0, 0}; TGFileInfo fi; fi.fFileTypes = kRootType; /* this is how things used to be done: fi.fIniDir = "."; this is bad because the destructor calls delete[] on fIniDir. */ fi.fIniDir = new char[128]; strncpy(fi.fIniDir, ".", 127); guiManager()->updateStatus("waiting for data file ..."); new TGFileDialog(gClient->GetDefaultRoot(), guiManager()->getMainFrame(), kFDOpen, &fi); guiManager()->updateStatus("loading file ..."); if (fi.fFilename) { m_navigator->openFile(fi.fFilename); m_loadedAnyInputFile = true; m_navigator->firstEvent(); checkPosition(); draw(); } guiManager()->clearStatus(); }
void CmsShowMain::openDataViaURL | ( | ) |
Definition at line 509 of file CmsShowMain.cc.
References checkPosition(), FWGUIManager::clearStatus(), CmsShowMainBase::draw(), CmsShowMainBase::guiManager(), m_loadedAnyInputFile, m_navigator, m_searchFiles, AlCaHLTBitMon_QueryRunRegistry::string, and FWGUIManager::updateStatus().
Referenced by setupDataHandling().
{ if (m_searchFiles.get() == 0) { m_searchFiles = std::auto_ptr<CmsShowSearchFiles>(new CmsShowSearchFiles("", "Open Remote Data Files", guiManager()->getMainFrame(), 500, 400)); m_searchFiles->CenterOnParent(kTRUE,TGTransientFrame::kBottomRight); } std::string chosenFile = m_searchFiles->chooseFileFromURL(); if(!chosenFile.empty()) { guiManager()->updateStatus("loading file ..."); if(m_navigator->openFile(chosenFile.c_str())) { m_loadedAnyInputFile = true; m_navigator->firstEvent(); checkPosition(); draw(); guiManager()->clearStatus(); } else { guiManager()->updateStatus("failed to load data file"); } } }
const CmsShowMain& CmsShowMain::operator= | ( | const CmsShowMain & | ) | [private] |
void CmsShowMain::postFiltering | ( | bool | doDraw | ) | [private] |
Definition at line 795 of file CmsShowMain.cc.
References checkPosition(), FWGUIManager::clearStatus(), CmsShowMainBase::draw(), CmsShowMainBase::guiManager(), m_navigator, and FWGUIManager::setFilterButtonText().
Referenced by setupDataHandling().
{ // called only filter is changed guiManager()->clearStatus(); if (doDraw) draw(); checkPosition(); guiManager()->setFilterButtonText(m_navigator->filterStatusMessage()); }
void CmsShowMain::preFiltering | ( | ) | [private] |
Definition at line 788 of file CmsShowMain.cc.
References CmsShowMainBase::guiManager(), and FWGUIManager::updateStatus().
{ // called only if filter has changed guiManager()->updateStatus("Filtering events"); }
void CmsShowMain::quit | ( | ) | [virtual] |
void CmsShowMain::reachedBeginning | ( | ) | [private] |
void CmsShowMain::reachedEnd | ( | ) | [private] |
Referenced by autoLoadNewEvent().
void CmsShowMain::resetInitialization | ( | ) |
Definition at line 456 of file CmsShowMain.cc.
{
//printf("Need to reset\n");
}
void CmsShowMain::setLiveMode | ( | ) | [private] |
Definition at line 807 of file CmsShowMain.cc.
References checkLiveMode(), m_live, m_liveTimeout, and m_liveTimer.
Referenced by CmsShowMain().
{ m_live = true; m_liveTimer.reset(new SignalTimer()); m_liveTimer->timeout_.connect(boost::bind(&CmsShowMain::checkLiveMode,this)); Window_t rootw, childw; Int_t root_x, root_y, win_x, win_y; UInt_t mask; gVirtualX->QueryPointer(gClient->GetDefaultRoot()->GetId(), rootw, childw, root_x, root_y, win_x, win_y, mask); m_liveTimer->SetTime(m_liveTimeout); m_liveTimer->Reset(); m_liveTimer->TurnOn(); }
void CmsShowMain::setupDataHandling | ( | ) | [private] |
Definition at line 607 of file CmsShowMain.cc.
References CSGAction::activated, appendData(), FWEventItemsManager::begin(), checkPosition(), CmsShowMainBase::draw(), CmsShowMainBase::eiManager(), FWEventItemsManager::end(), fileChangedSlot(), filterButtonClicked(), FWGUIManager::filterButtonClicked_, alignmentValidation::fname, FWGUIManager::getAction(), CmsShowMainBase::guiManager(), cuy::ii, m_inputFiles, m_loadedAnyInputFile, m_monitor, m_navigator, navigatorChangedFilterState(), openData(), openDataViaURL(), postFiltering(), cmsshow::sAppendData, FWGUIManager::setFilterButtonIcon(), CmsShowMainBase::setupActions(), CmsShowNavigator::showEventFilterGUI(), FWGUIManager::showEventFilterGUI_, cmsshow::sOpenData, cmsshow::sSearchFiles, AlCaHLTBitMon_QueryRunRegistry::string, FWGUIManager::updateEventFilterEnable(), and FWGUIManager::updateStatus().
Referenced by CmsShowMain().
{ guiManager()->updateStatus("Setting up data handling..."); // navigator filtering -> m_navigator->fileChanged_.connect(boost::bind(&CmsShowMain::fileChangedSlot, this, _1)); m_navigator->editFiltersExternally_.connect(boost::bind(&FWGUIManager::updateEventFilterEnable, guiManager(), _1)); m_navigator->filterStateChanged_.connect(boost::bind(&CmsShowMain::navigatorChangedFilterState, this, _1)); m_navigator->postFiltering_.connect(boost::bind(&CmsShowMain::postFiltering, this, _1)); // navigator fitlering <- guiManager()->showEventFilterGUI_.connect(boost::bind(&CmsShowNavigator::showEventFilterGUI, m_navigator.get(),_1)); guiManager()->filterButtonClicked_.connect(boost::bind(&CmsShowMain::filterButtonClicked,this)); // Data handling. File related and therefore not in the base class. if (guiManager()->getAction(cmsshow::sOpenData) != 0) guiManager()->getAction(cmsshow::sOpenData)->activated.connect(sigc::mem_fun(*this, &CmsShowMain::openData)); if (guiManager()->getAction(cmsshow::sAppendData) != 0) guiManager()->getAction(cmsshow::sAppendData)->activated.connect(sigc::mem_fun(*this, &CmsShowMain::appendData)); if (guiManager()->getAction(cmsshow::sSearchFiles) != 0) guiManager()->getAction(cmsshow::sSearchFiles)->activated.connect(sigc::mem_fun(*this, &CmsShowMain::openDataViaURL)); setupActions(); // init data from CmsShowNavigator configuration, can do this with signals since there were not connected yet guiManager()->setFilterButtonIcon(m_navigator->getFilterState()); for (unsigned int ii = 0; ii < m_inputFiles.size(); ++ii) { const std::string& fname = m_inputFiles[ii]; if (fname.empty()) continue; guiManager()->updateStatus("loading data file ..."); if (!m_navigator->appendFile(fname, false, false)) { guiManager()->updateStatus("failed to load data file"); } else { m_loadedAnyInputFile = true; } } if (m_loadedAnyInputFile) { m_navigator->firstEvent(); checkPosition(); draw(); } else if (m_monitor.get() == 0 && (eiManager()->begin() != eiManager()->end()) ) { if (m_inputFiles.empty()) openDataViaURL(); else openData(); } }
void CmsShowMain::setupSocket | ( | unsigned int | iSocket | ) | [private] |
Definition at line 667 of file CmsShowMain.cc.
References cmsRelvalreport::exit, fwLog, fwlog::kError, m_monitor, and getRunRegistry::server.
Referenced by CmsShowMain().
void CmsShowMain::stopPlaying | ( | ) | [private, virtual] |
Implements CmsShowMainBase.
Definition at line 757 of file CmsShowMain.cc.
References checkPosition(), FWGUIManager::enableActions(), CmsShowMainBase::guiManager(), m_live, m_navigator, CmsShowMainBase::setIsPlaying(), and CmsShowMainBase::stopAutoLoadTimer().
{ stopAutoLoadTimer(); if (m_live) m_navigator->resetNewFileOnNextEvent(); setIsPlaying(false); guiManager()->enableActions(); checkPosition(); }
std::auto_ptr<fireworks::Context> CmsShowMain::m_context [private] |
Definition at line 117 of file CmsShowMain.h.
Referenced by CmsShowMain(), context(), and doExit().
std::vector<std::string> CmsShowMain::m_inputFiles [private] |
Definition at line 119 of file CmsShowMain.h.
Referenced by CmsShowMain(), and setupDataHandling().
UInt_t CmsShowMain::m_lastXEventSerial [private] |
Definition at line 129 of file CmsShowMain.h.
Referenced by checkLiveMode().
bool CmsShowMain::m_live [private] |
Definition at line 126 of file CmsShowMain.h.
Referenced by notified(), setLiveMode(), and stopPlaying().
int CmsShowMain::m_liveTimeout [private] |
Definition at line 128 of file CmsShowMain.h.
Referenced by checkLiveMode(), and setLiveMode().
std::auto_ptr<SignalTimer> CmsShowMain::m_liveTimer [private] |
Definition at line 127 of file CmsShowMain.h.
Referenced by checkLiveMode(), and setLiveMode().
bool CmsShowMain::m_loadedAnyInputFile [private] |
Definition at line 120 of file CmsShowMain.h.
Referenced by appendData(), autoLoadNewEvent(), notified(), openData(), openDataViaURL(), and setupDataHandling().
std::auto_ptr<FWLiteJobMetadataManager> CmsShowMain::m_metadataManager [private] |
Definition at line 116 of file CmsShowMain.h.
Referenced by CmsShowMain(), eventChangedImp(), and fileChangedSlot().
std::auto_ptr<TMonitor> CmsShowMain::m_monitor [private] |
Definition at line 133 of file CmsShowMain.h.
Referenced by autoLoadNewEvent(), checkPosition(), connectSocket(), notified(), setupDataHandling(), and setupSocket().
std::auto_ptr<CmsShowNavigator> CmsShowMain::m_navigator [private] |
Definition at line 115 of file CmsShowMain.h.
Referenced by appendData(), autoLoadNewEvent(), checkPosition(), CmsShowMain(), eventChangedImp(), fileChangedSlot(), filterButtonClicked(), getCurrentEvent(), navigatorChangedFilterState(), notified(), openData(), openDataViaURL(), postFiltering(), setupDataHandling(), and stopPlaying().
bool CmsShowMain::m_noVersionCheck [private] |
Definition at line 131 of file CmsShowMain.h.
Referenced by CmsShowMain(), and getVersionCheck().
const TFile* CmsShowMain::m_openFile [private] |
Definition at line 121 of file CmsShowMain.h.
Referenced by eventChangedImp(), and fileChangedSlot().
std::auto_ptr<CmsShowSearchFiles> CmsShowMain::m_searchFiles [private] |
Definition at line 123 of file CmsShowMain.h.
Referenced by openDataViaURL().