Skip to content

Commit 43dd06b

Browse files
authored
Merge pull request #715 from openstudiocoalition/612_displayName
#612 - Display Name
2 parents 203fd59 + 3289bee commit 43dd06b

File tree

80 files changed

+2062
-1350
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+2062
-1350
lines changed

src/model_editor/InspectorGadget.cpp

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include <openstudio/model/Model.hpp>
3737
#include <openstudio/model/ParentObject.hpp>
3838
#include <openstudio/model/ParentObject_Impl.hpp>
39+
#include <openstudio/model/AdditionalProperties.hpp>
3940

4041
#include "../model_editor/Utilities.hpp"
4142

@@ -58,6 +59,7 @@
5859

5960
#include <iostream>
6061
#include <limits>
62+
#include <utilities/idd/IddEnums.hpp>
6163
#include <vector>
6264

6365
#include <QDoubleValidator>
@@ -165,6 +167,7 @@ InspectorGadget::~InspectorGadget() {
165167

166168
void InspectorGadget::connectSignalsAndSlots() {
167169
connect(this, &InspectorGadget::toggleUnitsClicked, this, &InspectorGadget::toggleUnits);
170+
connect(this, &InspectorGadget::toggleDisplayAdditionalPropsClicked, this, &InspectorGadget::toggleDisplayAdditionalProps);
168171
}
169172

170173
void InspectorGadget::rebuild(bool recursive) {
@@ -367,6 +370,51 @@ void InspectorGadget::layoutItems(QVBoxLayout* masterLayout, QWidget* parent, bo
367370
}
368371
} // if(p)
369372

373+
if (m_displayAdditionalProps) {
374+
// m_workspaceObj->getSources(IddObjectType::OS_AdditionalProperties)
375+
if (auto mo_ = m_workspaceObj->optionalCast<model::ModelObject>(); mo_.has_value() && mo_->hasAdditionalProperties()) {
376+
auto addProps = mo_->additionalProperties();
377+
auto igChildItr = m_childMap.find(addProps);
378+
if (igChildItr != m_childMap.end()) {
379+
InspectorGadget* igchild = igChildItr->second;
380+
layout->addWidget(igchild);
381+
} else {
382+
bool showComment = false;
383+
bool showFields = true;
384+
if (m_recursive) {
385+
showComment = m_showComments;
386+
showFields = m_showAllFields;
387+
}
388+
auto* igChild = new InspectorGadget(addProps, m_indent, m_comboBridge, showComment, showFields, m_recursive, m_locked);
389+
390+
igChild->setUnitSystem(m_unitSystem);
391+
layout->addWidget(igChild);
392+
m_childMap[addProps] = igChild;
393+
}
394+
395+
#if 0
396+
for (const auto& name : addProps.featureNames()) {
397+
auto propType_ = addProps.getFeatureDataType(name);
398+
OS_ASSERT(propType_);
399+
auto propType = std::move(*propType_);
400+
if (propType == "String") {
401+
boost::optional<std::string> val_ = addProps.getFeatureAsString(name);
402+
OS_ASSERT(val_);
403+
} else if (propType == "Double") {
404+
boost::optional<double> val_ = addProps.getFeatureAsDouble(name);
405+
OS_ASSERT(val_);
406+
} else if (propType == "Integer") {
407+
boost::optional<int> val_ = addProps.getFeatureAsInteger(name);
408+
OS_ASSERT(val_);
409+
} else if (propType == "Double") {
410+
boost::optional<bool> val_ = addProps.getFeatureAsBoolean(name);
411+
OS_ASSERT(val_);
412+
}
413+
}
414+
#endif
415+
}
416+
}
417+
370418
if (m_stretch) {
371419
masterLayout->addStretch();
372420
}
@@ -1148,3 +1196,17 @@ void InspectorGadget::setUnitSystem(const InspectorGadget::UNIT_SYSTEM unitSyste
11481196
m_unitSystem = unitSystem;
11491197
rebuild(true);
11501198
}
1199+
1200+
void InspectorGadget::toggleDisplayAdditionalProps(bool displayAdditionalProps) {
1201+
qDebug() << "InspectorGadget::toggleDisplayAdditionalProps";
1202+
setDisplayAdditionalProps(displayAdditionalProps);
1203+
}
1204+
1205+
void InspectorGadget::setDisplayAdditionalProps(bool displayAdditionalProps) {
1206+
qDebug() << "InspectorGadget::setDisplayAdditionalProps=" << displayAdditionalProps;
1207+
openstudio::OptionalWorkspaceObject currentObject = m_workspaceObj;
1208+
clear(true);
1209+
m_workspaceObj = currentObject;
1210+
m_displayAdditionalProps = displayAdditionalProps;
1211+
rebuild(true);
1212+
}

src/model_editor/InspectorGadget.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,16 @@ class MODELEDITOR_API InspectorGadget
157157

158158
void setUnitSystem(const UNIT_SYSTEM unitSystem);
159159

160+
void setDisplayAdditionalProps(bool displayAdditionalProps);
161+
160162
void removeWorkspaceObject(const openstudio::Handle&); // Middleman nano slot to emit QT signal to simulate signal chaining
161163

162164
public slots:
163165

164166
void toggleUnits(bool displayIP);
165167

168+
void toggleDisplayAdditionalProps(bool displayAdditionalProps);
169+
166170
/*! \brief lays out the last object again.
167171
*
168172
*\param recursive if true, apply the change to the children
@@ -228,6 +232,8 @@ class MODELEDITOR_API InspectorGadget
228232

229233
void toggleUnitsClicked(bool);
230234

235+
void toggleDisplayAdditionalPropsClicked(bool);
236+
231237
/*!
232238
*This signal is emitted when the IG changes the model. If your program
233239
*uses IG, then you should connect to this so that you know if the file needs saving or not
@@ -317,6 +323,7 @@ class MODELEDITOR_API InspectorGadget
317323
bool m_recursive;
318324
UNIT_SYSTEM m_unitSystem;
319325
bool m_workspaceObjectChanged;
326+
bool m_displayAdditionalProps = false;
320327

321328
typedef std::map<openstudio::model::ModelObject, InspectorGadget*> MODELMAP;
322329
MODELMAP m_childMap;

src/openstudio_lib/BuildingInspectorView.cpp

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,8 @@ void BuildingDefaultScheduleSetVectorController::onDrop(const OSItemId& itemId)
222222

223223
// BuildingInspectorView
224224

225-
BuildingInspectorView::BuildingInspectorView(bool isIP, const openstudio::model::Model& model, QWidget* parent)
226-
: ModelObjectInspectorView(model, true, parent), m_isIP(isIP) {
225+
BuildingInspectorView::BuildingInspectorView(bool isIP, bool displayAdditionalProps, const openstudio::model::Model& model, QWidget* parent)
226+
: ModelObjectInspectorView(model, true, parent), m_isIP(isIP), m_displayAdditionalProps(displayAdditionalProps) {
227227
auto* hiddenWidget = new QWidget();
228228
this->stackedWidget()->insertWidget(0, hiddenWidget);
229229

@@ -250,9 +250,33 @@ BuildingInspectorView::BuildingInspectorView(bool isIP, const openstudio::model:
250250

251251
m_nameEdit = new OSLineEdit2();
252252
vLayout->addWidget(m_nameEdit);
253-
254253
mainGridLayout->addLayout(vLayout, row, 0, 1, 2);
255254
mainGridLayout->setRowMinimumHeight(row, 30);
255+
++row;
256+
257+
vLayout = new QVBoxLayout();
258+
m_displayNamelabel = new QLabel();
259+
m_displayNamelabel->setText("Display Name: ");
260+
m_displayNamelabel->setStyleSheet("QLabel { font: bold; }");
261+
vLayout->addWidget(m_displayNamelabel);
262+
263+
m_displayNameEdit = new OSLineEdit2();
264+
vLayout->addWidget(m_displayNameEdit);
265+
mainGridLayout->addLayout(vLayout, row, 0, 1, 1);
266+
mainGridLayout->setRowMinimumHeight(row, 30);
267+
268+
vLayout = new QVBoxLayout();
269+
m_cadObjectIdLabel = new QLabel();
270+
m_cadObjectIdLabel->setText("CAD Object Id: ");
271+
m_cadObjectIdLabel->setStyleSheet("QLabel { font: bold; }");
272+
vLayout->addWidget(m_cadObjectIdLabel);
273+
274+
m_cadObjectIdEdit = new OSLineEdit2();
275+
vLayout->addWidget(m_cadObjectIdEdit);
276+
mainGridLayout->addLayout(vLayout, row, 1, 1, 1);
277+
mainGridLayout->setRowMinimumHeight(row, 30);
278+
279+
this->toggleDisplayAdditionalProps(m_displayAdditionalProps);
256280

257281
++row;
258282

@@ -594,6 +618,12 @@ void BuildingInspectorView::attach(openstudio::model::Building& building) {
594618
*m_building, OptionalStringGetter(std::bind(&model::Building::name, m_building.get_ptr(), true)),
595619
boost::optional<StringSetterOptionalStringReturn>(std::bind(&model::Building::setName, m_building.get_ptr(), std::placeholders::_1)));
596620

621+
m_displayNameEdit->bind(*m_building, OptionalStringGetter(std::bind(&model::Building::displayName, m_building.get_ptr())),
622+
boost::optional<StringSetter>(std::bind(&model::Building::setDisplayName, m_building.get_ptr(), std::placeholders::_1)));
623+
624+
m_cadObjectIdEdit->bind(*m_building, OptionalStringGetter(std::bind(&model::Building::cadObjectId, m_building.get_ptr())),
625+
boost::optional<StringSetter>(std::bind(&model::Building::setCADObjectId, m_building.get_ptr(), std::placeholders::_1)));
626+
597627
populateStandardsTemplates();
598628
populateStandardsBuildingTypes();
599629

@@ -656,6 +686,10 @@ void BuildingInspectorView::detach() {
656686

657687
m_nameEdit->unbind();
658688

689+
m_displayNameEdit->unbind();
690+
691+
m_cadObjectIdEdit->unbind();
692+
659693
disconnect(m_standardsTemplateComboBox, nullptr, this, nullptr);
660694
m_standardsTemplateComboBox->clear();
661695

@@ -726,4 +760,13 @@ void BuildingInspectorView::toggleUnits(bool displayIP) {
726760
m_isIP = displayIP;
727761
}
728762

763+
void BuildingInspectorView::toggleDisplayAdditionalProps(bool displayAdditionalProps) {
764+
m_displayAdditionalProps = displayAdditionalProps;
765+
766+
m_displayNamelabel->setVisible(m_displayAdditionalProps);
767+
m_displayNameEdit->setVisible(m_displayAdditionalProps);
768+
m_cadObjectIdLabel->setVisible(m_displayAdditionalProps);
769+
m_cadObjectIdEdit->setVisible(m_displayAdditionalProps);
770+
}
771+
729772
} // namespace openstudio

src/openstudio_lib/BuildingInspectorView.hpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ class BuildingInspectorView : public ModelObjectInspectorView
112112
Q_OBJECT
113113

114114
public:
115-
BuildingInspectorView(bool isIP, const openstudio::model::Model& model, QWidget* parent = nullptr);
115+
BuildingInspectorView(bool isIP, bool displayAdditionalProps, const openstudio::model::Model& model, QWidget* parent = nullptr);
116116

117117
virtual ~BuildingInspectorView() {}
118118

@@ -152,17 +152,24 @@ class BuildingInspectorView : public ModelObjectInspectorView
152152
OSIntegerEdit2* m_numberLivingUnits = nullptr;
153153
OSIntegerEdit2* m_numberStories = nullptr;
154154
OSLineEdit2* m_nameEdit = nullptr;
155+
QLabel* m_displayNamelabel = nullptr;
156+
OSLineEdit2* m_displayNameEdit = nullptr;
157+
QLabel* m_cadObjectIdLabel = nullptr;
158+
OSLineEdit2* m_cadObjectIdEdit = nullptr;
155159
OSQuantityEdit2* m_northAxisEdit = nullptr;
156160
OSQuantityEdit2* m_floorToCeilingHeight = nullptr;
157161
OSQuantityEdit2* m_floorToFloorHeight = nullptr;
158162
OSSwitch2* m_relocatable = nullptr;
159163
QComboBox* m_standardsTemplateComboBox = nullptr;
160164
QComboBox* m_standardsBuildingTypeComboBox = nullptr;
161165
bool m_isIP;
166+
bool m_displayAdditionalProps;
162167

163168
public slots:
164169

165170
void toggleUnits(bool displayIP) override;
171+
172+
void toggleDisplayAdditionalProps(bool displayAdditionalProps) override;
166173
};
167174

168175
} // namespace openstudio

src/openstudio_lib/FacilityExteriorEquipmentGridView.cpp

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@
7070

7171
#define NAME "Name"
7272
#define SELECTED "All"
73+
#define DISPLAYNAME "Display Name"
74+
#define CADOBJECTID "CAD Object ID"
7375

7476
// EXTERIOR LIGHTS
7577
#define EXTERIORLIGHTSDEFINITION "Exterior Lights Definition"
@@ -93,12 +95,14 @@
9395

9496
namespace openstudio {
9597

96-
FacilityExteriorEquipmentGridView::FacilityExteriorEquipmentGridView(bool isIP, const model::Model& model, QWidget* parent)
97-
: GridViewSubTab(isIP, model, parent) {
98+
FacilityExteriorEquipmentGridView::FacilityExteriorEquipmentGridView(bool isIP, bool displayAdditionalProps, const model::Model& model,
99+
QWidget* parent)
100+
: GridViewSubTab(isIP, displayAdditionalProps, model, parent) {
98101
auto modelObjects = subsetCastVector<model::ModelObject>(model.getConcreteModelObjects<model::ExteriorLights>());
99102
std::sort(modelObjects.begin(), modelObjects.end(), openstudio::WorkspaceObjectNameLess());
100103

101-
m_gridController = new FacilityExteriorEquipmentGridController(isIP, "Exterior Equipment", IddObjectType::OS_Exterior_Lights, model, modelObjects);
104+
m_gridController = new FacilityExteriorEquipmentGridController(isIP, displayAdditionalProps, "Exterior Equipment",
105+
IddObjectType::OS_Exterior_Lights, model, modelObjects);
102106
auto* gridView = new OSGridView(m_gridController, "Exterior Equipment", "Drop\nExterior Equipment", false, parent);
103107

104108
setGridController(m_gridController);
@@ -163,10 +167,10 @@ void FacilityExteriorEquipmentGridView::clearSelection() {
163167
//m_itemSelectorButtons->disablePurgeButton();
164168
}
165169

166-
FacilityExteriorEquipmentGridController::FacilityExteriorEquipmentGridController(bool isIP, const QString& settingsText, IddObjectType iddObjectType,
167-
const model::Model& model,
170+
FacilityExteriorEquipmentGridController::FacilityExteriorEquipmentGridController(bool isIP, bool displayAdditionalProps, const QString& settingsText,
171+
IddObjectType iddObjectType, const model::Model& model,
168172
const std::vector<model::ModelObject>& modelObjects)
169-
: OSGridController(isIP, settingsText, iddObjectType, model, modelObjects) {
173+
: OSGridController(isIP, settingsText, iddObjectType, model, modelObjects, displayAdditionalProps) {
170174
setCategoriesAndFields();
171175
}
172176

@@ -218,6 +222,10 @@ void FacilityExteriorEquipmentGridController::onCategorySelected(int index) {
218222
}
219223

220224
void FacilityExteriorEquipmentGridController::addColumns(const QString& category, std::vector<QString>& fields) {
225+
226+
if (isDisplayAdditionalProps()) {
227+
fields.insert(fields.begin(), {DISPLAYNAME, CADOBJECTID});
228+
}
221229
// always show name and selected columns
222230
fields.insert(fields.begin(), {NAME, SELECTED});
223231

@@ -229,7 +237,20 @@ void FacilityExteriorEquipmentGridController::addColumns(const QString& category
229237

230238
addParentNameLineEditColumn(Heading(QString(NAME), false, false), false, CastNullAdapter<model::ModelObject>(&model::ModelObject::name),
231239
CastNullAdapter<model::ModelObject>(&model::ModelObject::setName));
232-
240+
} else if (field == DISPLAYNAME) {
241+
addNameLineEditColumn(Heading(QString(DISPLAYNAME), false, false), // heading
242+
false, // isInspectable
243+
false, // isLocked
244+
DisplayNameAdapter<model::ModelObject>(&model::ModelObject::displayName), // getter
245+
DisplayNameAdapter<model::ModelObject>(&model::ModelObject::setDisplayName) // setter
246+
);
247+
} else if (field == CADOBJECTID) {
248+
addNameLineEditColumn(Heading(QString(CADOBJECTID), false, false), // heading
249+
false, // isInspectable
250+
false, // isLocked
251+
DisplayNameAdapter<model::ModelObject>(&model::ModelObject::cadObjectId), // getter
252+
DisplayNameAdapter<model::ModelObject>(&model::ModelObject::setCADObjectId) // setter
253+
);
233254
} else if (field == SELECTED) {
234255

235256
auto checkbox = QSharedPointer<OSSelectAllCheckBox>(new OSSelectAllCheckBox());

src/openstudio_lib/FacilityExteriorEquipmentGridView.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class FacilityExteriorEquipmentGridView : public GridViewSubTab
4646
Q_OBJECT
4747

4848
public:
49-
FacilityExteriorEquipmentGridView(bool isIP, const model::Model& model, QWidget* parent = 0);
49+
FacilityExteriorEquipmentGridView(bool isIP, bool displayAdditionalProps, const model::Model& model, QWidget* parent = 0);
5050

5151
virtual ~FacilityExteriorEquipmentGridView() {}
5252

@@ -72,8 +72,8 @@ class FacilityExteriorEquipmentGridController : public OSGridController
7272
Q_OBJECT
7373

7474
public:
75-
FacilityExteriorEquipmentGridController(bool isIP, const QString& settingsText, IddObjectType iddObjectType, const model::Model& model,
76-
const std::vector<model::ModelObject>& modelObjects);
75+
FacilityExteriorEquipmentGridController(bool isIP, bool displayAdditionalProps, const QString& settingsText, IddObjectType iddObjectType,
76+
const model::Model& model, const std::vector<model::ModelObject>& modelObjects);
7777

7878
virtual ~FacilityExteriorEquipmentGridController() = default;
7979

0 commit comments

Comments
 (0)