Added support for fontbuttons and filebuttons

This commit is contained in:
Sergio Costas 2014-07-19 19:44:53 +02:00
parent 7e49cf9146
commit d9b8ee4d3f
3 changed files with 59 additions and 8 deletions

View file

@ -26,6 +26,7 @@
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="resizable">False</property> <property name="resizable">False</property>
<property name="modal">True</property> <property name="modal">True</property>
<property name="window_position">center</property>
<property name="deletable">False</property> <property name="deletable">False</property>
<property name="has_resize_grip">False</property> <property name="has_resize_grip">False</property>
<child> <child>

View file

@ -48,6 +48,12 @@ class dvd_menu(devede.interface_manager.interface_manager):
self.add_group("at_startup", ["menu_show_at_startup", "play_first_title_at_startup"], "menu_show_at_startup") self.add_group("at_startup", ["menu_show_at_startup", "play_first_title_at_startup"], "menu_show_at_startup")
self.add_fontbutton("title_font", "Sans 14", self.update_preview)
self.add_fontbutton("entry_font", "Sans 12", self.update_preview)
self.add_filebutton("background_picture", None, self.update_preview)
self.add_filebutton("background_music", None, self.update_preview)
def update_preview(self,b=None): def update_preview(self,b=None):
print("Cambiado algo") print("Cambiado algo")
@ -82,4 +88,5 @@ class dvd_menu(devede.interface_manager.interface_manager):
def on_accept_clicked(self,b): def on_accept_clicked(self,b):
self.store_ui(self.builder) self.store_ui(self.builder)
print (self.entry_font)
self.wmenu.destroy() self.wmenu.destroy()

View file

@ -35,6 +35,8 @@ class interface_manager(GObject.GObject):
self.interface_integer_adjustments = [] self.interface_integer_adjustments = []
self.interface_lists = [] self.interface_lists = []
self.interface_colorbuttons = [] self.interface_colorbuttons = []
self.interface_fontbuttons = []
self.interface_filebuttons = []
def add_group(self,group_name,radiobutton_list,default_value,callback = None): def add_group(self,group_name,radiobutton_list,default_value,callback = None):
""" Adds a group of radiobuttons and creates an internal variable with """ Adds a group of radiobuttons and creates an internal variable with
@ -107,6 +109,22 @@ class interface_manager(GObject.GObject):
exec('self.'+colorbutton_name+' = default_value') exec('self.'+colorbutton_name+' = default_value')
self.interface_colorbuttons.append( (colorbutton_name, callback )) self.interface_colorbuttons.append( (colorbutton_name, callback ))
def add_fontbutton(self,fontbutton_name, default_value, callback = None):
""" Adds an internal variable with the name text_name, linked to an
element with the same name (must be a Gtk.FontButton).
The default value must be a string with the font values """
exec('self.'+fontbutton_name+' = default_value')
self.interface_fontbuttons.append( (fontbutton_name, callback ))
def add_filebutton(self,filebutton_name, default_value, callback = None):
""" Adds an internal variable with the name text_name, linked to an
element with the same name (must be a Gtk.FileButton).
The default value must be a string with the font values """
exec('self.'+filebutton_name+' = default_value')
self.interface_filebuttons.append( (filebutton_name, callback ))
def add_show_hide(self,element_name,to_show,to_hide): def add_show_hide(self,element_name,to_show,to_hide):
""" Adds an element that can be active or inactive, and two lists of elements. """ Adds an element that can be active or inactive, and two lists of elements.
The first one contains elements that will be visible when the element is The first one contains elements that will be visible when the element is
@ -194,13 +212,31 @@ class interface_manager(GObject.GObject):
for element in self.interface_colorbuttons: for element in self.interface_colorbuttons:
value = eval('self.'+element[0]) value = eval('self.'+element[0])
colorbtn = builder.get_object(element[0]) obj = builder.get_object(element[0])
objcolor = Gdk.Color(int(value[0]*65535.0),int(value[1]*65535.0),int(value[2]*65535.0)) objcolor = Gdk.Color(int(value[0]*65535.0),int(value[1]*65535.0),int(value[2]*65535.0))
colorbtn.set_color(objcolor) obj.set_color(objcolor)
colorbtn.set_alpha(int(value[3]*65535.0)) obj.set_alpha(int(value[3]*65535.0))
callback = element[1] callback = element[1]
if (callback != None): if (callback != None):
colorbtn.connect("color_set",callback) obj.connect("color_set",callback)
for element in self.interface_fontbuttons:
value = eval('self.'+element[0])
obj = builder.get_object(element[0])
if (value != None):
obj.set_font(value)
callback = element[1]
if (callback != None):
obj.connect("font_set",callback)
for element in self.interface_filebuttons:
value = eval('self.'+element[0])
obj = builder.get_object(element[0])
if (value != None):
obj.set_filename(value)
callback = element[1]
if (callback != None):
obj.connect("file_set",callback)
self.interface_show_hide_obj = {} self.interface_show_hide_obj = {}
for element in self.interface_show_hide: for element in self.interface_show_hide:
@ -325,12 +361,19 @@ class interface_manager(GObject.GObject):
exec('self.'+element[0]+' = obj.get_value()') exec('self.'+element[0]+' = obj.get_value()')
for element in self.interface_colorbuttons: for element in self.interface_colorbuttons:
obj = builder.get_object(element[0])
colorbtn = builder.get_object(element[0]) objcolor = obj.get_color()
objcolor = colorbtn.get_color() alpha = obj.get_alpha()
alpha = colorbtn.get_alpha()
exec('self.'+element[0]+' = ((float(objcolor.red))/65535.0, (float(objcolor.green))/65535.0, (float(objcolor.blue))/65535.0, (float(alpha))/65535.0)') exec('self.'+element[0]+' = ((float(objcolor.red))/65535.0, (float(objcolor.green))/65535.0, (float(objcolor.blue))/65535.0, (float(alpha))/65535.0)')
for element in self.interface_fontbuttons:
obj = builder.get_object(element[0])
exec('self.'+element[0]+' = obj.get_font()')
for element in self.interface_filebuttons:
obj = builder.get_object(element[0])
exec('self.'+element[0]+' = obj.get_filename()')
for element in self.interface_lists: for element in self.interface_lists:
exec('self.'+element[0]+' = []') exec('self.'+element[0]+' = []')
the_liststore = builder.get_object(element[0]) the_liststore = builder.get_object(element[0])