def __init__(self, parent=None, width=None, height=None, tester=False): """If tester is active, edition cappabilities are available""" if not parent: parent = context.get_mainwindow() size = context.get_mainwindow().get_size() width = int(size[0] / 2.2) height = int(size[1] / 2.0) hprop = size[1] / 1080.0 gtk.Window.__init__(self) self.set_transient_for(parent) self.set_destroy_with_parent(True) self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) self.set_title("Profile Selector") self.set_position(gtk.WIN_POS_CENTER_ALWAYS) self.set_default_size(width, height) self.set_skip_taskbar_hint(True) self.set_keep_above(True) strip = Header(size=size, title="Profile Selector") self.notebook = gtk.Notebook() self.notebook.set_show_tabs(False) box = gtk.VBox() box.pack_start(strip, False, False, int(0)) strip.show() box.pack_start(self.notebook, True, True, 0) self.add(box) self.list = ListProfileBox(self, size, tester) self.profile = None self.track = None tab1 = gtk.Label("Profile Selector") self.append_tab(self.list, tab1) self.show_all()
def __init__(self, parent=None, width = None, height=None, tester=False): """If tester is active, edition cappabilities are available""" if not parent: parent = context.get_mainwindow() size = context.get_mainwindow().get_size() width = int(size[0]/2.2) height = int(size[1]/2.0) hprop = size[1]/1080.0 gtk.Window.__init__(self) self.set_transient_for(parent) self.set_destroy_with_parent(True) self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) self.set_title("Profile Selector") self.set_position(gtk.WIN_POS_CENTER_ALWAYS) self.set_default_size(width,height) self.set_skip_taskbar_hint(True) self.set_keep_above(True) strip = Header(size=size,title="Profile Selector") self.notebook = gtk.Notebook() self.notebook.set_show_tabs(False) box = gtk.VBox() box.pack_start(strip, False, False, int(0)) strip.show() box.pack_start(self.notebook, True, True, 0) self.add(box) self.list=ListProfileBox(self, size, tester) self.profile=None self.track=None tab1 = gtk.Label("Profile Selector") self.append_tab(self.list,tab1) self.show_all()
def __init__(self,package = None, parent = None): parent = context.get_mainwindow() size = parent.get_size() self.par = parent altura = size[1] anchura = size[0] k1 = anchura / 1920.0 k2 = altura / 1080.0 self.wprop = k1 self.hprop = k2 gui = gtk.Builder() gui.add_from_file(get_ui_path('metadata.glade')) dialog = gui.get_object("metadatadialog") dialog.set_property("width-request",int(anchura/2.2)) dialog.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_SPLASHSCREEN) dialog.set_keep_above(True) #NEW HEADER strip = Header(size=size, title="Edit Metadata") dialog.vbox.pack_start(strip, True, True, 0) dialog.vbox.reorder_child(strip,0) strip.show() if parent != None: dialog.set_transient_for(parent.get_toplevel()) table = gui.get_object('infobox') dialog.vbox.set_child_packing(table, True, True, int(self.hprop*25), gtk.PACK_END) title = gui.get_object('title') sl = gui.get_object('slabel') cl = gui.get_object('clabel') talign = gui.get_object('table_align') modification = "bold "+str(int(k2*25))+"px" title.modify_font(pango.FontDescription(modification)) title.hide() talign.set_padding(int(k2*40),int(k2*40),0,0) mod2 = str(int(k1*35))+"px" sl.modify_font(pango.FontDescription(mod2)) cl.modify_font(pango.FontDescription(mod2)) self.fill_metadata(table, package) talign.set_padding(int(self.hprop*25), int(self.hprop*10), int(self.hprop*25), int(self.hprop*25)) dialog.vbox.set_child_packing(dialog.action_area, True, True, int(self.hprop*25), gtk.PACK_END) # Close Metadata dialog and update if dialog.run() == -8: self.update_metadata(table,package) dialog.destroy()
def __init__(self, parent=None): if not parent: parent = context.get_mainwindow() Gtk.AboutDialog.__init__(self) # GObject.GObject.__init__(self) if parent: self.set_transient_for(parent) size=context.get_mainwindow().get_size() k = size[0]/1920.0 self.set_resizable(True) self.set_default_size(int(0.3*size[0]),int(0.4*size[1])) self.set_title(_("About Galicaster {version}").format(version = __version__)) strip = Header(size=size, title=_("About")) self.vbox.pack_start(strip, False, True, 0) self.vbox.reorder_child(strip,0) strip.show() self.set_type_hint(Gdk.WindowTypeHint.TOOLBAR) #self.set_decorated(True) self.set_position(Gtk.WindowPosition.CENTER_ON_PARENT) self.set_program_name(PROGRAM) self.set_version(__version__) self.set_website(WEB) self.set_website_label(_("Galicaster Website")) self.set_authors(AUTHORS) self.set_documenters(DOCS) self.set_artists(ARTISTS) self.set_copyright(COPY) self.set_license(LICENSE) pixbuf = GdkPixbuf.Pixbuf.new_from_file(get_image_path('logo.svg')) pixbuf = pixbuf.scale_simple( int(pixbuf.get_width()*k), int(pixbuf.get_height()*k), GdkPixbuf.InterpType.BILINEAR) #self.set_logo(pixbuf) #ADD TELTEK LOGO box=self.get_content_area() company_logo=Gtk.Image() pixbuf = GdkPixbuf.Pixbuf.new_from_file(get_image_path('teltek.svg')) pixbuf = pixbuf.scale_simple( int(pixbuf.get_width()*k), int(pixbuf.get_height()*k), GdkPixbuf.InterpType.BILINEAR) company_logo.set_from_pixbuf(pixbuf) box.pack_end(company_logo,True,True,0) company_logo.show()
def __init__(self, parent=None): if not parent: parent = context.get_mainwindow() gtk.AboutDialog.__init__(self) if parent: self.set_transient_for(parent) size = context.get_mainwindow().get_size() k = size[0] / 1920.0 self.set_resizable(True) self.set_default_size(int(0.3 * size[0]), int(0.4 * size[1])) self.set_title( _("About Galicaster {version}").format(version=__version__)) strip = Header(size=size, title=_("About")) self.vbox.pack_start(strip, False, True, 0) self.vbox.reorder_child(strip, 0) strip.show() self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) #self.set_decorated(True) self.set_position(gtk.WIN_POS_CENTER_ON_PARENT) self.set_program_name(PROGRAM) self.set_version(__version__) self.set_website(WEB) self.set_website_label(_("Galicaster Website")) self.set_authors(AUTHORS) self.set_documenters(DOCS) self.set_artists(ARTISTS) self.set_copyright(COPY) self.set_license(LICENSE) pixbuf = gtk.gdk.pixbuf_new_from_file(get_image_path('logo.svg')) pixbuf = pixbuf.scale_simple(int(pixbuf.get_width() * k), int(pixbuf.get_height() * k), gtk.gdk.INTERP_BILINEAR) #self.set_logo(pixbuf) #ADD TELTEK LOGO box = self.get_content_area() company_logo = gtk.Image() pixbuf = gtk.gdk.pixbuf_new_from_file(get_image_path('teltek.svg')) pixbuf = pixbuf.scale_simple(int(pixbuf.get_width() * k), int(pixbuf.get_height() * k), gtk.gdk.INTERP_BILINEAR) company_logo.set_from_pixbuf(pixbuf) box.pack_end(company_logo, True, True, 0) company_logo.show()
def __init__(self, package=None, parent=None): parent = context.get_mainwindow() size = parent.get_size() self.par = parent altura = size[1] anchura = size[0] k1 = anchura / 1920.0 k2 = altura / 1080.0 self.wprop = k1 self.hprop = k2 gui = gtk.Builder() gui.add_from_file(get_ui_path('metadata.glade')) dialog = gui.get_object("metadatadialog") dialog.set_property("width-request", int(anchura / 2.2)) dialog.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) dialog.set_keep_above(True) #NEW HEADER strip = Header(size=size, title="Edit Metadata") dialog.vbox.pack_start(strip, True, True, 0) dialog.vbox.reorder_child(strip, 0) if parent != None: dialog.set_transient_for(parent.get_toplevel()) table = gui.get_object('infobox') dialog.vbox.set_child_packing(table, True, True, int(self.hprop * 25), gtk.PACK_END) title = gui.get_object('title') sl = gui.get_object('slabel') cl = gui.get_object('clabel') talign = gui.get_object('table_align') modification = "bold " + str(int(k2 * 25)) + "px" title.modify_font(pango.FontDescription(modification)) title.hide() talign.set_padding(int(k2 * 40), int(k2 * 40), 0, 0) mod2 = str(int(k1 * 35)) + "px" sl.modify_font(pango.FontDescription(mod2)) cl.modify_font(pango.FontDescription(mod2)) self.fill_metadata(table, package) talign.set_padding(int(self.hprop * 25), int(self.hprop * 10), int(self.hprop * 25), int(self.hprop * 25)) dialog.vbox.set_child_packing(dialog.action_area, True, True, int(self.hprop * 25), gtk.PACK_END) dialog.show_all() return_value = dialog.run() if return_value == -8: self.update_metadata(table, package) dialog.destroy()
def __init__(self, parent=None, width=None, height=None): if not parent: parent = context.get_mainwindow() size = context.get_mainwindow().get_size() width = int(size[0] / 2.2) height = int(size[1] / 2.0) Gtk.Window.__init__(self, type=Gtk.WindowType.POPUP) self.set_transient_for(parent) self.set_destroy_with_parent(True) self.set_type_hint(Gdk.WindowTypeHint.TOOLBAR) self.set_title(_("Profile Selector")) self.set_position(Gtk.WindowPosition.CENTER_ALWAYS) self.set_default_size(width, height) self.set_skip_taskbar_hint(True) self.set_modal(True) self.set_keep_above(False) self.parent = parent strip = Header(size=size, title=_("Profile Selector")) self.notebook = Gtk.Notebook() self.notebook.set_show_tabs(False) box = Gtk.VBox() box.pack_start(strip, False, False, int(0)) strip.show() box.pack_start(self.notebook, True, True, 0) self.add(box) self.list = ListProfileBox(self, size) self.profile = None self.track = None tab1 = Gtk.Label(label=_("Profile Selector")) self.append_tab(self.list, tab1) parent.get_style_context().add_class('shaded') self.show_all() self.present()
def __init__(self, parent=None, width = None, height=None): if not parent: parent = context.get_mainwindow() size = context.get_mainwindow().get_size() width = int(size[0]/2.2) height = int(size[1]/2.0) Gtk.Window.__init__(self, type=Gtk.WindowType.POPUP) self.set_transient_for(parent) self.set_destroy_with_parent(True) self.set_type_hint(Gdk.WindowTypeHint.TOOLBAR) self.set_title(_("Profile Selector")) self.set_position(Gtk.WindowPosition.CENTER_ALWAYS) self.set_default_size(width,height) self.set_skip_taskbar_hint(True) self.set_modal(True) self.set_keep_above(False) self.parent = parent strip = Header(size=size,title=_("Profile Selector")) self.notebook = Gtk.Notebook() self.notebook.set_show_tabs(False) box = Gtk.VBox() box.pack_start(strip, False, False, int(0)) strip.show() box.pack_start(self.notebook, True, True, 0) self.add(box) self.list=ListProfileBox(self, size) self.profile=None self.track=None tab1 = Gtk.Label(label=_("Profile Selector")) self.append_tab(self.list,tab1) parent.get_style_context().add_class('shaded') self.show_all() self.present()
def __init__(self, number = None,): if number == None: number = HOW_MANY parent = context.get_mainwindow() size = parent.get_size() altura = size[1] anchura = size[0] k1 = anchura / 1920.0 k2 = altura / 1080.0 gui = gtk.Builder() gui.add_from_file(get_ui_path('next.glade')) dialog = gui.get_object("dialog") table = gui.get_object("infobox") title = gui.get_object("titlelabel") okl = gui.get_object("oklabel") okb = gui.get_object("okbutton") width = int(size[0]/2.5) dialog.set_default_size(width,-1) dialog.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) dialog.set_skip_taskbar_hint(True) dialog.set_modal(True) dialog.set_keep_above(False) strip = Header(size=size, title=_("Next Recordings")) title.hide() dialog.vbox.pack_start(strip, False, True, 0) dialog.vbox.reorder_child(strip,0) strip.show() modification = "bold "+str(int(k2*30))+"px" title.modify_font(pango.FontDescription(modification)) okl.modify_font(pango.FontDescription(modification)) # mediapackages mps=context.get_repository().get_next_mediapackages() row=1 self.dialog=dialog if parent != None: dialog.set_transient_for(parent.get_toplevel()) for mp in mps: t = self.big_label(mp.title, int(k1*30)) t.set_width_chars(int(k1*50)) t.set_line_wrap(True) # allocation = t.get_allocation() t.set_size_request( int(k1* 400) , -1 ) # FIXEME #Hack by http://tadeboro.blogspot.com/2009/05/wrapping-adn-resizing-gtklabel.html rec_time = mp.getLocalDate() if rec_time.date() == datetime.date.today(): upcoming = "Today" elif rec_time.date() == ( datetime.date.today()+datetime.timedelta(1) ): upcoming = "Tomorrow" else: upcoming = mp.getDate().strftime("%d %b %Y") # day_number month_abr year full d = self.big_label(upcoming,int(k1*30)) d.set_width_chars(20) h = self.big_label(rec_time.time().strftime("%H:%M"),int(k1*30)) h.set_width_chars(12) #l = self.big_label("Record Now", int(k1*30)) b = gtk.Button(_("Record Now")) l = b.get_child() tamanho = pango.FontDescription(str(int(k1*25))+"px") l.modify_font(tamanho) b.set_alignment(0.5,0.5) b.set_property("tooltip-text",_("Record Now")) b.connect("button-press-event",self.send_start, mp.identifier) b.set_property("width-request", int (k1*180)) b.set_property("height-request", int (k2*70)) table.attach(t,0,1,row-1,row,gtk.EXPAND|gtk.FILL,False,0,0) table.attach(d,1,2,row-1,row,gtk.EXPAND|gtk.FILL,False,0,0) table.attach(h,2,3,row-1,row,gtk.EXPAND|gtk.FILL,False,0,0) table.attach(b,3,4,row-1,row,gtk.EXPAND|gtk.FILL,False,0,0) t.show() h.show() d.show() b.show() row += 1 if row >= number+1 : break okb.connect("button-press-event",self.destroy) dialog.run() return None
def __init__( self, number=None, ): if number == None: number = HOW_MANY parent = context.get_mainwindow() size = parent.get_size() altura = size[1] anchura = size[0] k1 = anchura / 1920.0 k2 = altura / 1080.0 gui = gtk.Builder() gui.add_from_file(get_ui_path('next.glade')) dialog = gui.get_object("dialog") table = gui.get_object("infobox") title = gui.get_object("titlelabel") okl = gui.get_object("oklabel") okb = gui.get_object("okbutton") width = int(size[0] / 2.5) dialog.set_default_size(width, -1) dialog.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) dialog.set_skip_taskbar_hint(True) dialog.set_modal(True) dialog.set_keep_above(True) strip = Header(size=size, title="Next Recordings") title.hide() dialog.vbox.pack_start(strip, False, True, 0) dialog.vbox.reorder_child(strip, 0) strip.show() modification = "bold " + str(int(k2 * 30)) + "px" title.modify_font(pango.FontDescription(modification)) okl.modify_font(pango.FontDescription(modification)) # mediapackages mps = context.get_repository().get_next_mediapackages() row = 1 self.dialog = dialog if parent != None: dialog.set_transient_for(parent.get_toplevel()) for mp in mps: t = self.big_label(mp.title, int(k1 * 30)) t.set_width_chars(int(k1 * 50)) t.set_line_wrap(True) # allocation = t.get_allocation() t.set_size_request(int(k1 * 400), -1) # FIXEME #Hack by http://tadeboro.blogspot.com/2009/05/wrapping-adn-resizing-gtklabel.html rec_time = mp.getLocalDate() if rec_time.date() == datetime.date.today(): upcoming = "Today" elif rec_time.date() == (datetime.date.today() + datetime.timedelta(1)): upcoming = "Tomorrow" else: upcoming = mp.getDate().strftime("%d %b %Y") # day_number month_abr year full d = self.big_label(upcoming, int(k1 * 30)) d.set_width_chars(20) h = self.big_label(rec_time.time().strftime("%H:%M"), int(k1 * 30)) h.set_width_chars(12) #l = self.big_label("Record Now", int(k1*30)) b = gtk.Button("Record Now") l = b.get_child() tamanho = pango.FontDescription(str(int(k1 * 25)) + "px") l.modify_font(tamanho) b.set_alignment(0.5, 0.5) b.set_property("tooltip-text", "Record Now") b.connect("button-press-event", self.send_start, mp.identifier) b.set_property("width-request", int(k1 * 180)) b.set_property("height-request", int(k2 * 70)) table.attach(t, 0, 1, row - 1, row, gtk.EXPAND | gtk.FILL, False, 0, 0) table.attach(d, 1, 2, row - 1, row, gtk.EXPAND | gtk.FILL, False, 0, 0) table.attach(h, 2, 3, row - 1, row, gtk.EXPAND | gtk.FILL, False, 0, 0) table.attach(b, 3, 4, row - 1, row, gtk.EXPAND | gtk.FILL, False, 0, 0) t.show() h.show() d.show() b.show() row += 1 if row >= number + 1: break okb.connect("button-press-event", self.destroy) dialog.run() return None
def __init__(self, package=None, parent=None, title=_("Edit Metadata"), subtitle=_("Edit Metadata"), ok_label=_("Save"), ko_label=_("Cancel"), empty_series_label=NO_SERIES): """ """ parent = context.get_mainwindow() size = parent.get_size() self.par = parent altura = size[1] anchura = size[0] k1 = anchura / 1920.0 k2 = altura / 1080.0 self.wprop = k1 self.hprop = k2 ocservice = context.get_ocservice() self.series_list = [] if ocservice: self.series_list = context.get_ocservice().series self.empty_series_label = empty_series_label gui = Gtk.Builder() gui.add_from_file(get_ui_path('metadata.glade')) dialog = gui.get_object("metadatadialog") # Set up the dialog's label gui.get_object("title").set_text(subtitle) # Set up the button text gui.get_object("slabel").set_label(ok_label) gui.get_object("clabel").set_label(ko_label) dialog.set_property("width-request", int(anchura / 2.2)) #dialog.set_type_hint(Gdk.WindowTypeHint.TOOLBAR) #dialog.set_modal(True) #dialog.set_keep_above(False) #NEW HEADER strip = Header(size=size, title=title) dialog.vbox.pack_start(strip, True, True, 0) dialog.vbox.reorder_child(strip, 0) if parent != None: # FIXME: The keyboard plugin uses Ubuntu Onboard. # https://bugs.launchpad.net/onboard/+bug/1627819 # There is a bug with this plugin where the "dock to edges" # option does not work with the "force to top" one, causing # Onboard to appear behind when Galicaster is on fullscreen. # THIS affects #321. A better solution should be implemented. from galicaster import plugins if not parent.is_fullscreen or 'galicaster.plugins.keyboard' not in plugins.loaded: dialog.set_transient_for(parent.get_toplevel()) dialog.set_position(Gtk.WindowPosition.CENTER_ALWAYS) dialog_style_context = dialog.get_style_context() window_classes = parent.get_style_context().list_classes() for style_class in window_classes: dialog_style_context.add_class(style_class) table = gui.get_object('infobox') dialog.vbox.set_child_packing(table, True, True, int(self.hprop * 25), Gtk.PackType.END) title = gui.get_object('title') talign = gui.get_object('table_align') title.hide() # Get "blocked" and "mandatory" parameters blocked = set() mandatory = set() try: for term in context.get_conf().get('metadata', 'blocked').split(): try: blocked.add(EQUIV[term]) except KeyError: blocked.add(term) except (KeyError, AttributeError): # 'blocked' was not defined in configuration pass try: for term in context.get_conf().get('metadata', 'mandatory').split(): try: mandatory.add(EQUIV[term]) except KeyError: mandatory.add(term) except (KeyError, AttributeError): # 'mandatory' was not defined in configuration pass self.mandatory = {} ok_button = gui.get_object("savebutton") self.fill_metadata(table, package, ok_button, blocked, mandatory) self.check_mandatory(None, ok_button, check_all=True) talign.set_padding(int(self.hprop * 25), int(self.hprop * 10), int(self.hprop * 25), int(self.hprop * 25)) dialog.vbox.set_child_packing(dialog.action_area, True, True, int(self.hprop * 25), Gtk.PackType.END) dialog.show_all() parent.get_style_context().add_class('shaded') self.return_value = dialog.run() if self.return_value == -8: self.update_metadata(table, package) parent.get_style_context().remove_class('shaded') dialog.destroy()
def create_ui(): """ Creates the No Audio Dialog interface """ parent = context.get_mainwindow().get_toplevel() ui = gtk.Dialog("Warning", parent) #Properties ui.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) ui.set_skip_taskbar_hint(True) ui.set_modal(False) ui.set_accept_focus(False) ui.set_destroy_with_parent(True) size = parent.get_size() ui.set_property('width-request',int(size[0]/3)) if size[0] < 1300: ui.set_property('width-request',int(size[0]/2.3)) wprop = size[0]/1920.0 hprop = size[1]/1080.0 ui.set_position(gtk.WIN_POS_CENTER_ON_PARENT) ui.action_area.set_layout(gtk.BUTTONBOX_SPREAD) #Buttons conf = context.get_conf() keep_closed_feature = conf.get_boolean('audio','keepclosed') or False if keep_closed_feature: keep_button = ui.add_button("Keep Closed",1) keep_button.connect("clicked",activate_hidden, ui) hide_button = ui.add_button("Close",2) hide_button.connect("clicked",lambda l:ui.hide()) for child in ui.action_area.get_children(): child.set_property("width-request", int(wprop*170) ) child.set_property("height-request", int(hprop*70) ) child.set_can_focus(False) #Taskbar with logo strip = Header(size=size, title="Warning") ui.vbox.pack_start(strip, False, True, 0) strip.show() #Labels label1 = gtk.Label("No Audio!!") label2 = gtk.Label("Pick up the microphone\nPress the mute button") desc1 = "bold " + str(int(hprop*64))+"px" desc2 = "bold " + str(int(hprop*24))+"px" font1=pango.FontDescription(desc1) font2=pango.FontDescription(desc2) label1.modify_font(font1) label2.modify_font(font2) label1.set_alignment(0.5,0.5) label2.set_alignment(0.5,0.5) # Warning icon box = gtk.HBox(spacing=0) # between image and text image = gtk.Image() image.set_from_icon_name(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_DIALOG) image.set_pixel_size(int(wprop*80)) box.pack_start(image,True,True,0) box.pack_start(label1,True,True,0) image.show() box.show() #ui.vbox.pack_start(box, True, False, int(hprop*5)) another_box = gtk.VBox(spacing=int(hprop*20)) another_box.pack_start(box, True, False, 0) another_box.pack_start(label2, True, False, 0) another_box.show() ui.action_area.set_property('spacing',int(hprop*20)) ui.vbox.pack_start(another_box, False, False, 10) #ui.vbox.pack_start(box, True, False, 0) #ui.vbox.pack_start(label2, True, False, 0) resize_buttons(ui.action_area,int(wprop*25),True) ui.vbox.set_child_packing(ui.action_area, True, True, int(hprop*25), gtk.PACK_END) label1.show() label2.show() return ui
def create_framed_lines(self, buttons, text, icon, parent): # TODO get commom code with create_ui """Creates frames arround groups of buttons""" dialog = gtk.Dialog(text.get("title","Galicaster"),parent,0) dialog.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) dialog.set_skip_taskbar_hint(True) dialog.set_modal(True) #Taskbar strip = Header(size=self.size, title=text.get("title","Galicaster")) dialog.vbox.pack_start(strip, True, True, 0) strip.show() dialog.set_property('width-request',int(self.size[0]/1.8)) # relative to screen size if parent != None: dialog.set_position(gtk.WIN_POS_CENTER_ON_PARENT) dialog.set_transient_for(parent) dialog.set_destroy_with_parent(True) else: dialog.set_position(gtk.WIN_POS_CENTER_ALWAYS) dialog.set_resizable(False) # SPACING # dialog.vbox.set_property('spacing',int(self.hprop*10)) # vertical #Content and spacing bigbox = gtk.VBox(0) box = gtk.HBox(spacing=int(self.wprop*10)) # between image and text bigbox.pack_start(box, True, True, int(self.hprop*10)) #0) bigbox.set_border_width(int(self.wprop*10)) dialog.vbox.set_child_packing(dialog.action_area, True, True, int(self.hprop*15), gtk.PACK_END) label = gtk.Label(text["main"]) font=self.set_font(str(int(self.hprop*30))+"px") label.set_attributes(font) label.set_alignment(0,0.5) image = gtk.Image() image.set_from_icon_name(icon, gtk.ICON_SIZE_DIALOG) image.set_pixel_size(int(self.wprop*80)) box.pack_start(image,True,True,0) box.pack_start(label,True,True,0) if text.has_key("text"): if text["text"] != None: stext= gtk.Label(text["text"]) font=self.set_font(str(int(self.hprop*20))+"px") stext.set_attributes(font) stext.set_alignment(0.5,0.5) stext.set_line_wrap(True) bigbox.pack_start(stext) # Show dialog.vbox.pack_start(bigbox, True , True ,int(self.hprop*10)) bigbox.show_all() options = gtk.HBox() has_ingest = False for element in buttons: if type(element) is str: if element.count("Ingest"): has_ingest = True if has_ingest: ingest = gtk.Frame("Ingest") ingest.set_label_align(0.5,0.5) ing_align = gtk.Alignment(0.5,0.5,0.6,0.6) ing_align.set_padding(0,0,int(self.wprop*10),int(self.wprop*10)) ing_buttons = gtk.VButtonBox() ing_buttons.set_layout(gtk.BUTTONBOX_SPREAD) ing_align.add(ing_buttons) ingest.add(ing_align) export = gtk.Frame("Export") exp_align = gtk.Alignment(0.5,0.5,0.7,0.7) exp_align.set_padding(0,0,int(self.wprop*10),int(self.wprop*10)) export.set_label_align(0.5,0.5) export_box = gtk.Table(2,2,homogeneous=True) exp_align.add(export_box) export.add(exp_align) cancel_frame = gtk.Frame(" ") cancel_align = gtk.Alignment(0.5,0.5,0.7,0.7) cancel_buttons = gtk.VButtonBox() cancel_align.add(cancel_buttons) cancel_frame.add(cancel_align) cancel_frame.set_shadow_type(gtk.SHADOW_NONE) index_down=0 index_up=0 for element in buttons: if type(element) is str: response = buttons[buttons.index(element)+1] button = gtk.Button(element) #PATCH if element == "Cancel Export to Zip Nightly": button.set_label("Cancel Zip Nightly") if element == "Cancel Side by Side Nightly": button.set_label("Cancel SbS Nightly") button.connect("clicked",self.force_response,response) if element.count("Ingest"): ing_buttons.pack_start(button, True, True, int(self.hprop*20)) elif element ==("Cancel"): cancel_buttons.pack_start(button, True, True,int(self.hprop*20)) else: if element.count("Nightly"): export_box.attach(button,index_down,index_down+1,1,2,gtk.FILL|gtk.EXPAND,0, int(self.wprop*5),int(self.hprop*5)) index_down+=1 else: export_box.attach(button,index_up,index_up+1,0,1,gtk.EXPAND|gtk.FILL,0, int(self.wprop*5),int(self.hprop*5)) index_up+=1 if has_ingest: options.pack_start(ingest, True, False, 0) options.pack_start(export, True, False, 0) options.pack_start(cancel_frame, True, False, 0) dialog.vbox.pack_start(options, False, False , 0) options.show_all() self.resize_buttons(options, 22, True) return dialog
def create_ui(self, buttons, text, icon, parent, modifier = None, another = False): """Creates the dialog window and sets its configuration""" #dialog dialog = gtk.Dialog(text.get("title","Galicaster"), parent, 0, buttons) dialog.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) dialog.set_skip_taskbar_hint(True) dialog.set_modal(True) dialog.set_keep_above(True) #Taskbar strip = Header(size=self.size, title=text.get("title","Galicaster")) dialog.vbox.pack_start(strip, True, True, 0) strip.show() dialog.set_property('width-request',int(self.size[0]/2.5)) # relative to screen size if self.size[0]<1300: dialog.set_property('width-request',int(self.size[0]/2.2)) if another: dialog.set_property('width-request',int(self.size[0]/1.5)) # dialog.vbox.set_property('spacing',int(self.hprop*20)) # vertical # dialog.set_property('border-width',30) # full if parent != None: dialog.set_position(gtk.WIN_POS_CENTER_ON_PARENT) dialog.set_transient_for(parent) dialog.set_destroy_with_parent(True) else: dialog.set_position(gtk.WIN_POS_CENTER_ALWAYS) dialog.set_resizable(False) # Content and spacing bigbox = gtk.VBox(0) box = gtk.HBox(spacing=int(self.wprop*40)) # between image and text bigbox.pack_start(box, True, True, int(self.hprop*10)) #0) bigbox.set_border_width(int(self.wprop*10)) dialog.vbox.set_child_packing(dialog.action_area, True, True, int(self.hprop*25), gtk.PACK_END) # Primary Text and icon label = gtk.Label(text["main"]) font=self.set_font(str(int(self.hprop*30))+"px") label.set_attributes(font) label.set_alignment(0,0.5) image = gtk.Image() image.set_from_icon_name(icon, gtk.ICON_SIZE_DIALOG) image.set_pixel_size(int(self.wprop*80)) box.pack_start(image,True,True,0) box.pack_start(label,True,True,0) # Secondary text if text.has_key("text"): if text["text"] != None: stext= gtk.Label(text["text"]) font=self.set_font(str(int(self.hprop*20))+"px") stext.set_attributes(font) if not modifier: stext.set_alignment(0.5,0.5) stext.set_ellipsize(pango.ELLIPSIZE_END) else: stext.set_alignment(0,0.5) stext.set_line_wrap(True) bigbox.pack_start(stext, True, True, 0) bigbox.set_border_width(int(self.wprop*40)) dialog.vbox.pack_start(bigbox, True , True , 0) bigbox.show_all() # Action Area dialog.action_area.set_layout(gtk.BUTTONBOX_SPREAD) self.resize_buttons(dialog.action_area, 35) # Show image.show() label.show() box.show() #frame.show() #align.show() return dialog
def __init__(self, _logger=None, title="Get My Info", client=None): """ """ self.id = "" self.user_name = "" self.user_email = "" self.series_id = "" self.series_title = "" self.searching = False self.details = None self.__logger = _logger self.__oc_client = client self.series_filter = config.get(CONFIG_SERIES_FILTER, DEFAULT_SERIES_FILTER) regexp = config.get(CONFIG_REGEXP, DEFAULT_REGEXP) self.__logger.info("REGEXP = " + regexp) self.__regexp = re.compile(regexp) parent = context.get_mainwindow() size = parent.get_size() self.par = parent altura = size[1] anchura = size[0] k1 = anchura / 1920.0 k2 = altura / 1080.0 self.wprop = k1 self.hprop = k2 gui = Gtk.Builder() gui.add_from_file(get_ui_path('set_user.glade')) self.dialog = gui.get_object("setuserdialog") self.dialog.set_property("width-request", int(anchura / 2.2)) self.dialog.set_type_hint(Gdk.WindowTypeHint.TOOLBAR) self.dialog.set_modal(True) self.dialog.set_keep_above(False) # user select button self.user_button = Gtk.Button() #NEW HEADER strip = Header(size=size, title=title) self.dialog.vbox.pack_start(strip, True, True, 0) self.dialog.vbox.reorder_child(strip, 0) self.search_field = gui.get_object("inp_search") #search_field.connect('key-press-event', self.on_key_press) self.search_field.connect('key-release-event', self.on_key_release) #self.search_field.connect('search-changed', self.search_changed) #self.search_field.connect('stop-search', self.search_stopped) self.result = gui.get_object("grd_result") if parent != None: # FIXME: The keyboard plugin uses Ubuntu Onboard. # https://bugs.launchpad.net/onboard/+bug/1627819 # There is a bug with this plugin where the "dock to edges" # option does not work with the "force to top" one, causing # Onboard to appear behind when Galicaster is on fullscreen. # THIS affects #321. A better solution should be implemented. from galicaster import plugins if not parent.is_fullscreen or 'galicaster.plugins.keyboard' not in plugins.loaded: self.dialog.set_transient_for(parent.get_toplevel()) self.dialog.set_position(Gtk.WindowPosition.CENTER_ALWAYS) dialog_style_context = self.dialog.get_style_context() window_classes = parent.get_style_context().list_classes() for style_class in window_classes: dialog_style_context.add_class(style_class) self.dialog.show_all() parent.get_style_context().add_class('shaded') self.return_value = self.dialog.run() parent.get_style_context().remove_class('shaded') self.dialog.destroy()
def __init__(self, package = None, series_list = None, parent = None, title=_("Edit Metadata"), subtitle=_("Edit Metadata"), ok_label = _("Save"), ko_label = _("Cancel"), empty_series_label = NO_SERIES): """ """ parent = context.get_mainwindow() size = parent.get_size() self.par = parent altura = size[1] anchura = size[0] k1 = anchura / 1920.0 k2 = altura / 1080.0 self.wprop = k1 self.hprop = k2 self.series_list = series_list self.empty_series_label = empty_series_label gui = gtk.Builder() gui.add_from_file(get_ui_path('metadata.glade')) dialog = gui.get_object("metadatadialog") # Set up the dialog's label gui.get_object("title").set_text(subtitle) # Set up the button text gui.get_object("slabel").set_label(ok_label) gui.get_object("clabel").set_label(ko_label) dialog.set_property("width-request",int(anchura/2.2)) dialog.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) dialog.set_modal(True) dialog.set_keep_above(False) #NEW HEADER strip = Header(size=size, title=title) dialog.vbox.pack_start(strip, True, True, 0) dialog.vbox.reorder_child(strip,0) if parent != None: dialog.set_transient_for(parent.get_toplevel()) table = gui.get_object('infobox') dialog.vbox.set_child_packing(table, True, True, int(self.hprop*25), gtk.PACK_END) title = gui.get_object('title') sl = gui.get_object('slabel') cl = gui.get_object('clabel') talign = gui.get_object('table_align') modification = "bold "+str(int(k2*25))+"px" title.modify_font(pango.FontDescription(modification)) title.hide() talign.set_padding(int(k2*40),int(k2*40),0,0) mod2 = str(int(k1*35))+"px" sl.modify_font(pango.FontDescription(mod2)) cl.modify_font(pango.FontDescription(mod2)) # Get "blocked" and "mandatory" parameters blocked = set() mandatory = set() try: for term in context.get_conf().get('metadata', 'blocked').split(): try: blocked.add(EQUIV[term]) except KeyError: blocked.add(term) except (KeyError, AttributeError): # 'blocked' was not defined in configuration pass try: for term in context.get_conf().get('metadata', 'mandatory').split(): try: mandatory.add(EQUIV[term]) except KeyError: mandatory.add(term) except (KeyError, AttributeError): # 'mandatory' was not defined in configuration pass self.mandatory = {} ok_button = gui.get_object("savebutton") self.fill_metadata(table, package, ok_button, blocked, mandatory) self.check_mandatory(None, ok_button, check_all = True) talign.set_padding(int(self.hprop*25), int(self.hprop*10), int(self.hprop*25), int(self.hprop*25)) dialog.vbox.set_child_packing(dialog.action_area, True, True, int(self.hprop*25), gtk.PACK_END) dialog.show_all() self.return_value = dialog.run() if self.return_value == -8: self.update_metadata(table,package) dialog.destroy()
def configure_ui(self, text, message_type, gui, parent, another=None): """Imports the dialog from the corresponding GLADE and adds some configuration Args: text (Dict{Str:str}): a dictionary with the text to be filled message_type (str): one of the above constants that leads to the appropriate GLADE gui (Gtk.Builder): the builder with the GLADE info parent (Gtk.Window): the Main Window of the application another (Bool): True if dialog_width is small. Otherwise false. Returns: Gtk.Dialog: the dialog with the main body configured """ image = gui.get_object("image") if image: image.set_pixel_size(int(self.wprop*80)) title = 'Galicaster' # For MP Info PopUP series_shown = False for label, content in text.iteritems(): if label == 'title': title = content elif label == 'main': if message_type != INFO: main = gui.get_object("main") if main: main.set_label(text.get('main', '')) else: help_message = "{}\n{}".format(text.get('main', ''), text.get('text', '')) textbuffer = gui.get_object('textbuffer') textbuffer.set_text(help_message) elif isinstance(label, str) and content: text_label = gui.get_object(label) if text_label: text_label.set_label(content) text_label.show() title_label = gui.get_object('{}_label'.format(label)) if title_label: title_label.show() if label.find('series')>=0 and not series_shown: series_frame = gui.get_object('series_frame') series_frame.show() series_shown = True dialog = gui.get_object("dialog") dialog.set_type_hint(Gdk.WindowTypeHint.TOOLBAR) dialog.set_skip_taskbar_hint(True) dialog.set_keep_above(False) #HEADER strip = Header(size=self.size, title=title) dialog.vbox.pack_start(strip, True, True, 0) dialog.vbox.reorder_child(strip, 0) dialog.set_property('width-request', int(self.size[0]/2.5)) # relative to screen size if self.size[0]<1300: dialog.set_property('width-request', int(self.size[0]/2.2)) if another: dialog.set_property('width-request', int(self.size[0]/1.5)) if parent != None: dialog_style_context = dialog.get_style_context() window_classes = parent.get_style_context().list_classes() for style_class in window_classes: dialog_style_context.add_class(style_class) dialog.set_position(Gtk.WindowPosition.CENTER_ALWAYS) else: dialog.set_position(Gtk.WindowPosition.CENTER_ALWAYS) strip.show() return dialog
def create_ui(): """ Creates the No Audio Dialog interface """ parent = context.get_mainwindow().get_toplevel() ui = gtk.Dialog("Warning", parent) # Properties ui.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) ui.set_skip_taskbar_hint(True) ui.set_modal(False) ui.set_accept_focus(False) ui.set_destroy_with_parent(True) size = parent.get_size() ui.set_property("width-request", int(size[0] / 3)) if size[0] < 1300: ui.set_property("width-request", int(size[0] / 2.3)) wprop = size[0] / 1920.0 hprop = size[1] / 1080.0 ui.set_position(gtk.WIN_POS_CENTER_ON_PARENT) ui.action_area.set_layout(gtk.BUTTONBOX_SPREAD) # Buttons conf = context.get_conf() keep_closed_feature = conf.get_boolean("audio", "keepclosed") or False if keep_closed_feature: keep_button = ui.add_button("Keep Closed", 1) keep_button.connect("clicked", activate_hidden, ui) hide_button = ui.add_button("Close", 2) hide_button.connect("clicked", lambda l: ui.hide()) for child in ui.action_area.get_children(): child.set_property("width-request", int(wprop * 170)) child.set_property("height-request", int(hprop * 70)) child.set_can_focus(False) # Taskbar with logo strip = Header(size=size, title="Warning") ui.vbox.pack_start(strip, False, True, 0) strip.show() # Labels label1 = gtk.Label("No Audio!!") label2 = gtk.Label("Pick up the microphone\nPress the mute button") desc1 = "bold " + str(int(hprop * 64)) + "px" desc2 = "bold " + str(int(hprop * 24)) + "px" font1 = pango.FontDescription(desc1) font2 = pango.FontDescription(desc2) label1.modify_font(font1) label2.modify_font(font2) label1.set_alignment(0.5, 0.5) label2.set_alignment(0.5, 0.5) # Warning icon box = gtk.HBox(spacing=0) # between image and text image = gtk.Image() image.set_from_icon_name(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_DIALOG) image.set_pixel_size(int(wprop * 80)) box.pack_start(image, True, True, 0) box.pack_start(label1, True, True, 0) image.show() box.show() # ui.vbox.pack_start(box, True, False, int(hprop*5)) another_box = gtk.VBox(spacing=int(hprop * 20)) another_box.pack_start(box, True, False, 0) another_box.pack_start(label2, True, False, 0) another_box.show() ui.action_area.set_property("spacing", int(hprop * 20)) ui.vbox.pack_start(another_box, False, False, 10) # ui.vbox.pack_start(box, True, False, 0) # ui.vbox.pack_start(label2, True, False, 0) resize_buttons(ui.action_area, int(wprop * 25), True) ui.vbox.set_child_packing(ui.action_area, True, True, int(hprop * 25), gtk.PACK_END) label1.show() label2.show() return ui
def __init__(self, parent=None): if not parent: parent = context.get_mainwindow() gtk.AboutDialog.__init__(self) if parent: self.set_transient_for(parent) size=context.get_mainwindow().get_size() k = size[0]/1920.0 self.set_resizable(True) self.set_default_size(int(0.3*size[0]),int(0.4*size[1])) self.set_title("About Galicaster "+__version__) strip = Header(size=size, title="About") self.vbox.pack_start(strip, False, True, 0) self.vbox.reorder_child(strip,0) strip.show() self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) #self.set_decorated(True) self.set_position(gtk.WIN_POS_CENTER_ON_PARENT) self.set_program_name(PROGRAM) self.set_version(__version__) self.set_website(WEB) self.set_website_label("Galicaster Website") self.set_authors(AUTHORS) self.set_documenters(DOCS) self.set_artists(ARTISTS) self.set_copyright("\n".join((COPY1,COPY2))) self.set_license(LICENSE) pixbuf = gtk.gdk.pixbuf_new_from_file(get_image_path('logo.svg')) pixbuf = pixbuf.scale_simple( int(pixbuf.get_width()*k), int(pixbuf.get_height()*k), gtk.gdk.INTERP_BILINEAR) #self.set_logo(pixbuf) #ADD TELTEK LOGO box=self.get_content_area() company_logo=gtk.Image() pixbuf = gtk.gdk.pixbuf_new_from_file(get_image_path('teltek.svg')) pixbuf = pixbuf.scale_simple( int(pixbuf.get_width()*k), int(pixbuf.get_height()*k), gtk.gdk.INTERP_BILINEAR) company_logo.set_from_pixbuf(pixbuf) box.pack_end(company_logo,True,True,0) company_logo.show() #ADD THANKS #thanks=gtk.Button("Thanks") #buttons=self.get_action_area() #thanks.connect("clicked",self.show_thanks) #buttons.pack_start(thanks) #buttons.reorder_child(thanks,0) #thanks.show() self.run() self.destroy()
def create_framed_lines(self, buttons, text, icon, parent): # TODO get commom code with create_ui """Creates frames arround groups of buttons""" dialog = gtk.Dialog(text.get("title", "Galicaster"), parent, 0) dialog.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) dialog.set_skip_taskbar_hint(True) dialog.set_modal(True) #Taskbar strip = Header(size=self.size, title=text.get("title", "Galicaster")) dialog.vbox.pack_start(strip, True, True, 0) strip.show() dialog.set_property('width-request', int(self.size[0] / 1.8)) # relative to screen size if parent != None: dialog.set_position(gtk.WIN_POS_CENTER_ON_PARENT) dialog.set_transient_for(parent) dialog.set_destroy_with_parent(True) else: dialog.set_position(gtk.WIN_POS_CENTER_ALWAYS) dialog.set_resizable(False) # SPACING # dialog.vbox.set_property('spacing',int(self.hprop*10)) # vertical #Content and spacing bigbox = gtk.VBox(0) box = gtk.HBox(spacing=int(self.wprop * 10)) # between image and text bigbox.pack_start(box, True, True, int(self.hprop * 10)) #0) bigbox.set_border_width(int(self.wprop * 10)) dialog.vbox.set_child_packing(dialog.action_area, True, True, int(self.hprop * 15), gtk.PACK_END) label = gtk.Label(text["main"]) font = self.set_font(str(int(self.hprop * 30)) + "px") label.set_attributes(font) label.set_alignment(0, 0.5) image = gtk.Image() image.set_from_icon_name(icon, gtk.ICON_SIZE_DIALOG) image.set_pixel_size(int(self.wprop * 80)) box.pack_start(image, True, True, 0) box.pack_start(label, True, True, 0) if text.has_key("text"): if text["text"] != None: stext = gtk.Label(text["text"]) font = self.set_font(str(int(self.hprop * 20)) + "px") stext.set_attributes(font) stext.set_alignment(0.5, 0.5) stext.set_line_wrap(True) bigbox.pack_start(stext) # Show dialog.vbox.pack_start(bigbox, True, True, int(self.hprop * 10)) bigbox.show_all() options = gtk.HBox() has_ingest = False for element in buttons: if type(element) is str: if "Ingest" in element: has_ingest = True break has_export = False for element in buttons: if type(element) is str: if "Export" in element or "Side" in element: has_export = True break if has_ingest: ingest = gtk.Frame(_("Ingest")) ingest.set_label_align(0.5, 0.5) ing_align = gtk.Alignment(0.5, 0.5, 0.6, 0.6) ing_align.set_padding(0, 0, int(self.wprop * 10), int(self.wprop * 10)) ing_buttons = gtk.VButtonBox() ing_buttons.set_layout(gtk.BUTTONBOX_SPREAD) ing_align.add(ing_buttons) ingest.add(ing_align) if has_export: export = gtk.Frame(_("Export")) exp_align = gtk.Alignment(0.5, 0.5, 0.7, 0.7) exp_align.set_padding(0, 0, int(self.wprop * 10), int(self.wprop * 10)) export.set_label_align(0.5, 0.5) export_box = gtk.Table(2, 2, homogeneous=True) exp_align.add(export_box) export.add(exp_align) cancel_frame = gtk.Frame(" ") cancel_align = gtk.Alignment(0.5, 0.5, 0.7, 0.7) cancel_buttons = gtk.VButtonBox() cancel_align.add(cancel_buttons) cancel_frame.add(cancel_align) cancel_frame.set_shadow_type(gtk.SHADOW_NONE) index_down = 0 index_up = 0 for element in buttons: if type(element) is str: response = buttons[buttons.index(element) + 1] button = gtk.Button(OPERATION_NAMES[element]) #PATCH if element == "Cancel Export to Zip Nightly": button.set_label(OPERATION_NAMES[element]) if element == "Cancel Side by Side Nightly": button.set_label(OPERATION_NAMES[element]) button.connect("clicked", self.force_response, response) if "Ingest" in element: ing_buttons.pack_start(button, True, True, int(self.hprop * 20)) elif element == ("Cancel"): cancel_buttons.pack_start(button, True, True, int(self.hprop * 20)) elif "Export" in element or "Side" in element: if "Nightly" in element: export_box.attach(button, index_down, index_down + 1, 1, 2, gtk.FILL | gtk.EXPAND, 0, int(self.wprop * 5), int(self.hprop * 5)) index_down += 1 else: export_box.attach(button, index_up, index_up + 1, 0, 1, gtk.EXPAND | gtk.FILL, 0, int(self.wprop * 5), int(self.hprop * 5)) index_up += 1 if has_ingest: options.pack_start(ingest, True, False, 0) if has_export: options.pack_start(export, True, False, 0) options.pack_start(cancel_frame, True, False, 0) dialog.vbox.pack_start(options, False, False, 0) options.show_all() self.resize_buttons(options, 22, True) return dialog
def create_ui(self, buttons, text, icon, parent, modifier=None, another=False): """Creates the dialog window and sets its configuration""" #dialog dialog = gtk.Dialog(text.get("title", "Galicaster"), parent, 0, buttons) dialog.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR) dialog.set_skip_taskbar_hint(True) dialog.set_modal(True) dialog.set_keep_above(False) #Taskbar strip = Header(size=self.size, title=text.get("title", "Galicaster")) dialog.vbox.pack_start(strip, True, True, 0) strip.show() dialog.set_property('width-request', int(self.size[0] / 2.5)) # relative to screen size if self.size[0] < 1300: dialog.set_property('width-request', int(self.size[0] / 2.2)) if another: dialog.set_property('width-request', int(self.size[0] / 1.5)) # dialog.vbox.set_property('spacing',int(self.hprop*20)) # vertical # dialog.set_property('border-width',30) # full if parent != None: dialog.set_position(gtk.WIN_POS_CENTER_ON_PARENT) dialog.set_transient_for(parent) dialog.set_destroy_with_parent(True) else: dialog.set_position(gtk.WIN_POS_CENTER_ALWAYS) dialog.set_resizable(False) # Content and spacing bigbox = gtk.VBox(0) box = gtk.HBox(spacing=int(self.wprop * 40)) # between image and text bigbox.pack_start(box, True, True, int(self.hprop * 10)) #0) bigbox.set_border_width(int(self.wprop * 10)) dialog.vbox.set_child_packing(dialog.action_area, True, True, int(self.hprop * 25), gtk.PACK_END) # Primary Text and icon label = gtk.Label(text["main"]) font = self.set_font(str(int(self.hprop * 30)) + "px") label.set_attributes(font) label.set_alignment(0, 0.5) image = gtk.Image() image.set_from_icon_name(icon, gtk.ICON_SIZE_DIALOG) image.set_pixel_size(int(self.wprop * 80)) box.pack_start(image, True, True, 0) box.pack_start(label, True, True, 0) # Secondary text if text.has_key("text"): if text["text"] != None: stext = gtk.Label(text["text"]) font = self.set_font(str(int(self.hprop * 20)) + "px") stext.set_attributes(font) if not modifier: stext.set_alignment(0.5, 0.5) stext.set_ellipsize(pango.ELLIPSIZE_END) else: stext.set_alignment(0, 0.5) stext.set_line_wrap(True) bigbox.pack_start(stext, True, True, 0) bigbox.set_border_width(int(self.wprop * 40)) dialog.vbox.pack_start(bigbox, True, True, 0) bigbox.show_all() # Action Area dialog.action_area.set_layout(gtk.BUTTONBOX_SPREAD) self.resize_buttons(dialog.action_area, 35) # Show image.show() label.show() box.show() #frame.show() #align.show() return dialog
def configure_ui(self, text, message_type, gui, parent, another=None): """Imports the dialog from the corresponding GLADE and adds some configuration Args: text (Dict{Str:str}): a dictionary with the text to be filled message_type (str): one of the above constants that leads to the appropriate GLADE gui (Gtk.Builder): the builder with the GLADE info parent (Gtk.Window): the Main Window of the application another (Bool): True if dialog_width is small. Otherwise false. Returns: Gtk.Dialog: the dialog with the main body configured """ image = gui.get_object("image") if image: image.set_pixel_size(int(self.wprop * 80)) title = 'Galicaster' # For MP Info PopUP series_shown = False for label, content in text.iteritems(): if label == 'title': title = content elif label == 'main': if message_type != INFO: main = gui.get_object("main") if main: main.set_label(text.get('main', '')) else: help_message = "{}\n{}".format(text.get('main', ''), text.get('text', '')) textbuffer = gui.get_object('textbuffer') textbuffer.set_text(help_message) elif isinstance(label, str) and content: text_label = gui.get_object(label) if text_label: text_label.set_label(content) text_label.show() title_label = gui.get_object('{}_label'.format(label)) if title_label: title_label.show() if label.find('series') >= 0 and not series_shown: series_frame = gui.get_object('series_frame') series_frame.show() series_shown = True dialog = gui.get_object("dialog") dialog.set_type_hint(Gdk.WindowTypeHint.TOOLBAR) dialog.set_skip_taskbar_hint(True) dialog.set_keep_above(False) #HEADER strip = Header(size=self.size, title=title) dialog.vbox.pack_start(strip, True, True, 0) dialog.vbox.reorder_child(strip, 0) dialog.set_property('width-request', int(self.size[0] / 2.5)) # relative to screen size if self.size[0] < 1300: dialog.set_property('width-request', int(self.size[0] / 2.2)) if another: dialog.set_property('width-request', int(self.size[0] / 1.5)) if parent != None: dialog_style_context = dialog.get_style_context() window_classes = parent.get_style_context().list_classes() for style_class in window_classes: dialog_style_context.add_class(style_class) dialog.set_position(Gtk.WindowPosition.CENTER_ALWAYS) else: dialog.set_position(Gtk.WindowPosition.CENTER_ALWAYS) strip.show() return dialog
def create_framed_lines(self, buttons, text, icon, parent): # TODO get commom code with create_ui """Creates frames arround groups of buttons""" dialog = Gtk.Dialog(text.get("title","Galicaster"),parent,0) dialog.set_type_hint(Gdk.WindowTypeHint.TOOLBAR) dialog.set_skip_taskbar_hint(True) dialog.set_modal(True) #Taskbar strip = Header(size=self.size, title=text.get("title","Galicaster")) dialog.vbox.pack_start(strip, True, True, 0) strip.show() dialog.set_property('width-request',int(self.size[0]/1.8)) # relative to screen size if parent != None: dialog_style_context = dialog.get_style_context() window_classes = parent.get_style_context().list_classes() for style_class in window_classes: dialog_style_context.add_class(style_class) dialog.set_position(Gtk.WindowPosition.CENTER_ON_PARENT) dialog.set_transient_for(parent) dialog.set_destroy_with_parent(True) else: dialog.set_position(Gtk.WindowPosition.CENTER_ALWAYS) dialog.set_resizable(False) # SPACING # dialog.vbox.set_property('spacing',int(self.hprop*10)) # vertical #Content and spacing bigbox = Gtk.VBox(0) box = Gtk.HBox(spacing=int(self.wprop*10)) # between image and text bigbox.pack_start(box, True, True, int(self.hprop*10)) #0) bigbox.set_border_width(int(self.wprop*10)) dialog.vbox.set_child_packing(dialog.action_area, True, True, int(self.hprop*15), Gtk.PackType.END) label = Gtk.Label(label=text["main"]) label.set_alignment(0,0.5) image = Gtk.Image() image.set_from_icon_name(icon, Gtk.IconSize.DIALOG) image.set_pixel_size(int(self.wprop*80)) box.pack_start(image,True,True,0) box.pack_start(label,True,True,0) if text.has_key("text"): if text["text"] != None: stext= Gtk.Label(label=text["text"]) stext.set_alignment(0.5,0.5) stext.set_line_wrap(True) bigbox.pack_start(stext, True, True, 0) # Show dialog.vbox.pack_start(bigbox, True , True ,int(self.hprop*10)) bigbox.show_all() options = Gtk.HBox() has_ingest = False for element in buttons: if type(element) is str: if "Ingest" in element: has_ingest = True break has_export = False for element in buttons: if type(element) is str: if "Export" in element or "Side" in element: has_export = True break if has_ingest: ingest = Gtk.Frame.new(_("Ingest")) ingest.set_label_align(0.5,0.5) ing_align = Gtk.Alignment.new(0.5,0.5,0.6,0.6) ing_align.set_padding(0,0,int(self.wprop*10),int(self.wprop*10)) ing_buttons = Gtk.VButtonBox() ing_buttons.set_layout(Gtk.ButtonBoxStyle.SPREAD) ing_align.add(ing_buttons) ingest.add(ing_align) if has_export: export = Gtk.Frame.new(_("Export")) exp_align = Gtk.Alignment.new(0.5,0.5,0.7,0.7) exp_align.set_padding(0,0,int(self.wprop*10),int(self.wprop*10)) export.set_label_align(0.5,0.5) export_box = Gtk.Table(2,2,homogeneous=True) exp_align.add(export_box) export.add(exp_align) cancel_frame = Gtk.Frame.new(" ") cancel_align = Gtk.Alignment.new(0.5,0.5,0.7,0.7) cancel_buttons = Gtk.VButtonBox() cancel_align.add(cancel_buttons) cancel_frame.add(cancel_align) cancel_frame.set_shadow_type(Gtk.ShadowType.NONE) index_down=0 index_up=0 for element in buttons: if type(element) is str: response = buttons[buttons.index(element)+1] button = Gtk.Button(OPERATION_NAMES[element]) #PATCH if element == "Cancel Export to Zip Nightly": button.set_label(OPERATION_NAMES[element]) if element == "Cancel Side by Side Nightly": button.set_label(OPERATION_NAMES[element]) button.connect("clicked",self.force_response,response) if "Ingest" in element: ing_buttons.pack_start(button, True, True, int(self.hprop*20)) elif element ==("Cancel"): cancel_buttons.pack_start(button, True, True,int(self.hprop*20)) elif "Export" in element or "Side" in element: if "Nightly" in element: export_box.attach(button,index_down,index_down+1,1,2,Gtk.AttachOptions.FILL|Gtk.AttachOptions.EXPAND,0, int(self.wprop*5),int(self.hprop*5)) index_down+=1 else: export_box.attach(button,index_up,index_up+1,0,1,Gtk.AttachOptions.EXPAND|Gtk.AttachOptions.FILL,0, int(self.wprop*5),int(self.hprop*5)) index_up+=1 if has_ingest: options.pack_start(ingest, True, False, 0) if has_export: options.pack_start(export, True, False, 0) options.pack_start(cancel_frame, True, False, 0) dialog.vbox.pack_start(options, False, False , 0) options.show_all() self.resize_buttons(options, 22, True) return dialog