Example #1
0
	def __init__(self, extension, opener, preferences):
		gtk.HBox.__init__(self)
		self.extension = extension # XXX
		self.opener = opener
		self.uistate = extension.uistate
		self.preferences = preferences

		use_thumbs = self.preferences.setdefault('use_thumbnails', True) # Hidden setting
		self.iconview = FileBrowserIconView(opener, self.icon_size, use_thumbs)
		self.add(ScrolledWindow(self.iconview, shadow=gtk.SHADOW_NONE))

		self.buttonbox = gtk.VBox()
		self.pack_end(self.buttonbox, False)

		open_folder_button = IconButton(gtk.STOCK_OPEN, relief=False)
		open_folder_button.connect('clicked', self.on_open_folder)
		self.buttonbox.pack_start(open_folder_button, False)

		refresh_button = IconButton(gtk.STOCK_REFRESH, relief=False)
		refresh_button.connect('clicked', lambda o: self.on_refresh_button())
		self.buttonbox.pack_start(refresh_button, False)

		zoomin = IconButton(gtk.STOCK_ZOOM_IN, relief=False)
		zoomout = IconButton(gtk.STOCK_ZOOM_OUT, relief=False)
		zoomin.connect('clicked', lambda o: self.on_zoom_in())
		zoomout.connect('clicked', lambda o: self.on_zoom_out())
		self.buttonbox.pack_end(zoomout, False)
		self.buttonbox.pack_end(zoomin, False)
		self.zoomin_button = zoomin
		self.zoomout_button = zoomout

		self.set_icon_size(self.icon_size)

		self.iconview.connect('folder-changed', lambda o: self.extension._refresh_statusbar())
    def __init__(self, parent):
        Dialog.__init__(self,
                        parent,
                        _('Custom Tools'),
                        buttons=Gtk.ButtonsType.CLOSE)  # T: Dialog title
        self.set_help(':Help:Custom Tools')
        self.manager = CustomToolManager()

        self.add_help_text(
            _('You can configure custom tools that will appear\n'
              'in the tool menu and in the tool bar or context menus.')
        )  # T: help text in "Custom Tools" dialog

        hbox = Gtk.HBox(spacing=5)
        self.vbox.pack_start(hbox, True, True, 0)

        self.listview = CustomToolList(self.manager)
        hbox.pack_start(self.listview, True, True, 0)

        vbox = Gtk.VBox(spacing=5)
        hbox.pack_start(vbox, False, True, 0)

        for stock, handler, data in (
            (Gtk.STOCK_ADD, self.__class__.on_add, None),
            (Gtk.STOCK_EDIT, self.__class__.on_edit, None),
            (Gtk.STOCK_DELETE, self.__class__.on_delete, None),
            (Gtk.STOCK_GO_UP, self.__class__.on_move, -1),
            (Gtk.STOCK_GO_DOWN, self.__class__.on_move, 1),
        ):
            button = IconButton(stock)  # TODO tooltips for icon button
            if data:
                button.connect_object('clicked', handler, self, data)
            else:
                button.connect_object('clicked', handler, self)
            vbox.pack_start(button, False, True, 0)
Example #3
0
    def _button_box(self):
        '''
		Panel which includes buttons for manipulating the current treeview:
		- add / delete
		- move up / move down row
		:return: vbox-panel
		'''
        vbox = Gtk.VBox(spacing=5)
        for stock, handler, data, tooltip in (
            (Gtk.STOCK_ADD, self.on_add_new_column, None,
             _('Add column')),  # T: hoover tooltip
            (Gtk.STOCK_DELETE, self.on_delete_column, None,
             _('Remove column')),  # T: hoover tooltip
            (Gtk.STOCK_GO_UP, self.on_move_column, -1,
             _('Move column ahead')),  # T: hoover tooltip
            (Gtk.STOCK_GO_DOWN, self.on_move_column, 1,
             _('Move column backward')),  # T: hoover tooltip
        ):
            button = IconButton(stock)
            if data:
                button.connect('clicked', handler, data)
            else:
                button.connect('clicked', handler)
            button.set_tooltip_text(tooltip)
            vbox.pack_start(button, False, True, 0)

        vbox.show_all()
        return vbox
Example #4
0
    def __init__(self, parent, linkmap, navigation):
        Dialog.__init__(self,
                        parent,
                        'LinkMap',
                        defaultwindowsize=(400, 400),
                        buttons=Gtk.ButtonsType.CLOSE)
        self.linkmap = linkmap
        self.navigation = navigation

        hbox = Gtk.HBox(spacing=5)
        self.vbox.pack_start(hbox, True, True, 0)

        self.xdotview = xdot.DotWidget()
        self.xdotview.set_filter('fdp')
        self.xdotview.set_dotcode(linkmap.get_dotcode())
        self.xdotview.connect('clicked', self.on_node_clicked)
        hbox.add(self.xdotview)

        vbox = Gtk.VBox()
        hbox.pack_start(vbox, False, False, 0)
        for stock, method in (
            (Gtk.STOCK_ZOOM_IN, self.xdotview.on_zoom_in),
            (Gtk.STOCK_ZOOM_OUT, self.xdotview.on_zoom_out),
            (Gtk.STOCK_ZOOM_FIT, self.xdotview.on_zoom_fit),
            (Gtk.STOCK_ZOOM_100, self.xdotview.on_zoom_100),
        ):
            button = IconButton(stock)
            button.connect('clicked', method)
            vbox.pack_start(button, False, True, 0)
Example #5
0
    def __init__(self, ui, linkmap, opener):
        Dialog.__init__(self,
                        ui,
                        'LinkMap',
                        defaultwindowsize=(400, 400),
                        buttons=gtk.BUTTONS_CLOSE)
        self.linkmap = linkmap
        self.opener = opener

        hbox = gtk.HBox(spacing=5)
        self.vbox.add(hbox)

        self.xdotview = xdot.DotWidget()
        self.xdotview.set_filter('fdp')
        self.xdotview.set_dotcode(linkmap.get_dotcode())
        self.xdotview.connect('clicked', self.on_node_clicked)
        hbox.add(self.xdotview)

        vbox = gtk.VBox()
        hbox.pack_start(vbox, False)
        for stock, method in (
            (gtk.STOCK_ZOOM_IN, self.xdotview.on_zoom_in),
            (gtk.STOCK_ZOOM_OUT, self.xdotview.on_zoom_out),
            (gtk.STOCK_ZOOM_FIT, self.xdotview.on_zoom_fit),
            (gtk.STOCK_ZOOM_100, self.xdotview.on_zoom_100),
        ):
            button = IconButton(stock)
            button.connect('clicked', method)
            vbox.pack_start(button, False)
Example #6
0
    def __init__(self, parent, callback=None):
        Dialog.__init__(self, parent, _('Open Notebook'))  # T: dialog title
        # TODO set button to "OPEN" instead of "OK"
        self.callback = callback
        self.set_default_size(500, 400)
        self.set_help(':Help:Notebooks')

        # show some art work in an otherwise boring dialog
        path = data_file('globe_banner_small.png').path
        image = Gtk.Image()
        image.set_from_file(path)  # new_from_file not in 2.6
        align = Gtk.Alignment.new(0, 0.5, 0, 0)
        align.add(image)
        self.vbox.pack_start(align, False, True, 0)

        # split between treeview and vbuttonbox
        hbox = Gtk.HBox(spacing=12)
        self.vbox.pack_start(hbox, True, True, 0)

        # add notebook list - open notebook on clicking a row
        self.treeview = NotebookTreeView()
        self.treeview.connect('row-activated',
                              lambda *a: self.response(Gtk.ResponseType.OK))

        hbox.add(ScrolledWindow(self.treeview))

        # add buttons for modifying the treeview
        vbbox = Gtk.VButtonBox()
        vbbox.set_layout(Gtk.ButtonBoxStyle.START)
        hbox.pack_start(vbbox, False, True, 0)
        add_button = Gtk.Button.new_with_mnemonic(_('_Add'))  # T: Button label
        add_button.connect('clicked', self.do_add_notebook)
        #~ edit_button = Gtk.Button.new_with_mnemonic(_('_Edit')) # T: Button label
        #~ edit_button.connect('clicked', self.do_edit_notebook)
        rm_button = Gtk.Button.new_with_mnemonic(
            _('_Remove'))  # T: Button label
        rm_button.connect('clicked', self.do_remove_notebook)
        #~ for b in (add_button, edit_button, rm_button):
        for b in (add_button, rm_button):
            b.set_alignment(0.0, 0.5)
            vbbox.add(b)
        # FIXME buttons for "up" and "down" ?

        # add dropdown to select default
        self.combobox = DefaultNotebookComboBox(self.treeview.get_model())

        # clear button de-selects any item in the combobox
        clear_button = IconButton('gtk-clear')
        clear_button.connect('clicked', lambda o: self.combobox.set_active(-1))

        hbox = Gtk.HBox(spacing=5)
        hbox.pack_start(Gtk.Label(_('Default notebook') + ': '), False, True,
                        0)
        # T: Input label in 'open notebook' dialog
        hbox.pack_start(self.combobox, False, True, 0)
        hbox.pack_start(clear_button, False, True, 0)
        self.vbox.pack_start(hbox, False, True, 0)
Example #7
0
    def __init__(self, extension, opener, preferences):
        GObject.GObject.__init__(self)
        self.extension = extension  # XXX
        self.opener = opener
        self.uistate = extension.uistate
        self.preferences = preferences
        self._close_button = None

        self.iconview = FileBrowserIconView(opener, self.icon_size)
        self.add(ScrolledWindow(self.iconview, shadow=Gtk.ShadowType.NONE))

        self.on_preferences_changed()
        self.preferences.connect('changed', self.on_preferences_changed)

        self.buttonbox = Gtk.VBox()
        self.pack_end(self.buttonbox, False, True, 0)

        open_folder_button = IconButton(Gtk.STOCK_OPEN, relief=False)
        open_folder_button.connect('clicked', self.on_open_folder)
        self.buttonbox.pack_start(open_folder_button, False, True, 0)

        refresh_button = IconButton(Gtk.STOCK_REFRESH, relief=False)
        refresh_button.connect('clicked', lambda o: self.on_refresh_button())
        self.buttonbox.pack_start(refresh_button, False, True, 0)

        zoomin = IconButton(Gtk.STOCK_ZOOM_IN, relief=False)
        zoomout = IconButton(Gtk.STOCK_ZOOM_OUT, relief=False)
        zoomin.connect('clicked', lambda o: self.on_zoom_in())
        zoomout.connect('clicked', lambda o: self.on_zoom_out())
        self.buttonbox.pack_end(zoomout, False, True, 0)
        self.buttonbox.pack_end(zoomin, False, True, 0)
        self.zoomin_button = zoomin
        self.zoomout_button = zoomout

        self.set_icon_size(self.icon_size)

        self.iconview.connect('folder-changed', lambda o: self.update_title())
Example #8
0
    def __init__(self, plugin, window, uistate):
        GObject.GObject.__init__(self)
        self.plugin = plugin
        self.preferences = plugin.preferences
        self.window = window
        self.uistate = uistate
        self._close_button = None

        self.terminalview = ZimTerminal()
        self.terminalview.connect("key-press-event", self.on_key_press_event)
        self.terminalview.spawn_sync(
            Vte.PtyFlags.DEFAULT,
            os.environ['HOME'],
            [self.command_interpreter],
            [],
            GLib.SpawnFlags.DO_NOT_REAP_CHILD,
            None,
            None,
        )

        self.add(ScrolledWindow(self.terminalview, shadow=Gtk.ShadowType.NONE))

        self.on_preferences_changed()
        self.preferences.connect('changed', self.on_preferences_changed)

        self.buttonbox = Gtk.VBox()
        self.pack_end(self.buttonbox, False, True, 0)

        properties_button = IconButton(Gtk.STOCK_PROPERTIES, relief=False)
        properties_button.connect('clicked',
                                  lambda o: self.on_properties_button())
        self.buttonbox.pack_start(properties_button, False, True, 0)

        change_path_button = IconButton(Gtk.STOCK_REFRESH, relief=False)
        change_path_button.connect('clicked',
                                   lambda o: self.on_change_path_button())
        self.buttonbox.pack_start(change_path_button, False, True, 0)
Example #9
0
    def __init__(self, notebookinfo=None, port=8080, public=True, **opts):
        '''Constructor
		@param notebookinfo: the notebook location
		@param port: the http port to serve on
		@param public: allow connections to the server from other
		computers - if C{False} can only connect from localhost
		@param opts: options for L{WWWInterface.__init__()}
		'''
        gtk.Window.__init__(self)
        self.set_title('Zim - ' + _('Web Server'))  # T: Window title
        self.set_border_width(10)
        self.connect('destroy', lambda a: gtk.main_quit())
        self.interface_opts = opts
        self.httpd = None
        self._source_id = None

        # Widgets
        self.status_label = gtk.Label()
        self.status_label.set_markup('<i>' + _('Server not started') + '</i>')
        # T: Status in web server gui
        self.start_button = IconButton('gtk-media-play')
        self.start_button.connect('clicked', lambda o: self.start())
        self.stop_button = IconButton('gtk-media-stop')
        self.stop_button.connect('clicked', lambda o: self.stop())
        self.stop_button.set_sensitive(False)

        if gtk.gtk_version >= (2, 10):
            self.link_button = gtk.LinkButton('')
            self.link_button.set_sensitive(False)
            gtk.link_button_set_uri_hook(lambda o, url: webbrowser.open(url))
        else:
            self.link_button = None

        self.notebookcombobox = NotebookComboBox(current=notebookinfo)
        self.open_button = IconButton('gtk-index')
        self.open_button.connect('clicked',
                                 lambda *a: NotebookDialog(self).run())

        self.portentry = gtk.SpinButton()
        self.portentry.set_numeric(True)
        self.portentry.set_range(80, 10000)
        self.portentry.set_increments(1, 80)
        self.portentry.set_value(port)

        self.public_checkbox = gtk.CheckButton(label=_('Allow public access'))
        # T: Checkbox in web server gui
        self.public_checkbox.set_active(public)

        # Build the interface
        vbox = gtk.VBox()
        self.add(vbox)

        hbox = gtk.HBox(spacing=12)
        hbox.pack_start(self.start_button, False)
        hbox.pack_start(self.stop_button, False)
        hbox.pack_start(self.status_label, False)
        vbox.add(hbox)

        table = input_table_factory((
            (_('Notebook'), self.notebookcombobox, self.open_button),
            # T: Field in web server gui
            (_('Port'), self.portentry),
            # T: Field in web server gui for HTTP port (e.g. port 80)
            self.public_checkbox))
        vbox.add(table)

        if self.link_button:
            hbox = gtk.HBox()
            hbox.pack_end(self.link_button, False)
            vbox.add(hbox)
Example #10
0
    def __init__(self, extension, opener, preferences):
        gtk.HBox.__init__(self)
        self.page = None  # XXX
        self.extension = extension  # XXX
        self.opener = opener
        self.uistate = extension.uistate
        self.preferences = preferences
        self.dir = None
        self._active = True

        self.thumbman = ThumbnailManager(preferences)
        self.thumbman.connect('thumbnail-ready', self.on_thumbnail_ready)

        self.fileview = gtk.IconView()

        self.store = gtk.ListStore(str,
                                   gtk.gdk.Pixbuf)  # BASENAME_COL, PIXBUF_COL

        self.fileview = gtk.IconView(self.store)
        self.fileview.set_text_column(BASENAME_COL)
        self.fileview.set_pixbuf_column(PIXBUF_COL)

        self.fileview.enable_model_drag_source(
            gtk.gdk.BUTTON1_MASK, URI_TARGETS,
            gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
        self.fileview.enable_model_drag_dest(
            URI_TARGETS, gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
        self.fileview.connect('drag-data-get', self.on_drag_data_get)
        self.fileview.connect('drag-data-received', self.on_drag_data_received)

        self.add(ScrolledWindow(self.fileview))

        self.buttonbox = gtk.VBox()
        self.pack_end(self.buttonbox, False)

        open_folder_button = IconButton(gtk.STOCK_OPEN, relief=False)
        open_folder_button.connect('clicked', self.on_open_folder)
        self.buttonbox.pack_start(open_folder_button, False)

        refresh_button = IconButton(gtk.STOCK_REFRESH, relief=False)
        refresh_button.connect('clicked', lambda o: self.on_refresh_button())
        self.buttonbox.pack_start(refresh_button, False)

        zoomin = IconButton(gtk.STOCK_ZOOM_IN, relief=False)
        zoomout = IconButton(gtk.STOCK_ZOOM_OUT, relief=False)
        zoomin.connect('clicked', lambda o: self.zoom_in())
        zoomout.connect('clicked', lambda o: self.zoom_out())
        self.buttonbox.pack_end(zoomout, False)
        self.buttonbox.pack_end(zoomin, False)
        self.fileview.connect('button-press-event', self.on_button_press_event)
        self.fileview.connect('item-activated', self.on_item_activated)
        self.zoomin_button = zoomin
        self.zoomout_button = zoomout

        if gtk.gtk_version >= (2, 12) \
        and gtk.pygtk_version >= (2, 12):
            # custom tooltip
            self.fileview.props.has_tooltip = True
            self.fileview.connect("query-tooltip",
                                  self.query_tooltip_icon_view_cb)

        # Store colors
        self._senstive_color = None
        self._insenstive_color = None

        def _init_base_color(*a):
            # This is handled on expose event, because style does not
            # yet reflect theming on construction
            if self._senstive_color is None:
                self._senstive_color = self.fileview.style.base[
                    gtk.STATE_NORMAL]
                self._insenstive_color = self.fileview.style.base[
                    gtk.STATE_INSENSITIVE]

            self._update_state()

        self.connect('expose-event', _init_base_color)
Example #11
0
    def __init__(self, notebookinfo=None, port=8080, public=True, **opts):
        '''Constructor
		@param notebookinfo: the notebook location
		@param port: the http port to serve on
		@param public: allow connections to the server from other
		computers - if C{False} can only connect from localhost
		@param opts: options for L{WWWInterface.__init__()}
		'''
        GObject.GObject.__init__(self)
        self.set_title('Zim - ' + _('Web Server'))  # T: Window title
        self.set_border_width(10)
        self.interface_opts = opts
        self.httpd = None
        self._source_id = None

        # Widgets
        self.status_label = Gtk.Label()
        self.status_label.set_markup('<i>' + _('Server not started') + '</i>')
        # T: Status in web server gui
        self.start_button = IconButton('gtk-media-play')
        self.start_button.connect('clicked', lambda o: self.start())
        self.stop_button = IconButton('gtk-media-stop')
        self.stop_button.connect('clicked', lambda o: self.stop())
        self.stop_button.set_sensitive(False)

        self.link_button = Gtk.LinkButton('')
        self.link_button.set_sensitive(False)

        self.notebookcombobox = NotebookComboBox(current=notebookinfo)
        self.open_button = IconButton('gtk-index')
        self.open_button.connect('clicked',
                                 lambda *a: NotebookDialog(self).run())

        self.portentry = Gtk.SpinButton()
        self.portentry.set_numeric(True)
        self.portentry.set_range(80, 10000)
        self.portentry.set_increments(1, 80)
        self.portentry.set_value(port)

        self.public_checkbox = Gtk.CheckButton.new_with_mnemonic(
            _('Allow public access'))
        # T: Checkbox in web server gui
        self.public_checkbox.set_active(public)

        self.templatecombobox = Gtk.ComboBoxText.new()
        template_names = [name for name, _ in list_templates('html')]
        for name in template_names:
            self.templatecombobox.append_text(name)
        self.templatecombobox.set_active(template_names.index('Default'))

        self.auth_checkbox = Gtk.CheckButton.new_with_mnemonic(
            _('Require authentication'))
        # T: checkbox in dialog for starting webserver
        self.username_input = InputEntry()
        self.password_input = InputEntry()
        self.password_input.set_visibility(False)

        # Build the interface
        vbox = Gtk.VBox()
        self.add(vbox)

        hbox = Gtk.HBox(spacing=12)
        hbox.pack_start(self.start_button, False, True, 0)
        hbox.pack_start(self.stop_button, False, True, 0)
        hbox.pack_start(self.status_label, False, True, 0)
        vbox.pack_start(hbox, False, False, 0)

        table = input_table_factory((
            (_('Notebook'), self.notebookcombobox, self.open_button),
            # T: Field in web server gui
            (_('Port'), self.portentry),
            # T: Field in web server gui for HTTP port (e.g. port 80)
            (_('Template'), self.templatecombobox),
            # T: Field in web server gui for webpage template
            self.public_checkbox,
            self.auth_checkbox,
            (_('Username'), self.username_input),
            # T: Field in web server gui
            (_('Password'), self.password_input)
            # T: Field in web server gui
        ))
        vbox.pack_start(table, False, False, 0)

        if self.link_button:
            hbox = Gtk.HBox()
            hbox.pack_end(self.link_button, False, True, 0)
            vbox.pack_start(hbox, False, False, 0)