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