Skip to content

Merge for 1.12.0-rc.1#885

Merged
macumber merged 102 commits into
masterfrom
develop
Jun 21, 2026
Merged

Merge for 1.12.0-rc.1#885
macumber merged 102 commits into
masterfrom
develop

Conversation

@macumber

Copy link
Copy Markdown
Collaborator

No description provided.

macumber and others added 30 commits January 31, 2026 11:11
Online editor screwed up resolving conflicts, fixing here
Replace OSItem-based left panel with ScheduleTabDefault-style static entries

The current SiteGroundTemperatureMonthlyListView uses OSItemSelector + custom OSItem
subclasses. This results in a "NO ICON" placeholder next to each entry because OSItem always
reserves space for an icon. I aim to have the visual style of the Schedules tab's
ScheduleTabDefault: plain clickable text labels, no icon, with a "not present" fallback view (like NewProfileView) that offers an Add button if the unique object doesn't exist yet.
unbind() (line 190):
  setLocked(true);  // → m_lineEdit->setReadOnly(true)

  Old completeBind() (before my fix) — line 160:
  setEnabled(true);  // enables outer widget, but m_lineEdit->readOnly is still true!

  My fix (line 159):
  m_lineEdit->setLocked(false);  // resets readOnly before enabling
  setEnabled(true);

  The fix is safe because QuantityLineEdit::setLocked guards with if (m_locked != locked), so calling setLocked(false) on a fresh (never-unbound) edit is a no-op. The old code had the same latent bug; it
  was just never exposed because the original UI was broken in a more visible way ("NO ICON" items) before the full switch to the new widget pattern.
…l rendering.

The QSS + property approach is strictly better:

  - Qt handles all rendering (no manual fillRect/drawLine)
  - :hover pseudo-selector replaces m_hovering, mouseMoveEvent, leaveEvent
  - setSelected() just toggles the property + unpolish/polish
  - paintEvent reduces to the standard QStyleOption boilerplate
jmarrec and others added 26 commits March 30, 2026 14:38
error: ‘void QCheckBox::stateChanged(int)’ is deprecated: Use checkStateChanged() instead              [-Werror=deprecated-declarations]
…de for now, don't care much

This reverts commit 433d6c6.

There is no plain libicu18n.so
```
$ ls -la /opt/Qt/6.11.0/gcc_64/lib/libicui18n.so*
lrwxrwxrwx 1 root root      18 Mar 18 06:34 /opt/Qt/6.11.0/gcc_64/lib/libicui18n.so.73 -> libicui18n.so.73.2
-rwxr-xr-x 1 root root 4477136 Mar 18 06:34 /opt/Qt/6.11.0/gcc_64/lib/libicui18n.so.73.2

$ ls -la /opt/Qt/6.5.2/gcc_64/lib/libicui18n.so*
lrwxrwxrwx 1 root root      18 Jul  8  2023 /opt/Qt/6.5.2/gcc_64/lib/libicui18n.so -> libicui18n.so.56.1
lrwxrwxrwx 1 root root      18 Jul  8  2023 /opt/Qt/6.5.2/gcc_64/lib/libicui18n.so.56 -> libicui18n.so.56.1
-rwxr-xr-x 1 root root 3368288 Jul  8  2023 /opt/Qt/6.5.2/gcc_64/lib/libicui18n.so.56.1
```
…WebView "", which already has a layout ((null):0, (null))

auto* hLayout = new QHBoxLayout(this);  // <-- passes `this` as parent, sets layout on PreviewWebView
  mainLayout->addLayout(hLayout);

  Passing this to QHBoxLayout(this) immediately sets hLayout as the layout of the PreviewWebView widget. But mainLayout was already set as its layout on line
   180 via setLayout(mainLayout). Qt then warns because you're trying to assign a second layout to the same widget.

  The fix is to not pass this — just create the layout without a parent and let mainLayout->addLayout(hLayout) own it
…d signal of openstudio::LocationView::unnamed ((null):0, (null))

Calling disconnect() with no arguments is a "wildcard disconnect" that disconnects all signals — including Qt's internal destroyed signal, which Qt uses  for its own cleanup. Qt warns when that happens. The fix is simply to remove the explicit disconnect() call — Qt automatically disconnects everything when an object is deleted.
…ebView "", which already has a layout ((null):0, (null))
…rt grey, but apparently Qt 6.11 changed its behavior
TODO: temporary, pending a new release of aqtinstall after 3.3.0, need to download a fix, download.qt.io changed the directory structure for Qt 6.11.0 on windows:
* Issue: miurahr/aqtinstall#1007
* Fixed via miurahr/aqtinstall#1000
Add docker build container for AI agents to use
Merges #873 from @Ski90Moo on internal branch for CI

Wraps user-facing string literals with tr() across all major tabs and adds a complete Spanish (es) translation file as proof of concept for multi-language support, addressing issue #680.

Tabs covered: Site/Weather Data, Construction Sets, Materials, Schedules, Thermal Zones, Space Types, Loads, Facility, HVAC Systems, Inspector panel IDD fields, Output Variables (1051 names), Simulation Settings, Measures, Run Simulation, and Results Summary.

Key patterns established:

- tr() for compile-time strings in Q_OBJECT classes
- QCoreApplication::translate(IDD/OutputVariables/TaxonomyCategories) for runtime strings from the OpenStudio SDK and taxonomy.xml
- addItem(tr(Display), EnglishData) + currentData() for model-bound combo boxes where SDK values must stay in English
- Bilingual display format for IDD fields and output variable names so engineers can cross-reference EnergyPlus documentation without switching the application language
Architecture / build system

New openstudio_qt_utils static library: extracts Application, OSProgressBar, QMetaTypes, PathWatcher, Utilities from model_editor
New openstudio_shared_gui static library: separates shared_gui_components from openstudio_lib, eliminating the upward dependency
QRC resources split between static libraries.
OSItemId moved to shared_gui_components - the concrete seam that breaks the upward reference
Strict link order enforced: OpenStudioApp -> openstudio_lib -> openstudio_shared_gui -> openstudio_qt_utils -> openstudioapp_utilities
Removed Jenkinsfiles; CI fully on GitHub Actions
Qt 6.11 locked as required version; Qt6QmlMeta and Qt6QmlWorkerScript promoted to REQUIRED
Dead code removed

InspectorDialog class and test deleted (~1100 lines)
TreeView, ModelObjectTreeWidget, ModelEditor.rc/.xml deleted
Removed SWIG binding files (BIMServer.i, ModelEditor.i, Qt.i) and all *API.hpp export-macro headers which are not needed for a static build
Developer documentation added

architecture.md - C4 diagrams, dependency graph, patterns, build guide, CI overview
Per-library reference docs for all 7 targets
llms.txt, PR review instructions, code refactor instructions, and doc-update prompt template
@macumber macumber requested a review from jmarrec June 21, 2026 16:00
@macumber

Copy link
Copy Markdown
Collaborator Author

@jmarrec I'm going to merge this to trigger the RC1

@macumber macumber merged commit cc8f5a3 into master Jun 21, 2026
24 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 21, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants