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

1import shutil 

2import json 

3 

4from PySide6 import QtWidgets 

5from PySide6.QtGui import QPixmap 

6from PySide6.QtCore import Qt 

7 

8from scrilla import settings 

9 

10import webbrowser 

11 

12 

13def calculate_image_width(width) -> float: 

14 return 9*width/10 

15 

16 

17def calculate_image_height(height) -> float: 

18 return 9*height/10 

19 

20 

21def open_browser(link): 

22 webbrowser.open(link) 

23 

24 

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 

30 

31 

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] 

36 

37 

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 

42 

43 

44def download_tmp_to_file(tmp_key, dest): 

45 shutil.copy(f'{settings.TEMP_DIR}/{tmp_key}', dest) 

46 

47 

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() 

56 

57 with open(dest, 'w') as f: 

58 json.dump(result, f) 

59 

60 

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}' 

67 

68 

69def switch_visibility(widget: QtWidgets.QWidget): 

70 if widget.isVisible(): 

71 widget.hide() 

72 else: 

73 widget.show()