167
178
self.clear_list()
170
for frame_number, frame in enumerate(self.service_item.get_frames()):
181
slides = self.service_item.display_slides if self.service_item.is_text() else self.service_item.slides
182
for slide_index, slide in enumerate(slides):
171
183
self.setRowCount(self.slide_count() + 1)
172
184
item = QtWidgets.QTableWidgetItem()
174
186
if self.service_item.is_text():
175
if frame['verseTag']:
176
188
# These tags are already translated.
177
verse_def = frame['verseTag']
189
verse_def = slide['verse']
178
190
verse_def = '%s%s' % (verse_def[0], verse_def[1:])
179
191
two_line_def = '%s\n%s' % (verse_def[0], verse_def[1:])
180
192
row = two_line_def
183
item.setText(frame['text'])
195
item.setText(slide['text'])
185
197
label = QtWidgets.QLabel()
186
198
label.setContentsMargins(4, 4, 4, 4)
187
if self.service_item.is_media():
188
label.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter)
199
label.setAlignment(QtCore.Qt.AlignCenter)
200
if not self.service_item.is_media():
190
201
label.setScaledContents(True)
191
202
if self.service_item.is_command():
192
203
if self.service_item.is_capable(ItemCapabilities.HasThumbnails):
193
image = self.image_manager.get_image(frame['image'], ImageSource.CommandPlugins)
194
pixmap = QtGui.QPixmap.fromImage(image)
204
pixmap = QtGui.QPixmap(remove_url_prefix(slide['thumbnail']))
196
pixmap = QtGui.QPixmap(frame['image'])
206
if isinstance(slide['image'], QtGui.QIcon):
207
pixmap = slide['image'].pixmap(QtCore.QSize(32, 32))
209
pixmap = QtGui.QPixmap(remove_url_prefix(slide['image']))
198
image = self.image_manager.get_image(frame['path'], ImageSource.ImagePlugin)
199
pixmap = QtGui.QPixmap.fromImage(image)
200
pixmap.setDevicePixelRatio(label.devicePixelRatio())
211
pixmap = QtGui.QPixmap(remove_url_prefix(slide['path']))
201
212
label.setPixmap(pixmap)
213
container = QtWidgets.QWidget()
214
layout = AspectRatioLayout(container, self.screen_ratio)
215
layout.setContentsMargins(0, 0, 0, 0)
216
layout.addWidget(label)
217
container.setLayout(layout)
202
218
slide_height = width // self.screen_ratio
203
# Setup and validate row height cap if in use.
204
219
max_img_row_height = Settings().value('advanced/slide max height')
205
if isinstance(max_img_row_height, int) and max_img_row_height != 0:
220
if isinstance(max_img_row_height, int):
206
221
if max_img_row_height > 0 and slide_height > max_img_row_height:
208
222
slide_height = max_img_row_height
209
elif max_img_row_height < 0 and slide_height > self.auto_row_height:
211
slide_height = self.auto_row_height
212
label.setMaximumWidth(slide_height * self.screen_ratio)
213
label.resize(slide_height * self.screen_ratio, slide_height)
214
# Build widget with stretch padding
215
container = QtWidgets.QWidget()
216
hbox = QtWidgets.QHBoxLayout()
217
hbox.setContentsMargins(0, 0, 0, 0)
218
hbox.addWidget(label, stretch=1)
220
container.setLayout(hbox)
222
self.setCellWidget(frame_number, 0, container)
225
self.setCellWidget(frame_number, 0, label)
223
elif max_img_row_height < 0:
224
# If auto setting, show that number of slides, or if the resulting slides too small, 100px.
225
# E.g. If setting is -4, 4 slides will be visible, unless those slides are < 100px high.
226
self.auto_row_height = max(self.viewport().height() / (-1 * max_img_row_height), 100)
227
slide_height = min(slide_height, self.auto_row_height)
228
self.setCellWidget(slide_index, 0, container)
227
230
text.append(str(row))
228
self.setItem(frame_number, 0, item)
231
self.setItem(slide_index, 0, item)
230
self.setRowHeight(frame_number, slide_height)
233
# First set the height to 1 and then to the right height. This makes the item display correctly.
234
# If this is not done, sometimes the image item is displayed as blank.
235
self.setRowHeight(slide_index, 1)
236
self.setRowHeight(slide_index, slide_height)
231
237
self.setVerticalHeaderLabels(text)
232
238
if self.service_item.is_text():
233
239
self.resizeRowsToContents()