def load(self, node, tar): self.index = int(node.getAttribute("cursor")) self.end_index = self.index tmp = node.getAttribute("ul-coords") self.ul = utils.parse_coords(tmp) tmp = node.getAttribute("lr-coords") self.lr = utils.parse_coords(tmp) self.width = self.lr[0] - self.ul[0] self.height = self.lr[1] - self.ul[1] self.identity = int(node.getAttribute("identity")) try: tmp = node.getAttribute("background-color") self.background_color = gtk.gdk.color_parse(tmp) tmp = node.getAttribute("foreground-color") self.foreground_color = gtk.gdk.color_parse(tmp) except ValueError: pass self.am_selected = node.hasAttribute("current_root") self.am_primary = node.hasAttribute("primary_root") if node.getAttribute("edge") == "True": self.edge = True else: self.edge = False for n in node.childNodes: if n.nodeType == n.TEXT_NODE: self.text = n.data elif n.nodeName == "Extended": self.extended_buffer.load(n) elif n.nodeName == "attribute": attrType = n.getAttribute("type") start = int(n.getAttribute("start")) end = int(n.getAttribute("end")) if attrType == "bold": attr = pango.AttrWeight(pango.WEIGHT_BOLD, start, end) elif attrType == "italics": attr = pango.AttrStyle(pango.STYLE_ITALIC, start, end) elif attrType == "underline": attr = pango.AttrUnderline(pango.UNDERLINE_SINGLE, start, end) elif attrType == "font": font_name = str(n.getAttribute("value")) pango_font = pango.FontDescription(font_name) attr = pango.AttrFontDesc(pango_font, start, end) self.attributes.change(attr) else: print "Unknown: " + n.nodeName self.rebuild_byte_table() self.recalc_edges()
def __init__(self, parent=None, size=(1920,1080)): self.superior = parent wprop = size[0]/1920.0 hprop = size[1]/1080.0 self.wprop = wprop self.hprop = hprop gtk.HBox.__init__(self, False, int(wprop*5)) self.set_border_width(int(wprop*20)) self.vbox = gtk.VBox(False,0) self.buttons = gtk.VButtonBox() self.buttons.set_layout(gtk.BUTTONBOX_START) self.buttons.set_spacing(int(wprop*5)) scrolled = gtk.ScrolledWindow() scrolled.set_shadow_type(gtk.SHADOW_ETCHED_IN) self.list,self.view = self.prepare_view() self.view.get_selection().connect("changed",self.append_info) scrolled.add(self.view) sidebox = gtk.VBox(False,0) frame = gtk.Frame() label= gtk.Label("Profile Tracks") alist = pango.AttrList() font = pango.FontDescription("bold "+str(int(self.hprop*15))) attr=pango.AttrFontDesc(font,0,-1) alist.insert(attr) label.set_attributes(alist) frame.set_label_widget(label) frame.set_label_align(0.5,0.5) frame.set_shadow_type(gtk.SHADOW_ETCHED_IN) align=gtk.Alignment(1,0.5,0.95,0.9) self.sidetable = gtk.Table(homogeneous=True) self.sidetable.set_size_request(int(wprop*300),-1) align.add(self.sidetable) frame.add(align) self.vbox.pack_end(scrolled, True, True, 0) self.pack_start(self.vbox, True, True, 0) sidebox.pack_start(self.buttons, False, False, int(hprop*10)) sidebox.pack_start(frame, False, False, int(hprop*15)) self.pack_start(sidebox,False,False,int(wprop*15))
def resize(self): """Adapts GUI elements to the screen size""" buttonlist = [ "playbutton", "editbutton", "ingestbutton", "deletebutton" ] size = context.get_mainwindow().get_size() wprop = size[0] / 1920.0 hprop = size[1] / 1080.0 vbar = self.scroll.get_vscrollbar() vbar.set_size_request(int(wprop * 6), -1) self.renders[0].set_property('height', int(hprop * 40)) self.renders[0].set_property('width-chars', int(wprop * 56)) #name self.renders[1].set_property('width-chars', int(wprop * 14)) #size self.renders[2].set_property('width-chars', int(wprop * 10)) #duration self.renders[3].set_property('width-chars', int(wprop * 23)) #date self.renders[5].set_property('width-chars', int(wprop * 27)) #presenter self.renders[6].set_property('width-chars', int(wprop * 33.5)) #series #self.renders[7].set_property('width-chars',int(wprop*12.5))#statusess self.renders[8].set_property('width-chars', int(wprop * 14)) #operations less fsize = 12 * hprop for cell in self.renders: font = pango.FontDescription(str(fsize)) cell.set_property('font-desc', font) for column in self.vista.get_columns(): first = column.get_widget() if not first: label = gtk.Label(" " + column.get_title()) else: label = column.get_widget() attr = pango.AttrList() attr.insert(pango.AttrFontDesc(font, 0, -1)) label.set_attributes(attr) if not first: label.show() column.set_widget(label) column.queue_resize() self.do_resize(buttonlist) return True
def append_text(self, text, font=None, color=None, underline=False): if text == None: text = u"" startpos = self.text_length self.text_chunks.append(text) endpos = self.text_length = self.text_length + len(text) if font is not None: attr = pango.AttrFontDesc(font.description, startpos, endpos) self.attributes.append(attr) if underline: self.underlines.append((startpos, endpos)) if color: def convert(value): return int(round(value * 65535)) attr = pango.AttrForeground(convert(color[0]), convert(color[1]), convert(color[2]), startpos, endpos) self.attributes.append(attr) self.text_set = False
def __init__(self): gtk.Table.__init__(self) self.resize(4,110) self.set_homogeneous(True) self.mute = False self.vumeter=gtk.ProgressBar() #numbers minimum = gtk.Label("-100") maximum = gtk.Label("0dB") mark = gtk.Label("-10") sixty = gtk.Label("-60") thirty = gtk.Label("-30") labels= [minimum,sixty,thirty,mark,maximum] for label in labels: label.set_justify(gtk.JUSTIFY_CENTER) alist = pango.AttrList() font=pango.FontDescription("bold") attr=pango.AttrFontDesc(font,0,-1) alist.insert(attr) label.set_attributes(alist) #marks mark100=gtk.VSeparator() mark60=gtk.VSeparator() mark30=gtk.VSeparator() mark10=gtk.VSeparator() mark0=gtk.VSeparator() # attach to widget self.attach(mark100,5,6,1,2,gtk.EXPAND|gtk.FILL,gtk.EXPAND|gtk.FILL,0,0)#-100 self.attach(mark60,45,46,1,2,gtk.EXPAND|gtk.FILL,gtk.EXPAND|gtk.FILL,0,0)#-60 self.attach(mark30,75,76,1,2,gtk.EXPAND|gtk.FILL,gtk.EXPAND|gtk.FILL,0,0)#-30 self.attach(mark10,95,96,1,2,gtk.EXPAND|gtk.FILL,gtk.EXPAND|gtk.FILL,0,0)#-10 self.attach(mark0,105,106,1,2,gtk.EXPAND|gtk.FILL,gtk.EXPAND|gtk.FILL,0,0)#0 self.attach(minimum,0,10,0,1,gtk.EXPAND|gtk.FILL,gtk.EXPAND|gtk.FILL,0,0)#-100 self.attach(sixty,40,50,0,1,gtk.EXPAND|gtk.FILL,gtk.EXPAND|gtk.FILL,0,0)#-60 self.attach(thirty,70,80,0,1,gtk.EXPAND|gtk.FILL,gtk.EXPAND|gtk.FILL,0,0)#-30 self.attach(mark,90,100,0,1,gtk.EXPAND|gtk.FILL,gtk.EXPAND|gtk.FILL,0,0)#-10 self.attach(maximum,100,110,0,1,gtk.EXPAND|gtk.FILL,gtk.EXPAND|gtk.FILL,0,0)#0 self.attach(self.vumeter,5,105,2,4,gtk.EXPAND|gtk.FILL,gtk.EXPAND|gtk.FILL,0,0)
def set_font(self, font_name): if not self.editing: return start, end = minmax(self.index, self.end_index) pango_font = pango.FontDescription(font_name) attr = pango.AttrFontDesc(pango_font, start, end) if start == end: self.undo.add_undo( UndoManager.UndoAction(self, UNDO_ADD_ATTR, self.undo_attr_cb, attr)) self.current_attrs.append(attr) else: old_attrs = self.attributes.copy() self.attributes.change(attr) self.undo.add_undo( UndoManager.UndoAction(self, UNDO_ADD_ATTR_SELECTION, self.undo_attr_cb, old_attrs, self.attributes.copy())) self.recalc_edges()
def scheduler_launch_thread(self): """Thread handling the messages scheduler notification area.""" # Based on: http://pygstdocs.berlios.de/pygst-tutorial/seeking.html thread_id = self.scheduler_thread_id event_type = self.gui.get_object("nextlabel") title = self.gui.get_object("titlelabel") status = self.gui.get_object("eventlabel") # Status panel # status_disk = self.gui.get_object("status1") # status_hours = self.gui.get_object("status2") # status_mh = self.gui.get_object("status3") self.check_schedule() parpadeo = True changed = False signalized = False if self.font == None: anchura = self.get_toplevel().get_screen().get_width() if anchura not in [1024, 1280, 1920]: anchura = 1920 k1 = anchura / 1920.0 changing_font = pango.FontDescription("bold " + str(k1 * 42)) self.font = changing_font bold = pango.AttrWeight(700, 0, -1) red = pango.AttrForeground(65535, 0, 0, 0, -1) black = pango.AttrForeground(17753, 17753, 17753, 0, -1) font = pango.AttrFontDesc(self.font, 0, -1) attr_red = pango.AttrList() attr_black = pango.AttrList() attr_red.insert(red) attr_red.insert(font) attr_red.insert(bold) attr_black.insert(black) attr_black.insert(font) attr_black.insert(bold) status.set_attributes(attr_black) one_second = datetime.timedelta(seconds=1) while thread_id == self.scheduler_thread_id: if self.font != changing_font: attr_black.insert(pango.AttrFontDesc(self.font, 0, -1)) attr_red.insert(pango.AttrFontDesc(self.font, 0, -1)) changing_font = self.font if self.current: start = self.current.getLocalDate() duration = self.current.getDuration() / 1000 end = start + datetime.timedelta(seconds=duration) dif = end - datetime.datetime.now() #dif2 = datetime.datetime.now() - start if dif < datetime.timedelta(0, 0): # Checking for malfuntions self.current = None self.current_mediapackage = None status.set_text("") else: status.set_text("Stopping on " + self.time_readable(dif + one_second)) if event_type.get_text() != CURRENT_TEXT: event_type.set_text(CURRENT_TEXT) if title.get_text() != self.current.title: title.set_text(self.current.title) if dif < datetime.timedelta(0, TIME_RED_STOP): if not changed: status.set_attributes(attr_red) changed = True elif changed: status.set_attributes(attr_black) changed = False if dif < datetime.timedelta(0, TIME_BLINK_STOP): parpadeo = False if parpadeo else True # Timer(diff,self.check_schedule) elif self.next: start = self.next.getLocalDate() dif = start - datetime.datetime.now() if event_type.get_text != NEXT_TEXT: event_type.set_text(NEXT_TEXT) if title.get_text() != self.next.title: title.set_text(self.next.title) status.set_text("Starting on " + self.time_readable(dif)) if dif < datetime.timedelta(0, TIME_RED_START): if not changed: status.set_attributes(attr_red) changed = True elif changed: status.set_attributes(attr_black) changed = False if dif < datetime.timedelta(0, TIME_UPCOMING): if not signalized: self.dispatcher.emit("upcoming-recording") signalized = True elif signalized: signalized = True if dif < datetime.timedelta(0, TIME_BLINK_START): if parpadeo: status.set_text("") parpadeo = False else: parpadeo = True # Timer(60,self.check_schedule) else: # Not current or pending recordings if event_type.get_text(): event_type.set_text("") if status.get_text(): status.set_text("") if title.get_text() != "No upcoming events": title.set_text("No upcoming events") time.sleep(0.5) self.check_schedule() return True
def __init__(self): gtk.Window.__init__(self) self.__gobject_init__() self.set_icon(getPixbuf("smart")) self.set_title(_("Icon Legend")) font = self.style.font_desc.copy() font.set_size(font.get_size() - pango.SCALE) boldfont = font.copy() boldfont.set_weight(pango.WEIGHT_BOLD) self._vbox = gtk.VBox() self._vbox.set_border_width(10) self._vbox.set_spacing(10) self._vbox.show() self.add(self._vbox) attrslabel = pango.AttrList() attrslabel.insert(pango.AttrFontDesc(boldfont, 0, -1)) label = gtk.Label( _("The following icons are used to indicate\nthe current status of a package:" )) label.set_attributes(attrslabel) label.show() self._vbox.add(label) table = gtk.Table() table.set_row_spacings(2) table.set_col_spacings(5) table.set_border_width(5) table.show() self._vbox.add(table) row = 0 for icon, legend in [ (getPixbuf("package-install"), _("Marked for installation")), (getPixbuf("package-reinstall"), _("Marked for re-installation")), (getPixbuf("package-upgrade"), _("Marked for upgrade")), (getPixbuf("package-downgrade"), _("Marked for downgrade")), (getPixbuf("package-remove"), _("Marked for removal")), (getPixbuf("package-available"), _("Not installed")), (getPixbuf("package-new"), _("Not installed (new)")), (getPixbuf("package-available-locked"), _("Not installed (locked)")), (getPixbuf("package-installed"), _("Installed")), (getPixbuf("package-installed-outdated"), _("Installed (upgradable)")), (getPixbuf("package-installed-locked"), _("Installed (locked)")), (getPixbuf("package-broken"), _("Broken")), ]: image = gtk.Image() image.set_from_pixbuf(icon) image.show() table.attach(image, 0, 1, row, row + 1, gtk.FILL, gtk.FILL) label = gtk.Label(legend) label.set_alignment(0.0, 0.5) label.show() table.attach(label, 1, 2, row, row + 1, gtk.FILL, gtk.FILL) row += 1 self._buttonbox = gtk.HButtonBox() self._buttonbox.set_spacing(10) self._buttonbox.set_layout(gtk.BUTTONBOX_END) self._buttonbox.show() self._vbox.pack_start(self._buttonbox, expand=False, fill=False) self._closebutton = gtk.Button(stock="gtk-close") self._closebutton.show() self._closebutton.connect("clicked", lambda x: self.hide()) self._buttonbox.pack_start(self._closebutton)
def _set_font(self, value, attrlist): attrlist.change(pango.AttrFontDesc(pango.FontDescription(value), 0, -1))
def __init__(self): gtk.Alignment.__init__(self) self.__gobject_init__() self._pkg = None self._changeset = None font = self.style.font_desc.copy() font.set_size(font.get_size() - pango.SCALE) boldfont = font.copy() boldfont.set_weight(pango.WEIGHT_BOLD) self._notebook = gtk.Notebook() self._notebook.show() self.add(self._notebook) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) #sw.set_border_width(5) sw.show() table = gtk.Table() table.set_row_spacings(2) table.set_col_spacings(5) table.set_border_width(5) table.show() sw.add_with_viewport(table) self._info = type("Info", (), {})() attrsleft = pango.AttrList() attrsleft.insert(pango.AttrFontDesc(font, 0, -1)) attrsright = pango.AttrList() attrsright.insert(pango.AttrFontDesc(boldfont, 0, -1)) row = 0 for attr, text in [("status", _("Status:")), ("priority", _("Priority:")), ("group", _("Group:")), ("installedsize", _("Installed Size:")), ("channels", _("Channels:"))]: label = gtk.Label(text) label.set_attributes(attrsleft) if attr == "channels": label.set_alignment(1.0, 0.0) else: label.set_alignment(1.0, 0.5) label.show() table.attach(label, 0, 1, row, row + 1, gtk.FILL, gtk.FILL) setattr(self._info, attr + "_label", label) label = gtk.Label() label.set_attributes(attrsright) label.set_alignment(0.0, 0.5) label.show() table.attach(label, 1, 2, row, row + 1, gtk.FILL, gtk.FILL) setattr(self._info, attr, label) row += 1 label = gtk.Label(_("General")) self._notebook.append_page(sw, label) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS) sw.set_shadow_type(gtk.SHADOW_IN) sw.set_border_width(5) sw.show() self._descrtv = gtk.TextView() self._descrtv.set_editable(False) self._descrtv.set_cursor_visible(False) self._descrtv.set_left_margin(5) self._descrtv.set_right_margin(5) self._descrtv.show() buffer = self._descrtv.get_buffer() buffer.create_tag("description", font_desc=font) buffer.create_tag("summary", font_desc=boldfont) sw.add(self._descrtv) label = gtk.Label(_("Description")) self._notebook.append_page(sw, label) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS) sw.set_shadow_type(gtk.SHADOW_IN) sw.set_border_width(5) sw.show() self._conttv = gtk.TextView() self._conttv.set_editable(False) self._conttv.set_cursor_visible(False) self._conttv.set_left_margin(5) self._conttv.set_right_margin(5) self._conttv.show() buffer = self._conttv.get_buffer() buffer.create_tag("content", font_desc=font) sw.add(self._conttv) label = gtk.Label(_("Content")) self._notebook.append_page(sw, label) self._relations = GtkPackageView() self._relations.set_border_width(5) self._relations.getTreeView().set_headers_visible(False) self._relations.show() label = gtk.Label(_("Relations")) self._notebook.append_page(self._relations, label) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) sw.set_border_width(5) sw.set_shadow_type(gtk.SHADOW_IN) sw.show() model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING) self._urls = gtk.TreeView(model) self._urls.set_headers_visible(False) self._urls.show() renderer = gtk.CellRendererText() renderer.set_property("font-desc", font) self._urls.insert_column_with_attributes(-1, _("Channel"), renderer, text=0) self._urls.insert_column_with_attributes(-1, _("Size"), renderer, text=1) self._urls.insert_column_with_attributes(-1, _("URL"), renderer, text=2) sw.add(self._urls) label = gtk.Label(_("URLs")) self._notebook.append_page(sw, label) self._notebook.connect("switch_page", self._switchPage)
def __init__(self): gtk.Alignment.__init__(self, 0.5, 0.5, 1.0, 1.0) self._pkg = None self._changeset = None font = self.style.font_desc.copy() font.set_size(font.get_size() - pango.SCALE) boldfont = font.copy() boldfont.set_weight(pango.WEIGHT_BOLD) if sysconf.get("gtk-description-fontsize"): fontsize = int(sysconf.get("gtk-description-fontsize")) descfont = self.style.font_desc.copy() descfont.set_size(fontsize * pango.SCALE) bolddescfont = descfont.copy() bolddescfont.set_weight(pango.WEIGHT_BOLD) else: descfont = font bolddescfont = boldfont self._notebook = gtk.Notebook() self._notebook.show() self.add(self._notebook) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) #sw.set_border_width(5) sw.show() table = gtk.Table() table.set_row_spacings(2) table.set_col_spacings(5) table.set_border_width(5) table.show() sw.add_with_viewport(table) self._info = type("Info", (), {})() attrsleft = pango.AttrList() attrsleft.insert(pango.AttrFontDesc(font, 0, -1)) attrsright = pango.AttrList() attrsright.insert(pango.AttrFontDesc(boldfont, 0, -1)) style = sw.get_style() bgcolor = style.bg[gtk.STATE_NORMAL] self._reftv = gtk.TextView() self._reftv.modify_base(gtk.STATE_NORMAL, bgcolor) self._reftv.set_editable(False) self._reftv.set_cursor_visible(False) self._reftv.connect("motion-notify-event", self.motion_notify_event) self._reftv.connect("event-after", self.event_after) self._reftv.show() self._reftv.get_buffer().create_tag("reference", font_desc=font) row = 0 for attr, text in [("status", _("Status:")), ("priority", _("Priority:")), ("group", _("Group:")), ("installedsize", _("Installed Size:")), ("channels", _("Channels:")), ("reference", _("Reference URLs:"))]: label = gtk.Label(text) label.set_attributes(attrsleft) if attr == "channels": label.set_alignment(1.0, 0.0) else: label.set_alignment(1.0, 0.5) label.show() table.attach(label, 0, 1, row, row + 1, gtk.FILL, gtk.FILL) setattr(self._info, attr + "_label", label) if attr == "reference": label = self._reftv else: label = gtk.Label() label.set_attributes(attrsright) label.set_alignment(0.0, 0.5) label.show() table.attach(label, 1, 2, row, row + 1, gtk.FILL, gtk.FILL) setattr(self._info, attr, label) row += 1 label = gtk.Label(_("General")) self._notebook.append_page(sw, label) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS) sw.set_shadow_type(gtk.SHADOW_IN) sw.set_border_width(5) sw.show() self._descrtv = gtk.TextView() self._descrtv.set_editable(False) self._descrtv.set_cursor_visible(False) self._descrtv.set_left_margin(5) self._descrtv.set_right_margin(5) self._descrtv.show() buffer = self._descrtv.get_buffer() buffer.create_tag("description", font_desc=descfont) buffer.create_tag("summary", font_desc=bolddescfont) sw.add(self._descrtv) label = gtk.Label(_("Description")) self._notebook.append_page(sw, label) vbox = gtk.VBox() vbox.show() filtertable = gtk.Table(1, 1) filtertable.set_row_spacings(5) filtertable.set_col_spacings(5) filtertable.set_border_width(5) filtertable.show() vbox.pack_end(filtertable, False) label = gtk.Label(_("Filter:")) label.show() filtertable.attach(label, 0, 1, 0, 1, 0, 0) if gtk.gtk_version >= (2, 16, 0) or not sexy: self._filterentry = gtk.Entry() else: self._filterentry = sexy.IconEntry() self._filterentry.connect("activate", lambda x: self.filterContent()) self._filterentry.show() filtertable.attach(self._filterentry, 1, 2, 0, 1) align = gtk.Alignment() align.set(1, 0, 0, 0) align.set_padding(0, 0, 10, 0) align.show() filtertable.attach(align, 2, 3, 0, 1, gtk.FILL, gtk.FILL) if gtk.gtk_version >= (2, 16, 0): self._filterentry.set_property("primary-icon-stock", "gtk-find") self._filterentry.set_property("secondary-icon-stock", "gtk-clear") def press(entry, icon_pos, event): if int(icon_pos) == 0: # "primary" self.filterContent() elif int(icon_pos) == 1: # "secondary" self.filterClear() self._filterentry.connect("icon-press", press) elif sexy: image = gtk.Image() image.set_from_stock("gtk-find", gtk.ICON_SIZE_BUTTON) self._filterentry.set_icon(sexy.ICON_ENTRY_PRIMARY, image) image = gtk.Image() image.set_from_stock("gtk-clear", gtk.ICON_SIZE_BUTTON) self._filterentry.set_icon(sexy.ICON_ENTRY_SECONDARY, image) def pressed(entry, icon_pos, button): if icon_pos == 0: # "primary" self.filterContent() elif icon_pos == 1: # "secondary" self.filterClear() self._filterentry.connect("icon-pressed", pressed) else: button = gtk.Button() button.set_relief(gtk.RELIEF_NONE) button.connect("clicked", lambda x: self.filterContent()) button.show() filtertable.attach(button, 3, 4, 0, 1, 0, 0) image = gtk.Image() image.set_from_stock("gtk-find", gtk.ICON_SIZE_BUTTON) image.show() button.add(image) button = gtk.Button() button.set_relief(gtk.RELIEF_NONE) button.connect("clicked", lambda x: self.filterClear()) button.show() filtertable.attach(button, 4, 5, 0, 1, 0, 0) image = gtk.Image() image.set_from_stock("gtk-clear", gtk.ICON_SIZE_BUTTON) image.show() button.add(image) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS) sw.set_shadow_type(gtk.SHADOW_IN) sw.set_border_width(5) sw.show() self._conttv = gtk.TextView() self._conttv.set_editable(False) self._conttv.set_cursor_visible(False) self._conttv.set_left_margin(5) self._conttv.set_right_margin(5) self._conttv.show() buffer = self._conttv.get_buffer() buffer.create_tag("content", font_desc=font) sw.add(self._conttv) vbox.add(sw) label = gtk.Label(_("Content")) self._notebook.append_page(vbox, label) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS) sw.set_shadow_type(gtk.SHADOW_IN) sw.set_border_width(5) sw.show() self._change = gtk.TextView() self._change.set_editable(False) self._change.set_cursor_visible(False) self._change.set_left_margin(5) self._change.set_right_margin(5) self._change.show() buffer = self._change.get_buffer() buffer.create_tag("changetime", font_desc=boldfont) buffer.create_tag("changelog", font_desc=font) sw.add(self._change) label = gtk.Label(_("Changelog")) self._notebook.append_page(sw, label) self._relations = GtkPackageView() self._relations.set_border_width(5) self._relations.getTreeView().set_headers_visible(False) self._relations.show() label = gtk.Label(_("Relations")) self._notebook.append_page(self._relations, label) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) sw.set_border_width(5) sw.set_shadow_type(gtk.SHADOW_IN) sw.show() model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING) self._urls = gtk.TreeView(model) self._urls.set_headers_visible(False) self._urls.show() renderer = gtk.CellRendererText() renderer.set_property("font-desc", font) self._urls.insert_column_with_attributes(-1, _("Channel"), renderer, text=0) self._urls.insert_column_with_attributes(-1, _("Size"), renderer, text=1) self._urls.insert_column_with_attributes(-1, _("URL"), renderer, text=2) sw.add(self._urls) label = gtk.Label(_("URLs")) self._notebook.append_page(sw, label) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS) sw.set_shadow_type(gtk.SHADOW_IN) sw.set_border_width(5) sw.show() self._notebook.connect("switch_page", self._switchPage) self._notebook.set_current_page(sysconf.get("gtk-starting-tab", 0))
def attrs_changed(self): bold = False italics = False underline = False pango_font = None del self.attrlist self.attrlist = self.attributes.copy() if self.preedit: ins_text = self.preedit[0] ins_style = self.preedit[1] if self.index == len(self.text): show_text = self.text + ins_text elif self.index == 0: show_text = ins_text + self.text else: split1 = self.text[:self.index] split2 = self.text[self.index:] show_text = split1 + ins_text + split2 self.attrlist.splice(ins_style, self.index, len(ins_text)) else: show_text = self.text it = wrap_attriterator(self.attributes.get_iterator()) for attrs, (start, end) in it: found = False if self.index == self.end_index: if start <= self.index and end > self.index: found = True elif self.index < self.end_index: if start > self.end_index: break elif start <= self.index and \ end >= self.end_index: # We got a winner! found = True else: # i.e. self.index > self.end_index if start > self.index: break elif start <= self.end_index and \ end >= self.index: # We got another winner! found = True if found: for x in attrs: if x.type == pango.ATTR_WEIGHT and \ x.value == pango.WEIGHT_BOLD: bold = True elif x.type == pango.ATTR_STYLE and \ x.value == pango.STYLE_ITALIC: italics = True elif x.type == pango.ATTR_UNDERLINE and \ x.value == pango.UNDERLINE_SINGLE: underline = True elif x.type == pango.ATTR_FONT_DESC: pango_font = x.desc to_add = [] if bold: to_add.append( pango.AttrWeight(pango.WEIGHT_BOLD, self.index, self.index)) if italics: to_add.append( pango.AttrStyle(pango.STYLE_ITALIC, self.index, self.index)) if underline: to_add.append( pango.AttrUnderline(pango.UNDERLINE_SINGLE, self.index, self.index)) if pango_font: to_add.append( pango.AttrFontDesc(pango_font, self.index, self.index)) for x in self.current_attrs: if x.type == pango.ATTR_WEIGHT and x.value == pango.WEIGHT_BOLD: bold = True to_add.append(x) if x.type == pango.ATTR_STYLE and x.value == pango.STYLE_ITALIC: italics = True to_add.append(x) if x.type == pango.ATTR_UNDERLINE and x.value == pango.UNDERLINE_SINGLE: underline = True to_add.append(x) if x.type == pango.ATTR_FONT_DESC: pango_font = x.desc to_add.append(x) del self.current_attrs self.current_attrs = to_add self.emit("update-attrs", bold, italics, underline, pango_font) return show_text
def __init__(self): gtk.Table.__init__(self) self.resize(4, 110) self.set_homogeneous(True) self.mute = False self.vumeter = gtk.ProgressBar() self.rangeVum = 40 #numbers label0 = gtk.Label("0 dB") label1 = gtk.Label("-3") label2 = gtk.Label("-6") label3 = gtk.Label("-12") label4 = gtk.Label("-24") label5 = gtk.Label("-40") # set number's colour self.modify_widget_fgcolor(label0, gtk.gdk.color_parse("#D9211D")) # Red self.modify_widget_fgcolor(label1, gtk.gdk.color_parse("#D95E1D")) # Orange self.modify_widget_fgcolor(label2, gtk.gdk.color_parse("#D95E1D")) # Orange self.modify_widget_fgcolor(label3, gtk.gdk.color_parse("#068629")) # Green self.modify_widget_fgcolor(label4, gtk.gdk.color_parse("#068629")) # Green self.modify_widget_fgcolor(label5, gtk.gdk.color_parse("#068629")) # Green labels = [label0, label1, label2, label3, label4, label5] for label in labels: label.set_justify(gtk.JUSTIFY_CENTER) alist = pango.AttrList() font = pango.FontDescription("bold") attr = pango.AttrFontDesc(font, 0, -1) alist.insert(attr) label.set_attributes(alist) # set number's position self.attach(label0, 100, 110, 0, 1, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) #0 self.attach(label1, 92, 102, 0, 1, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) #-3 self.attach(label2, 85, 95, 0, 1, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) #-6 self.attach(label3, 70, 80, 0, 1, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) #-12 self.attach(label4, 40, 50, 0, 1, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) #-24 self.attach(label5, 0, 10, 0, 1, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) #-40 #marks mark0 = gtk.VSeparator() mark1 = gtk.VSeparator() mark2 = gtk.VSeparator() mark3 = gtk.VSeparator() mark4 = gtk.VSeparator() mark5 = gtk.VSeparator() # attach marks to widget self.attach(mark0, 105, 106, 1, 2, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) #0dB self.attach(mark1, 97, 98, 1, 2, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) #-3 self.attach(mark2, 90, 91, 1, 2, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) #-6 self.attach(mark3, 75, 76, 1, 2, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) #-12 self.attach(mark4, 45, 46, 1, 2, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) #-24 self.attach(mark5, 5, 6, 1, 2, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0) #-40 self.attach(self.vumeter, 5, 105, 2, 4, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0)
def attrs_changed(self): bold = False italics = False underline = False pango_font = None del self.attrlist self.attrlist = pango.AttrList() # TODO: splice instead of own method it = self.attributes.get_iterator() while 1: at = it.get_attrs() for x in at: self.attrlist.insert(x) if it.next() == False: break if self.preedit: ins_text = self.preedit[0] ins_style = self.preedit[1] if self.index == len(self.text): show_text = self.text + ins_text elif self.index == 0: show_text = ins_text + self.text else: split1 = self.text[:self.index] split2 = self.text[self.index:] show_text = split1 + ins_text + split2 self.attrlist.splice(ins_style, self.index, len(ins_text)) else: show_text = self.text it = self.attributes.get_iterator() while (1): found = False r = it.range() if self.index == self.end_index: if r[0] <= self.index and r[1] > self.index: found = True elif self.index < self.end_index: if r[0] > self.end_index: break if self.index == self.end_index and \ r[0] < self.index and \ r[1] > self.index: found = True elif self.index != self.end_index and r[0] <= self.index and \ r[1] >= self.end_index: # We got a winner! found = True else: if r[0] > self.index: break if self.index == self.end_index and \ r[0] < self.index and \ r[1] > self.index: found = True elif self.index != self.end_index and r[0] <= self.end_index and \ r[1] >= self.index: # We got another winner! found = True if found: # FIXME: the it.get() seems to crash python # through pango. attr = it.get_attrs() for x in attr: if x.type == pango.ATTR_WEIGHT and \ x.value == pango.WEIGHT_BOLD: bold = True elif x.type == pango.ATTR_STYLE and \ x.value == pango.STYLE_ITALIC: italics = True elif x.type == pango.ATTR_UNDERLINE and \ x.value == pango.UNDERLINE_SINGLE: underline = True elif x.type == pango.ATTR_FONT_DESC: pango_font = x.desc if it.next() == False: break to_add = [] if bold: to_add.append( pango.AttrWeight(pango.WEIGHT_BOLD, self.index, self.index)) if italics: to_add.append( pango.AttrStyle(pango.STYLE_ITALIC, self.index, self.index)) if underline: to_add.append( pango.AttrUnderline(pango.UNDERLINE_SINGLE, self.index, self.index)) if pango_font: to_add.append( pango.AttrFontDesc(pango_font, self.index, self.index)) for x in self.current_attrs: if x.type == pango.ATTR_WEIGHT and x.value == pango.WEIGHT_BOLD: bold = True to_add.append(x) if x.type == pango.ATTR_STYLE and x.value == pango.STYLE_ITALIC: italics = True to_add.append(x) if x.type == pango.ATTR_UNDERLINE and x.value == pango.UNDERLINE_SINGLE: underline = True to_add.append(x) if x.type == pango.ATTR_FONT_DESC: pango_font = x.desc to_add.append(x) del self.current_attrs self.current_attrs = to_add self.emit("update-attrs", bold, italics, underline, pango_font) return show_text
def set_font_size(label, fontsize=48.0): siz_attr = pango.AttrFontDesc(pango.FontDescription(str(fontsize)), 0, -1) attrs = pango.AttrList() attrs.insert(siz_attr) label.set_attributes(attrs)