1
0
Fork 0
mirror of synced 2024-06-18 02:24:43 +12:00
Rare/rare/components/tabs/settings/widgets/env_vars.py
2024-01-02 17:57:02 +02:00

65 lines
2.4 KiB
Python

from logging import getLogger
from PyQt5.QtCore import QFileSystemWatcher, Qt
from PyQt5.QtWidgets import (
QGroupBox,
QHeaderView,
QVBoxLayout,
QTableView,
)
from rare.shared import LegendaryCoreSingleton
from .env_vars_model import EnvVarsTableModel
logger = getLogger("EnvVars")
class EnvVars(QGroupBox):
def __init__(self, parent):
super(EnvVars, self).__init__(parent=parent)
self.setTitle(self.tr("Environment variables"))
self.core = LegendaryCoreSingleton()
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.
# self.config_file_watcher = QFileSystemWatcher([str(self.core.lgd.config_path)], self)
# self.config_file_watcher.fileChanged.connect(self.table_model.reset)
row_height = self.table_view.rowHeight(0)
self.table_view.setMinimumHeight(row_height * 7)
layout = QVBoxLayout(self)
layout.addWidget(self.table_view)
def keyPressEvent(self, e):
if e.key() in {Qt.Key_Delete, Qt.Key_Backspace}:
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)
elif e.key() == Qt.Key_Escape:
e.ignore()
def reset_model(self):
self.table_model.reset()
def update_game(self, app_name):
self.table_model.load(app_name)