示例#1
0
    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()
示例#2
0
    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))
示例#3
0
    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
示例#4
0
 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
示例#5
0
    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)
示例#6
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()
示例#7
0
    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
示例#8
0
文件: legend.py 项目: pombreda/smart
    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)
示例#9
0
 def _set_font(self, value, attrlist):
     attrlist.change(pango.AttrFontDesc(pango.FontDescription(value),
             0, -1))
示例#10
0
    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)
示例#11
0
    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))
示例#12
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
示例#13
0
    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
示例#15
0
 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)