diff --git a/data/interface/wmain.ui b/data/interface/wmain.ui
index a0e634c..0607e3f 100644
--- a/data/interface/wmain.ui
+++ b/data/interface/wmain.ui
@@ -40,6 +40,8 @@
+
+
+
+
+
- In menu
diff --git a/src/devedeng/dvd_menu.py b/src/devedeng/dvd_menu.py
index a646d91..32bcd10 100644
--- a/src/devedeng/dvd_menu.py
+++ b/src/devedeng/dvd_menu.py
@@ -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
diff --git a/src/devedeng/project.py b/src/devedeng/project.py
index 1c6064b..da7b3d0 100644
--- a/src/devedeng/project.py
+++ b/src/devedeng/project.py
@@ -203,6 +203,7 @@ class devede_project:
else:
if element.element_type != "file_movie":
self.wpreview_file.set_sensitive(False)
+ self.wproperties_file.set_sensitive(False)
nfiles = len(self.wfiles.get_model())
if (nfiles < 1):
self.wdelete_file.set_sensitive(False)
@@ -217,7 +218,10 @@ class devede_project:
def on_cellrenderertext4_toggled(self, widget, path):
element = self.wliststore_files[path][0]
- element.set_show_in_menu(False if widget.get_active() else True)
+ if element.element_type == "file_movie":
+ element.set_show_in_menu(False if widget.get_active() else True)
+ else:
+ element.set_page_jump(False if widget.get_active() else True)
def on_use_pal_toggled(self, b):
self.config.PAL = self.wuse_pal.get_active()
@@ -279,7 +283,7 @@ class devede_project:
new_file.connect('title_changed', self.title_changed)
new_file.connect('in_menu_changed', self.in_menu_changed)
self.wliststore_files.append([new_file, new_file.title_name, True, self.duration_to_string(
- new_file.get_duration()), new_file.show_in_menu])
+ new_file.get_duration()), new_file.show_in_menu, _("In menu")])
if (len(error_list) != 0):
devedeng.message.message_window(_("The following files could not be added:"), _(
"Error while adding files"), error_list)
@@ -727,13 +731,13 @@ class devede_project:
new_file.connect('title_changed', self.title_changed)
new_file.connect('in_menu_changed', self.in_menu_changed)
self.wliststore_files.append([new_file, new_file.title_name, True, self.duration_to_string(
- new_file.get_duration()), new_file.show_in_menu])
+ new_file.get_duration()), new_file.show_in_menu, _("In menu")])
else:
new_separator = devedeng.separator.separator()
new_separator.restore_element(element)
new_separator.connect('name_changed', self.title_changed)
- new_separator.connect('in_menu_changed', self.in_menu_changed)
- self.wliststore_files.append([new_separator, new_separator.separator_name, True, "", True])
+ new_separator.connect('page_jump_changed', self.in_menu_changed)
+ self.wliststore_files.append([new_separator, new_separator.separator_name, True, "", new_separator.page_jump, _("Page jump")])
if (len(error_list) != 0):
devedeng.message.message_window(_("The following files in the project could not be added again:"), _("Error while adding files"), error_list)
self.set_interface_status(None)
@@ -754,7 +758,7 @@ class devede_project:
def on_add_separator_clicked(self, b):
new_separator = devedeng.separator.separator()
new_separator.connect('name_changed', self.title_changed)
- new_separator.connect('in_menu_changed', self.in_menu_changed)
- self.wliststore_files.append([new_separator, new_separator.separator_name, True, "", True])
+ new_separator.connect('page_jump_changed', self.in_menu_changed)
+ self.wliststore_files.append([new_separator, new_separator.separator_name, True, "", False, _("Page jump")])
self.set_interface_status(None)
self.refresh_disc_usage()
\ No newline at end of file
diff --git a/src/devedeng/separator.py b/src/devedeng/separator.py
index 64df63f..8ae30c1 100644
--- a/src/devedeng/separator.py
+++ b/src/devedeng/separator.py
@@ -23,19 +23,23 @@ import devedeng.interface_manager
class separator(devedeng.interface_manager.interface_manager):
- __gsignals__ = {'name_changed': (GObject.SIGNAL_RUN_FIRST, None, (str,)), 'in_menu_changed': (
+ __gsignals__ = {'name_changed': (GObject.SIGNAL_RUN_FIRST, None, (str,)), 'page_jump_changed': (
GObject.SIGNAL_RUN_FIRST, None, (bool,))}
def __init__(self):
self.element_type = "separator"
devedeng.interface_manager.interface_manager.__init__(self)
- self.add_toggle("show_in_menu", True)
+ self.add_toggle("page_jump", True)
self.add_text("separator_name", _("Separator"))
def set_name(self, new_name):
self.separator_name = new_name
self.emit('name_changed', self.separator_name)
+ def set_page_jump(self, page_jump):
+ self.page_jump = page_jump
+ self.emit('page_jump_changed', self.page_jump)
+
def delete_element(self):
return