Allow to add separator
Until now, all the menu entries were shown in a continuous list, one after another. This patch allows to add separators between entries.
This commit is contained in:
parent
8719778d22
commit
c222c4ab14
8 changed files with 616 additions and 214 deletions
|
|
@ -39,13 +39,13 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
|
||||
self.add_colorbutton("title_color", (0, 0, 0, 1), self.update_preview)
|
||||
self.add_colorbutton("title_shadow", (0, 0, 0, 0), self.update_preview)
|
||||
self.add_colorbutton("unselected_color",
|
||||
(1, 1, 1, 1), self.update_preview)
|
||||
self.add_colorbutton("unselected_color", (1, 1, 1, 1), self.update_preview)
|
||||
self.add_colorbutton("shadow_color", (0, 0, 0, 0), self.update_preview)
|
||||
self.add_colorbutton(
|
||||
"selected_color", (0, 1, 1, 1), self.update_preview)
|
||||
self.add_colorbutton("background_color",
|
||||
(0, 0, 0, 0.75), self.update_preview)
|
||||
self.add_colorbutton("selected_color", (0, 1, 1, 1), self.update_preview)
|
||||
self.add_colorbutton("background_color", (0, 0, 0, 0.75), self.update_preview)
|
||||
self.add_colorbutton("separator_color", (0, 0, 0, 1), self.update_preview)
|
||||
self.add_colorbutton("separator_shadow", (0, 0, 0, 0), self.update_preview)
|
||||
self.add_colorbutton("separator_background", (1, 1, 1, 0.75), self.update_preview)
|
||||
|
||||
self.add_text("title_text", None, self.update_preview)
|
||||
|
||||
|
|
@ -79,17 +79,13 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
self.audio_rate = 224
|
||||
|
||||
def on_help_clicked(self, b):
|
||||
|
||||
help_file = devedeng.help.help("menu.html")
|
||||
|
||||
def get_estimated_size(self):
|
||||
|
||||
estimated_size = ((self.video_rate + self.audio_rate)
|
||||
* self.sound_length) / 8
|
||||
estimated_size = ((self.video_rate + self.audio_rate) * self.sound_length) / 8
|
||||
return estimated_size
|
||||
|
||||
def update_music(self, b=None):
|
||||
|
||||
self.store_ui(self.builder)
|
||||
cv = devedeng.converter.converter.get_converter()
|
||||
film_analizer = (cv.get_film_analizer())()
|
||||
|
|
@ -104,25 +100,21 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
self.sound_length = film_analizer.original_length
|
||||
|
||||
def update_preview(self, b=None):
|
||||
|
||||
self.store_ui(self.builder)
|
||||
self.sf = None # force to repaint the menu
|
||||
self.wdrawing_area.queue_draw()
|
||||
|
||||
def on_default_background_clicked(self, b):
|
||||
|
||||
self.background_picture = self.default_background
|
||||
self.update_ui(self.builder)
|
||||
self.update_preview()
|
||||
|
||||
def on_no_sound_clicked(self, b):
|
||||
|
||||
self.background_music = self.default_sound
|
||||
self.sound_length = 30
|
||||
self.update_ui(self.builder)
|
||||
|
||||
def show_configuration(self, file_list):
|
||||
|
||||
self.builder = Gtk.Builder()
|
||||
self.builder.set_translation_domain(self.config.gettext_domain)
|
||||
self.file_list = file_list
|
||||
|
|
@ -177,17 +169,14 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
self.save_ui()
|
||||
|
||||
def on_accept_clicked(self, b):
|
||||
|
||||
self.store_ui(self.builder)
|
||||
self.wmenu.destroy()
|
||||
|
||||
def on_cancel_clicked(self, b):
|
||||
|
||||
self.restore_ui()
|
||||
self.wmenu.destroy()
|
||||
|
||||
def get_font_params(self, font_name):
|
||||
|
||||
font_elements = font_name.split(" ")
|
||||
|
||||
if (len(font_elements)) < 2:
|
||||
|
|
@ -257,12 +246,16 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
|
||||
if text is None:
|
||||
return
|
||||
|
||||
if text_type == "title":
|
||||
fgcolor = self.title_color
|
||||
bgcolor = self.title_shadow
|
||||
hard_borders = False
|
||||
font = self.title_font
|
||||
elif text_type == "menu_separator":
|
||||
fgcolor = self.separator_color
|
||||
bgcolor = self.separator_shadow
|
||||
hard_borders = False
|
||||
font = self.entry_font
|
||||
elif text_type == "menu_entry":
|
||||
fgcolor = self.unselected_color
|
||||
bgcolor = self.shadow_color
|
||||
|
|
@ -274,8 +267,7 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
hard_borders = True
|
||||
font = self.entry_font
|
||||
elif text_type == "menu_entry_activated":
|
||||
fgcolor = (1.0 - self.selected_color[0], 1.0 - self.selected_color[
|
||||
1], 1.0 - self.selected_color[2], self.selected_color[3])
|
||||
fgcolor = (1.0 - self.selected_color[0], 1.0 - self.selected_color[1], 1.0 - self.selected_color[2], self.selected_color[3])
|
||||
bgcolor = None
|
||||
hard_borders = True
|
||||
font = self.entry_font
|
||||
|
|
@ -330,15 +322,17 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
counter = 0
|
||||
for element in self.file_list:
|
||||
if element.show_in_menu:
|
||||
self.title_list.append((element, counter))
|
||||
counter += 1
|
||||
if element.element_type == "file_movie":
|
||||
self.title_list.append((element, counter))
|
||||
counter += 1
|
||||
else:
|
||||
self.title_list.append((element, None))
|
||||
|
||||
self.sf = None
|
||||
self.current_shown_page = 0
|
||||
self.wcurrent_page = None
|
||||
|
||||
def paint_menu(self, paint_background, paint_selected, paint_activated, page_number):
|
||||
|
||||
coordinates = []
|
||||
|
||||
if self.sf is None:
|
||||
|
|
@ -408,13 +402,13 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
height = (self.cached_menu_size + self.entry_vertical_margin) / 2.0
|
||||
|
||||
if (self.play_all_c):
|
||||
coordinates.append([xl, y - height, xr, y + height, "play_all"])
|
||||
coordinates.append([xl, y - height, xr, y + height, _("Play_all")])
|
||||
if self.playall_text == "":
|
||||
playalltext = "Play all"
|
||||
playalltext = _("Play all")
|
||||
else:
|
||||
playalltext = self.playall_text
|
||||
if paint_background:
|
||||
self.paint_base(xl, xr, y, 0)
|
||||
self.paint_base(xl, xr, y, 0, self.background_color)
|
||||
self.write_text(playalltext, "menu_entry", xl,
|
||||
xr, y, self.position_horizontal)
|
||||
if paint_selected:
|
||||
|
|
@ -426,25 +420,27 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
y += entry_height
|
||||
|
||||
for entry in self.title_list[page_number * entries_per_page:(page_number + 1) * entries_per_page]:
|
||||
coordinates.append([xl, y - height, xr, y + height, "entry"])
|
||||
text = entry[0].title_name
|
||||
if entry[0].element_type == "file_movie":
|
||||
text = entry[0].title_name
|
||||
is_movie = True
|
||||
coordinates.append([xl, y - height, xr, y + height, "entry"])
|
||||
else:
|
||||
text = entry[0].separator_name
|
||||
is_movie = False
|
||||
if paint_background:
|
||||
self.paint_base(xl, xr, y, 0)
|
||||
self.write_text(text, "menu_entry", xl, xr,
|
||||
y, self.position_horizontal)
|
||||
if paint_selected:
|
||||
self.write_text(text, "menu_entry_selected", xl,
|
||||
xr, y, self.position_horizontal)
|
||||
if paint_activated:
|
||||
self.write_text(text, "menu_entry_activated",
|
||||
xl, xr, y, self.position_horizontal)
|
||||
self.paint_base(xl, xr, y, 0, self.background_color if is_movie else self.separator_background)
|
||||
self.write_text(text, "menu_entry" if is_movie else "menu_separator", xl, xr, y, self.position_horizontal)
|
||||
if paint_selected and is_movie:
|
||||
self.write_text(text, "menu_entry_selected", xl, xr, y, self.position_horizontal)
|
||||
if paint_activated and is_movie:
|
||||
self.write_text(text, "menu_entry_activated", xl, xr, y, self.position_horizontal)
|
||||
y += entry_height
|
||||
|
||||
if paint_arrows:
|
||||
if page_number == 0:
|
||||
coordinates.append([xl, y - height, xr, y + height, "right"])
|
||||
if paint_background:
|
||||
self.paint_base(xl, xr, y, 0)
|
||||
self.paint_base(xl, xr, y, 0, self.background_color)
|
||||
self.paint_arrow(xl, xr, y, "menu_entry", False)
|
||||
if paint_selected:
|
||||
self.paint_arrow(xl, xr, y, "menu_entry_selected", False)
|
||||
|
|
@ -453,7 +449,7 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
elif page_number == (self.pages - 1):
|
||||
coordinates.append([xl, y - height, xr, y + height, "left"])
|
||||
if paint_background:
|
||||
self.paint_base(xl, xr, y, 0)
|
||||
self.paint_base(xl, xr, y, 0, self.background_color)
|
||||
self.paint_arrow(xl, xr, y, "menu_entry", True)
|
||||
if paint_selected:
|
||||
self.paint_arrow(xl, xr, y, "menu_entry_selected", True)
|
||||
|
|
@ -464,8 +460,8 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
coordinates.append([xl, y - height, med, y + height, "left"])
|
||||
coordinates.append([med, y - height, xr, y + height, "right"])
|
||||
if paint_background:
|
||||
self.paint_base(xl, xr, y, 1)
|
||||
self.paint_base(xl, xr, y, 2)
|
||||
self.paint_base(xl, xr, y, 1, self.background_color)
|
||||
self.paint_base(xl, xr, y, 2, self.background_color)
|
||||
self.paint_arrow(med, xr, y, "menu_entry", False)
|
||||
self.paint_arrow(xl, med, y, "menu_entry", True)
|
||||
if paint_selected:
|
||||
|
|
@ -476,7 +472,7 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
self.paint_arrow(xl, med, y, "menu_entry_activated", True)
|
||||
return coordinates
|
||||
|
||||
def paint_base(self, xl, xr, y, type_b):
|
||||
def paint_base(self, xl, xr, y, type_b, color):
|
||||
|
||||
height = self.cached_menu_size + self.entry_vertical_margin
|
||||
radius = (height) / 2.0
|
||||
|
|
@ -489,8 +485,7 @@ class dvd_menu(devedeng.interface_manager.interface_manager):
|
|||
xl = (xl + xr) / 2.0
|
||||
xl += radius
|
||||
|
||||
self.cr.set_source_rgba(self.background_color[0], self.background_color[
|
||||
1], self.background_color[2], self.background_color[3])
|
||||
self.cr.set_source_rgba(color[0], color[1], color[2], color[3])
|
||||
self.cr.move_to(xl, y)
|
||||
self.cr.line_to(xr, y)
|
||||
self.cr.curve_to(xr + radius, y, xr + radius,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue