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.");
126 m_d->ui_iconisedvols.listView_iconisedvolumes->setUniformItemSizes(
true);
127 m_d->ui_iconisedvols.listView_iconisedvolumes->setSelectionMode(QAbstractItemView::ExtendedSelection);
128 m_d->ui_iconisedvols.listView_iconisedvolumes->setModel(
m_d->zappedVolumeListModel);
130 connect(
m_d->ui_iconisedvols.listView_iconisedvolumes,SIGNAL(activated(
const QModelIndex&)),
131 m_d->zappedVolumeListModel,SLOT(activated(
const QModelIndex&)));
160 connect(
m_d->ui_misc.pushButton_nonStandardShapes_Iconify,SIGNAL(clicked()),
162 connect(
m_d->ui_misc.pushButton_nonStandardShapes_Expand,SIGNAL(clicked()),
187 connect(
m_d->ui_muon.pushButton_muonadapt_resetToAllChambers,SIGNAL(clicked()),
this,SLOT(
emit_resetSubSystems()));
248 m_d->pickStyle->unref();
255 m_d->ui_int.checkBox_geomselectable->setChecked(b);
262 m_d->ui_disp.widget_drawOptions->setComplexity(c);
268 m_d->ui_int.checkBox_zoomToVolumes->setChecked(b);
274 m_d->ui_int.checkBox_AutomaticMuonChamberEndViews->setChecked(b);
280 m_d->ui_muon.checkBox_muonadapt_autoadapt->setChecked(b);
286 m_d->lastSelectedVolHandle = vh;
287 m_d->ui_disp.matButton_lastSel->setEnabled(vh!=0);
289 QList<SoMaterial*> mats =
m_d->ui_disp.matButton_lastSel->handledMaterials();
290 if (mats.isEmpty()||mats.at(0)!=vh->
material()) {
291 m_d->ui_disp.matButton_lastSel->clearHandledMaterials();
292 m_d->ui_disp.matButton_lastSel->setMaterial(vh->
material());
295 m_d->ui_disp.matButton_lastSel->clearHandledMaterials();
302 return m_d->lastSelectedVolHandle;
308 const bool ctrl_isdown = (Qt::ControlModifier & QApplication::keyboardModifiers());
309 const bool onlyChangedMaterials = !ctrl_isdown;
312 = QFileDialog::getSaveFileName(
this,
"Select geometry material file to save",
313 (
m_d->lastSaveMaterialsFile.isEmpty()?
315 :
m_d->lastSaveMaterialsFile),
316 "VP1 geometry material files (*.vp1geomat)",
317 0,QFileDialog::DontResolveSymlinks);
319 if(filename.isEmpty())
322 if (!filename.endsWith(
".vp1geomat"))
323 filename +=
".vp1geomat";
325 m_d->lastSaveMaterialsFile = filename;
327 messageVerbose(
"Emitting saveMaterialsToFile(\""+filename+
"\","+
str(onlyChangedMaterials)+
")");
335 QString filename = QFileDialog::getOpenFileName(
this,
"Select geometry material file to load",
336 (
m_d->lastLoadMaterialsFile.isEmpty()?
338 :
m_d->lastLoadMaterialsFile),
339 "VP1 geometry material files (*.vp1geomat)",
340 0,QFileDialog::DontResolveSymlinks);
341 if(filename.isEmpty())
344 m_d->lastLoadMaterialsFile = filename;
346 messageVerbose(
"Emitting loadMaterialsFromFile(\""+filename+
"\")");
353 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*>::const_iterator it =
m_d->subSysCheckBoxMap.find(f);
354 return it==
m_d->subSysCheckBoxMap.end() ? 0 : it->second;
360 return m_d->ui_disp.widget_drawOptions->drawOptionsGroup();
366 return m_d->pickStyle;
372 return m_d->ui_treebrowser.treeView_volumebrowser;
378 return m_d->ui_disp.phisectionwidget;
384 return m_d->zappedVolumeListModel;
390 return m_d->ui_int.checkBox_zoomToVolumes->isChecked();
396 return m_d->ui_int.checkBox_AutomaticMuonChamberEndViews->isChecked();
402 return m_d->ui_int.checkBox_print_shape->isChecked();
408 return m_d->ui_int.checkBox_print_material->isChecked();
414 return m_d->ui_int.checkBox_print_copyno->isChecked();
420 return m_d->ui_int.checkBox_print_transform->isChecked();
426 return m_d->ui_int.checkBox_print_tree->isChecked();
432 return m_d->ui_int.checkBox_print_mass->isChecked();
438 return m_d->ui_int.checkBox_print_muonstationinfo->isChecked();
444 return m_d->ui_muon.checkBox_muonadapt_autoadapt->isChecked();
450 m_d->pickStyle->style =
m_d->ui_int.checkBox_geomselectable->isChecked()
451 ? SoPickStyle::SHAPE : SoPickStyle::UNPICKABLE;
457 int v(
m_d->ui_disp.spinBox_transp->value());
458 return (v>=100?1.0:(v<=0?0.0:v/100.0));
464 return m_d->ui_disp.checkBox_showVolumeOutLines->isChecked();
470 VP1GeoFlags::MuonChamberAdaptionStyleFlags f;
471 if (
m_d->ui_muon.checkBox_muonadapt_openmdtchambers->isChecked())
473 if (
m_d->ui_muon.checkBox_muonadapt_hidetubes->isChecked())
475 if (
m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes->isChecked())
477 if (
m_d->ui_muon.checkBox_muonadapt_opencscchambers->isChecked())
479 if (
m_d->ui_muon.checkBox_muonadapt_opentgcchambers->isChecked())
501 connect(
m_d->ui_disp.groupBox_labels,SIGNAL(toggled(
bool)),
502 m_d->ui_disp.checkBox_labels_mooret0s,SLOT(setEnabled(
bool)));
503 connect(
m_d->ui_disp.groupBox_labels,SIGNAL(toggled(
bool)),
504 m_d->ui_disp.checkBox_labels_mboyt0s,SLOT(setEnabled(
bool)));
506 m_d->ui_disp.checkBox_labels_mooret0s->setEnabled(
false);
507 m_d->ui_disp.checkBox_labels_mboyt0s->setEnabled(
false);
510 connect(
m_d->ui_disp.groupBox_labels,SIGNAL(toggled(
bool)),
511 m_d->ui_disp.checkBox_labels_hits,SLOT(setEnabled(
bool)));
513 m_d->ui_disp.checkBox_labels_hits->setEnabled(
false);
521 if (!
m_d->ui_disp.groupBox_labels->isChecked())
return 0;
523 if (
m_d->ui_disp.checkBox_labels_names->isChecked())
labels|=0x1;
524 if (
m_d->ui_disp.checkBox_labels_mooret0s->isChecked())
labels|=0x2;
525 if (
m_d->ui_disp.checkBox_labels_mboyt0s->isChecked())
labels|=0x4;
527 if (
m_d->ui_disp.checkBox_labels_hits->isChecked())
labels|=0x10;
534 values <<
m_d->ui_disp.horizontalSlider_labels_xOffset->value();
535 values <<
m_d->ui_disp.horizontalSlider_labels_yOffset->value();
536 values <<
m_d->ui_disp.horizontalSlider_labels_zOffset->value();
550 bool pixel(sender()==
m_d->ui_misc.toolButton_pixelmod_adapt);
551 bool brl =
pixel ?
m_d->ui_misc.checkBox_pixelmod_barrel->isChecked()
552 :
m_d->ui_misc.checkBox_sctmod_barrel->isChecked();
553 bool ecA =
pixel ?
m_d->ui_misc.checkBox_pixelmod_endcapA->isChecked()
554 :
m_d->ui_misc.checkBox_sctmod_endcapA->isChecked();
555 bool ecC =
pixel ?
m_d->ui_misc.checkBox_pixelmod_endcapC->isChecked()
556 :
m_d->ui_misc.checkBox_sctmod_endcapC->isChecked();
557 bool bcmA =
pixel ?
m_d->ui_misc.checkBox_bcmMod_Aside->isChecked() :
false;
558 bool bcmC =
pixel ?
m_d->ui_misc.checkBox_bcmMod_Cside->isChecked() :
false;
569 if (sender()==
m_d->ui_misc.toolButton_nswchambers_reset) {
572 bool stgc =
m_d->ui_misc.checkBox_NSW_sTGC->isChecked();
573 bool mm =
m_d->ui_misc.checkBox_NSW_MM->isChecked();
574 bool pSp =
m_d->ui_misc.checkBox_NSW_Passive_Spacer->isChecked();
575 bool pSt =
m_d->ui_misc.checkBox_NSW_Passive_Structure->isChecked();
576 bool pAP =
m_d->ui_misc.checkBox_NSW_Passive_APlate->isChecked();
587 bool volname(sender()==
m_d->ui_misc.pushButton_iconify_vols_volname
588 ||sender()==
m_d->ui_misc.lineEdit_iconify_vols_volname);
590 QString name(volname ?
m_d->ui_misc.lineEdit_iconify_vols_volname->text()
595 messageVerbose(
"emitting autoIconifyByVolumeOrMaterialName("+
str(!volname)+
", "+name+
")");
602 bool volname(sender()==
m_d->ui_misc.pushButton_expand_vols_volname
603 ||sender()==
m_d->ui_misc.lineEdit_expand_vols_volname);
604 QString name(volname?
m_d->ui_misc.lineEdit_expand_vols_volname->text()
605 :
m_d->ui_misc.lineEdit_expand_vols_matname->text());
608 messageVerbose(
"emitting autoExpandByVolumeOrMaterialName("+
str(!volname)+
", "+name+
")");
614 bool zap(sender()==
m_d->ui_misc.pushButton_nonStandardShapes_Iconify);
638 VP1GeoFlags::SubSystemFlags f;
639 if (sender()==
m_d->ui_misc.toolButton_pixelmod_reset)
641 else if (sender()==
m_d->ui_misc.toolButton_sctmod_reset)
643 else if (sender()==
m_d->ui_muon.pushButton_muonadapt_resetToAllChambers)
658 s.save(
m_d->ui_disp.phisectionwidget);
659 s.save(
m_d->ui_disp.spinBox_transp);
660 s.save(
m_d->ui_muon.checkBox_muonadapt_autoadapt);
661 s.save(
m_d->ui_muon.checkBox_muonadapt_openmdtchambers);
662 s.save(
m_d->ui_muon.checkBox_muonadapt_hidetubes);
663 s.save(
m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes);
664 s.save(
m_d->ui_muon.checkBox_muonadapt_opencscchambers);
665 s.save(
m_d->ui_muon.checkBox_muonadapt_opentgcchambers);
666 s.save(
m_d->ui_misc.checkBox_pixelmod_barrel);
667 s.save(
m_d->ui_misc.checkBox_pixelmod_endcapA);
668 s.save(
m_d->ui_misc.checkBox_pixelmod_endcapC);
669 s.save(
m_d->ui_misc.checkBox_sctmod_barrel);
670 s.save(
m_d->ui_misc.checkBox_sctmod_endcapA);
671 s.save(
m_d->ui_misc.checkBox_sctmod_endcapC);
672 s.save(
m_d->ui_disp.widget_drawOptions);
673 s.save(
m_d->ui_misc.lineEdit_expand_vols_matname);
674 s.save(
m_d->ui_misc.lineEdit_expand_vols_volname);
675 s.save(
m_d->ui_int.checkBox_geomselectable);
676 s.save(
m_d->ui_int.checkBox_print_shape);
677 s.save(
m_d->ui_int.checkBox_print_material);
678 s.save(
m_d->ui_int.checkBox_print_transform);
679 s.save(
m_d->ui_int.checkBox_print_mass);
680 s.save(
m_d->ui_int.checkBox_print_copyno);
681 s.save(
m_d->ui_int.checkBox_print_tree);
682 s.save(
m_d->ui_int.checkBox_print_muonstationinfo);
683 s.save(
m_d->ui_int.checkBox_zoomToVolumes);
684 s.save(
m_d->ui_int.checkBox_AutomaticMuonChamberEndViews);
685 s.save(
m_d->ui_disp.checkBox_showVolumeOutLines);
686 s.save(
m_d->ui_misc.checkBox_bcmMod_Aside);
687 s.save(
m_d->ui_misc.checkBox_bcmMod_Cside);
690 s.save(
m_d->ui_disp.groupBox_labels);
691 s.save(
m_d->ui_disp.horizontalSlider_labels_xOffset);
692 s.save(
m_d->ui_disp.horizontalSlider_labels_yOffset);
693 s.save(
m_d->ui_disp.horizontalSlider_labels_zOffset);
694 s.save(
m_d->ui_disp.checkBox_labels_names);
696 s.save(
m_d->ui_disp.checkBox_labels_mboyt0s);
697 s.save(
m_d->ui_disp.checkBox_labels_mooret0s);
698 s.save(
m_d->ui_disp.checkBox_labels_hits);
700 s.save(
m_d->ui_misc.checkBox_NSW_MM);
701 s.save(
m_d->ui_misc.checkBox_NSW_sTGC);
702 s.save(
m_d->ui_misc.checkBox_NSW_Passive_Spacer);
703 s.save(
m_d->ui_misc.checkBox_NSW_Passive_Structure);
704 s.save(
m_d->ui_misc.checkBox_NSW_Passive_APlate);
707 s.ignoreWidget(
m_d->ui_disp.matButton_lastSel);
708 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*>::const_iterator it,itE(
m_d->subSysCheckBoxMap.end());
709 for (it=
m_d->subSysCheckBoxMap.begin();it!=itE;++it)
710 s.ignoreWidget(it->second);
717 message(
"Warning: State data in .vp1 file has unsupported version ("+
str(s.version())+
")");
721 if (s.version()<=1) {
722 s.ignoreObsoletePhiSectionWidgetState();
723 s.ignoreWidget(
m_d->ui_disp.phisectionwidget);
725 s.restore(
m_d->ui_disp.phisectionwidget);
727 s.restore(
m_d->ui_disp.spinBox_transp);
728 s.restore(
m_d->ui_muon.checkBox_muonadapt_autoadapt);
729 s.restore(
m_d->ui_muon.checkBox_muonadapt_openmdtchambers);
730 s.restore(
m_d->ui_muon.checkBox_muonadapt_hidetubes);
731 s.restore(
m_d->ui_muon.checkBox_muonadapt_hiderpcvolumes);
732 s.restore(
m_d->ui_muon.checkBox_muonadapt_opencscchambers);
733 s.restore(
m_d->ui_muon.checkBox_muonadapt_opentgcchambers);
734 s.restore(
m_d->ui_misc.checkBox_pixelmod_barrel);
735 s.restore(
m_d->ui_misc.checkBox_pixelmod_endcapA);
736 s.restore(
m_d->ui_misc.checkBox_pixelmod_endcapC);
737 s.restore(
m_d->ui_misc.checkBox_sctmod_barrel);
738 s.restore(
m_d->ui_misc.checkBox_sctmod_endcapA);
739 s.restore(
m_d->ui_misc.checkBox_sctmod_endcapC);
740 s.restore(
m_d->ui_disp.widget_drawOptions);
741 s.restore(
m_d->ui_misc.lineEdit_expand_vols_matname);
742 s.restore(
m_d->ui_misc.lineEdit_expand_vols_volname);
743 s.restore(
m_d->ui_int.checkBox_geomselectable);
744 s.restore(
m_d->ui_int.checkBox_print_shape);
745 s.restore(
m_d->ui_int.checkBox_print_material);
746 s.restore(
m_d->ui_int.checkBox_print_transform);
747 s.restore(
m_d->ui_int.checkBox_print_mass);
748 s.restore(
m_d->ui_int.checkBox_print_copyno);
749 s.restore(
m_d->ui_int.checkBox_print_tree);
750 s.restore(
m_d->ui_int.checkBox_print_muonstationinfo);
751 s.restore(
m_d->ui_int.checkBox_zoomToVolumes);
752 s.restore(
m_d->ui_int.checkBox_AutomaticMuonChamberEndViews);
754 s.restore(
m_d->ui_disp.checkBox_showVolumeOutLines);
756 if (s.version()>=3) {
757 s.restore(
m_d->ui_misc.checkBox_bcmMod_Aside);
758 s.restore(
m_d->ui_misc.checkBox_bcmMod_Cside);
763 s.restore(
m_d->ui_disp.groupBox_labels);
764 s.restore(
m_d->ui_disp.horizontalSlider_labels_xOffset);
765 s.restore(
m_d->ui_disp.horizontalSlider_labels_yOffset);
766 s.restore(
m_d->ui_disp.horizontalSlider_labels_zOffset);
767 s.restore(
m_d->ui_disp.checkBox_labels_names);
770 s.restore(
m_d->ui_disp.checkBox_labels_mboyt0s);
771 s.restore(
m_d->ui_disp.checkBox_labels_mooret0s);
772 s.restore(
m_d->ui_disp.checkBox_labels_hits);
775 s.restore(
m_d->ui_misc.checkBox_NSW_MM);
776 s.restore(
m_d->ui_misc.checkBox_NSW_sTGC);
777 s.restore(
m_d->ui_misc.checkBox_NSW_Passive_Spacer);
778 s.restore(
m_d->ui_misc.checkBox_NSW_Passive_Structure);
779 s.restore(
m_d->ui_misc.checkBox_NSW_Passive_APlate);
782 s.ignoreWidget(
m_d->ui_disp.matButton_lastSel);
783 std::map<VP1GeoFlags::SubSystemFlag,QCheckBox*>::const_iterator it,itE(
m_d->subSysCheckBoxMap.end());
784 for (it=
m_d->subSysCheckBoxMap.begin();it!=itE;++it)
785 s.ignoreWidget(it->second);
787 m_d->ui_int.groupBox_printOnSelection->setEnabled(
m_d->ui_int.checkBox_geomselectable->isChecked());
788 m_d->ui_int.groupBox_automaticViewReorientations->setEnabled(
m_d->ui_int.checkBox_geomselectable->isChecked());
795#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 hasMuonGeometry()
static QString defaultFileSelectDirectory()