Ejemplo n.º 1
0
 def create_themes_page (self):
     """Create the "Themes"-tab."""
     self.page_themes = gtk.VBox(spacing=5)
     self.page_themes.set_border_width(10)
     # create info-text list
     txt = gtk.Label(_('Themes allow you to easily switch the appearance of your Screenlets. On this page you find a list of all available themes for this Screenlet.'))
     txt.set_size_request(450, -1)
     txt.set_line_wrap(True)
     txt.set_alignment(0.0, 0.0)
     txt.show()
     self.page_themes.pack_start(txt, False, True)
     # create theme-selector list
     self.tree.set_headers_visible(False)
     self.tree.connect('cursor-changed', self.__tree_cursor_changed)
     self.tree.show()
     col = gtk.TreeViewColumn('')
     cell = gtk.CellRendererText()
     col.pack_start(cell, True)
     #cell.set_property('foreground', 'black')
     col.set_cell_data_func(cell, self.__render_cell)
     self.tree.append_column(col)
     # wrap tree in scrollwin
     sw = gtk.ScrolledWindow()
     sw.set_shadow_type(gtk.SHADOW_IN)
     sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
     sw.add(self.tree)
     sw.show()
     # add vbox and add tree/buttons
     vbox = gtk.VBox()
     vbox.pack_start(sw, True, True)
     vbox.show()
     # show/add page
     self.page_themes.add(vbox)
     self.page_themes.show()
     self.main_notebook.append_page(self.page_themes, gtk.Label(_('Themes ')))
Ejemplo n.º 2
0
 def generate_widget(self, option, value):
     """Generate the required widgets and add the label."""
     widget = option.generate_widget(value)
     hbox = gtk.HBox()
     label = gtk.Label()
     label.set_alignment(0.0, 0.0)
     label.set_label(option.label)
     label.set_size_request(180, 28)
     label.show()
     hbox.pack_start(label, 0, 1)
     if widget:
         if option.disabled:
             widget.set_sensitive(False)
             label.set_sensitive(False)
         widget.set_tooltip_text(option.desc)
         widget.show()
         # check if needs Apply-button
         if option.realtime == False:
             but = gtk.Button(_('Apply'), gtk.STOCK_APPLY)
             but.show()
             but.connect("clicked", option.has_changed)
             b = gtk.HBox()
             b.show()
             b.pack_start(widget, 0, 0)
             b.pack_start(but, 0, 0)
             hbox.pack_start(b, 0, 0)
         else:
             hbox.pack_start(widget, 0, 0)
     return hbox
Ejemplo n.º 3
0
 def __init__ (self, width, height):
     # call gtk.Dialog.__init__
     super(OptionsDialog, self).__init__(
         _("Edit Options"), flags=gtk.DIALOG_DESTROY_WITH_PARENT |
         gtk.DIALOG_NO_SEPARATOR,
         buttons = (#gtk.STOCK_REVERT_TO_SAVED, gtk.RESPONSE_APPLY,
             gtk.STOCK_CLOSE, gtk.RESPONSE_OK))
     # set size
     self.resize(width, height)
     self.set_keep_above(True)    # to avoid confusion
     self.set_border_width(10)
     # create attribs
     self.page_about   = None
     self.page_options = None
     self.page_themes  = None
     self.vbox_editor  = None
     self.hbox_about   = None
     self.infotext     = None
     self.infoicon     = None
     # create theme-list
     self.liststore    = gtk.ListStore(object)
     self.tree         = gtk.TreeView(model=self.liststore)
     # create/add outer notebook
     self.main_notebook = gtk.Notebook()
     self.main_notebook.show()
     self.vbox.add(self.main_notebook)
     # create/init notebook pages
     self.create_about_page()
     self.create_themes_page()
     self.create_options_page()
Ejemplo n.º 4
0
    def on_import(self, strvalue):
        """When a integer is imported from the config."""
        try:
            if strvalue[0]=='-':
                return int(float(strvalue[1:])) * -1
            return int(float(strvalue))
        except:
            sys.stderr.write(_("Error during on_import - option: %s.\n") % self.name)
            return 0

        return int(strvalue)
Ejemplo n.º 5
0
 def create_options_page (self):
     """Create the "Options"-tab."""
     self.page_options = gtk.HBox()
     # create vbox for options-editor
     self.vbox_editor    = gtk.VBox(spacing=3)
     self.vbox_editor.set_border_width(5)
     self.vbox_editor.show()
     self.page_options.add(self.vbox_editor)
     # show/add page
     self.page_options.show()
     self.main_notebook.append_page(self.page_options, gtk.Label(_('Options ')))
Ejemplo n.º 6
0
    def on_import(self, strvalue):
        """When a integer is imported from the config."""
        try:
            if strvalue[0] == '-':
                return int(float(strvalue[1:])) * -1
            return int(float(strvalue))
        except:
            sys.stderr.write(
                _("Error during on_import - option: %s.\n") % self.name)
            return 0

        return int(strvalue)
Ejemplo n.º 7
0
    def generate_widget(self, value):
        """Generate a textbox for a account options"""
        self.widget = gtk.HBox()
        vb = gtk.VBox()
        input_name = gtk.Entry()
        input_name.set_text(value[0])
        input_name.show()
        input_pass = gtk.Entry()
        input_pass.set_visibility(False)    # password
        input_pass.set_text(value[1])
        input_pass.show()
	but = gtk.Button(_('Apply'), gtk.STOCK_APPLY)
	but.show()
	but.connect("clicked", self.has_changed)
        vb.add(input_name)
        vb.add(input_pass)
        vb.show()
        but.set_tooltip_text(_('Apply username/password ...'))
        input_name.set_tooltip_text(_('Enter username here ...'))
        input_pass.set_tooltip_text(_('Enter password here ...'))
        self.widget.add(vb)
        self.widget.add(but)
        return self.widget
Ejemplo n.º 8
0
 def generate_widget(self, value):
     """Generate some widgets for a list."""
     self._entry = gtk.Entry()
     self._entry.set_editable(False)
     self.set_value(value)
     self._entry.show()
     img = gtk.Image()
     img.set_from_stock(gtk.STOCK_EDIT, 1)
     but = gtk.Button()
     but.set_image(img)
     but.show()
     but.connect("clicked", self.open_listeditor)
     but.set_tooltip_text(_('Open List-Editor ...'))
     self._entry.set_tooltip_text(self.desc)
     self.widget = gtk.HBox()
     self.widget.add(self._entry)
     self.widget.add(but)
     return self.widget
Ejemplo n.º 9
0
 def generate_widget(self, value):
     """Generate some widgets for a list."""
     self._entry = gtk.Entry()
     self._entry.set_editable(False)
     self.set_value(value)
     self._entry.show()
     img = gtk.Image()
     img.set_from_stock(gtk.STOCK_EDIT, 1)
     but = gtk.Button()
     but.set_image(img)
     but.show()
     but.connect("clicked", self.open_listeditor)
     but.set_tooltip_text(_('Open List-Editor ...'))
     self._entry.set_tooltip_text(self.desc)
     self.widget = gtk.HBox()
     self.widget.add(self._entry)
     self.widget.add(but)
     return self.widget
Ejemplo n.º 10
0
 def generate_widget(self, value):
     """Crazy image opener widget generation."""
     # create entry and button (entry is hidden)
     self._entry = gtk.Entry()
     self._entry.set_text(value)
     self._entry.set_editable(False)
     but = gtk.Button()
     # load preview image
     but.set_image(self.create_preview(value))
     but.connect('clicked', self.but_callback)
     # create widget
     self.widget = gtk.HBox()
     self.widget.add(self._entry)
     self.widget.add(but)
     but.show()
     self.widget.show()
     # add tooltips
     but.set_tooltip_text(_('Select Image ...'))
     but.set_tooltip_text(self.desc)
     return self.widget
Ejemplo n.º 11
0
 def generate_widget(self, value):
     """Crazy image opener widget generation."""
     # create entry and button (entry is hidden)
     self._entry = gtk.Entry()
     self._entry.set_text(value)
     self._entry.set_editable(False)
     but = gtk.Button()
     # load preview image
     but.set_image(self.create_preview(value))
     but.connect('clicked', self.but_callback)
     # create widget
     self.widget = gtk.HBox()
     self.widget.add(self._entry)
     self.widget.add(but)
     but.show()
     self.widget.show()
     # add tooltips
     but.set_tooltip_text(_('Select Image ...'))
     but.set_tooltip_text(self.desc)
     return self.widget
Ejemplo n.º 12
0
 def create_about_page (self):
     """Create the "About"-tab."""
     self.page_about = gtk.HBox()
     # create about box
     self.hbox_about = gtk.HBox()
     self.hbox_about.show()
     self.page_about.add(self.hbox_about)
     # create icon
     self.infoicon = gtk.Image()
     self.infoicon.show()
     self.page_about.pack_start(self.infoicon, 0, 1, 10)
     # create infotext
     self.infotext = gtk.Label()
     self.infotext.use_markup = True
     self.infotext.set_line_wrap(True)
     self.infotext.set_alignment(0.0, 0.0)
     self.infotext.show()
     self.page_about.pack_start(self.infotext, 1, 1, 5)
     # add page
     self.page_about.show()
     self.main_notebook.append_page(self.page_about, gtk.Label(_('About ')))
Ejemplo n.º 13
0
    def __render_cell(self, tvcolumn, cell, model, iter):
        """Callback for rendering the cells in the theme-treeview."""
        # get attributes-list from Treemodel
        attrib = model.get_value(iter, 0)

        # set colors depending on state
        col = '555555'
        name_uc = attrib[0][0].upper() + attrib[0][1:]
        # create markup depending on info
        if attrib[1] == '-' and attrib[2] == '-':
            mu = '<b><span weight="ultrabold" size="large">' + name_uc + \
            '</span></b> (' + _('no info available') + ')'
        else:
            if attrib[1] == None : attrib[1] = '-'
            if attrib[2] == None : attrib[2] = '-'
            if attrib[3] == None : attrib[3] = '-'
            if attrib[4] == None : attrib[4] = '-'
            mu = '<b><span weight="ultrabold" size="large">' + name_uc + \
                '</span></b> v' + attrib[4] + '\n<small><span color="#555555' +\
                '">' + attrib[2].replace('\\n', '\n') + \
                '</span></small>\n<i><small>by '+str(attrib[3])+'</small></i>'
        # set markup
        cell.set_property('markup', mu)
Ejemplo n.º 14
0
class DirectoryOption(FileOption):
    """Directory is based on file widgets"""
    _gtk_file_mode = gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER
    _opener_title = _("Choose Directory")
Ejemplo n.º 15
0
class FileOption(Option):
    """
    An Option-subclass for string-values that contain filenames. Adds
    a patterns-attribute that can contain a list of patterns to be shown
    in the assigned file selection dialog. The show_pixmaps-attribute
    can be set to True to make the filedialog show all image-types.
    supported by gtk.Pixmap. If the directory-attributue is true, the
    dialog will ony allow directories.

    XXX - Some of this doen't yet work, unknown reason.
    """
    patterns = [('All Files', ['*'])]
    image = False
    _gtk_file_mode = gtk.FILE_CHOOSER_ACTION_OPEN
    _opener_title = _("Choose File")

    def on_import(self, strvalue):
        """When a file is imported from the config."""
        return strvalue

    def on_export(self, value):
        """When a file is exported to the config."""
        return str(value)

    def generate_widget(self, value):
        """Generate a special widget for file options"""
        dlg = self.generate_file_opener()
        self.widget = gtk.FileChooserButton(dlg)
        self.widget.set_title(self._opener_title)
        self.widget.set_size_request(180, 28)
        self.set_value(value)
        if self.realtime:
            self.widget.connect("selection-changed", self.has_changed)
        return self.widget

    def generate_file_opener(self):
        """Generate a file opener widget"""
        dlg = gtk.FileChooserDialog(
            action=self._gtk_file_mode,
            buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN,
                     gtk.RESPONSE_OK),
        )
        dlg.set_keep_above(True)
        self.set_filters(dlg)
        return dlg

    def set_filters(self, dlg):
        """Add file filters to the dialog widget"""
        if self.patterns:
            for filter in self.patterns:
                fil = gtk.FileFilter()
                fil.set_name("%s (%s)" % (filter[0], ','.join(filter[1])))
                for pattern in filter[1]:
                    fil.add_pattern(pattern)
                dlg.add_filter(fil)

    def set_value(self, value):
        """Set the file value as required."""
        self.widget.set_filename(value)
        self.value = value

    def has_changed(self, widget):
        """Executed when the widget event kicks off."""
        self.value = self.widget.get_filename()
        super(FileOption, self).has_changed()
Ejemplo n.º 16
0
class ImageOption(FileOption):
    """Image is based on file widgets"""
    _opener_title = _("Choose Image")

    def set_filters(self, dlg):
        """Add the standard pixbug formats"""
        flt = gtk.FileFilter()
        flt.add_pixbuf_formats()
        dlg.set_filter(flt)

    def generate_widget(self, value):
        """Crazy image opener widget generation."""
        # create entry and button (entry is hidden)
        self._entry = gtk.Entry()
        self._entry.set_text(value)
        self._entry.set_editable(False)
        but = gtk.Button()
        # load preview image
        but.set_image(self.create_preview(value))
        but.connect('clicked', self.but_callback)
        # create widget
        self.widget = gtk.HBox()
        self.widget.add(self._entry)
        self.widget.add(but)
        but.show()
        self.widget.show()
        # add tooltips
        but.set_tooltip_text(_('Select Image ...'))
        but.set_tooltip_text(self.desc)
        return self.widget

    def create_preview(self, filename):
        """Utililty method to reload preview image"""
        if filename and os.path.isfile(filename):
            pb = gtk.gdk.pixbuf_new_from_file_at_size(filename, 64, -1)
            if pb:
                img = gtk.Image()
                img.set_from_pixbuf(pb)
                return img
        img = gtk.image_new_from_stock(gtk.STOCK_MISSING_IMAGE,
                                       gtk.ICON_SIZE_LARGE_TOOLBAR)
        img.set_size_request(64, 64)
        return img

    def but_callback(self, widget):
        """Create button"""
        dlg = gtk.FileChooserDialog(buttons=(gtk.STOCK_CANCEL,
                                             gtk.RESPONSE_CANCEL,
                                             gtk.STOCK_OPEN, gtk.RESPONSE_OK))
        dlg.set_keep_above(True)
        dlg.set_filename(self._entry.get_text())
        prev = gtk.Image()
        box = gtk.VBox()
        box.set_size_request(150, -1)
        box.add(prev)
        prev.show()
        dlg.set_preview_widget_active(True)
        dlg.connect('selection-changed', self.preview_callback, dlg, prev)
        dlg.set_preview_widget(box)
        response = dlg.run()
        if response == gtk.RESPONSE_OK:
            fn = dlg.get_filename()
            if not fn: fn = ""
            self._entry.set_text(fn)
            widget.set_image(self.create_preview(dlg.get_filename()))
            self.has_changed(self.widget)
        dlg.destroy()

    def preview_callback(self, widget, dlg, prev):
        """add preview widget to filechooser"""
        fname = dlg.get_preview_filename()
        if fname and os.path.isfile(fname):
            pb = gtk.gdk.pixbuf_new_from_file_at_size(fname, 150, -1)
            if pb:
                prev.set_from_pixbuf(pb)
                dlg.set_preview_widget_active(True)
            else:
                dlg.set_preview_widget_active(False)

    def has_changed(self, widget):
        """Executed when the widget event kicks off."""
        self.value = self._entry.get_text()
        super(FileOption, self).has_changed()