EnvVars: Re-enable key press handler
EnvVarsModel: Better vertical header icons
This commit is contained in:
parent
42b9f581f6
commit
639395c454
2 changed files with 48 additions and 63 deletions
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in a new issue