basic openmodelica model emitting
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user