15#define VP1IMPVARNAME m_d
27#include "ui_geometrysystemcontroller.h"
28#include "ui_settings_display_form.h"
29#include "ui_settings_iconisedvols_form.h"
30#include "ui_settings_interactions_form.h"
31#include "ui_settings_misc_form.h"
32#include "ui_settings_muonchamber_form.h"
33#include "ui_settings_treebrowser_form.h"
35#include <Inventor/nodes/SoPickStyle.h>
46 Ui::GeometrySystemControllerForm
ui{};
49 Ui::GeoSysSettingsInteractionsForm
ui_int{};
51 Ui::GeoSysSettingsMuonChamberForm
ui_muon{};
75 m_d->ui.setupUi(
this);
85 m_d->ui_disp.widget_drawOptions->setPointSizesDisabled();
87 m_d->ui_disp.widget_drawOptions->setComplexity(0.6);
89 m_d->pickStyle =
new SoPickStyle;
90 m_d->pickStyle->ref();
95 m_d->ui.groupBox_innerdetector->setVisible(
false);
96 m_d->ui.groupBox_calorimeters->setVisible(
false);
97 m_d->ui.groupBox_muonsystems->setVisible(
false);
98 m_d->ui.pushButton_settings_muonchambers->setEnabled(
false);
99 m_d->ui_misc.groupBox_pixelactivemodules->setVisible(
false);
100 m_d->ui_misc.groupBox_sctactivemodules->setVisible(
false);
101 m_d->ui.groupBox_misc->setVisible(
false);
102 m_d->ui_muon.groupBox_muonchamberconfig->setVisible(
false);
103 m_d->ui_misc.groupBox_show_NSW_chambers->setVisible(
false);
104 m_d->ui_int.checkBox_AutomaticMuonChamberEndViews->setVisible(
false);
105 message(
"GeoModel not properly initialised.");
127 m_d->ui_iconisedvols.listView_iconisedvolumes->setUniformItemSizes(
true);
128 m_d->ui_iconisedvols.listView_iconisedvolumes->setSelectionMode(QAbstractItemView::ExtendedSelection);
129 m_d->ui_iconisedvols.listView_iconisedvolumes->setModel(
m_d->zappedVolumeListModel);
131 connect(
m_d->ui_iconisedvols.listView_iconisedvolumes,SIGNAL(activated(
const QModelIndex&)),
132 m_d->zappedVolumeListModel,SLOT(activated(
const QModelIndex&)));
161 connect(
m_d->ui_misc.pushButton_nonStandardShapes_Iconify,SIGNAL(clicked()),
163 connect(
m_d->ui_misc.pushButton_nonStandardShapes_Expand,SIGNAL(clicked()),
188 connect(
m_d->ui_muon.pushButton_muonadapt_resetToAllChambers,SIGNAL(clicked()),
this,SLOT(
emit_resetSubSystems()));
252 m_d->pickStyle->unref();
259 m_d->ui_int.checkBox_geomselectable->setChecked(b);
266 m_d->ui_disp.widget_drawOptions->setComplexity(c);
272 m_d->ui_int.checkBox_zoomToVolumes->setChecked(b);
278 m_d->ui_int.checkBox_AutomaticMuonChamberEndViews->setChecked(b);
284 m_d->ui_muon.checkBox_muonadapt_autoadapt->setChecked(b);
290 m_d->lastSelectedVolHandle = vh;
291 m_d->ui_disp.matButton_lastSel->setEnabled(vh!=0);
293 QList<SoMaterial*> mats =
m_d->ui_disp.matButton_lastSel->handledMaterials();
294 if (mats.isEmpty()||mats.at(0)!=vh->
material()) {
295 m_d->ui_disp.matButton_lastSel->clearHandledMaterials();
296 m_d->ui_disp.matButton_lastSel->setMaterial(vh->
material());
299 m_d->ui_disp.matButton_lastSel->clearHandledMaterials();
306 return m_d->lastSelectedVolHandle;
312 const bool ctrl_isdown = (Qt::ControlModifier & QApplication::keyboardModifiers());
313 const bool onlyChangedMaterials = !ctrl_isdown;
316 = QFileDialog::getSaveFileName(
this,
"Select geometry material file to save",
317 (
m_d->lastSaveMaterialsFile.isEmpty()?
319 :
m_d->lastSaveMaterialsFile),
320 "VP1 geometry material files (*.vp1geomat)",
321 0,QFileDialog::DontResolveSymlinks);
323 if(filename.isEmpty())
326 if (!filename.endsWith(
".vp1geomat"))
327 filename +=
".vp1geomat";
329 m_d->lastSaveMaterialsFile = filename;
331 messageVerbose(
"Emitting saveMaterialsToFile(\""+filename+
"\","+
str(onlyChangedMaterials)+
")");
339 QString filename = QFileDialog::getOpenFileName(
this,
"Select geometry material file to load",
340 (
m_d->lastLoadMaterialsFile.isEmpty()?
342 :
m_d->lastLoadMaterialsFile),
343 "VP1 geometry material files (*.vp1geomat)",
344 0,QFileDialog::DontResolveSymlinks);
345 if(filename.isEmpty())
348 m_d->lastLoadMaterialsFile = filename;
350 messageVerbose(
"Emitting loadMaterialsFromFile(\""+filename+
"\")");
357 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*>::const_iterator it =
m_d->subSysCheckBoxMap.find(f);
358 return it==
m_d->subSysCheckBoxMap.end() ? 0 : it->second;
364 return m_d->ui_disp.widget_drawOptions->drawOptionsGroup();
370 return m_d->pickStyle;
376 return m_d->ui_treebrowser.treeView_volumebrowser;
382 return m_d->ui_disp.phisectionwidget;
388 return m_d->zappedVolumeListModel;
394 return m_d->ui_int.checkBox_zoomToVolumes->isChecked();
400 return m_d->ui_int.checkBox_AutomaticMuonChamberEndViews->isChecked();
406 return m_d->ui_int.checkBox_print_shape->isChecked();
412 return m_d->ui_int.checkBox_print_material->isChecked();
418 return m_d->ui_int.checkBox_print_copyno->isChecked();
424 return m_d->ui_int.checkBox_print_transform->isChecked();
430 return m_d->ui_int.checkBox_print_tree->isChecked();
436 return m_d->ui_int.checkBox_print_mass->isChecked();
442 return m_d->ui_int.checkBox_print_muonstationinfo->isChecked();
448 return m_d->ui_muon.checkBox_muonadapt_autoadapt->isChecked();
454 m_d->pickStyle->style =
m_d->ui_int.checkBox_geomselectable->isChecked()
455 ? SoPickStyle::SHAPE : SoPickStyle::UNPICKABLE;
461 int v(
m_d->ui_disp.spinBox_transp->value());
462 return (v>=100?1.0:(v<=0?0.0:v/100.0));
468 return m_d->ui_disp.checkBox_showVolumeOutLines->isChecked();
474 VP1GeoFlags::MuonChamberAdaptionStyleFlags f;
475 if (
m_d->ui_muon.checkBox_muonadapt_openmdtchambers->isChecked())
477 if (
m_d->ui_muon.checkBox_muonadapt_hidetubes->isChecked())
479 if (
m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes->isChecked())
481 if (
m_d->ui_muon.checkBox_muonadapt_opencscchambers->isChecked())
483 if (
m_d->ui_muon.checkBox_muonadapt_opentgcchambers->isChecked())
505 connect(
m_d->ui_disp.groupBox_labels,SIGNAL(toggled(
bool)),
506 m_d->ui_disp.checkBox_labels_mooret0s,SLOT(setEnabled(
bool)));
507 connect(
m_d->ui_disp.groupBox_labels,SIGNAL(toggled(
bool)),
508 m_d->ui_disp.checkBox_labels_mboyt0s,SLOT(setEnabled(
bool)));
510 m_d->ui_disp.checkBox_labels_mooret0s->setEnabled(
false);
511 m_d->ui_disp.checkBox_labels_mboyt0s->setEnabled(
false);
514 connect(
m_d->ui_disp.groupBox_labels,SIGNAL(toggled(
bool)),
515 m_d->ui_disp.checkBox_labels_hits,SLOT(setEnabled(
bool)));
517 m_d->ui_disp.checkBox_labels_hits->setEnabled(
false);
525 if (!
m_d->ui_disp.groupBox_labels->isChecked())
return 0;
527 if (
m_d->ui_disp.checkBox_labels_names->isChecked())
labels|=0x1;
528 if (
m_d->ui_disp.checkBox_labels_mooret0s->isChecked())
labels|=0x2;
529 if (
m_d->ui_disp.checkBox_labels_mboyt0s->isChecked())
labels|=0x4;
531 if (
m_d->ui_disp.checkBox_labels_hits->isChecked())
labels|=0x10;
538 values <<
m_d->ui_disp.horizontalSlider_labels_xOffset->value();
539 values <<
m_d->ui_disp.horizontalSlider_labels_yOffset->value();
540 values <<
m_d->ui_disp.horizontalSlider_labels_zOffset->value();
554 bool pixel(sender()==
m_d->ui_misc.toolButton_pixelmod_adapt);
555 bool brl =
pixel ?
m_d->ui_misc.checkBox_pixelmod_barrel->isChecked()
556 :
m_d->ui_misc.checkBox_sctmod_barrel->isChecked();
557 bool ecA =
pixel ?
m_d->ui_misc.checkBox_pixelmod_endcapA->isChecked()
558 :
m_d->ui_misc.checkBox_sctmod_endcapA->isChecked();
559 bool ecC =
pixel ?
m_d->ui_misc.checkBox_pixelmod_endcapC->isChecked()
560 :
m_d->ui_misc.checkBox_sctmod_endcapC->isChecked();
561 bool bcmA =
pixel ?
m_d->ui_misc.checkBox_bcmMod_Aside->isChecked() :
false;
562 bool bcmC =
pixel ?
m_d->ui_misc.checkBox_bcmMod_Cside->isChecked() :
false;
573 if (sender()==
m_d->ui_misc.toolButton_nswchambers_reset) {
576 bool stgc =
m_d->ui_misc.checkBox_NSW_sTGC->isChecked();
577 bool mm =
m_d->ui_misc.checkBox_NSW_MM->isChecked();
578 bool pSp =
m_d->ui_misc.checkBox_NSW_Passive_Spacer->isChecked();
579 bool pSt =
m_d->ui_misc.checkBox_NSW_Passive_Structure->isChecked();
580 bool pAP =
m_d->ui_misc.checkBox_NSW_Passive_APlate->isChecked();
591 bool volname(sender()==
m_d->ui_misc.pushButton_iconify_vols_volname
592 ||sender()==
m_d->ui_misc.lineEdit_iconify_vols_volname);
594 QString name(volname ?
m_d->ui_misc.lineEdit_iconify_vols_volname->text()
599 messageVerbose(
"emitting autoIconifyByVolumeOrMaterialName("+
str(!volname)+
", "+name+
")");
606 bool volname(sender()==
m_d->ui_misc.pushButton_expand_vols_volname
607 ||sender()==
m_d->ui_misc.lineEdit_expand_vols_volname);
608 QString name(volname?
m_d->ui_misc.lineEdit_expand_vols_volname->text()
609 :
m_d->ui_misc.lineEdit_expand_vols_matname->text());
612 messageVerbose(
"emitting autoExpandByVolumeOrMaterialName("+
str(!volname)+
", "+name+
")");
618 bool zap(sender()==
m_d->ui_misc.pushButton_nonStandardShapes_Iconify);
642 VP1GeoFlags::SubSystemFlags f;
643 if (sender()==
m_d->ui_misc.toolButton_pixelmod_reset)
645 else if (sender()==
m_d->ui_misc.toolButton_sctmod_reset)
647 else if (sender()==
m_d->ui_muon.pushButton_muonadapt_resetToAllChambers)
662 s.save(
m_d->ui_disp.phisectionwidget);
663 s.save(
m_d->ui_disp.spinBox_transp);
664 s.save(
m_d->ui_muon.checkBox_muonadapt_autoadapt);
665 s.save(
m_d->ui_muon.checkBox_muonadapt_openmdtchambers);
666 s.save(
m_d->ui_muon.checkBox_muonadapt_hidetubes);
667 s.save(
m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes);
668 s.save(
m_d->ui_muon.checkBox_muonadapt_opencscchambers);
669 s.save(
m_d->ui_muon.checkBox_muonadapt_opentgcchambers);
670 s.save(
m_d->ui_misc.checkBox_pixelmod_barrel);
671 s.save(
m_d->ui_misc.checkBox_pixelmod_endcapA);
672 s.save(
m_d->ui_misc.checkBox_pixelmod_endcapC);
673 s.save(
m_d->ui_misc.checkBox_sctmod_barrel);
674 s.save(
m_d->ui_misc.checkBox_sctmod_endcapA);
675 s.save(
m_d->ui_misc.checkBox_sctmod_endcapC);
676 s.save(
m_d->ui_disp.widget_drawOptions);
677 s.save(
m_d->ui_misc.lineEdit_expand_vols_matname);
678 s.save(
m_d->ui_misc.lineEdit_expand_vols_volname);
679 s.save(
m_d->ui_int.checkBox_geomselectable);
680 s.save(
m_d->ui_int.checkBox_print_shape);
681 s.save(
m_d->ui_int.checkBox_print_material);
682 s.save(
m_d->ui_int.checkBox_print_transform);
683 s.save(
m_d->ui_int.checkBox_print_mass);
684 s.save(
m_d->ui_int.checkBox_print_copyno);
685 s.save(
m_d->ui_int.checkBox_print_tree);
686 s.save(
m_d->ui_int.checkBox_print_muonstationinfo);
687 s.save(
m_d->ui_int.checkBox_zoomToVolumes);
688 s.save(
m_d->ui_int.checkBox_AutomaticMuonChamberEndViews);
689 s.save(
m_d->ui_disp.checkBox_showVolumeOutLines);
690 s.save(
m_d->ui_misc.checkBox_bcmMod_Aside);
691 s.save(
m_d->ui_misc.checkBox_bcmMod_Cside);
694 s.save(
m_d->ui_disp.groupBox_labels);
695 s.save(
m_d->ui_disp.horizontalSlider_labels_xOffset);
696 s.save(
m_d->ui_disp.horizontalSlider_labels_yOffset);
697 s.save(
m_d->ui_disp.horizontalSlider_labels_zOffset);
698 s.save(
m_d->ui_disp.checkBox_labels_names);
700 s.save(
m_d->ui_disp.checkBox_labels_mboyt0s);
701 s.save(
m_d->ui_disp.checkBox_labels_mooret0s);
702 s.save(
m_d->ui_disp.checkBox_labels_hits);
704 s.save(
m_d->ui_misc.checkBox_NSW_MM);
705 s.save(
m_d->ui_misc.checkBox_NSW_sTGC);
706 s.save(
m_d->ui_misc.checkBox_NSW_Passive_Spacer);
707 s.save(
m_d->ui_misc.checkBox_NSW_Passive_Structure);
708 s.save(
m_d->ui_misc.checkBox_NSW_Passive_APlate);
711 s.ignoreWidget(
m_d->ui_disp.matButton_lastSel);
712 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*>::const_iterator it,itE(
m_d->subSysCheckBoxMap.end());
713 for (it=
m_d->subSysCheckBoxMap.begin();it!=itE;++it)
714 s.ignoreWidget(it->second);
721 message(
"Warning: State data in .vp1 file has unsupported version ("+
str(s.version())+
")");
725 if (s.version()<=1) {
726 s.ignoreObsoletePhiSectionWidgetState();
727 s.ignoreWidget(
m_d->ui_disp.phisectionwidget);
729 s.restore(
m_d->ui_disp.phisectionwidget);
731 s.restore(
m_d->ui_disp.spinBox_transp);
732 s.restore(
m_d->ui_muon.checkBox_muonadapt_autoadapt);
733 s.restore(
m_d->ui_muon.checkBox_muonadapt_openmdtchambers);
734 s.restore(
m_d->ui_muon.checkBox_muonadapt_hidetubes);
735 s.restore(
m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes);
736 s.restore(
m_d->ui_muon.checkBox_muonadapt_opencscchambers);
737 s.restore(
m_d->ui_muon.checkBox_muonadapt_opentgcchambers);
738 s.restore(
m_d->ui_misc.checkBox_pixelmod_barrel);
739 s.restore(
m_d->ui_misc.checkBox_pixelmod_endcapA);
740 s.restore(
m_d->ui_misc.checkBox_pixelmod_endcapC);
741 s.restore(
m_d->ui_misc.checkBox_sctmod_barrel);
742 s.restore(
m_d->ui_misc.checkBox_sctmod_endcapA);
743 s.restore(
m_d->ui_misc.checkBox_sctmod_endcapC);
744 s.restore(
m_d->ui_disp.widget_drawOptions);
745 s.restore(
m_d->ui_misc.lineEdit_expand_vols_matname);
746 s.restore(
m_d->ui_misc.lineEdit_expand_vols_volname);
747 s.restore(
m_d->ui_int.checkBox_geomselectable);
748 s.restore(
m_d->ui_int.checkBox_print_shape);
749 s.restore(
m_d->ui_int.checkBox_print_material);
750 s.restore(
m_d->ui_int.checkBox_print_transform);
751 s.restore(
m_d->ui_int.checkBox_print_mass);
752 s.restore(
m_d->ui_int.checkBox_print_copyno);
753 s.restore(
m_d->ui_int.checkBox_print_tree);
754 s.restore(
m_d->ui_int.checkBox_print_muonstationinfo);
755 s.restore(
m_d->ui_int.checkBox_zoomToVolumes);
756 s.restore(
m_d->ui_int.checkBox_AutomaticMuonChamberEndViews);
758 s.restore(
m_d->ui_disp.checkBox_showVolumeOutLines);
760 if (s.version()>=3) {
761 s.restore(
m_d->ui_misc.checkBox_bcmMod_Aside);
762 s.restore(
m_d->ui_misc.checkBox_bcmMod_Cside);
767 s.restore(
m_d->ui_disp.groupBox_labels);
768 s.restore(
m_d->ui_disp.horizontalSlider_labels_xOffset);
769 s.restore(
m_d->ui_disp.horizontalSlider_labels_yOffset);
770 s.restore(
m_d->ui_disp.horizontalSlider_labels_zOffset);
771 s.restore(
m_d->ui_disp.checkBox_labels_names);
774 s.restore(
m_d->ui_disp.checkBox_labels_mboyt0s);
775 s.restore(
m_d->ui_disp.checkBox_labels_mooret0s);
776 s.restore(
m_d->ui_disp.checkBox_labels_hits);
779 s.restore(
m_d->ui_misc.checkBox_NSW_MM);
780 s.restore(
m_d->ui_misc.checkBox_NSW_sTGC);
781 s.restore(
m_d->ui_misc.checkBox_NSW_Passive_Spacer);
782 s.restore(
m_d->ui_misc.checkBox_NSW_Passive_Structure);
783 s.restore(
m_d->ui_misc.checkBox_NSW_Passive_APlate);
786 s.ignoreWidget(
m_d->ui_disp.matButton_lastSel);
787 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*>::const_iterator it,itE(
m_d->subSysCheckBoxMap.end());
788 for (it=
m_d->subSysCheckBoxMap.begin();it!=itE;++it)
789 s.ignoreWidget(it->second);
791 m_d->ui_int.groupBox_printOnSelection->setEnabled(
m_d->ui_int.checkBox_geomselectable->isChecked());
792 m_d->ui_int.groupBox_automaticViewReorientations->setEnabled(
m_d->ui_int.checkBox_geomselectable->isChecked());
799#define VP1CONTROLLERCLASSNAME GeoSysController
#define POSSIBLECHANGE_IMP(x)
Ui::GeoSysSettingsMuonChamberForm ui_muon
QList< int > last_labelPosOffset
needed for POSSIBLECHANGE_IMP macro.
QString lastSaveMaterialsFile
QString lastLoadMaterialsFile
Ui::GeometrySystemControllerForm ui
int last_labels
needed for POSSIBLECHANGE_IMP macro.
std::map< VP1GeoFlags::SubSystemFlag, QCheckBox * > subSysCheckBoxMap
Ui::GeoSysSettingsMiscForm ui_misc
Ui::GeoSysSettingsIconisedVolumesForm ui_iconisedvols
bool last_showVolumeOutLines
Ui::GeoSysSettingsTreeBrowserForm ui_treebrowser
VolumeHandle * lastSelectedVolHandle
VP1GeoFlags::MuonChamberAdaptionStyleFlags last_muonChamberAdaptionStyle
Ui::GeoSysSettingsInteractionsForm ui_int
ZappedVolumeListModel * zappedVolumeListModel
GeoSysController * theclass
Ui::GeoSysSettingsDisplayForm ui_disp
bool printInfoOnClick_Transform() const
void adaptMuonChambersToEventData()
void possibleChange_labels()
void loadMaterialsFromFile(QString)
void possibleChange_muonChamberAdaptionStyle()
void autoAdaptMuonNSW(bool, bool, bool, bool, bool, bool)
void setGeometrySelectable(bool)
void emit_resetSubSystems()
Reset to the sub-system top volume.
void emit_autoAdaptPixelsOrSCT()
bool showVolumeOutLines() const
int currentSettingsVersion() const
bool printInfoOnClick_Tree() const
void emit_autoAdaptMuonNSW()
bool printInfoOnClick_Shape() const
void actionOnAllNonStandardVolumes(bool)
SoPickStyle * pickStyle() const
VP1GeoFlags::MuonChamberAdaptionStyleFlags muonChamberAdaptionStyle() const
GeoSysController(IVP1System *sys)
void emit_autoIconifyByVolumeOrMaterialName()
void emit_actionOnAllNonStandardVolumes()
void possibleChange_transparency()
bool autoAdaptMuonChambersToEventData() const
VolumeHandle * lastSelectedVolume() const
void actualRestoreSettings(VP1Deserialise &)
bool printInfoOnClick_MuonStationInfo() const
void autoIconifyByVolumeOrMaterialName(bool, QString)
void possibleChange_showVolumeOutLines()
void setAutoAdaptMuonChambersToEventData(bool)
void loadMaterialsRequested()
ZappedVolumeListModel * zappedVolumeListModel() const
void setZoomToVolumeOnClick(bool)
void setLabelsEnabled(bool t0s, bool hits)
controls whether the checkboxes are enabled or not.
bool printInfoOnClick_CopyNumber() const
VP1GeoTreeView * volumeTreeBrowser() const
PhiSectionWidget * phiSectionWidget() const
QList< int > labelPosOffset()
Offset in x,y,z.
bool orientViewToMuonChambersOnClick() const
void resetSubSystems(VP1GeoFlags::SubSystemFlags)
bool printInfoOnClick_Mass() const
bool zoomToVolumeOnClick() const
SoGroup * drawOptions() const
QCheckBox * subSystemCheckBox(VP1GeoFlags::SubSystemFlag) const
void autoAdaptPixelsOrSCT(bool, bool, bool, bool, bool, bool)
void possibleChange_labelPosOffset()
void setLastSelectedVolume(VolumeHandle *)
void saveMaterialsToFile(QString, bool)
void autoExpandByVolumeOrMaterialName(bool, QString)
virtual ~GeoSysController()
void actualSaveSettings(VP1Serialise &) const
void emit_adaptMuonChambersToEventData()
void emit_autoExpandByVolumeOrMaterialName()
void setComplexity(double)
bool printInfoOnClick_Material() const
float transparency() const
void saveMaterialsRequested()
void setOrientViewToMuonChambersOnClick(bool)
void initDialog(T &theUI, QPushButton *launchbutton, QAbstractButton *enabledButton=0)
void connectToLastUpdateSlot(QObject *sender, const char *signal)
const char * addUpdateSlot(const char *slot)
VP1Controller(IVP1System *sys, const QString &classname)
@ MuonBarrelStationMiddle
void messageVerbose(const QString &) const
void message(const QString &) const
static bool hasTileGeometry()
static bool hasTRTGeometry()
static bool hasInDetServiceMaterialGeometry()
static bool hasMuonNSWGeometry()
static bool hasLArGeometry()
static bool hasGeoModelExperiment()
static bool hasPixelGeometry()
static bool hasSCTGeometry()
static bool hasITkGeometry()
static bool hasMuonGeometry()
static QString defaultFileSelectDirectory()