run scripts
All checks were successful
Build AppImage / Explore-Gitea-Actions (push) Successful in 1m46s

run scripts

Co-authored-by: Dominik Demuth <dominik.demuth@physik.tu-darmstadt.de>
Reviewed-on: #291
This commit is contained in:
2024-09-29 17:21:40 +00:00
parent b2a3881fa8
commit 4108deb69a
20 changed files with 401 additions and 229 deletions

View File

@ -3,8 +3,10 @@ import urllib.request
from functools import cache
from PyQt5 import QtWidgets, QtGui, QtCore
from .._py.pokewindow import Ui_Dialog
from .._py.pokeentry import Ui_Form
from numpy.random import randint
from gui_qt._py.pokewindow import Ui_Dialog
from gui_qt._py.pokeentry import Ui_Form
def get_connection(db):
@ -37,6 +39,8 @@ class QPoke(QtWidgets.QDialog, Ui_Dialog):
self.comboBox_2.currentIndexChanged.connect(self.collect_pokemon)
self.comboBox.currentIndexChanged.connect(self.collect_pokemon)
self.pushButton.clicked.connect(self.randomize)
self.collect_pokemon()
def _fetch_names(self):
@ -149,12 +153,15 @@ class QPoke(QtWidgets.QDialog, Ui_Dialog):
self.tableWidget_2.clearContents()
self.tableWidget_2.setRowCount(0)
self.tableWidget_2.setSortingEnabled(False)
for entry in result:
row = self.tableWidget_2.rowCount()
self.tableWidget_2.setRowCount(row+1)
item = QtWidgets.QTableWidgetItem(f"{entry['entry_number']:04d}")
item.setData(QtCore.Qt.ItemDataRole.UserRole, entry['species_id'])
item.setData(QtCore.Qt.ItemDataRole.UserRole+1, entry['pokemon_id'])
self.tableWidget_2.setItem(row, 0, item)
name_en = entry['name_en']
@ -181,7 +188,7 @@ class QPoke(QtWidgets.QDialog, Ui_Dialog):
type_en.append(t_en)
type_de.append(t_de)
item = QtWidgets.QTableWidgetItem('\n'.join(type_en))
item = QtWidgets.QTableWidgetItem(' / '.join(type_en))
item.setToolTip('\n'.join(type_en))
self.tableWidget_2.setItem(row, 2, item)
@ -215,11 +222,20 @@ class QPoke(QtWidgets.QDialog, Ui_Dialog):
self.tableWidget_2.setItem(row, 12, item)
self.tableWidget_2.resizeColumnToContents(1)
self.tableWidget_2.resizeColumnToContents(2)
self.tableWidget_2.setSortingEnabled(True)
def show_pokemon(self):
table = self.sender()
row = table.currentRow()
poke_id = table.item(row, 0).data(QtCore.Qt.ItemDataRole.UserRole)
def randomize(self):
select = randint(0, self.tableWidget_2.rowCount())
self.show_pokemon(select)
def show_pokemon(self, row: int = None):
table = self.tableWidget_2
if row is None:
row = table.currentRow()
species_id = table.item(row, 0).data(QtCore.Qt.ItemDataRole.UserRole)
poke_id = table.item(row, 0).data(QtCore.Qt.ItemDataRole.UserRole+1)
pokemon_name = table.item(row, 1).text()
connection = get_connection(self._db)
@ -227,7 +243,7 @@ class QPoke(QtWidgets.QDialog, Ui_Dialog):
cursor.execute(
'SELECT p.id FROM pokemon p WHERE p.species_id = ?',
(poke_id,)
(species_id,)
)
pokemon = cursor.fetchall()
@ -237,9 +253,14 @@ class QPoke(QtWidgets.QDialog, Ui_Dialog):
for i in range(1, self.tabWidget.count()):
self.tabWidget.setTabVisible(i, False)
widget_idx = 0
for i, p in enumerate(pokemon):
entry_widget = self.tabWidget.widget(i)
if poke_id == p[0]:
widget_idx = i
if entry_widget is None:
self.tabWidget.addTab(PokemonEntry(p[0]), '')
@ -247,12 +268,13 @@ class QPoke(QtWidgets.QDialog, Ui_Dialog):
self.tabWidget.setTabVisible(i, True)
name = self.tabWidget.widget(i).create_pokemon(p[0])
self.tabWidget.setTabText(i, name)
self.tabWidget.setCurrentIndex(widget_idx)
class PokemonEntry(QtWidgets.QWidget, Ui_Form):
_db = ''
def __init__(self, pokemon_id, parent=None):
def __init__(self, pokemon_id: int, parent=None):
super().__init__(parent=parent)
self.setupUi(self)
@ -275,7 +297,7 @@ class PokemonEntry(QtWidgets.QWidget, Ui_Form):
self.species_label.setToolTip(species['genus_de'])
self.height_label.setText(f"{pokemon['height'] / 10} m")
self.weight_label.setText(f"{pokemon['weight']} kg")
self.weight_label.setText(f"{pokemon['weight'] / 10} kg")
if species['gender_ratio'] == -1:
gender = "Gender unknown"
@ -326,10 +348,23 @@ class PokemonEntry(QtWidgets.QWidget, Ui_Form):
self.type_labels[slot].setToolTip(QPoke.types[type_id][0])
evolutions = self.make_evolution(pokemon['evolution_id'])
evo_text = []
for e in evolutions:
evo_text.append(f'{e[0]} (#{e[1]:04d}) to {e[2]} (#{e[3]:04d}) \t\t ({e[4]})')
self.evolution_bar.setText('<br>'.join(evo_text))
self.tableWidget.clear()
self.tableWidget.setColumnCount(4)
self.tableWidget.setRowCount(len(evolutions))
for i, e in enumerate(evolutions):
item = QtWidgets.QTableWidgetItem(f'{e[0]} (#{e[1]:04d})')
self.tableWidget.setItem(i, 0, item)
item = QtWidgets.QTableWidgetItem('to')
self.tableWidget.setItem(i, 1, item)
item = QtWidgets.QTableWidgetItem(f'{e[2]} (#{e[3]:04d})')
self.tableWidget.setItem(i, 2, item)
item = QtWidgets.QTableWidgetItem(f'{e[4]}')
self.tableWidget.setItem(i, 3, item)
self.tableWidget.resizeColumnsToContents()
self.tableWidget.resizeRowsToContents()
if form['full_name_en'] is not None:
return form['full_name_en']
@ -438,7 +473,6 @@ class PokemonEntry(QtWidgets.QWidget, Ui_Form):
return form, types
@cache
def make_evolution(self, poke_id: int):
steps = []
@ -448,6 +482,7 @@ class PokemonEntry(QtWidgets.QWidget, Ui_Form):
cursor.execute('SELECT * FROM evolution_names WHERE id = ?', (poke_id,))
chain = cursor.fetchall()
conn.close()
trigger_texts = [
None,
@ -497,7 +532,6 @@ class PokemonEntry(QtWidgets.QWidget, Ui_Form):
}
for c in chain:
lvl0 = c["name_en"]
if c['gender'] == 1:
lvl0 += ' (female)'
@ -519,17 +553,4 @@ class PokemonEntry(QtWidgets.QWidget, Ui_Form):
(lvl0, c['evolves_from'], c['evolve_en'], c['species_id'], ', '.join(filter(lambda x: x, level_text)))
)
conn.close()
return steps
if __name__ == '__main__':
app = QtWidgets.QApplication([])
sourcedb = 'pokemon.sqlite'
w = QPoke(sourcedb)
w.show()
app.exec()