1
0
Fork 0
mirror of synced 2024-06-29 11:40:37 +12:00

EnvVars: Re-enable key press handler

EnvVarsModel: Better vertical header icons
This commit is contained in:
loathingKernel 2023-03-31 02:42:16 +03:00
parent 42b9f581f6
commit 639395c454
No known key found for this signature in database
GPG key ID: CE0C72D0B53821FD
2 changed files with 48 additions and 63 deletions

View file

@ -1,6 +1,6 @@
from logging import getLogger from logging import getLogger
from PyQt5.QtCore import QFileSystemWatcher from PyQt5.QtCore import QFileSystemWatcher, Qt
from PyQt5.QtWidgets import ( from PyQt5.QtWidgets import (
QGroupBox, QGroupBox,
QHeaderView, QHeaderView,
@ -44,42 +44,18 @@ class EnvVars(QGroupBox):
layout = QVBoxLayout(self) layout = QVBoxLayout(self)
layout.addWidget(self.table_view) layout.addWidget(self.table_view)
# def keyPressEvent(self, e): def keyPressEvent(self, e):
# if e.key() == Qt.Key_Delete or e.key() == Qt.Key_Backspace: if e.key() == Qt.Key_Delete or e.key() == Qt.Key_Backspace:
# selected_items = self.ui.env_vars_table.selectedItems() indexes = self.table_view.selectedIndexes()
# if not len(indexes):
# if len(selected_items) == 0: return
# return for idx in indexes:
# if idx.column() == 0:
# item_in_table = self.ui.env_vars_table.findItems(selected_items[0].text(), Qt.MatchExactly) self.table_view.model().removeRow(idx.row())
# elif idx.column() == 1:
# # Our first selection is in column 0. So, we have to find out if the user self.table_view.model().setData(idx, "", Qt.EditRole)
# # only selected keys, or keys and values. we use the check_if_item func elif e.key() == Qt.Key_Escape:
# if item_in_table[0].column() == 0: e.ignore()
# which_index_to_use = 1
# if len(selected_items) == 1:
# which_index_to_use = 0
# if self.check_if_item(selected_items[which_index_to_use]):
# # User selected keys and values, so we skip the values
# for i in selected_items[::2]:
# if i:
# config_helper.remove_option(f"{self.app_name}.env", i.text())
# self.ui.env_vars_table.removeRow(i.row())
# self.append_row()
# else:
# # user only selected keys
# for i in selected_items:
# if i:
# config_helper.remove_option(f"{self.app_name}.env", i.text())
# self.ui.env_vars_table.removeRow(i.row())
# self.append_row()
#
# # User only selected values, so we just set the text to ""
# elif item_in_table[0].column() == 1:
# [i.setText("") for i in selected_items]
#
# elif e.key() == Qt.Key_Escape:
# e.ignore()
def update_game(self, app_name): def update_game(self, app_name):
self.table_model.load(app_name) self.table_model.load(app_name)

View file

@ -1,14 +1,12 @@
import re import re
import sys import sys
from collections import ChainMap from collections import ChainMap
from pprint import pprint
from typing import Any, Union from typing import Any, Union
from rare.utils.misc import icon from rare.utils.misc import icon
from PyQt5.QtCore import Qt, QModelIndex, QAbstractTableModel, pyqtSlot from PyQt5.QtCore import Qt, QModelIndex, QAbstractTableModel, pyqtSlot
from PyQt5.QtGui import QFont from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QTableView, QHeaderView, QApplication, QDialog, QVBoxLayout from rare.lgndr.core import LegendaryCore
from legendary.core import LegendaryCore
class EnvVarsTableModel(QAbstractTableModel): class EnvVarsTableModel(QAbstractTableModel):
@ -127,12 +125,14 @@ class EnvVarsTableModel(QAbstractTableModel):
return self.__title(section) return self.__title(section)
if role == Qt.DecorationRole: if role == Qt.DecorationRole:
if orientation == Qt.Vertical: if orientation == Qt.Vertical:
if section < self.__data_length() and not self.__is_readonly(section): if section < self.__data_length():
if self.__is_readonly(section) or not self.__is_local(section):
return icon("mdi.lock", "ei.lock")
if self.__is_global(section) and self.__is_local(section): if self.__is_global(section) and self.__is_local(section):
return icon("mdi.refresh-circle", "ei.refresh") return icon("mdi.refresh", "ei.refresh")
if self.__is_local(section): if self.__is_local(section):
return icon("mdi.delete", "ei.remove-sign") return icon("mdi.delete", "ei.remove-sign")
return icon("mdi.lock", "ei.lock") return icon("mdi.plus", "ei.plus-sign")
if role == Qt.TextAlignmentRole: if role == Qt.TextAlignmentRole:
return Qt.AlignVCenter + Qt.AlignHCenter return Qt.AlignVCenter + Qt.AlignHCenter
return None return None
@ -241,28 +241,37 @@ class EnvVarsTableModel(QAbstractTableModel):
return True return True
class MainDialog(QDialog):
def __init__(self):
super().__init__()
self.table = QTableView()
self.model = EnvVarsTableModel(LegendaryCore())
self.model.load("Tamarind")
self.table.setModel(self.model)
self.table.verticalHeader().sectionPressed.disconnect()
self.table.horizontalHeader().sectionPressed.disconnect()
self.table.verticalHeader().sectionClicked.connect(self.model.removeRow)
self.table.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
self.table.horizontalHeader().setStretchLastSection(True)
self.table.setCornerButtonEnabled(False)
self.setLayout(QVBoxLayout(self))
self.layout().addWidget(self.table)
if __name__ == "__main__": if __name__ == "__main__":
from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout, QTableView, QHeaderView
from rare.resources import static_css
from rare.resources.stylesheets import RareStyle
from rare.utils.misc import set_style_sheet
from legendary.core import LegendaryCore
class MainDialog(QDialog):
def __init__(self):
super().__init__()
self.table = QTableView()
self.model = EnvVarsTableModel(LegendaryCore())
self.model.load("Tamarind")
self.table.setModel(self.model)
self.table.verticalHeader().sectionPressed.disconnect()
self.table.horizontalHeader().sectionPressed.disconnect()
self.table.verticalHeader().sectionClicked.connect(self.model.removeRow)
self.table.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
self.table.horizontalHeader().setStretchLastSection(True)
self.table.setCornerButtonEnabled(False)
self.setLayout(QVBoxLayout(self))
self.layout().addWidget(self.table)
app = QApplication(sys.argv) app = QApplication(sys.argv)
set_style_sheet("RareStyle")
window = MainDialog() window = MainDialog()
window.setFixedSize(800, 600) window.setFixedSize(800, 600)
window.show() window.show()