예제 #1
0
    def __init__(self):
        super(StatusView, self).__init__()

        self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.set_shadow_type(gtk.SHADOW_ETCHED_IN)

        self.tag_table = gtk.TextTagTable()
        self.buffer = gtk.TextBuffer(self.tag_table)
        self.view = gtk.TextView(self.buffer)
        self.view.set_wrap_mode(gtk.WRAP_WORD_CHAR)
        self.view.set_indent(4)

        Prefs()['gui.statustab.font'].connect(self.__modify_font)

        self.view.set_border_window_size(gtk.TEXT_WINDOW_LEFT, 16)
        self.view.set_editable(False)

        # Create various tags

        self.view.connect('expose-event', self.__redraw_left_window)
        self.view.connect('style-set', self.__on_style)
        self.view.connect('realize', self.__on_realize)
        self.add(self.view)

        self.icons = (
            get_pixbuf('info_small'),
            get_pixbuf('warning_small'),
            get_pixbuf('error_small')
        )

        self.lines = []
예제 #2
0
    def __init__(self):
        super(StatusView, self).__init__()

        self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.set_shadow_type(gtk.SHADOW_ETCHED_IN)

        self.tag_table = gtk.TextTagTable()
        self.buffer = gtk.TextBuffer(self.tag_table)
        self.view = gtk.TextView(self.buffer)
        self.view.set_wrap_mode(gtk.WRAP_WORD_CHAR)
        self.view.set_indent(4)

        Prefs()['gui.statustab.font'].connect(self.__modify_font)

        self.view.set_border_window_size(gtk.TEXT_WINDOW_LEFT, 16)
        self.view.set_editable(False)

        # Create various tags

        self.view.connect('expose-event', self.__redraw_left_window)
        self.view.connect('style-set', self.__on_style)
        self.view.connect('realize', self.__on_realize)
        self.add(self.view)

        self.icons = (get_pixbuf('info_small'), get_pixbuf('warning_small'),
                      get_pixbuf('error_small'))

        self.lines = []
예제 #3
0
    def __create_columns(self):
        col = gtk.TreeViewColumn(_("Audits"))

        col.set_expand(True)
        col.set_resizable(True)
        col.set_resizable(True)

        col.set_sizing(gtk.TREE_VIEW_COLUMN_GROW_ONLY)

        rend = gtk.CellRendererPixbuf()
        col.pack_start(rend, False)
        col.set_cell_data_func(rend, self.__pix_data_func)

        rend = gtk.CellRendererText()
        col.pack_start(rend)
        col.set_cell_data_func(rend, self.__text_data_func)

        self.tree.append_column(col)

        rend = gtk.CellRendererProgress()
        col = gtk.TreeViewColumn(_("Status"), rend)

        col.set_expand(False)
        col.set_resizable(True)
        col.set_fixed_width(150)
        col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)

        col.set_cell_data_func(rend, self.__progress_data_func)

        self.tree.append_column(col)

        self.tree.set_rules_hint(True)
        self.icon_operation = get_pixbuf("operation_small")
예제 #4
0
    def __create_columns(self):
        col = gtk.TreeViewColumn(_('Audits'))

        col.set_expand(True)
        col.set_resizable(True)
        col.set_resizable(True)

        col.set_sizing(gtk.TREE_VIEW_COLUMN_GROW_ONLY)

        rend = gtk.CellRendererPixbuf()
        col.pack_start(rend, False)
        col.set_cell_data_func(rend, self.__pix_data_func)

        rend = gtk.CellRendererText()
        col.pack_start(rend)
        col.set_cell_data_func(rend, self.__text_data_func)

        self.tree.append_column(col)

        rend = gtk.CellRendererProgress()
        col = gtk.TreeViewColumn(_('Status'), rend)

        col.set_expand(False)
        col.set_resizable(True)
        col.set_fixed_width(150)
        col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)

        col.set_cell_data_func(rend, self.__progress_data_func)

        self.tree.append_column(col)

        self.tree.set_rules_hint(True)
        self.icon_operation = get_pixbuf('operation_small')
예제 #5
0
    def __init__(self):
        gtk.ScrolledWindow.__init__(self)

        self.packet = None
        self.store = gtk.TreeStore(object)
        self.tree = gtk.TreeView(self.store)

        self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.set_shadow_type(gtk.SHADOW_ETCHED_IN)

        col = gtk.TreeViewColumn('Property')
        crt = CellRendererGroup(self)

        crt.set_property('xpad', 0)
        crt.set_property('cell-background-gdk',
                         self.style.mid[gtk.STATE_NORMAL])

        pix = CellRendererIcon()
        pix.set_property('xpad', 0)
        pix.set_property('ypad', 0)

        col.pack_start(pix, False)
        col.pack_start(crt, True)
        col.set_resizable(True)
        col.set_expand(False)
        col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
        col.set_fixed_width(120)

        col.set_cell_data_func(crt, self.__group_cell_func)
        col.set_cell_data_func(pix, self.__pixbuf_cell_func)
        self.tree.append_column(col)

        col = gtk.TreeViewColumn('Value')
        crt = CellRendererProperty(self)

        col.pack_start(crt, True)
        #col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
        col.set_resizable(False)
        col.set_expand(True)
        col.set_attributes(crt)

        col.set_cell_data_func(crt, self.__property_cell_func)
        self.tree.append_column(col)

        #self.tree.set_headers_visible(False)
        self.tree.set_search_column(0)
        self.tree.set_search_equal_func(self.__search_func)
        self.tree.set_enable_tree_lines(True) # This don't work with cell back

        self.add(self.tree)

        self.icon_locked = get_pixbuf("locked_small")
        self.finish_callback = self.__on_finish_edit

        self.tree.get_selection().connect('changed',
                                          self.__on_selection_changed)
        self.tree.connect('button-release-event', self.__on_button_release)
예제 #6
0
    def __init__(self, parent):
        gtk.ScrolledWindow.__init__(self)

        self.__create_widgets()
        self.__pack_widgets()
        self.__connect_signals()

        self.session = parent
        self.proto_icon = get_pixbuf('protocol_small')

        self.reload()
예제 #7
0
    def __init__(self):
        self.icon = get_pixbuf('layer_small')
        self.store = gtk.ListStore(gtk.gdk.Pixbuf, str)

        super(FilterLayer, self).__init__(self.store)

        pix = gtk.CellRendererPixbuf()
        txt = gtk.CellRendererText()

        self.pack_start(pix, False)
        self.pack_start(txt, True)

        self.add_attribute(pix, 'pixbuf', 0)
        self.add_attribute(txt, 'text', 1)
예제 #8
0
    def __init__(self):
        self.icon = get_pixbuf('layer_small')
        self.store = gtk.ListStore(gtk.gdk.Pixbuf, str)

        super(FilterLayer, self).__init__(self.store)

        pix = gtk.CellRendererPixbuf()
        txt = gtk.CellRendererText()

        self.pack_start(pix, False)
        self.pack_start(txt, True)

        self.add_attribute(pix, 'pixbuf', 0)
        self.add_attribute(txt, 'text', 1)
class ClosableLabel(gtk.HBox):
    __gtype_name__ = "ClosableLabel"
    __gsignals__ = {
        'close-clicked': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()),
        'context-menu': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,
                         (gobject.TYPE_PYOBJECT, )),
    }

    __close_icon = get_pixbuf('stock-close_small')

    def __init__(self, txt):
        super(ClosableLabel, self).__init__(False, 2)

        self.arrow = gtk.Arrow(gtk.ARROW_RIGHT, gtk.SHADOW_NONE)

        self.arrow_box = gtk.EventBox()
        self.arrow_box.add(self.arrow)
        self.arrow_box.set_visible_window(False)
        self.arrow_box.connect('button-press-event', self.__on_arrow_btn)

        self.label = gtk.Label(txt)
        self.label.set_use_markup(True)
        self.label.set_alignment(0, 0.5)
        self.label.set_ellipsize(pango.ELLIPSIZE_START)
        self.label.set_size_request(150, -1)

        self.button = gtk.Button()
        self.button.add(gtk.image_new_from_pixbuf(self.__close_icon))
        self.button.set_relief(gtk.RELIEF_NONE)
        self.button.connect('clicked', self.__on_clicked)

        self.pack_start(self.arrow_box, False, False)
        self.pack_start(self.label)
        self.pack_start(self.button, False, False)

        self.label.show_all()
        self.button.show_all()

    def __on_clicked(self, button):
        self.emit('close-clicked')

    def set_menu_active(self, value):
        if value:
            self.arrow_box.show_all()
        else:
            self.arrow_box.hide()

    def __on_arrow_btn(self, ebox, event):
        #if event.button == 3:
        self.emit('context-menu', event)
예제 #10
0
    def __create_widgets(self):
        pix_cell = gtk.CellRendererPixbuf()
        txt_cell = gtk.CellRendererText()

        self.path_store = gtk.ListStore(gtk.gdk.Pixbuf, str)
        self.path_view = gtk.TreeView(self.path_store)

        col = gtk.TreeViewColumn('')
        col.pack_start(pix_cell, False)
        col.pack_start(txt_cell)

        col.add_attribute(pix_cell, 'pixbuf', 0)
        col.add_attribute(txt_cell, 'text', 1)

        self.path_view.append_column(col)
        self.path_view.set_headers_visible(False)

        # Enable drag moving
        entries = [('PathView', gtk.TARGET_SAME_WIDGET, 0)]

        self.path_view.enable_model_drag_source(
            gtk.gdk.BUTTON1_MASK,
            entries,
            gtk.gdk.ACTION_MOVE
        )

        self.path_view.enable_model_drag_dest(
            entries,
            gtk.gdk.ACTION_MOVE
        )

        self.path_view.connect(
            'drag-data-received', PathPage.__on_drag_data_received
        )

        self.path_add = gtk.Button(stock=gtk.STOCK_ADD)
        self.path_remove = gtk.Button(stock=gtk.STOCK_REMOVE)
        self.path_save = gtk.Button(stock=gtk.STOCK_SAVE)

        self.path_icon = get_pixbuf('paths_small')

        # Connect callbacks
        self.path_add.connect('clicked', self.__on_add_path)
        self.path_remove.connect('clicked', self.__on_remove_path)
        self.path_save.connect('clicked', self.__on_save_path)
예제 #11
0
    def __init__(self):
        self.store = gtk.ListStore(object)
        super(OperationTree, self).__init__(self.store)

        # We have only one column with a progress bar
        # showing a text

        col = gtk.TreeViewColumn(_('Operation'))

        col.set_expand(True)
        col.set_resizable(True)
        col.set_resizable(True)

        col.set_sizing(gtk.TREE_VIEW_COLUMN_GROW_ONLY)

        rend = gtk.CellRendererPixbuf()
        col.pack_start(rend, False)
        col.set_cell_data_func(rend, self.__pix_data_func)

        rend = gtk.CellRendererText()
        col.pack_start(rend)
        col.set_cell_data_func(rend, self.__text_data_func)

        self.append_column(col)

        rend = gtk.CellRendererProgress()
        col = gtk.TreeViewColumn(_('Status'), rend)

        col.set_expand(False)
        col.set_resizable(True)
        col.set_fixed_width(150)
        col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)

        col.set_cell_data_func(rend, self.__progress_data_func)

        self.append_column(col)

        self.set_rules_hint(True)

        self.icon_operation = get_pixbuf('operation_small')
        self.connect('button-release-event', self.__on_button_release)

        self.timeout_id = None
        self.timeout_update()
    def __init__(self):
        self.store = gtk.ListStore(object)
        super(OperationTree, self).__init__(self.store)

        # We have only one column with a progress bar
        # showing a text

        col = gtk.TreeViewColumn(_('Operation'))

        col.set_expand(True)
        col.set_resizable(True)
        col.set_resizable(True)

        col.set_sizing(gtk.TREE_VIEW_COLUMN_GROW_ONLY)

        rend = gtk.CellRendererPixbuf()
        col.pack_start(rend, False)
        col.set_cell_data_func(rend, self.__pix_data_func)

        rend = gtk.CellRendererText()
        col.pack_start(rend)
        col.set_cell_data_func(rend, self.__text_data_func)

        self.append_column(col)

        rend = gtk.CellRendererProgress()
        col = gtk.TreeViewColumn(_('Status'), rend)

        col.set_expand(False)
        col.set_resizable(True)
        col.set_fixed_width(150)
        col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)

        col.set_cell_data_func(rend, self.__progress_data_func)

        self.append_column(col)

        self.set_rules_hint(True)

        self.icon_operation = get_pixbuf('operation_small')
        self.connect('button-release-event', self.__on_button_release)

        self.timeout_id = None
        self.timeout_update()
예제 #13
0
    def __init__(self):
        super(ProtocolTree, self).__init__(False, 2)

        toolbar = gtk.Toolbar()
        toolbar.set_style(gtk.TOOLBAR_ICONS)

        stocks = (gtk.STOCK_SORT_ASCENDING,
                  gtk.STOCK_SORT_DESCENDING,
                  gtk.STOCK_CONVERT)

        callbacks = (self.__on_sort_ascending,
                     self.__on_sort_descending,
                     self.__on_sort_layer)

        tooltips = (_('Sort ascending'),
                    _('Sort descending'),
                    _('Sort by layer'))

        for tooltip, stock, cb in zip(tooltips, stocks, callbacks):
            action = gtk.Action(None, None, tooltip, stock)
            item = action.create_tool_item()
            item.connect('clicked', cb)

            toolbar.insert(item, -1)

        self.store = gtk.TreeStore(gtk.gdk.Pixbuf, str, object)
        self.tree = gtk.TreeView()
        self.tree.set_headers_visible(False)

        txt = gtk.CellRendererText()
        pix = gtk.CellRendererPixbuf()

        col = gtk.TreeViewColumn(_('Protocols'))
        col.pack_start(pix, False)
        col.pack_start(txt)

        col.set_attributes(pix, pixbuf=ProtocolTree.COL_PIX)
        col.set_attributes(txt, text=ProtocolTree.COL_STR)

        col.set_cell_data_func(pix, self.__pix_cell_data_func)
        col.set_cell_data_func(txt, self.__txt_cell_data_func)

        txt.set_property('xpad', 6)
        pix.set_property('xpad', 0)

        self.tree.append_column(col)
        self.tree.set_enable_tree_lines(True)

        self.tree.enable_model_drag_source(
            gtk.gdk.BUTTON1_MASK,
            [('text/plain', 0, 0)],
            gtk.gdk.ACTION_COPY
        )

        self.tree.connect_after('drag-begin', self.__on_drag_begin)
        self.tree.connect('drag-data-get', self.__on_drag_data_get)
        self.tree.connect('button-press-event', self.__on_button_press)

        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)

        sw.add(self.tree)

        self.pack_start(toolbar, False, False)
        self.pack_start(sw)

        self.proto_icon = get_pixbuf('protocol_small')
        self.layer_icon = get_pixbuf('layer_small')

        # Now create the context menu
        self.context_menu = gtk.Menu()

        self.accel_group = gtk.AccelGroup()
        self.action_group = gtk.ActionGroup('ProtocolSelectorAction')

        labels = (_('Add to a new sequence'), None,
                  _('Append to the sequence'),
                  _('Append to the sequence selection'), None,
                  _('Append to the hierarchy'),
                  _('Append to the hierarchy selection'))

        accels = ('<Shift>N', None,
                  '<Shift>S',
                  '<Shift><Alt>S', None,
                  '<Ctrl>H',
                  '<Ctrl><Alt>H')

        stocks = (gtk.STOCK_NEW, None,
                  gtk.STOCK_GOTO_BOTTOM,
                  gtk.STOCK_GO_DOWN, None,
                  gtk.STOCK_GOTO_BOTTOM,
                  gtk.STOCK_GO_DOWN)

        cbs = (self.__add_to_new_sequence, None,
               self.__append_cur_sequence,
               self.__append_cur_sequence_sel, None,
               self.__append_cur_hier,
               self.__append_cur_hier_sel)

        for lbl, stock, accel, cb in zip(labels, stocks, accels, cbs):
            if not lbl:
                self.context_menu.append(gtk.SeparatorMenuItem())
                continue

            action = gtk.Action(lbl, lbl, None, stock)
            action.connect('activate', cb)
            self.action_group.add_action_with_accel(action, accel)
            action.set_accel_group(self.accel_group)
            self.context_menu.append(action.create_menu_item())

        self.context_menu.show_all()
        self.__on_sort_ascending(None)