コード例 #1
0
    def createWidgets(self):
        self.transactionWidgets = {}
        self.pipes = {}

        self.scroll = ScrollContainer()
        self.scroll.hAdjust[0].set_property("step-increment", 20)
        self.cursor = Types.Observable(-1)

        # The ruler at the top is in charge of our time scale
        self.ruler = Ruler()
        TimeCursor(self.ruler, self.ruler, self.cursor)
        self.ruler.canvas.set_hadjustment(self.scroll.hAdjust[0])

        # The top heading holds the ruler, and a spacer aligned with the left heading
        leftHeadingWidth = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)
        spacer = gtk.Label()
        leftHeadingWidth.add_widget(spacer)
        topHeading = gtk.HBox(False)
        topHeading.pack_start(spacer, False, padding=self.labelPadding)
        topHeading.pack_start(gtk.VSeparator(), False)
        topHeading.pack_start(self.ruler.canvas, True)

        # Everything except the top heading scrolls vertically using a viewport
        viewport = gtk.Viewport(None, self.scroll.vAdjust[0])
        viewport.set_shadow_type(gtk.SHADOW_NONE)
        viewport.set_size_request(1, 1)
        viewportBox = gtk.VBox(False)
        viewportBox.pack_start(topHeading, False)
        viewportBox.pack_start(gtk.HSeparator(), False)
        viewportBox.pack_start(viewport, True)
        self.scroll.add(viewportBox)

        # Gnome Canvas has really silly event grabbing semantics. To work around
        # all this, we'll just grab all events before gnome-canvas sees them.
        for widget in (viewport, self.ruler.canvas):
            widget.add_events(gtk.gdk.POINTER_MOTION_HINT_MASK
                              | gtk.gdk.POINTER_MOTION_MASK
                              | gtk.gdk.BUTTON_PRESS_MASK)
            for event in ('motion-notify-event', 'button-press-event',
                          'scroll-event'):
                widget.connect_after(event, self.mouseEvent)
            self.scroll.attachEvent(widget, horizontal=True)

        # The left heading holds labels for each canvas in the stack
        self.leftHeading = gtk.VBox(False)
        leftHeadingWidth.add_widget(self.leftHeading)

        # The viewport holds the left heading, then the main canvas stack
        scrolledBox = gtk.HBox(False)
        self.canvasList = []
        self.canvasStack = gtk.VBox(False)
        scrolledBox.pack_start(self.leftHeading,
                               False,
                               padding=self.labelPadding)
        scrolledBox.pack_start(gtk.VSeparator(), False)
        scrolledBox.pack_start(self.canvasStack, True)
        viewport.add(scrolledBox)

        return self.scroll
コード例 #2
0
    def createWidgets(self):
        self.view = gtk.TreeView()
        self.view.set_rules_hint(True)
        self.view.connect("cursor-changed", self.onCursorChanged)

        self.selectionInfo = Types.Observable()
        self.onSelectionChanged(self.view.get_selection())

        # Allow multiple select, and hook up a context menu
        self.view.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
        self.view.get_selection().connect("changed", self.onSelectionChanged)
        self.view.connect("button-press-event", self.onButtonPressed)

        self.createModel()
        self.createColumns()

        self.eventToIter = {}
        self.pipes = {}

        return self.view
コード例 #3
0
 def __init__(self):
     self.hilight = Types.Observable()
     self.children = []