basic openmodelica model emitting

This commit is contained in:
2026-07-20 17:34:18 +02:00
parent 42bf09610b
commit d368b36b8c
26 changed files with 1608 additions and 594 deletions

View File

@@ -1,11 +1,13 @@
from pathlib import Path
from PySide6.QtCore import QSettings, Signal
from PySide6.QtWidgets import QDialog, QFileDialog
from PySide6.QtCore import QSettings, Qt, Signal
from PySide6.QtGui import QColor
from PySide6.QtWidgets import QColorDialog, QDialog, QFileDialog, QHeaderView, QTableWidgetItem
from bedit.core.libraries import bundled_library_path, default_library_paths
from bedit.gui.preferences import application_settings
from bedit.gui.generated.ui_settings_dialog import Ui_SettingsDialog
from bedit.gui.editors.openmodelica import HIGHLIGHT_STYLES
class SettingsDialog(QDialog):
@@ -25,6 +27,7 @@ class SettingsDialog(QDialog):
self.ui.addLibraryFolderButton.clicked.connect(self._add_library_folder)
self.ui.removeLibraryPathButton.clicked.connect(self._remove_library_path)
self.ui.libraryPathsList.itemSelectionChanged.connect(self._update_remove_button)
self.ui.syntaxStylesTable.cellDoubleClicked.connect(self._choose_syntax_color)
self._load_settings()
def _load_settings(self) -> None:
@@ -43,8 +46,47 @@ class SettingsDialog(QDialog):
self.ui.graphGridSpinBox.setValue(self.graph_grid_size(self.settings))
self.ui.graphSnapSpinBox.setValue(self.graph_snap_size(self.settings))
self.ui.iconGridSpinBox.setValue(self.icon_grid_size(self.settings))
self._load_syntax_styles()
self._update_remove_button()
def _load_syntax_styles(self) -> None:
table = self.ui.syntaxStylesTable
table.setRowCount(len(HIGHLIGHT_STYLES))
table.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch)
for row, (category, defaults) in enumerate(HIGHLIGHT_STYLES.items()):
label, default_color, default_bold, default_italic = defaults
name_item = QTableWidgetItem(label)
name_item.setData(Qt.ItemDataRole.UserRole, category)
name_item.setFlags(Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsSelectable)
table.setItem(row, 0, name_item)
color = str(self.settings.value(f"syntax/{category}/color", default_color))
color_item = QTableWidgetItem(color)
color_item.setBackground(QColor(color))
color_item.setFlags(Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsSelectable)
table.setItem(row, 1, color_item)
for column, key, default in (
(2, "bold", default_bold),
(3, "italic", default_italic),
):
item = QTableWidgetItem()
item.setFlags(Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsUserCheckable)
enabled = self._as_bool(
self.settings.value(f"syntax/{category}/{key}", default)
)
item.setCheckState(
Qt.CheckState.Checked if enabled else Qt.CheckState.Unchecked
)
table.setItem(row, column, item)
def _choose_syntax_color(self, row: int, column: int) -> None:
if column != 1:
return
item = self.ui.syntaxStylesTable.item(row, column)
color = QColorDialog.getColor(QColor(item.text()), self, "Highlight colour")
if color.isValid():
item.setText(color.name())
item.setBackground(color)
@staticmethod
def _as_bool(value) -> bool:
if isinstance(value, str):
@@ -134,6 +176,24 @@ class SettingsDialog(QDialog):
self.settings.setValue("grid/graphSize", self.ui.graphGridSpinBox.value())
self.settings.setValue("grid/graphSnapSize", self.ui.graphSnapSpinBox.value())
self.settings.setValue("grid/iconSize", self.ui.iconGridSpinBox.value())
for row in range(self.ui.syntaxStylesTable.rowCount()):
category = self.ui.syntaxStylesTable.item(row, 0).data(
Qt.ItemDataRole.UserRole
)
self.settings.setValue(
f"syntax/{category}/color",
self.ui.syntaxStylesTable.item(row, 1).text(),
)
self.settings.setValue(
f"syntax/{category}/bold",
self.ui.syntaxStylesTable.item(row, 2).checkState()
== Qt.CheckState.Checked,
)
self.settings.setValue(
f"syntax/{category}/italic",
self.ui.syntaxStylesTable.item(row, 3).checkState()
== Qt.CheckState.Checked,
)
self.settings.sync()
self.settingsChanged.emit()
super().accept()