Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

76x Fireworks: auto-detect configuration after opening first file -- git reattempt 2 #11167

Merged
merged 4 commits into from Sep 7, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions Fireworks/Core/interface/FWGUIManager.h
Expand Up @@ -115,6 +115,7 @@ class FWGUIManager : public FWConfigurable
void addTo(FWConfiguration&) const;
void setFrom(const FWConfiguration&);
void setWindowInfoFrom(const FWConfiguration& iFrom, TGMainFrame* iFrame);
void initEmpty();

TGVerticalFrame* createList(TGCompositeFrame *p);
void createViews(TEveWindowSlot *slot);
Expand Down
72 changes: 46 additions & 26 deletions Fireworks/Core/src/CmsShowMain.cc
Expand Up @@ -303,6 +303,14 @@ CmsShowMain::CmsShowMain(int argc, char *argv[])
m_context->setHidePFBuilders(true);
}

if(vm.count(kExpertCommandOpt))
{
m_context->setHidePFBuilders(false);
}
else {
m_context->setHidePFBuilders(true);
}

setup(m_navigator.get(), m_context.get(), m_metadataManager.get());

if (vm.count(kZeroWinOffsets))
Expand Down Expand Up @@ -330,8 +338,6 @@ CmsShowMain::CmsShowMain(int argc, char *argv[])
f=boost::bind(&CmsShowMainBase::setupViewManagers,this);
startupTasks()->addTask(f);



if(vm.count(kLiveCommandOpt))
{
f = boost::bind(&CmsShowMain::setLiveMode, this);
Expand All @@ -343,19 +349,10 @@ CmsShowMain::CmsShowMain(int argc, char *argv[])
m_context->getField()->setSource(FWMagField::kUser);
m_context->getField()->setUserField(vm[kFieldCommandOpt].as<double>());
}

f=boost::bind(&CmsShowMain::setupDataHandling,this);
startupTasks()->addTask(f);

if ( m_inputFiles.empty()) {
f=boost::bind(&CmsShowMainBase::setupConfiguration,this);
startupTasks()->addTask(f);
f=boost::bind(&CmsShowMain::setupDataHandling,this);
startupTasks()->addTask(f);
}
else {
f=boost::bind(&CmsShowMain::setupDataHandling,this);
startupTasks()->addTask(f);
f=boost::bind(&CmsShowMainBase::setupConfiguration,this);
startupTasks()->addTask(f);
}

if (vm.count(kLoopOpt))
setPlayLoop();
Expand Down Expand Up @@ -487,6 +484,10 @@ CmsShowMain::fileChangedSlot(const TFile *file)
if (file)
guiManager()->titleChanged(m_navigator->frameTitle());


if (context()->getField()->getSource() == FWMagField::kNone) {
context()->getField()->resetFieldEstimate();
}
m_metadataManager->update(new FWLiteJobMetadataUpdateRequest(getCurrentEvent(), m_openFile));
}

Expand Down Expand Up @@ -518,7 +519,8 @@ void CmsShowMain::openData()
guiManager()->updateStatus("loading file ...");
if (fi.fFilename) {
m_navigator->openFile(fi.fFilename);
m_loadedAnyInputFile = true;

setLoadedAnyInputFileAfterStartup();
m_navigator->firstEvent();
checkPosition();
draw();
Expand All @@ -542,7 +544,7 @@ void CmsShowMain::appendData()
guiManager()->updateStatus("loading file ...");
if (fi.fFilename) {
m_navigator->appendFile(fi.fFilename, false, false);
m_loadedAnyInputFile = true;
setLoadedAnyInputFileAfterStartup();
checkPosition();
draw();
guiManager()->titleChanged(m_navigator->frameTitle());
Expand All @@ -564,7 +566,7 @@ CmsShowMain::openDataViaURL()
if(!chosenFile.empty()) {
guiManager()->updateStatus("loading file ...");
if(m_navigator->openFile(chosenFile.c_str())) {
m_loadedAnyInputFile = true;
setLoadedAnyInputFileAfterStartup();
m_navigator->firstEvent();
checkPosition();
draw();
Expand Down Expand Up @@ -653,7 +655,6 @@ CmsShowMain::setupDataHandling()
{
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));
Expand Down Expand Up @@ -688,8 +689,7 @@ CmsShowMain::setupDataHandling()
}
else
{
m_loadedAnyInputFile = true;

m_loadedAnyInputFile = true;
}
}

Expand All @@ -698,16 +698,36 @@ CmsShowMain::setupDataHandling()
m_navigator->firstEvent();
checkPosition();
draw();
setupConfiguration();
}
else if (m_monitor.get() == 0 && (configurationManager()->getIgnore() == false) )
{
if (m_inputFiles.empty())
openDataViaURL();
else
openData();
else {
if (configFilename()[0] == '\0') {
guiManager()->initEmpty();
}
else {
setupConfiguration();
}

if (m_monitor.get() == 0 && (configurationManager()->getIgnore() == false)) {
if (m_inputFiles.empty())
openDataViaURL();
else
openData();
}
}
}

void
CmsShowMain::setLoadedAnyInputFileAfterStartup()
{
if (m_loadedAnyInputFile == false) {
m_loadedAnyInputFile = true;
if ((configFilename()[0] == '\0') && (configurationManager()->getIgnore() == false))
setupConfiguration();
}
}


void
CmsShowMain::setupSocket(unsigned int iSocket)
{
Expand Down
1 change: 1 addition & 0 deletions Fireworks/Core/src/CmsShowMain.h
Expand Up @@ -93,6 +93,7 @@ class CmsShowMain : public CmsShowMainBase
void setupDataHandling();
void setupSocket(unsigned int);
void connectSocket();
void setLoadedAnyInputFileAfterStartup();

virtual void autoLoadNewEvent();
virtual void checkPosition();
Expand Down
72 changes: 27 additions & 45 deletions Fireworks/Core/src/CmsShowMainBase.cc
Expand Up @@ -375,57 +375,39 @@ CmsShowMainBase::setupConfiguration()
{
m_guiManager->updateStatus("Setting up configuration...");

if(m_configurationManager->getIgnore()) {
fwLog(fwlog::kInfo) << "no configuration is loaded." << std::endl;
m_configFileName = "newconfig.fwc";
}
else {
try
{
gEve->DisableRedraw();
if (m_configFileName.empty())
{
m_configFileName = m_configurationManager->guessAndReadFromFile(m_metadataManagerPtr);
}
else
{
char* whereConfig = gSystem->Which(TROOT::GetMacroPath(), m_configFileName.c_str(), kReadPermission);
m_configFileName = whereConfig;
delete [] whereConfig;
m_configurationManager->readFromFile(m_configFileName);
}
gEve->EnableRedraw();
}
catch (SimpleSAXParser::ParserError &e)
try
{
gEve->DisableRedraw();
if (m_configFileName.empty())
{
fwLog(fwlog::kError) <<"Unable to load configuration file '"
<< m_configFileName
<< "': "
<< e.error()
<< std::endl;
exit(1);
m_configFileName = m_configurationManager->guessAndReadFromFile(m_metadataManagerPtr);
}
catch (std::runtime_error &e)
else
{
fwLog(fwlog::kError) <<"Unable to load configuration file '"
<< m_configFileName
<< "' which was specified on command line. Quitting."
<< std::endl;
exit(1);
char* whereConfig = gSystem->Which(TROOT::GetMacroPath(), m_configFileName.c_str(), kReadPermission);
m_configFileName = whereConfig;
delete [] whereConfig;
m_configurationManager->readFromFile(m_configFileName);
}


gEve->EnableRedraw();
}

// case configuration does not contain GUI Manager entry
if ( !m_guiManager->getMainFrame()->IsMapped()) {

m_guiManager->getMainFrame()->MapSubwindows();
m_guiManager->getMainFrame()->Layout();
m_guiManager->getMainFrame()->MapRaised();
m_guiManager->createView("Rho Phi");
m_guiManager->createView("Rho Z");
catch (SimpleSAXParser::ParserError &e)
{
fwLog(fwlog::kError) <<"Unable to load configuration file '"
<< m_configFileName
<< "': "
<< e.error()
<< std::endl;
exit(1);
}
catch (std::runtime_error &e)
{
fwLog(fwlog::kError) <<"Unable to load configuration file '"
<< m_configFileName
<< "' which was specified on command line. Quitting."
<< std::endl;
exit(1);
}
}


Expand Down
32 changes: 19 additions & 13 deletions Fireworks/Core/src/FWGUIManager.cc
Expand Up @@ -136,21 +136,11 @@ FWGUIManager::FWGUIManager(fireworks::Context* ctx,
TEveCompositeFrame::SetupFrameMarkup(foo, 20, 4, false);

{
//NOTE: by making sure we defaultly open to a fraction of the full screen size we avoid
// causing the program to go into full screen mode under default SL4 window manager
UInt_t width = gClient->GetDisplayWidth();
UInt_t height = static_cast<UInt_t>(gClient->GetDisplayHeight()*.8);
//try to deal with multiple horizontally placed monitors. Since present monitors usually
// have less than 2000 pixels horizontally, when we see more it is a good indicator that
// we are dealing with more than one monitor.
while(width > 2000) {
width /= 2;
}
width = static_cast<UInt_t>(width*.8);
m_cmsShowMainFrame = new CmsShowMainFrame(gClient->GetRoot(),
width,
height,
950,
750,
this);

m_cmsShowMainFrame->SetCleanup(kDeepCleanup);

/*
Expand Down Expand Up @@ -1546,3 +1536,19 @@ FWGUIManager::resetWMOffsets()
{
m_WMOffsetX = m_WMOffsetY = m_WMDecorH = 0;
}

void
FWGUIManager::initEmpty()
{
int x = 150 + m_WMOffsetX ;
int y = 50 + m_WMOffsetY;
m_cmsShowMainFrame->Move(x, y);
m_cmsShowMainFrame->SetWMPosition(x, y < m_WMDecorH ? m_WMDecorH : y);

createView("Rho Phi");
createView("Rho Z");

m_cmsShowMainFrame->MapSubwindows();
m_cmsShowMainFrame->Layout();
m_cmsShowMainFrame->MapRaised();
}