Added support for page blocks in menues

Now allows to add separators in the menu that forces a page jump,
allowing to group videos in pages.
This commit is contained in:
Sergio Costas 2019-01-04 12:37:04 +01:00
parent c222c4ab14
commit 6d1b166f2d
4 changed files with 56 additions and 24 deletions

View file

@ -321,12 +321,12 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
self.title_list = []
counter = 0
for element in self.file_list:
if element.show_in_menu:
if element.element_type == "file_movie":
if element.element_type == "file_movie":
if element.show_in_menu:
self.title_list.append((element, counter))
counter += 1
else:
self.title_list.append((element, None))
else:
self.title_list.append((element, None))
self.sf = None
self.current_shown_page = 0
@ -381,21 +381,28 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
if (self.play_all_c):
entries_per_page -= 1
n_entries = len(self.title_list)
if (n_entries > entries_per_page):
self.pages = 1
n_entries = 0
self.page_list = [0]
entry = 0
for element in self.file_list:
if ((element.element_type == "separator") and element.page_jump) or (n_entries > entries_per_page):
self.pages += 1
n_entries = 1
self.page_list.append(entry)
entry += 1
if (page_number > self.pages) and (page_number > 0):
page_number = self.pages - 1
if (self.pages > 1):
paint_arrows = True
entries_per_page -= 1
else:
paint_arrows = False
self.pages = int(n_entries / entries_per_page)
if (n_entries == 0) or ((n_entries % entries_per_page) != 0):
self.pages += 1
if (page_number >= self.pages) and (page_number > 0):
page_number -= 1
if self.wcurrent_page is not None:
self.wcurrent_page.set_text(_("Page %(X)d of %(Y)d") % {
"X": page_number + 1, "Y": self.pages})
self.wcurrent_page.set_text(_("Page {0} of {1}").format(page_number + 1, self.pages))
xl = left_margin_p
xr = 720.0 - right_margin_p
y = top_margin_p + entry_height / 2.0
@ -419,7 +426,13 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
xl, xr, y, self.position_horizontal)
y += entry_height
for entry in self.title_list[page_number * entries_per_page:(page_number + 1) * entries_per_page]:
for entry_position in range(entries_per_page):
entry_number = self.page_list[page_number] + entry_position
if entry_number >= len(self.title_list):
break
entry = self.title_list[entry_number]
if (entry_position != 0) and (entry[0].element_type == "separator") and (entry[0].page_jump):
break
if entry[0].element_type == "file_movie":
text = entry[0].title_name
is_movie = True