def __init__(self): GObject.Object.__init__(self) self.configurator = FileorganizerConf() self.conf = configparser.RawConfigParser() self.configfile = RB.find_user_data_file(PLUGIN_PATH + CONFIGFILE) self.ui_file = RB.find_user_data_file(PLUGIN_PATH + UIFILE) self.shell = None self.rbdb = None self.action_group = None self.action = None self.source = None self.plugin_info = "fileorganizer"
def __init__(self, *args, **kwargs): GObject.Object.__init__(self) super(Fileorganizer, self).__init__(*args, **kwargs) self.configurator = FileorganizerConf() self.conf = configparser.RawConfigParser() self.configfile = RB.find_user_data_file(PLUGIN_PATH + CONFIGFILE) self.ui_file = RB.find_user_data_file(PLUGIN_PATH + UIFILE) self.shell = None self.rbdb = None self.action_group = None self.action = None self.source = None self.plugin_info = "fileorganizer"
def __init__(self, plugin, sprite_name, size=None): super(GenreConfiguredSpriteSheet, self).__init__(plugin, sprite_name, size) self.genre_alternate = {} # contains GenreType tuples self._alt_icons = {} self._sprite_name = sprite_name self._size = size popups = rb.find_plugin_file(plugin, 'img/popups.xml') root = ET.parse(open(popups)).getroot() self._parse_popups(plugin, root, self.GENRE_SYSTEM) try: self._user_popups = RB.find_user_data_file('plugins/coverart_browser/img/usericons/popups.xml') root = ET.parse(open(self._user_popups)).getroot() self._parse_popups(plugin, root, self.GENRE_USER) elem = root.xpath(self._sprite_name + '/index') curr_index = int(elem[0].text) for index in range(0, curr_index + 1): key = RB.ExtDBKey.create_lookup('icon', str(index)) icon_location = self._genre_db.lookup(key) sprite = GdkPixbuf.Pixbuf.new_from_file(icon_location) if self._size: sprite = sprite.scale_simple(self._size[0], self._size[1], GdkPixbuf.InterpType.BILINEAR) self._alt_icons[str(index)] = sprite self.names.append(str(index)) except: pass
def do_activate(self): ''' Plugin activation ''' shell = self.object if hasattr(shell.props, 'application'): # Newer Rhythmbox app = shell.props.application action = Gio.SimpleAction.new("leftfeet-generate", None) action.connect('activate', self.generate_action, shell) app.add_action(action) app.add_plugin_menu_item('tools', 'leftfeet-generate', Gio.MenuItem.new(label = _("Generate play queue"), detailed_action = 'app.leftfeet-generate')) else: # Rhythmbox 2.96 manager = shell.props.ui_manager action_group = Gtk.ActionGroup(name = 'LeftFeetActions') action = Gtk.Action(name = 'leftfeet-generate', label = _('Generate play queue'), tooltip = _('Generate a play queue with LeftFeet'), stock_id = None) action.connect('activate', self.generate_action, None, shell) action_group.add_action(action) manager.insert_action_group(action_group, 0) ui_id = manager.add_ui_from_string(ui_str) manager.ensure_update() shell.set_data('leftfeet', {'ui_id': ui_id, 'action_group': action_group}) self.settings = dbm.open(RB.find_user_data_file('leftfeet.db'), 'c')
def _check_configfile(self): """ Copy the default config template or load existing config file """ if not os.path.isfile(self.configfile): template = RB.find_user_data_file(PLUGIN_PATH + CONFIGTEMPLATE) folder = os.path.split(self.configfile)[0] if not os.path.exists(folder): os.makedirs(folder) shutil.copyfile(template, self.configfile)
def _check_configfile(self): self.configfile = RB.find_user_data_file(PLUGIN_PATH + CONFIG_FILE) if not os.path.isfile(self.configfile): template = rb.find_plugin_file(self, 'template/' + CONFIG_FILE) folder = os.path.split(self.configfile)[0] if not os.path.exists(folder): os.makedirs(folder) shutil.copyfile(template, self.configfile)
def __init__(self, plugin): super(Settings, self).__init__() # initialise the config parser self._config_file = RB.find_user_data_file(LastFMExtensionKeys.SETTINGS) self.read(self._config_file) # dictionary of observers for settings changes self._observers = {}
def __init__(self): GObject.Object.__init__(self) RB.BrowserSource.__init__(self, name=_('ampache-fm')) self.ampache = ampache.API() self.ampache.set_format('json') self.plugin_info = 'ampache-fm' self.conf = configparser.RawConfigParser() self.configfile = RB.find_user_data_file(PLUGIN_PATH + CONFIGFILE) self.ui_file = RB.find_user_data_file(PLUGIN_PATH + UIFILE) self.shell = None self.rbdb = None self.db = None self.player = None self.source = None self.queue = None self.app = None self.elapsed_changed_id = None self.spinner = None # fields for current track self.nowtime = None self.nowtitle = None self.nowartist = None self.nowalbum = None self.nowMBtitle = None self.nowMBartist = None self.nowMBalbum = None # Fields for the last saved track to check against self.lasttime = None # ampache details self.ampache_url = None self.ampache_user = None self.ampache_apikey = None self.ampache_password = None self.ampache_session = False
def _create_display_contents(self, plugin): print ("DEBUG - create_display_contents") # create the ui self._first_run = True cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) builder = Gtk.Builder() builder.set_translation_domain(cl.Locale.LOCALE_DOMAIN) builder.add_from_file(rb.find_plugin_file(plugin, 'ui/coverart_browser_prefs.ui')) self.launchpad_button = builder.get_object('show_launchpad') self.launchpad_label = builder.get_object('launchpad_label') builder.connect_signals(self) #. TRANSLATORS: Do not translate this string. translators = _('translator-credits') if translators != "translator-credits": self.launchpad_label.set_text(translators) else: self.launchpad_button.set_visible(False) gs = GSetting() # bind the toggles to the settings toggle_statusbar = builder.get_object('custom_statusbar_checkbox') self.settings.bind(gs.PluginKey.CUSTOM_STATUSBAR, toggle_statusbar, 'active', Gio.SettingsBindFlags.DEFAULT) toggle_text = builder.get_object('display_text_checkbox') self.settings.bind(gs.PluginKey.DISPLAY_TEXT, toggle_text, 'active', Gio.SettingsBindFlags.DEFAULT) box_text = builder.get_object('display_text_box') self.settings.bind(gs.PluginKey.DISPLAY_TEXT, box_text, 'sensitive', Gio.SettingsBindFlags.GET) self.display_text_pos = self.settings[gs.PluginKey.DISPLAY_TEXT_POS] self.display_text_under_radiobutton = builder.get_object('display_text_under_radiobutton') self.display_text_within_radiobutton = builder.get_object('display_text_within_radiobutton') if self.display_text_pos: self.display_text_under_radiobutton.set_active(True) else: self.display_text_within_radiobutton.set_active(True) random_scale = builder.get_object('random_adjustment') self.settings.bind(gs.PluginKey.RANDOM, random_scale, 'value', Gio.SettingsBindFlags.DEFAULT) toggle_text_ellipsize = builder.get_object( 'display_text_ellipsize_checkbox') self.settings.bind(gs.PluginKey.DISPLAY_TEXT_ELLIPSIZE, toggle_text_ellipsize, 'active', Gio.SettingsBindFlags.DEFAULT) box_text_ellipsize_length = builder.get_object( 'display_text_ellipsize_length_box') self.settings.bind(gs.PluginKey.DISPLAY_TEXT_ELLIPSIZE, box_text_ellipsize_length, 'sensitive', Gio.SettingsBindFlags.GET) spinner_text_ellipsize_length = builder.get_object( 'display_text_ellipsize_length_spin') self.settings.bind(gs.PluginKey.DISPLAY_TEXT_ELLIPSIZE_LENGTH, spinner_text_ellipsize_length, 'value', Gio.SettingsBindFlags.DEFAULT) spinner_font_size = builder.get_object( 'display_font_spin') self.settings.bind(gs.PluginKey.DISPLAY_FONT_SIZE, spinner_font_size, 'value', Gio.SettingsBindFlags.DEFAULT) cover_size_scale = builder.get_object('cover_size_adjustment') self.settings.bind(gs.PluginKey.COVER_SIZE, cover_size_scale, 'value', Gio.SettingsBindFlags.DEFAULT) add_shadow = builder.get_object('add_shadow_checkbox') self.settings.bind(gs.PluginKey.ADD_SHADOW, add_shadow, 'active', Gio.SettingsBindFlags.DEFAULT) rated_box = builder.get_object('rated_box') self.stars = ReactiveStar(size=StarSize.BIG) self.stars.connect('changed', self.rating_changed_callback) align = Gtk.Alignment.new(0.5, 0, 0, 0.1) align.add(self.stars) rated_box.add(align) self.stars.set_rating(self.settings[gs.PluginKey.RATING]) autostart = builder.get_object('autostart_checkbox') self.settings.bind(gs.PluginKey.AUTOSTART, autostart, 'active', Gio.SettingsBindFlags.DEFAULT) toolbar_pos_combo = builder.get_object('show_in_combobox') renderer = Gtk.CellRendererText() toolbar_pos_combo.pack_start(renderer, True) toolbar_pos_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.TOOLBAR_POS, toolbar_pos_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) light_source_combo = builder.get_object('light_source_combobox') renderer = Gtk.CellRendererText() light_source_combo.pack_start(renderer, True) light_source_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.SHADOW_IMAGE, light_source_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) combo_liststore = builder.get_object('combo_liststore') from coverart_utils import Theme for theme in Theme(self).themes: combo_liststore.append([theme, theme]) theme_combo = builder.get_object('theme_combobox') renderer = Gtk.CellRendererText() theme_combo.pack_start(renderer, True) theme_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.THEME, theme_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) button_relief = builder.get_object('button_relief_checkbox') self.settings.bind(gs.PluginKey.BUTTON_RELIEF, button_relief, 'active', Gio.SettingsBindFlags.DEFAULT) # create user data files cachedir = RB.user_cache_dir() + "/coverart_browser/usericons" if not os.path.exists(cachedir): os.makedirs(cachedir) popup = cachedir + "/popups.xml" temp = RB.find_user_data_file('plugins/coverart_browser/img/usericons/popups.xml') # lets see if there is a legacy file - if necessary copy it to the cache dir if os.path.isfile(temp) and not os.path.isfile(popup): shutil.copyfile(temp, popup) if not os.path.isfile(popup): template = rb.find_plugin_file(plugin, 'template/popups.xml') folder = os.path.split(popup)[0] if not os.path.exists(folder): os.makedirs(folder) shutil.copyfile(template, popup) # now prepare the genre tab from coverart_utils import GenreConfiguredSpriteSheet from coverart_utils import get_stock_size self._sheet = GenreConfiguredSpriteSheet(plugin, "genre", get_stock_size()) self.alt_liststore = builder.get_object('alt_liststore') self.alt_user_liststore = builder.get_object('alt_user_liststore') self._iters = {} for key in list(self._sheet.keys()): store_iter = self.alt_liststore.append([key, self._sheet[key]]) self._iters[(key, self.GENRE_POPUP)] = store_iter for key, value in self._sheet.genre_alternate.items(): if key.genre_type == GenreConfiguredSpriteSheet.GENRE_USER: store_iter = self.alt_user_liststore.append([key.name, self._sheet[self._sheet.genre_alternate[key]], self._sheet.genre_alternate[key]]) self._iters[(key.name, self.GENRE_LIST)] = store_iter self.amend_mode = False self.blank_iter = None self.genre_combobox = builder.get_object('genre_combobox') self.genre_entry = builder.get_object('genre_entry') self.genre_view = builder.get_object('genre_view') self.save_button = builder.get_object('save_button') self.filechooserdialog = builder.get_object('filechooserdialog') last_genre_folder = self.settings[gs.PluginKey.LAST_GENRE_FOLDER] if last_genre_folder != "": self.filechooserdialog.set_current_folder(last_genre_folder) padding_scale = builder.get_object('padding_adjustment') self.settings.bind(gs.PluginKey.ICON_PADDING, padding_scale, 'value', Gio.SettingsBindFlags.DEFAULT) spacing_scale = builder.get_object('spacing_adjustment') self.settings.bind(gs.PluginKey.ICON_SPACING, spacing_scale, 'value', Gio.SettingsBindFlags.DEFAULT) icon_automatic = builder.get_object('icon_automatic_checkbox') self.settings.bind(gs.PluginKey.ICON_AUTOMATIC, icon_automatic, 'active', Gio.SettingsBindFlags.DEFAULT) #flow tab flow_combo = builder.get_object('flow_combobox') renderer = Gtk.CellRendererText() flow_combo.pack_start(renderer, True) flow_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.FLOW_APPEARANCE, flow_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) flow_hide = builder.get_object('hide_caption_checkbox') self.settings.bind(gs.PluginKey.FLOW_HIDE_CAPTION, flow_hide, 'active', Gio.SettingsBindFlags.DEFAULT) flow_scale = builder.get_object('cover_scale_adjustment') self.settings.bind(gs.PluginKey.FLOW_SCALE, flow_scale, 'value', Gio.SettingsBindFlags.DEFAULT) flow_width = builder.get_object('cover_width_adjustment') self.settings.bind(gs.PluginKey.FLOW_WIDTH, flow_width, 'value', Gio.SettingsBindFlags.DEFAULT) flow_max = builder.get_object('flow_max_adjustment') self.settings.bind(gs.PluginKey.FLOW_MAX, flow_max, 'value', Gio.SettingsBindFlags.DEFAULT) flow_automatic = builder.get_object('automatic_checkbox') self.settings.bind(gs.PluginKey.FLOW_AUTOMATIC, flow_automatic, 'active', Gio.SettingsBindFlags.DEFAULT) self.background_colour = self.settings[gs.PluginKey.FLOW_BACKGROUND_COLOUR] self.white_radiobutton = builder.get_object('white_radiobutton') self.black_radiobutton = builder.get_object('black_radiobutton') if self.background_colour == 'W': self.white_radiobutton.set_active(True) else: self.black_radiobutton.set_active(True) # return the dialog self._first_run = False print ("end create dialog contents") return builder.get_object('main_notebook')
def do_create_configure_widget(self): ''' Creates the plugin's preferences dialog ''' # create the ui cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) builder = Gtk.Builder() builder.set_translation_domain(cl.Locale.LOCALE_DOMAIN) builder.add_from_file(rb.find_plugin_file(self, 'ui/coverart_browser_prefs.ui')) self.launchpad_button = builder.get_object('show_launchpad') self.launchpad_label = builder.get_object('launchpad_label') builder.connect_signals(self) #. TRANSLATORS: Do not translate this string. translators = _('translator-credits') if translators != "translator-credits": self.launchpad_label.set_text(translators) else: self.launchpad_button.set_visible(False) gs = GSetting() # bind the toggles to the settings toggle_statusbar = builder.get_object('custom_statusbar_checkbox') self.settings.bind(gs.PluginKey.CUSTOM_STATUSBAR, toggle_statusbar, 'active', Gio.SettingsBindFlags.DEFAULT) toggle_bottom = builder.get_object('display_bottom_checkbox') self.settings.bind(gs.PluginKey.DISPLAY_BOTTOM, toggle_bottom, 'active', Gio.SettingsBindFlags.DEFAULT) toggle_text = builder.get_object('display_text_checkbox') self.settings.bind(gs.PluginKey.DISPLAY_TEXT, toggle_text, 'active', Gio.SettingsBindFlags.DEFAULT) box_text = builder.get_object('display_text_box') self.settings.bind(gs.PluginKey.DISPLAY_TEXT, box_text, 'sensitive', Gio.SettingsBindFlags.GET) toggle_text_ellipsize = builder.get_object( 'display_text_ellipsize_checkbox') self.settings.bind(gs.PluginKey.DISPLAY_TEXT_ELLIPSIZE, toggle_text_ellipsize, 'active', Gio.SettingsBindFlags.DEFAULT) box_text_ellipsize_length = builder.get_object( 'display_text_ellipsize_length_box') self.settings.bind(gs.PluginKey.DISPLAY_TEXT_ELLIPSIZE, box_text_ellipsize_length, 'sensitive', Gio.SettingsBindFlags.GET) spinner_text_ellipsize_length = builder.get_object( 'display_text_ellipsize_length_spin') self.settings.bind(gs.PluginKey.DISPLAY_TEXT_ELLIPSIZE_LENGTH, spinner_text_ellipsize_length, 'value', Gio.SettingsBindFlags.DEFAULT) spinner_font_size = builder.get_object( 'display_font_spin') self.settings.bind(gs.PluginKey.DISPLAY_FONT_SIZE, spinner_font_size, 'value', Gio.SettingsBindFlags.DEFAULT) cover_size_scale = builder.get_object('cover_size_adjustment') self.settings.bind(gs.PluginKey.COVER_SIZE, cover_size_scale, 'value', Gio.SettingsBindFlags.DEFAULT) add_shadow = builder.get_object('add_shadow_checkbox') self.settings.bind(gs.PluginKey.ADD_SHADOW, add_shadow, 'active', Gio.SettingsBindFlags.DEFAULT) rated_box = builder.get_object('rated_box') self.stars = ReactiveStar(size=StarSize.BIG) self.stars.connect('changed', self.rating_changed_callback) align = Gtk.Alignment.new(0.5, 0, 0, 0.1) align.add(self.stars) rated_box.add(align) self.stars.set_rating(self.settings[gs.PluginKey.RATING]) autostart = builder.get_object('autostart_checkbox') self.settings.bind(gs.PluginKey.AUTOSTART, autostart, 'active', Gio.SettingsBindFlags.DEFAULT) toolbar_pos_combo = builder.get_object('show_in_combobox') renderer = Gtk.CellRendererText() toolbar_pos_combo.pack_start(renderer, True) toolbar_pos_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.TOOLBAR_POS, toolbar_pos_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) light_source_combo = builder.get_object('light_source_combobox') renderer = Gtk.CellRendererText() light_source_combo.pack_start(renderer, True) light_source_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.SHADOW_IMAGE, light_source_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) combo_liststore = builder.get_object('combo_liststore') from coverart_utils import Theme for theme in Theme(self).themes: combo_liststore.append([theme, theme]) theme_combo = builder.get_object('theme_combobox') renderer = Gtk.CellRendererText() theme_combo.pack_start(renderer, True) theme_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.THEME, theme_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) button_relief = builder.get_object('button_relief_checkbox') self.settings.bind(gs.PluginKey.BUTTON_RELIEF, button_relief, 'active', Gio.SettingsBindFlags.DEFAULT) # create user data files popup = RB.find_user_data_file('plugins/coverart_browser/img/usericons/popups.xml') if not os.path.isfile(popup): template = rb.find_plugin_file(self, 'template/popups.xml') folder = os.path.split(popup)[0] if not os.path.exists(folder): os.makedirs(folder) shutil.copyfile(template, popup) # now prepare the genre tab from coverart_utils import GenreConfiguredSpriteSheet from coverart_utils import get_stock_size from coverart_utils import GenreType self._sheet = GenreConfiguredSpriteSheet(self, "genre", get_stock_size()) self.alt_liststore = builder.get_object('alt_liststore') self.alt_user_liststore = builder.get_object('alt_user_liststore') self._iters = {} for key in list(self._sheet.keys()): store_iter = self.alt_liststore.append([key, self._sheet[key]]) self._iters[(key,self.GENRE_POPUP)] = store_iter for key, value in self._sheet.genre_alternate.items(): if key.genre_type == GenreConfiguredSpriteSheet.GENRE_USER: store_iter = self.alt_user_liststore.append([key.name, self._sheet[self._sheet.genre_alternate[key]], self._sheet.genre_alternate[key]]) self._iters[(key.name, self.GENRE_LIST)] = store_iter self.amend_mode = False self.blank_iter = None self.genre_combobox = builder.get_object('genre_combobox') self.genre_entry = builder.get_object('genre_entry') self.genre_view = builder.get_object('genre_view') self.save_button = builder.get_object('save_button') self.filechooserdialog = builder.get_object('filechooserdialog') padding_scale = builder.get_object('padding_adjustment') self.settings.bind(gs.PluginKey.ICON_PADDING, padding_scale, 'value', Gio.SettingsBindFlags.DEFAULT) spacing_scale = builder.get_object('spacing_adjustment') self.settings.bind(gs.PluginKey.ICON_SPACING, spacing_scale, 'value', Gio.SettingsBindFlags.DEFAULT) # return the dialog return builder.get_object('main_notebook')
def _create_display_contents(self, plugin): print("DEBUG - create_display_contents") # create the ui self._first_run = True cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) builder = Gtk.Builder() builder.set_translation_domain(cl.Locale.LOCALE_DOMAIN) builder.add_from_file( rb.find_plugin_file(plugin, 'ui/coverart_browser_prefs.ui')) self.launchpad_button = builder.get_object('show_launchpad') self.launchpad_label = builder.get_object('launchpad_label') builder.connect_signals(self) # . TRANSLATORS: Do not translate this string. translators = _('translator-credits') if translators != "translator-credits": self.launchpad_label.set_text(translators) else: self.launchpad_button.set_visible(False) gs = GSetting() # bind the toggles to the settings toggle_statusbar = builder.get_object('custom_statusbar_checkbox') self.settings.bind(gs.PluginKey.CUSTOM_STATUSBAR, toggle_statusbar, 'active', Gio.SettingsBindFlags.DEFAULT) toggle_text = builder.get_object('display_text_checkbox') self.settings.bind(gs.PluginKey.DISPLAY_TEXT, toggle_text, 'active', Gio.SettingsBindFlags.DEFAULT) box_text = builder.get_object('display_text_box') self.settings.bind(gs.PluginKey.DISPLAY_TEXT, box_text, 'sensitive', Gio.SettingsBindFlags.GET) self.display_text_pos = self.settings[gs.PluginKey.DISPLAY_TEXT_POS] self.display_text_under_radiobutton = builder.get_object( 'display_text_under_radiobutton') self.display_text_within_radiobutton = builder.get_object( 'display_text_within_radiobutton') if self.display_text_pos: self.display_text_under_radiobutton.set_active(True) else: self.display_text_within_radiobutton.set_active(True) random_scale = builder.get_object('random_adjustment') self.settings.bind(gs.PluginKey.RANDOM, random_scale, 'value', Gio.SettingsBindFlags.DEFAULT) toggle_text_ellipsize = builder.get_object( 'display_text_ellipsize_checkbox') self.settings.bind(gs.PluginKey.DISPLAY_TEXT_ELLIPSIZE, toggle_text_ellipsize, 'active', Gio.SettingsBindFlags.DEFAULT) box_text_ellipsize_length = builder.get_object( 'display_text_ellipsize_length_box') self.settings.bind(gs.PluginKey.DISPLAY_TEXT_ELLIPSIZE, box_text_ellipsize_length, 'sensitive', Gio.SettingsBindFlags.GET) spinner_text_ellipsize_length = builder.get_object( 'display_text_ellipsize_length_spin') self.settings.bind(gs.PluginKey.DISPLAY_TEXT_ELLIPSIZE_LENGTH, spinner_text_ellipsize_length, 'value', Gio.SettingsBindFlags.DEFAULT) spinner_font_size = builder.get_object('display_font_spin') self.settings.bind(gs.PluginKey.DISPLAY_FONT_SIZE, spinner_font_size, 'value', Gio.SettingsBindFlags.DEFAULT) cover_size_scale = builder.get_object('cover_size_adjustment') #self.settings.bind(gs.PluginKey.COVER_SIZE, cover_size_scale, 'value', # Gio.SettingsBindFlags.DEFAULT) self._cover_size = self.settings[gs.PluginKey.COVER_SIZE] cover_size_scale.set_value(self._cover_size) cover_size_scale.connect('value-changed', self.on_cover_size_scale_changed) add_shadow = builder.get_object('add_shadow_checkbox') self.settings.bind(gs.PluginKey.ADD_SHADOW, add_shadow, 'active', Gio.SettingsBindFlags.DEFAULT) rated_box = builder.get_object('rated_box') self.stars = ReactiveStar(size=StarSize.BIG) self.stars.connect('changed', self.rating_changed_callback) align = Gtk.Alignment.new(0.5, 0, 0, 0.1) align.add(self.stars) rated_box.add(align) self.stars.set_rating(self.settings[gs.PluginKey.RATING]) autostart = builder.get_object('autostart_checkbox') self.settings.bind(gs.PluginKey.AUTOSTART, autostart, 'active', Gio.SettingsBindFlags.DEFAULT) toolbar_pos_combo = builder.get_object('show_in_combobox') renderer = Gtk.CellRendererText() toolbar_pos_combo.pack_start(renderer, True) toolbar_pos_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.TOOLBAR_POS, toolbar_pos_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) light_source_combo = builder.get_object('light_source_combobox') renderer = Gtk.CellRendererText() light_source_combo.pack_start(renderer, True) light_source_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.SHADOW_IMAGE, light_source_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) combo_liststore = builder.get_object('combo_liststore') from coverart_utils import Theme for theme in Theme(self).themes: combo_liststore.append([theme, theme]) theme_combo = builder.get_object('theme_combobox') renderer = Gtk.CellRendererText() theme_combo.pack_start(renderer, True) theme_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.THEME, theme_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) button_relief = builder.get_object('button_relief_checkbox') self.settings.bind(gs.PluginKey.BUTTON_RELIEF, button_relief, 'active', Gio.SettingsBindFlags.DEFAULT) # create user data files cachedir = RB.user_cache_dir() + "/coverart_browser/usericons" if not os.path.exists(cachedir): os.makedirs(cachedir) popup = cachedir + "/popups.xml" temp = RB.find_user_data_file( 'plugins/coverart_browser/img/usericons/popups.xml') # lets see if there is a legacy file - if necessary copy it to the cache dir if os.path.isfile(temp) and not os.path.isfile(popup): shutil.copyfile(temp, popup) if not os.path.isfile(popup): template = rb.find_plugin_file(plugin, 'template/popups.xml') folder = os.path.split(popup)[0] if not os.path.exists(folder): os.makedirs(folder) shutil.copyfile(template, popup) # now prepare the genre tab from coverart_utils import GenreConfiguredSpriteSheet from coverart_utils import get_stock_size self._sheet = GenreConfiguredSpriteSheet(plugin, "genre", get_stock_size()) self.alt_liststore = builder.get_object('alt_liststore') self.alt_user_liststore = builder.get_object('alt_user_liststore') self._iters = {} for key in list(self._sheet.keys()): store_iter = self.alt_liststore.append([key, self._sheet[key]]) self._iters[(key, self.GENRE_POPUP)] = store_iter for key, value in self._sheet.genre_alternate.items(): if key.genre_type == GenreConfiguredSpriteSheet.GENRE_USER: store_iter = self.alt_user_liststore.append([ key.name, self._sheet[self._sheet.genre_alternate[key]], self._sheet.genre_alternate[key] ]) self._iters[(key.name, self.GENRE_LIST)] = store_iter self.amend_mode = False self.blank_iter = None self.genre_combobox = builder.get_object('genre_combobox') self.genre_entry = builder.get_object('genre_entry') self.genre_view = builder.get_object('genre_view') self.save_button = builder.get_object('save_button') self.filechooserdialog = builder.get_object('filechooserdialog') last_genre_folder = self.settings[gs.PluginKey.LAST_GENRE_FOLDER] if last_genre_folder != "": self.filechooserdialog.set_current_folder(last_genre_folder) padding_scale = builder.get_object('padding_adjustment') self.settings.bind(gs.PluginKey.ICON_PADDING, padding_scale, 'value', Gio.SettingsBindFlags.DEFAULT) spacing_scale = builder.get_object('spacing_adjustment') self.settings.bind(gs.PluginKey.ICON_SPACING, spacing_scale, 'value', Gio.SettingsBindFlags.DEFAULT) icon_automatic = builder.get_object('icon_automatic_checkbox') self.settings.bind(gs.PluginKey.ICON_AUTOMATIC, icon_automatic, 'active', Gio.SettingsBindFlags.DEFAULT) #flow tab flow_combo = builder.get_object('flow_combobox') renderer = Gtk.CellRendererText() flow_combo.pack_start(renderer, True) flow_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.FLOW_APPEARANCE, flow_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) flow_hide = builder.get_object('hide_caption_checkbox') self.settings.bind(gs.PluginKey.FLOW_HIDE_CAPTION, flow_hide, 'active', Gio.SettingsBindFlags.DEFAULT) flow_scale = builder.get_object('cover_scale_adjustment') self.settings.bind(gs.PluginKey.FLOW_SCALE, flow_scale, 'value', Gio.SettingsBindFlags.DEFAULT) flow_width = builder.get_object('cover_width_adjustment') self.settings.bind(gs.PluginKey.FLOW_WIDTH, flow_width, 'value', Gio.SettingsBindFlags.DEFAULT) flow_max = builder.get_object('flow_max_adjustment') self.settings.bind(gs.PluginKey.FLOW_MAX, flow_max, 'value', Gio.SettingsBindFlags.DEFAULT) flow_automatic = builder.get_object('automatic_checkbox') self.settings.bind(gs.PluginKey.FLOW_AUTOMATIC, flow_automatic, 'active', Gio.SettingsBindFlags.DEFAULT) self.background_colour = self.settings[ gs.PluginKey.FLOW_BACKGROUND_COLOUR] self.white_radiobutton = builder.get_object('white_radiobutton') self.black_radiobutton = builder.get_object('black_radiobutton') if self.background_colour == 'W': self.white_radiobutton.set_active(True) else: self.black_radiobutton.set_active(True) self.text_alignment = self.settings[gs.PluginKey.TEXT_ALIGNMENT] self.text_alignment_left_radiobutton = builder.get_object( 'left_alignment_radiobutton') self.text_alignment_centre_radiobutton = builder.get_object( 'centre_alignment_radiobutton') self.text_alignment_right_radiobutton = builder.get_object( 'right_alignment_radiobutton') if self.text_alignment == 0: self.text_alignment_left_radiobutton.set_active(True) elif self.text_alignment == 1: self.text_alignment_centre_radiobutton.set_active(True) else: self.text_alignment_right_radiobutton.set_active(True) # return the dialog self._first_run = False print("end create dialog contents") return builder.get_object('main_notebook')
def do_create_configure_widget(self): ''' Creates the plugin's preferences dialog ''' # create the ui cl = CoverLocale() cl.switch_locale(cl.Locale.LOCALE_DOMAIN) builder = Gtk.Builder() builder.set_translation_domain(cl.Locale.LOCALE_DOMAIN) builder.add_from_file(rb.find_plugin_file(self, 'ui/coverart_browser_prefs.ui')) self.launchpad_button = builder.get_object('show_launchpad') self.launchpad_label = builder.get_object('launchpad_label') builder.connect_signals(self) #. TRANSLATORS: Do not translate this string. translators = _('translator-credits') if translators != "translator-credits": self.launchpad_label.set_text(translators) else: self.launchpad_button.set_visible(False) gs = GSetting() # bind the toggles to the settings toggle_statusbar = builder.get_object('custom_statusbar_checkbox') self.settings.bind(gs.PluginKey.CUSTOM_STATUSBAR, toggle_statusbar, 'active', Gio.SettingsBindFlags.DEFAULT) toggle_bottom = builder.get_object('display_bottom_checkbox') self.settings.bind(gs.PluginKey.DISPLAY_BOTTOM, toggle_bottom, 'active', Gio.SettingsBindFlags.DEFAULT) toggle_text = builder.get_object('display_text_checkbox') self.settings.bind(gs.PluginKey.DISPLAY_TEXT, toggle_text, 'active', Gio.SettingsBindFlags.DEFAULT) box_text = builder.get_object('display_text_box') self.settings.bind(gs.PluginKey.DISPLAY_TEXT, box_text, 'sensitive', Gio.SettingsBindFlags.GET) toggle_text_ellipsize = builder.get_object( 'display_text_ellipsize_checkbox') self.settings.bind(gs.PluginKey.DISPLAY_TEXT_ELLIPSIZE, toggle_text_ellipsize, 'active', Gio.SettingsBindFlags.DEFAULT) box_text_ellipsize_length = builder.get_object( 'display_text_ellipsize_length_box') self.settings.bind(gs.PluginKey.DISPLAY_TEXT_ELLIPSIZE, box_text_ellipsize_length, 'sensitive', Gio.SettingsBindFlags.GET) spinner_text_ellipsize_length = builder.get_object( 'display_text_ellipsize_length_spin') self.settings.bind(gs.PluginKey.DISPLAY_TEXT_ELLIPSIZE_LENGTH, spinner_text_ellipsize_length, 'value', Gio.SettingsBindFlags.DEFAULT) spinner_font_size = builder.get_object( 'display_font_spin') self.settings.bind(gs.PluginKey.DISPLAY_FONT_SIZE, spinner_font_size, 'value', Gio.SettingsBindFlags.DEFAULT) cover_size_scale = builder.get_object('cover_size_adjustment') self.settings.bind(gs.PluginKey.COVER_SIZE, cover_size_scale, 'value', Gio.SettingsBindFlags.DEFAULT) add_shadow = builder.get_object('add_shadow_checkbox') self.settings.bind(gs.PluginKey.ADD_SHADOW, add_shadow, 'active', Gio.SettingsBindFlags.DEFAULT) rated_box = builder.get_object('rated_box') self.stars = ReactiveStar(size=StarSize.BIG) self.stars.connect('changed', self.rating_changed_callback) align = Gtk.Alignment.new(0.5, 0, 0, 0.1) align.add(self.stars) rated_box.add(align) self.stars.set_rating(self.settings[gs.PluginKey.RATING]) autostart = builder.get_object('autostart_checkbox') self.settings.bind(gs.PluginKey.AUTOSTART, autostart, 'active', Gio.SettingsBindFlags.DEFAULT) toolbar_pos_combo = builder.get_object('show_in_combobox') renderer = Gtk.CellRendererText() toolbar_pos_combo.pack_start(renderer, True) toolbar_pos_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.TOOLBAR_POS, toolbar_pos_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) light_source_combo = builder.get_object('light_source_combobox') renderer = Gtk.CellRendererText() light_source_combo.pack_start(renderer, True) light_source_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.SHADOW_IMAGE, light_source_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) combo_liststore = builder.get_object('combo_liststore') from coverart_utils import Theme for theme in Theme(self).themes: combo_liststore.append([theme, theme]) theme_combo = builder.get_object('theme_combobox') renderer = Gtk.CellRendererText() theme_combo.pack_start(renderer, True) theme_combo.add_attribute(renderer, 'text', 1) self.settings.bind(gs.PluginKey.THEME, theme_combo, 'active-id', Gio.SettingsBindFlags.DEFAULT) button_relief = builder.get_object('button_relief_checkbox') self.settings.bind(gs.PluginKey.BUTTON_RELIEF, button_relief, 'active', Gio.SettingsBindFlags.DEFAULT) # create user data files popup = RB.find_user_data_file('plugins/coverart_browser/img/usericons/popups.xml') if not os.path.isfile(popup): template = rb.find_plugin_file(self, 'template/popups.xml') folder = os.path.split(popup)[0] if not os.path.exists(folder): os.makedirs(folder) shutil.copyfile(template, popup) # now prepare the genre tab from coverart_utils import GenreConfiguredSpriteSheet from coverart_utils import get_stock_size from coverart_utils import GenreType self._sheet = GenreConfiguredSpriteSheet(self, "genre", get_stock_size()) self.alt_liststore = builder.get_object('alt_liststore') self.alt_user_liststore = builder.get_object('alt_user_liststore') self._iters = {} for key in self._sheet.keys(): store_iter = self.alt_liststore.append([key, self._sheet[key]]) self._iters[(key,self.GENRE_POPUP)] = store_iter for key, value in self._sheet.genre_alternate.iteritems(): if key.genre_type == GenreConfiguredSpriteSheet.GENRE_USER: store_iter = self.alt_user_liststore.append([key.name, self._sheet[self._sheet.genre_alternate[key]], self._sheet.genre_alternate[key]]) self._iters[(key.name, self.GENRE_LIST)] = store_iter self.amend_mode = False self.blank_iter = None self.genre_combobox = builder.get_object('genre_combobox') self.genre_entry = builder.get_object('genre_entry') self.genre_view = builder.get_object('genre_view') self.save_button = builder.get_object('save_button') self.filechooserdialog = builder.get_object('filechooserdialog') # return the dialog return builder.get_object('main_notebook')