def PluginPreferences(self, win): box = Gtk.VBox(spacing=12) # api key section def key_changed(entry, *args): config.set("plugins", "fingerprint_acoustid_api_key", entry.get_text()) button = Button(_("Request API key"), Gtk.STOCK_NETWORK) button.connect("clicked", lambda s: util.website("https://acoustid.org/api-key")) key_box = Gtk.HBox(spacing=6) entry = UndoEntry() entry.set_text(get_api_key()) entry.connect("changed", key_changed) label = Gtk.Label(label=_("API _key:")) label.set_use_underline(True) label.set_mnemonic_widget(entry) key_box.pack_start(label, False, True, 0) key_box.pack_start(entry, True, True, 0) key_box.pack_start(button, False, True, 0) box.pack_start(Frame(_("Acoustid Web Service"), child=key_box), True, True, 0) return box
def PluginPreferences(self, parent): vb = Gtk.VBox(spacing=3) pattern_box = Gtk.HBox(spacing=3) pattern_box.set_border_width(3) pattern = Gtk.Entry() pattern.set_text(self.pattern) pattern.connect('changed', self.pattern_changed) pattern_box.pack_start(Gtk.Label(label="Pattern:"), True, True, 0) pattern_box.pack_start(pattern, True, True, 0) accounts_box = Gtk.HBox(spacing=3) accounts_box.set_border_width(3) accounts = Gtk.Entry() accounts.set_text(" ".join(self.accounts)) accounts.connect('changed', self.accounts_changed) accounts.set_tooltip_text( _("List accounts, separated by spaces, for " "changing status message. If none are specified, " "status message of all accounts will be changed.")) accounts_box.pack_start(Gtk.Label(label="Accounts:"), True, True, 0) accounts_box.pack_start(accounts, True, True, 0) c = Gtk.CheckButton(label="Add '[paused]'") c.set_active(self.paused) c.connect('toggled', self.paused_changed) c.set_tooltip_text( _("If checked, '[paused]' will be added to " "status message on pause.")) table = Gtk.Table() self.list = [] i = 0 j = 0 for status in ['online', 'offline', 'chat', 'away', 'xa', 'invisible']: button = Gtk.CheckButton(label=status) button.set_name(status) if status in self.statuses: button.set_active(True) button.connect('toggled', self.statuses_changed) self.list.append(button) table.attach(button, i, i + 1, j, j + 1) if i == 2: i = 0 j += 1 else: i += 1 vb.pack_start(pattern_box, True, True, 0) vb.pack_start(accounts_box, True, True, 0) vb.pack_start(c, True, True, 0) vb.pack_start( Frame(label=_("Statuses for which status message\n" "will be changed")), True, True, 0) vb.pack_start(table, True, True, 0) return vb
def PluginPreferences(self, parent): vb = Gtk.VBox(spacing=6) pattern_box = Gtk.HBox(spacing=6) pattern_box.set_border_width(3) pattern = Gtk.Entry() pattern.set_text(self.pattern) pattern.connect('changed', self.pattern_changed) pattern_box.pack_start(Gtk.Label(label=_("Pattern:")), False, True, 0) pattern_box.pack_start(pattern, True, True, 0) accounts_box = Gtk.HBox(spacing=3) accounts_box.set_border_width(3) accounts = Gtk.Entry() accounts.set_text(" ".join(self.accounts)) accounts.connect('changed', self.accounts_changed) accounts.set_tooltip_text( _("List accounts, separated by spaces, for " "changing status message. If none are specified, " "status message of all accounts will be changed.")) accounts_box.pack_start(Gtk.Label(label=_("Accounts:")), False, True, 0) accounts_box.pack_start(accounts, True, True, 0) c = Gtk.CheckButton(label=_("Add '[paused]'")) c.set_active(self.paused) c.connect('toggled', self.paused_changed) c.set_tooltip_text( _("If checked, '[paused]' will be added to " "status message on pause.")) table = Gtk.Table() self.list = [] i = 0 j = 0 for status, translated in _STATUSES.items(): button = Gtk.CheckButton(label=translated) button.set_name(status) if status in self.statuses: button.set_active(True) button.connect('toggled', self.statuses_changed) self.list.append(button) table.attach(button, i, i + 1, j, j + 1) if i == 2: i = 0 j += 1 else: i += 1 vb.pack_start(pattern_box, True, True, 0) vb.pack_start(accounts_box, True, True, 0) vb.pack_start(c, True, True, 0) frame = Frame(label=_("Statuses for which message will be changed"), child=table) vb.pack_start(frame, True, True, 6) return vb
def PluginPreferences(cls, window): if not cls.usage: return Gtk.VBox() label = Gtk.Label(label=cls.usage, use_markup=True, xalign=0.0, yalign=0.5, wrap=True, width_chars=30, selectable=True) return Frame(_("Usage"), child=Align(label, border=9, halign=Gtk.Align.START, valign=Gtk.Align.START))
def PluginPreferences(cls, window): example = super().PluginPreferences(window) box = Gtk.VBox() box.pack_start(example, True, True, 0) prefs_box = Gtk.VBox() button = cls.ConfigCheckButton(_("Include empty tags"), "include_empty", True) prefs_box.pack_start(button, False, False, 6) frame = Frame(_("Preferences"), child=prefs_box) box.pack_start(frame, True, True, 12) return box
def PluginPreferences(self, win): def id_entry_changed(entry): config.set('plugins', 'spotify_client_id', id_entry.get_text()) id_label = Gtk.Label(label=_("_Client ID:"), use_underline=True) id_entry = UndoEntry() id_entry.set_text(config_get('client_id', '')) id_entry.connect('changed', id_entry_changed) id_label.set_mnemonic_widget(id_entry) id_hbox = Gtk.HBox() id_hbox.set_spacing(6) id_hbox.pack_start(id_label, False, True, 0) id_hbox.pack_start(id_entry, True, True, 0) def secret_entry_changed(entry): config.set('plugins', 'spotify_client_secret', secret_entry.get_text()) secret_label = Gtk.Label(label=_("_Client secret:"), use_underline=True) secret_entry = UndoEntry() secret_entry.set_text(config_get('client_secret', '')) secret_entry.connect('changed', secret_entry_changed) secret_label.set_mnemonic_widget(secret_entry) secret_hbox = Gtk.HBox() secret_hbox.set_spacing(6) secret_hbox.pack_start(secret_label, False, True, 0) secret_hbox.pack_start(secret_entry, True, True, 0) vb = Gtk.VBox() vb.set_spacing(8) vb.pack_start(id_hbox, True, True, 0) vb.pack_start(secret_hbox, True, True, 0) return Frame(_("Account"), child=vb)
def __init__(self, parent, library): super(RenameFiles, self).__init__(spacing=6) self.__skip_interactive = False self.set_border_width(12) hbox = Gtk.HBox(spacing=6) cbes_defaults = NBP_EXAMPLES.split("\n") self.combo = ComboBoxEntrySave(NBP, cbes_defaults, title=_("Path Patterns"), edit_title=_(u"Edit saved patterns…")) self.combo.show_all() hbox.pack_start(self.combo, True, True, 0) self.preview = qltk.Button(_("_Preview"), Icons.VIEW_REFRESH) self.preview.show() hbox.pack_start(self.preview, False, True, 0) self.pack_start(hbox, False, True, 0) self.combo.get_child().connect('changed', self._changed) model = ObjectStore() self.view = Gtk.TreeView(model=model) self.view.show() sw = Gtk.ScrolledWindow() sw.set_shadow_type(Gtk.ShadowType.IN) sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) sw.add(self.view) self.pack_start(sw, True, True, 0) self.pack_start(Gtk.VBox(), False, True, 0) # rename options rename_options = Gtk.HBox() # file name options filter_box = FilterPluginBox(self.handler, self.FILTERS) filter_box.connect("preview", self.__filter_preview) filter_box.connect("changed", self.__filter_changed) self.filter_box = filter_box frame_filename_options = Frame(_("File names"), filter_box) frame_filename_options.show_all() rename_options.pack_start(frame_filename_options, False, True, 0) # album art options albumart_box = Gtk.VBox() # move art moveart_box = Gtk.VBox() self.moveart = ConfigCheckButton(_('_Move album art'), "rename", "move_art", populate=True) self.moveart.set_tooltip_text( _("See '[albumart] filenames' config entry " + "for image search strings")) self.moveart.show() moveart_box.pack_start(self.moveart, False, True, 0) self.moveart_overwrite = ConfigCheckButton( _('_Overwrite album art at target'), "rename", "move_art_overwrite", populate=True) self.moveart_overwrite.show() moveart_box.pack_start(self.moveart_overwrite, False, True, 0) albumart_box.pack_start(moveart_box, False, True, 0) # remove empty removeemptydirs_box = Gtk.VBox() self.removeemptydirs = ConfigCheckButton( _('_Remove empty directories'), "rename", "remove_empty_dirs", populate=True) self.removeemptydirs.show() removeemptydirs_box.pack_start(self.removeemptydirs, False, True, 0) albumart_box.pack_start(removeemptydirs_box, False, True, 0) frame_albumart_options = Frame(_("Album art"), albumart_box) frame_albumart_options.show_all() rename_options.pack_start(frame_albumart_options, False, True, 0) self.pack_start(rename_options, False, True, 0) # Save button self.save = Button(_("_Save"), Icons.DOCUMENT_SAVE) self.save.show() bbox = Gtk.HButtonBox() bbox.set_layout(Gtk.ButtonBoxStyle.END) bbox.pack_start(self.save, True, True, 0) self.pack_start(bbox, False, True, 0) render = Gtk.CellRendererText() column = TreeViewColumn(title=_('File')) column.pack_start(render, True) def cell_data_file(column, cell, model, iter_, data): entry = model.get_value(iter_) cell.set_property("text", entry.name) column.set_cell_data_func(render, cell_data_file) column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) self.view.append_column(column) render = Gtk.CellRendererText() render.set_property('editable', True) column = TreeViewColumn(title=_('New Name')) column.pack_start(render, True) def cell_data_new_name(column, cell, model, iter_, data): entry = model.get_value(iter_) cell.set_property("text", entry.new_name or u"") column.set_cell_data_func(render, cell_data_new_name) column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) self.view.append_column(column) connect_obj(self.preview, 'clicked', self._preview, None) connect_obj(parent, 'changed', self.__class__._preview, self) connect_obj(self.save, 'clicked', self._rename, library) render.connect('edited', self.__row_edited) for child in self.get_children(): child.show()
def __init__(self, parent, library): super(RenameFiles, self).__init__(spacing=6) self.__skip_interactive = False self.set_border_width(12) hbox = Gtk.HBox(spacing=6) cbes_defaults = NBP_EXAMPLES.split("\n") self.combo = ComboBoxEntrySave(NBP, cbes_defaults, title=_("Path Patterns"), edit_title=_(u"Edit saved patterns…")) self.combo.show_all() hbox.pack_start(self.combo, True, True, 0) self.preview = qltk.Button(_("_Preview"), Icons.VIEW_REFRESH) self.preview.show() hbox.pack_start(self.preview, False, True, 0) self.pack_start(hbox, False, True, 0) self.combo.get_child().connect('changed', self._changed) model = ObjectStore() self.view = Gtk.TreeView(model=model) self.view.show() sw = Gtk.ScrolledWindow() sw.set_shadow_type(Gtk.ShadowType.IN) sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) sw.add(self.view) self.pack_start(sw, True, True, 0) self.pack_start(Gtk.VBox(), False, True, 0) # rename options rename_options = Gtk.HBox() # file name options filter_box = FilterPluginBox(self.handler, self.FILTERS) filter_box.connect("preview", self.__filter_preview) filter_box.connect("changed", self.__filter_changed) self.filter_box = filter_box frame_filename_options = Frame(_("File names"), filter_box) frame_filename_options.show_all() rename_options.pack_start(frame_filename_options, False, True, 0) # album art options albumart_box = Gtk.VBox() # move art moveart_box = Gtk.VBox() self.moveart = ConfigCheckButton( _('_Move album art'), "rename", "move_art", populate=True) self.moveart.set_tooltip_text( _("See '[albumart] filenames' config entry " + "for image search strings")) self.moveart.show() moveart_box.pack_start(self.moveart, False, True, 0) self.moveart_overwrite = ConfigCheckButton( _('_Overwrite album art at target'), "rename", "move_art_overwrite", populate=True) self.moveart_overwrite.show() moveart_box.pack_start(self.moveart_overwrite, False, True, 0) albumart_box.pack_start(moveart_box, False, True, 0) # remove empty removeemptydirs_box = Gtk.VBox() self.removeemptydirs = ConfigCheckButton( _('_Remove empty directories'), "rename", "remove_empty_dirs", populate=True) self.removeemptydirs.show() removeemptydirs_box.pack_start(self.removeemptydirs, False, True, 0) albumart_box.pack_start(removeemptydirs_box, False, True, 0) frame_albumart_options = Frame(_("Album art"), albumart_box) frame_albumart_options.show_all() rename_options.pack_start(frame_albumart_options, False, True, 0) self.pack_start(rename_options, False, True, 0) # Save button self.save = Button(_("_Save"), Icons.DOCUMENT_SAVE) self.save.show() bbox = Gtk.HButtonBox() bbox.set_layout(Gtk.ButtonBoxStyle.END) bbox.pack_start(self.save, True, True, 0) self.pack_start(bbox, False, True, 0) render = Gtk.CellRendererText() column = TreeViewColumn(title=_('File')) column.pack_start(render, True) def cell_data_file(column, cell, model, iter_, data): entry = model.get_value(iter_) cell.set_property("text", entry.name) column.set_cell_data_func(render, cell_data_file) column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) self.view.append_column(column) render = Gtk.CellRendererText() render.set_property('editable', True) column = TreeViewColumn(title=_('New Name')) column.pack_start(render, True) def cell_data_new_name(column, cell, model, iter_, data): entry = model.get_value(iter_) cell.set_property("text", entry.new_name or u"") column.set_cell_data_func(render, cell_data_new_name) column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) self.view.append_column(column) connect_obj(self.preview, 'clicked', self._preview, None) connect_obj(parent, 'changed', self.__class__._preview, self) connect_obj(self.save, 'clicked', self._rename, library) render.connect('edited', self.__row_edited) for child in self.get_children(): child.show()
def PluginPreferences(cls, window): if not cls.usage: return Gtk.VBox() label = Gtk.Label(label=_(cls.usage), use_markup=True) return Frame(_("Usage"), child=Align(label, border=9, halign=Gtk.Align.START))