1
0
Fork 0
mirror of synced 2024-06-26 18:20:50 +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 PyQt5.QtCore import QFileSystemWatcher
from PyQt5.QtCore import QFileSystemWatcher, Qt
from PyQt5.QtWidgets import (
QGroupBox,
QHeaderView,
@ -44,42 +44,18 @@ class EnvVars(QGroupBox):
layout = QVBoxLayout(self)
layout.addWidget(self.table_view)
# def keyPressEvent(self, e):
# if e.key() == Qt.Key_Delete or e.key() == Qt.Key_Backspace:
# selected_items = self.ui.env_vars_table.selectedItems()
#
# if len(selected_items) == 0:
# return
#
# item_in_table = self.ui.env_vars_table.findItems(selected_items[0].text(), Qt.MatchExactly)
#
# # Our first selection is in column 0. So, we have to find out if the user
# # only selected keys, or keys and values. we use the check_if_item func
# if item_in_table[0].column() == 0:
# 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 keyPressEvent(self, e):
if e.key() == Qt.Key_Delete or e.key() == 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 update_game(self, app_name):
self.table_model.load(app_name)

View file

@ -1,14 +1,12 @@
import re
import sys
from collections import ChainMap
from pprint import pprint
from typing import Any, Union
from rare.utils.misc import icon
from PyQt5.QtCore import Qt, QModelIndex, QAbstractTableModel, pyqtSlot
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QTableView, QHeaderView, QApplication, QDialog, QVBoxLayout
from legendary.core import LegendaryCore
from rare.lgndr.core import LegendaryCore
class EnvVarsTableModel(QAbstractTableModel):
@ -127,12 +125,14 @@ class EnvVarsTableModel(QAbstractTableModel):
return self.__title(section)
if role == Qt.DecorationRole:
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):
return icon("mdi.refresh-circle", "ei.refresh")
return icon("mdi.refresh", "ei.refresh")
if self.__is_local(section):
return icon("mdi.delete", "ei.remove-sign")
return icon("mdi.lock", "ei.lock")
return icon("mdi.plus", "ei.plus-sign")
if role == Qt.TextAlignmentRole:
return Qt.AlignVCenter + Qt.AlignHCenter
return None
@ -241,28 +241,37 @@ class EnvVarsTableModel(QAbstractTableModel):
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__":
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)
set_style_sheet("RareStyle")
window = MainDialog()
window.setFixedSize(800, 600)
window.show()