Coverage for src/scrilla/gui/utilities.py: 35%
47 statements
« prev ^ index » next coverage.py v6.4.2, created at 2022-07-18 18:14 +0000
« prev ^ index » next coverage.py v6.4.2, created at 2022-07-18 18:14 +0000
1import shutil
2import json
4from PySide6 import QtWidgets
5from PySide6.QtGui import QPixmap
6from PySide6.QtCore import Qt
8from scrilla import settings
10import webbrowser
13def calculate_image_width(width) -> float:
14 return 9*width/10
17def calculate_image_height(height) -> float:
18 return 9*height/10
21def open_browser(link):
22 webbrowser.open(link)
25def generate_pixmap_from_temp(width, height, ext) -> QPixmap:
26 pixmap = QPixmap(f'{settings.TEMP_DIR}/{ext}')
27 pixmap = pixmap.scaled(calculate_image_width(
28 width), calculate_image_height(height), aspectMode=Qt.KeepAspectRatio)
29 return pixmap
32def get_metadata(key) -> str:
33 with open(settings.METADATA_FILE, 'r') as f:
34 dict_format = json.load(f)
35 return dict_format[key]
38def load_html_template(template_key):
39 with open(f'{settings.GUI_TEMPLATE_DIR}/{template_key}.html', 'r') as f:
40 html = f.read()
41 return html
44def download_tmp_to_file(tmp_key, dest):
45 shutil.copy(f'{settings.TEMP_DIR}/{tmp_key}', dest)
48def download_table_to_json(qtable: QtWidgets.QTableWidget, dest) -> None:
49 result = {}
50 for row in range(qtable.rowCount()):
51 row_header = qtable.verticalHeaderItem(row).text()
52 result[row_header] = {}
53 for column in range(qtable.columnCount()):
54 column_header = qtable.horizontalHeaderItem(column).text()
55 result[row_header][column_header] = qtable.item(row, column).text()
57 with open(dest, 'w') as f:
58 json.dump(result, f)
61def get_next_layer(layer):
62 if layer == "root":
63 return "child"
64 if layer == "child":
65 return "grand-child"
66 return f'great-{layer}'
69def switch_visibility(widget: QtWidgets.QWidget):
70 if widget.isVisible():
71 widget.hide()
72 else:
73 widget.show()