Skip to content

Commit e0eef6b

Browse files
committed
#187 layout the Open File dialog
1 parent 19f7533 commit e0eef6b

File tree

1 file changed

+43
-59
lines changed

1 file changed

+43
-59
lines changed

src/ui/open_file_dialog.py

+43-59
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
# Copyright (c) 2021 dmh23
1010
#
1111

12-
from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QLabel, QMainWindow, QGridLayout
12+
from PyQt6.QtCore import Qt
13+
from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QLabel, QMainWindow, QGridLayout, QVBoxLayout, QPushButton
1314

1415
from src.log.log_utils import get_model_info_for_open_model_dialog, OpenFileInfo
1516
from src.ui.please_wait import PleaseWait
@@ -55,25 +56,20 @@ def __init__(self, parent: QMainWindow, please_wait: PleaseWait, current_track:
5556
best_best_times = None
5657
best_average_times = None
5758

58-
self.layout = QGridLayout()
59+
self.setWindowTitle("Open Log File")
5960

60-
# self._place_in_grid(0, 3, tk.Label(master, text="Episodes", justify=tk.CENTER))
61-
# self._place_in_grid(0, 4, tk.Label(master, text="Average\nProgress", justify=tk.CENTER))
62-
# self._place_in_grid(0, 5, tk.Label(master, text="Full\nLaps", justify=tk.CENTER))
61+
log_layout = QGridLayout()
62+
log_layout.setHorizontalSpacing(15)
6363

64-
self.layout.addWidget(QLabel("Episodes"), 0, 3)
65-
self.layout.addWidget(QLabel("Average\nProgress"), 0, 4)
66-
self.layout.addWidget(QLabel("Full\nLaps"), 0, 5)
64+
log_layout.addWidget(_make_centred_label("Episodes"), 0, 3)
65+
log_layout.addWidget(_make_centred_label("Average\nProgress"), 0, 4)
66+
log_layout.addWidget(_make_centred_label("Full\nLaps"), 0, 5)
6767

6868
if show_laps:
69-
# self._place_in_grid(0, 6, tk.Label(master, text="Best\nLap", justify=tk.CENTER))
70-
# self._place_in_grid(0, 7, tk.Label(master, text="Average\nLap", justify=tk.CENTER))
71-
72-
self.layout.addWidget(QLabel("Best\nLap"), 0, 6)
73-
self.layout.addWidget(QLabel("Average\nLap"), 0, 7)
69+
log_layout.addWidget(_make_centred_label("Best\nLap"), 0, 6)
70+
log_layout.addWidget(_make_centred_label("Average\nLap"), 0, 7)
7471

7572
row = 1
76-
7773
for log in log_info:
7874
if len(log.source_files) == 1:
7975
file_names = log.source_files[0]
@@ -88,51 +84,33 @@ def __init__(self, parent: QMainWindow, please_wait: PleaseWait, current_track:
8884
progress_percent = self._get_progress_percent(log_meta)
8985
success_percent = self._get_success_percent(log_meta)
9086

91-
self.layout.addWidget(QLabel(log.display_name), row, 0)
92-
self.layout.addWidget(QLabel(log_meta.race_type.get().name), row, 1)
93-
self.layout.addWidget(QLabel(log_meta.job_type.get().name), row, 2)
94-
95-
self.layout.addWidget(self._make_large_integer_label(log_meta.episode_count.get()), row, 3)
96-
self.layout.addWidget(self._make_percent_label(progress_percent, best_progress_percent), row, 4)
97-
self.layout.addWidget(self._make_percent_label(success_percent, best_success_percent), row, 5)
98-
99-
10087
# self._place_in_grid(row, 0, tk.Button(master, text=log.display_name, command=callback), "E")
101-
# self._place_in_grid(row, 1, tk.Label(master, text=log_meta.race_type.get().name), "E")
102-
# self._place_in_grid(row, 2, tk.Label(master, text=log_meta.job_type.get().name), "E")
103-
# self._place_in_grid(row, 3, self._make_large_integer_label(master, log_meta.episode_count.get()))
104-
# self._place_in_grid(row, 4, self._make_percent_label(master, progress_percent, best_progress_percent))
105-
# self._place_in_grid(row, 5, self._make_percent_label(master, success_percent, best_success_percent))
88+
log_layout.addWidget(QPushButton(log.display_name), row, 0)
10689

107-
if show_laps:
108-
self.layout.addWidget(self._make_lap_time_label(log_meta.best_time.get(), best_best_times), row, 6)
109-
self.layout.addWidget(self._make_lap_time_label(log_meta.average_time.get(), best_average_times), row, 7)
90+
log_layout.addWidget(_make_centred_label(log_meta.race_type.get().name), row, 1)
91+
log_layout.addWidget(_make_centred_label(log_meta.job_type.get().name), row, 2)
92+
log_layout.addWidget(self._make_large_integer_label(log_meta.episode_count.get()), row, 3)
93+
log_layout.addWidget(self._make_percent_label(progress_percent, best_progress_percent), row, 4)
94+
log_layout.addWidget(self._make_percent_label(success_percent, best_success_percent), row, 5)
11095

111-
# self._place_in_grid(row, 6, self._make_lap_time_label(master,
112-
# log_meta.best_time.get(),
113-
# best_best_times))
114-
# self._place_in_grid(row, 7, self._make_lap_time_label(master,
115-
# log_meta.average_time.get(),
116-
# best_average_times))
96+
if show_laps:
97+
log_layout.addWidget(self._make_lap_time_label(log_meta.best_time.get(), best_best_times), row, 6)
98+
log_layout.addWidget(self._make_lap_time_label(log_meta.average_time.get(), best_average_times), row, 7)
11799

118100
row += 1
119101

120102

121103
# SAMPLE CODE
122104

105+
button_box = QDialogButtonBox(QDialogButtonBox.StandardButton.Cancel)
106+
button_box.rejected.connect(self.reject)
123107

124-
self.setWindowTitle("HELLO!")
125-
126-
QBtn = QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel
108+
layout = QVBoxLayout()
109+
layout.addLayout(log_layout)
110+
layout.addSpacing(10)
111+
layout.addWidget(button_box, alignment=Qt.AlignmentFlag.AlignCenter)
127112

128-
self.buttonBox = QDialogButtonBox(QBtn)
129-
self.buttonBox.accepted.connect(self.accept)
130-
self.buttonBox.rejected.connect(self.reject)
131-
132-
133-
134-
self.layout.addWidget(self.buttonBox, row, 4)
135-
self.setLayout(self.layout)
113+
self.setLayout(layout)
136114

137115
@staticmethod
138116
def _get_progress_percent(log_meta):
@@ -146,19 +124,20 @@ def _get_success_percent(log_meta):
146124
def _make_percent_label(value, best_value):
147125
formatted_text = get_pretty_whole_percentage(value)
148126
if value >= 0.99 * best_value and value > 0.0:
149-
return QLabel(formatted_text)
127+
return _make_centred_label(formatted_text, "palegreen")
150128
# return tk.Label(master, text=formatted_text, background="palegreen", justify=tk.CENTER)
151129
elif value >= 0.97 * best_value and value > 0.0:
152-
return QLabel(formatted_text)
130+
return _make_centred_label(formatted_text, "lightskyblue")
153131
# return tk.Label(master, text=formatted_text, background="lightblue1", justify=tk.CENTER)
154132
else:
155-
return QLabel(formatted_text)
133+
return _make_centred_label(formatted_text)
156134
# return tk.Label(master, text=formatted_text, justify=tk.CENTER)
157135

158136
@staticmethod
159137
def _make_large_integer_label(value):
160-
# return tk.Label(master, text=get_pretty_large_integer(value), justify=tk.CENTER)
161-
return QLabel(get_pretty_large_integer(value))
138+
label = QLabel(get_pretty_large_integer(value))
139+
label.setAlignment(Qt.AlignmentFlag.AlignCenter)
140+
return label
162141

163142
@staticmethod
164143
def _make_lap_time_label(seconds, best_seconds):
@@ -169,11 +148,16 @@ def _make_lap_time_label(seconds, best_seconds):
169148
formatted_text = "---"
170149

171150
if best_seconds >= 0.99 * seconds and seconds > 0.0:
172-
return QLabel(formatted_text)
173-
# return tk.Label(master, text=formatted_text, background="palegreen", justify=tk.CENTER)
151+
return _make_centred_label(formatted_text, "palegreen")
174152
elif best_seconds >= 0.97 * seconds and seconds > 0.0:
175-
return QLabel(formatted_text)
176-
# return tk.Label(master, text=formatted_text, background="lightblue1", justify=tk.CENTER)
153+
return _make_centred_label(formatted_text, "lightskyblue")
177154
else:
178-
return QLabel(formatted_text)
179-
# return tk.Label(master, text=formatted_text, justify=tk.CENTER)
155+
return _make_centred_label(formatted_text)
156+
157+
158+
def _make_centred_label(display_value: str, colour: str = None):
159+
label = QLabel(display_value)
160+
label.setAlignment(Qt.AlignmentFlag.AlignCenter)
161+
if colour is not None:
162+
label.setStyleSheet("background-color: " + colour)
163+
return label

0 commit comments

Comments
 (0)