コード例 #1
0
    def __init__(self, model):
        InsertedObjectWidget.__init__(self)
        self.textarea_width = 0
        self.model = model

        # used in pageview
        self._has_cursor = False  # Skip table object, if someone moves cursor around in textview

        # used here
        self._timer = None  # NONE or number of current GObject.timer, which is running
        self._keep_toolbar_open = False  # a cell is currently edited, toolbar should not be hidden
        self._cellinput_canceled = None  # cell changes should be skipped
        self._toolbar_enabled = True  # sets if toolbar should be shown beneath a selected table

        # Toolbar for table actions
        self.toolbar = self.create_toolbar()
        self.toolbar.show_all()
        self.toolbar.set_no_show_all(True)
        self.toolbar.hide()

        # Create treeview
        self._init_treeview(model)

        # package gui elements
        self.vbox = Gtk.VBox()
        self.add(self.vbox)
        self.vbox.pack_end(self.toolbar, True, True, 0)
        self.scroll_win = ScrolledWindow(self.treeview, Gtk.PolicyType.NEVER,
                                         Gtk.PolicyType.NEVER,
                                         Gtk.ShadowType.NONE)
        self.vbox.pack_start(self.scroll_win, True, True, 0)

        # signals
        model.connect('model-changed', self.on_model_changed)
コード例 #2
0
    def __init__(self, buffer):
        InsertedObjectWidget.__init__(self)
        self.set_has_cursor(True)
        self.buffer = buffer
        self.buffer.object_attrib.connect('changed', self.on_attrib_changed)

        self.view = GtkSource.View()
        self.view.set_buffer(self.buffer)
        self.view.modify_font(Pango.FontDescription('monospace'))
        self.view.set_auto_indent(True)
        self.view.set_smart_home_end(True)
        self.view.set_highlight_current_line(True)
        self.view.set_right_margin_position(80)
        self.view.set_show_right_margin(True)
        self.view.set_tab_width(4)
        self.view.set_show_line_numbers(buffer.object_attrib['linenumbers'])

        # simple toolbar
        #~ bar = Gtk.HBox() # FIXME: use Gtk.Toolbar stuff
        #~ lang_selector = Gtk.ComboBoxText()
        #~ lang_selector.append_text('(None)')
        #~ for l in lang_names: lang_selector.append_text(l)
        #~ try:
        #~ lang_selector.set_active(lang_ids.index(self._attrib['lang'])+1)
        #~ self.set_language(self._attrib['lang'] or None, False)
        #~ except (ValueError, KeyError):
        #~ lang_selector.set_active(0)
        #~ self.set_language(None, False)
        #~ lang_selector.connect('changed', self.on_lang_changed)
        #~ bar.pack_start(lang_selector, False, False)

        #~ line_numbers = Gtk.ToggleButton('Line numbers')
        #~ try:
        #~ line_numbers.set_active(self._attrib['linenumbers']=='true')
        #~ self.show_line_numbers(self._attrib['linenumbers'], False)
        #~ except (ValueError, KeyError):
        #~ line_numbers.set_active(True)
        #~ self.show_line_numbers(True, False)
        #~ line_numbers.connect('toggled', self.on_line_numbers_toggled)
        #~ bar.pack_start(line_numbers, False, False)

        # TODO: other toolbar options
        # TODO: autohide toolbar if textbuffer is not active

        # Pack everything
        #~ self.add_header(bar)
        win = ScrolledWindow(self.view, Gtk.PolicyType.AUTOMATIC,
                             Gtk.PolicyType.NEVER, Gtk.ShadowType.NONE)
        self.add(win)

        # Hook up signals
        self._init_signals()
        self.view.connect('populate-popup', self.on_populate_popup)
コード例 #3
0
    def __init__(self, model):

        InsertedObjectWidget.__init__(self)
        self.model = model
        self.cont = Gtk.HBox()
        link = Gtk.LinkButton(label="Previous")
        link.connect('button-press-event', self.on_button_press_event)
        self.cont.add(link)
        self.cont.add(Gtk.LinkButton(label="This"))
        self.cont.add(Gtk.LinkButton(label="Advance"))

        self.add(self.cont)

        # signals
        model.connect('model-changed', self.on_model_changed)
コード例 #4
0
    def old_do_size_request(self, requisition):  # TODO - FIX this behavior
        model = self.get_model()
        wraps = model.get_wraps()
        if not any(wraps):
            return InsertedObjectWidget.do_size_request(self, requisition)

        # Negotiate how to wrap ..
        for col in self.treeview.get_columns():
            cr = col.get_cell_renderers()[0]
            cr.set_property('wrap-width', -1)  # reset size

            #~ col.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)  # allow column shrinks
            #~ col.set_max_width(0)	 # shrink column
            #~ col.set_max_width(-1)  # reset value
            #~ col.set_sizing(Gtk.TreeViewColumnSizing.GROW_ONLY)  # reset value

        InsertedObjectWidget.do_size_request(self, requisition)

        #~ print("Widget requests: %i textview: %i" % (requisition.width, self._textview_width))
        if requisition.width > self._textview_width:
            # Figure out width of fixed cols
            fixed = 0
            for col, wrap in zip(self.treeview.get_columns(), wraps):
                if not wrap:
                    fixed += col.get_width()

            nwrap = sum(wraps)
            wrap_size = (self._textview_width - fixed) // nwrap

            # Set width for wrappable cols
            #~ print("Fixed, nwrap, wrap_size", (fixed, nwrap, wrap_size))
            for col, wrap in zip(self.treeview.get_columns(), wraps):
                if wrap:
                    cr = col.get_cell_renderers()[0]
                    cr.set_property('wrap-width', wrap_size)  # reset size

            # Update request
            InsertedObjectWidget.do_size_request(self, requisition)
        else:
            pass