2022-03-02 10:36:16 +13:00
|
|
|
from logging import getLogger
|
|
|
|
|
2023-03-31 12:42:16 +13:00
|
|
|
from PyQt5.QtCore import QFileSystemWatcher, Qt
|
2023-12-19 04:34:18 +13:00
|
|
|
from PyQt5.QtGui import QShowEvent
|
2023-03-30 00:07:19 +13:00
|
|
|
from PyQt5.QtWidgets import (
|
|
|
|
QGroupBox,
|
|
|
|
QHeaderView,
|
|
|
|
QVBoxLayout,
|
|
|
|
QTableView,
|
|
|
|
)
|
2022-03-02 10:36:16 +13:00
|
|
|
|
|
|
|
from rare.shared import LegendaryCoreSingleton
|
2023-03-30 00:07:19 +13:00
|
|
|
from .env_vars_model import EnvVarsTableModel
|
2022-03-02 10:36:16 +13:00
|
|
|
|
|
|
|
logger = getLogger("EnvVars")
|
|
|
|
|
|
|
|
|
2023-03-30 00:07:19 +13:00
|
|
|
class EnvVars(QGroupBox):
|
2022-03-02 10:36:16 +13:00
|
|
|
def __init__(self, parent):
|
|
|
|
super(EnvVars, self).__init__(parent=parent)
|
2023-03-30 00:07:19 +13:00
|
|
|
self.setTitle(self.tr("Environment variables"))
|
|
|
|
|
2022-03-02 10:36:16 +13:00
|
|
|
self.core = LegendaryCoreSingleton()
|
2023-12-19 04:34:18 +13:00
|
|
|
self.app_name: str = "default"
|
2022-06-23 06:06:38 +12:00
|
|
|
|
2023-03-30 00:07:19 +13:00
|
|
|
self.table_model = EnvVarsTableModel(self.core)
|
|
|
|
self.table_view = QTableView(self)
|
|
|
|
self.table_view.setModel(self.table_model)
|
|
|
|
self.table_view.verticalHeader().sectionPressed.disconnect()
|
|
|
|
self.table_view.horizontalHeader().sectionPressed.disconnect()
|
|
|
|
self.table_view.verticalHeader().sectionClicked.connect(self.table_model.removeRow)
|
|
|
|
self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
|
|
|
|
self.table_view.horizontalHeader().setStretchLastSection(True)
|
|
|
|
self.table_view.setCornerButtonEnabled(False)
|
|
|
|
|
|
|
|
# FIXME: investigate signaling between widgets
|
|
|
|
# We use this function to keep an eye on the config.
|
|
|
|
# When the user uses for example the wineprefix settings, we need to update the table.
|
|
|
|
# With this function, when the config file changes, we update the table.
|
2023-04-01 00:03:32 +13:00
|
|
|
# self.config_file_watcher = QFileSystemWatcher([str(self.core.lgd.config_path)], self)
|
|
|
|
# self.config_file_watcher.fileChanged.connect(self.table_model.reset)
|
2023-03-30 00:07:19 +13:00
|
|
|
|
|
|
|
row_height = self.table_view.rowHeight(0)
|
|
|
|
self.table_view.setMinimumHeight(row_height * 7)
|
|
|
|
|
|
|
|
layout = QVBoxLayout(self)
|
|
|
|
layout.addWidget(self.table_view)
|
|
|
|
|
2023-12-19 04:34:18 +13:00
|
|
|
def showEvent(self, a0: QShowEvent):
|
|
|
|
if a0.spontaneous():
|
|
|
|
return super().showEvent(a0)
|
|
|
|
self.table_model.load(self.app_name)
|
|
|
|
return super().showEvent(a0)
|
|
|
|
|
2024-02-03 13:29:22 +13:00
|
|
|
def keyPressEvent(self, a0):
|
|
|
|
if a0.key() in {Qt.Key_Delete, Qt.Key_Backspace}:
|
2023-03-31 12:42:16 +13:00
|
|
|
indexes = self.table_view.selectedIndexes()
|
|
|
|
if not len(indexes):
|
|
|
|
return
|
|
|
|
for idx in indexes:
|
|
|
|
if idx.column() == 0:
|
|
|
|
self.table_view.model().removeRow(idx.row())
|
|
|
|
elif idx.column() == 1:
|
|
|
|
self.table_view.model().setData(idx, "", Qt.EditRole)
|
2024-02-03 13:29:22 +13:00
|
|
|
elif a0.key() == Qt.Key_Escape:
|
|
|
|
a0.ignore()
|
2022-03-02 10:36:16 +13:00
|
|
|
|
2023-04-01 00:03:32 +13:00
|
|
|
def reset_model(self):
|
|
|
|
self.table_model.reset()
|