Ejemplo n.º 1
0
    def __init__(self, readonly=False, hob=False):
        gtk.TreeView.__init__(self)
        self.readonly = readonly

        # The icon that indicates whether we're building or failed.
        # add 'hob' flag because there has not only hob to share this code
        if hob:
            renderer = HobCellRendererPixbuf()
        else:
            renderer = gtk.CellRendererPixbuf()
        col = gtk.TreeViewColumn("Status", renderer)
        col.add_attribute(renderer, "icon-name", 4)
        self.append_column(col)

        # The message of the build.
        # add 'hob' flag because there has not only hob to share this code
        if hob:
            self.message_renderer = HobWarpCellRendererText(col_number=1)
        else:
            self.message_renderer = gtk.CellRendererText()
        self.message_column = gtk.TreeViewColumn("Message",
                                                 self.message_renderer,
                                                 text=3)
        self.message_column.add_attribute(self.message_renderer, 'background',
                                          5)
        self.message_renderer.set_property('editable', (not self.readonly))
        self.append_column(self.message_column)
    def __init__ (self):
        gtk.TreeView.__init__(self)
        self.set_rules_hint(False)
        self.set_headers_visible(False)
        self.set_property("hover-expand", True)
        self.get_selection().set_mode(gtk.SELECTION_SINGLE)

        # The icon that indicates whether we're building or failed.
        renderer0 = gtk.CellRendererText()
        renderer0.set_property('font-desc', pango.FontDescription('courier bold 12'))
        col0 = gtk.TreeViewColumn ("Name", renderer0, text=0)
        self.append_column (col0)

        # The message of configuration.
        renderer1 = HobWarpCellRendererText(col_number=1)
        col1 = gtk.TreeViewColumn ("Values", renderer1, text=1)
        self.append_column (col1)
Ejemplo n.º 3
0
    def __init__(self):
        gtk.TreeView.__init__(self)
        self.set_rules_hint(False)
        self.set_headers_visible(False)
        self.get_selection().set_mode(gtk.SELECTION_SINGLE)

        # The icon that indicates whether we're building or failed.
        renderer = HobCellRendererPixbuf()
        col = gtk.TreeViewColumn("Status", renderer)
        col.add_attribute(renderer, "icon-name", RunningBuildModel.COL_ICON)
        self.append_column(col)

        # The message of the build.
        self.message_renderer = HobWarpCellRendererText(col_number=1)
        self.message_column = gtk.TreeViewColumn(
            "Message",
            self.message_renderer,
            text=RunningBuildModel.COL_MESSAGE,
            background=RunningBuildModel.COL_COLOR)
        self.append_column(self.message_column)
Ejemplo n.º 4
0
    def __init__ (self, readonly=False, hob=False):
        gtk.TreeView.__init__ (self)
        self.readonly = readonly

        # The icon that indicates whether we're building or failed.
        # add 'hob' flag because there has not only hob to share this code
        if hob:
            renderer = HobCellRendererPixbuf ()
        else:
            renderer = gtk.CellRendererPixbuf()
        col = gtk.TreeViewColumn ("Status", renderer)
        col.add_attribute (renderer, "icon-name", 4)
        self.append_column (col)

        # The message of the build.
        # add 'hob' flag because there has not only hob to share this code
        if hob:
            self.message_renderer = HobWarpCellRendererText (col_number=1)
        else:
            self.message_renderer = gtk.CellRendererText ()
        self.message_column = gtk.TreeViewColumn ("Message", self.message_renderer, text=3)
        self.message_column.add_attribute(self.message_renderer, 'background', 5)
        self.message_renderer.set_property('editable', (not self.readonly))
        self.append_column (self.message_column)
Ejemplo n.º 5
0
class RunningBuildTreeView(gtk.TreeView):
    __gsignals__ = {"button_press_event": "override"}

    def __init__(self, readonly=False, hob=False):
        gtk.TreeView.__init__(self)
        self.readonly = readonly

        # The icon that indicates whether we're building or failed.
        # add 'hob' flag because there has not only hob to share this code
        if hob:
            renderer = HobCellRendererPixbuf()
        else:
            renderer = gtk.CellRendererPixbuf()
        col = gtk.TreeViewColumn("Status", renderer)
        col.add_attribute(renderer, "icon-name", 4)
        self.append_column(col)

        # The message of the build.
        # add 'hob' flag because there has not only hob to share this code
        if hob:
            self.message_renderer = HobWarpCellRendererText(col_number=1)
        else:
            self.message_renderer = gtk.CellRendererText()
        self.message_column = gtk.TreeViewColumn("Message",
                                                 self.message_renderer,
                                                 text=3)
        self.message_column.add_attribute(self.message_renderer, 'background',
                                          5)
        self.message_renderer.set_property('editable', (not self.readonly))
        self.append_column(self.message_column)

    def do_button_press_event(self, event):
        gtk.TreeView.do_button_press_event(self, event)

        if event.button == 3:
            selection = super(RunningBuildTreeView, self).get_selection()
            (model, it) = selection.get_selected()
            if it is not None:
                can_paste = model.get(it, model.COL_LOG)[0]
                if can_paste == 'pastebin':
                    # build a simple menu with a pastebin option
                    menu = gtk.Menu()
                    menuitem = gtk.MenuItem("Copy")
                    menu.append(menuitem)
                    menuitem.connect("activate", self.clipboard_handler,
                                     (model, it))
                    menuitem.show()
                    menuitem = gtk.MenuItem("Send log to pastebin")
                    menu.append(menuitem)
                    menuitem.connect("activate", self.pastebin_handler,
                                     (model, it))
                    menuitem.show()
                    menu.show()
                    menu.popup(None, None, None, event.button, event.time)

    def _add_to_clipboard(self, clipping):
        """
        Add the contents of clipping to the system clipboard.
        """
        clipboard = gtk.clipboard_get()
        clipboard.set_text(clipping)
        clipboard.store()

    def pastebin_handler(self, widget, data):
        """
        Send the log data to pastebin, then add the new paste url to the
        clipboard.
        """
        (model, it) = data
        paste_url = do_pastebin(model.get(it, model.COL_MESSAGE)[0])

        # @todo Provide visual feedback to the user that it is done and that
        # it worked.
        print paste_url

        self._add_to_clipboard(paste_url)

    def clipboard_handler(self, widget, data):
        """
        """
        (model, it) = data
        message = model.get(it, model.COL_MESSAGE)[0]

        self._add_to_clipboard(message)
Ejemplo n.º 6
0
class RunningBuildTreeView (gtk.TreeView):
    __gsignals__ = {
        "button_press_event" : "override"
        }
    def __init__ (self, readonly=False, hob=False):
        gtk.TreeView.__init__ (self)
        self.readonly = readonly

        # The icon that indicates whether we're building or failed.
        # add 'hob' flag because there has not only hob to share this code
        if hob:
            renderer = HobCellRendererPixbuf ()
        else:
            renderer = gtk.CellRendererPixbuf()
        col = gtk.TreeViewColumn ("Status", renderer)
        col.add_attribute (renderer, "icon-name", 4)
        self.append_column (col)

        # The message of the build.
        # add 'hob' flag because there has not only hob to share this code
        if hob:
            self.message_renderer = HobWarpCellRendererText (col_number=1)
        else:
            self.message_renderer = gtk.CellRendererText ()
        self.message_column = gtk.TreeViewColumn ("Message", self.message_renderer, text=3)
        self.message_column.add_attribute(self.message_renderer, 'background', 5)
        self.message_renderer.set_property('editable', (not self.readonly))
        self.append_column (self.message_column)

    def do_button_press_event(self, event):
        gtk.TreeView.do_button_press_event(self, event)

        if event.button == 3:
            selection = super(RunningBuildTreeView, self).get_selection()
            (model, it) = selection.get_selected()
            if it is not None:
                can_paste = model.get(it, model.COL_LOG)[0]
                if can_paste == 'pastebin':
                    # build a simple menu with a pastebin option
                    menu = gtk.Menu()
                    menuitem = gtk.MenuItem("Copy")
                    menu.append(menuitem)
                    menuitem.connect("activate", self.clipboard_handler, (model, it))
                    menuitem.show()
                    menuitem = gtk.MenuItem("Send log to pastebin")
                    menu.append(menuitem)
                    menuitem.connect("activate", self.pastebin_handler, (model, it))
                    menuitem.show()
                    menu.show()
                    menu.popup(None, None, None, event.button, event.time)

    def _add_to_clipboard(self, clipping):
        """
        Add the contents of clipping to the system clipboard.
        """
        clipboard = gtk.clipboard_get()
        clipboard.set_text(clipping)
        clipboard.store()

    def pastebin_handler(self, widget, data):
        """
        Send the log data to pastebin, then add the new paste url to the
        clipboard.
        """
        (model, it) = data
        paste_url = do_pastebin(model.get(it, model.COL_MESSAGE)[0])

        # @todo Provide visual feedback to the user that it is done and that
        # it worked.
        print paste_url

        self._add_to_clipboard(paste_url)

    def clipboard_handler(self, widget, data):
        """
        """
        (model, it) = data
        message = model.get(it, model.COL_MESSAGE)[0]

        self._add_to_clipboard(message)