Example #1
0
class Config(object):
    _config = PluginConfig(__name__)

    elapsed_color = ConfProp(_config, "elapsed_color", "")
    hover_color = ConfProp(_config, "hover_color", "")
    remaining_color = ConfProp(_config, "remaining_color", "")
    max_data_points = IntConfProp(_config, "max_data_points", 3000)
class Config:
    _config = PluginConfig("autoupdatetagsinfiles")

    update_strategy = IntConfProp(_config, "update_strategy",
                                  UpdateStrategy.AFTER_PLAY_NOT_SKIP.value)
    ensure_play_counts_above_zero = BoolConfProp(  # useful for searching
            _config, "ensure_play_counts_above_zero", False)
Example #3
0
class Config:
    plugin_config = PluginConfig(DownloadCoverArt.PLUGIN_ID.replace(" ", "_"))
    preview_size = IntConfProp(plugin_config, "preview_size", 500)
    save_pattern = ConfProp(plugin_config, "save_pattern", "folder.%(ext)")
    over_scale = BoolConfProp(plugin_config, "preview_over_scale", True)
    re_encode = BoolConfProp(plugin_config, "re_encode", False)
    jpg_quality = IntConfProp(plugin_config, "jpeg_quality", 95)
Example #4
0
def get_config():
    pc = PluginConfig("brainz")

    defaults = pc.defaults
    defaults.set("client_id", "")
    defaults.set("client_secret", "")

    return pc
Example #5
0
class Config(object):
    _config = PluginConfig(__name__)

    elapsed_color = ConfProp(_config, "elapsed_color", "")
    hover_color = ConfProp(_config, "hover_color", "")
    remaining_color = ConfProp(_config, "remaining_color", "")
    show_current_pos = BoolConfProp(_config, "show_current_pos", False)
    max_data_points = IntConfProp(_config, "max_data_points", 3000)
Example #6
0
    class LyricsWindowConfig(object):

        plugin_conf = PluginConfig(prefix)

        alternate_search_url = ConfProp(plugin_conf, "alternate_search_url",
            DEFAULT_ALTERNATE_SEARCH_URL)
        alternate_search_enabled = BoolConfProp(plugin_conf,
            "alternate_search_enabled", True)
        zoom_level = FloatConfProp(plugin_conf, "zoom_level", 1.4)
Example #7
0
class Config(object):
    _config = PluginConfig(__name__)

    elapsed_color = ConfProp(_config, "elapsed_color", "")
    hover_color = ConfProp(_config, "hover_color", "")
    remaining_color = ConfProp(_config, "remaining_color", "")
    show_current_pos = BoolConfProp(_config, "show_current_pos", False)
    seek_amount = IntConfProp(_config, "seek_amount", 5000)
    max_data_points = IntConfProp(_config, "max_data_points", 3000)
    show_time_labels = BoolConfProp(_config, "show_time_labels", True)
Example #8
0
def get_config():
    pc = PluginConfig("brainz")

    defaults = pc.defaults
    defaults.set("year_only", False)
    defaults.set("albumartist", True)
    defaults.set("artist_sort", False)
    defaults.set("standard", True)

    return pc
Example #9
0
def _get_plugin_config():
    # migrate option
    if config.has_option('plugins', 'trayicon_window_hide'):
        value = config.getboolean('plugins', 'trayicon_window_hide')
        config.remove_option('plugins', 'trayicon_window_hide')
        config.set('plugins', 'icon_window_hide', value)

    pconfig = PluginConfig("icon")
    pconfig.defaults.set("window_hide", True)
    pconfig.defaults.set("tooltip", DEFAULT_PATTERN)
    pconfig.defaults.set("modifier_swap", False)

    return pconfig
Example #10
0
    class LyricsWindowConfig(object):

        plugin_conf = PluginConfig(prefix)

        alternate_search_url = ConfProp(plugin_conf, "alternate_search_url",
                                        DEFAULT_ALTERNATE_SEARCH_URL)
        alternate_search_enabled = BoolConfProp(plugin_conf,
                                                "alternate_search_enabled",
                                                True)
        zoom_level = FloatConfProp(plugin_conf, "zoom_level", 1.4)
        width = IntConfProp(plugin_conf, "width", 500)
        height = IntConfProp(plugin_conf, "height", 500)
        x = IntConfProp(plugin_conf, "x", 0)
        y = IntConfProp(plugin_conf, "y", 0)
Example #11
0
class Config(object):
    _config = PluginConfig(__name__)

    high_res = BoolConfProp(_config, "high_res", True)
    elapsed_color = ConfProp(_config, "elapsed_color", "")
    max_data_points = IntConfProp(_config, "max_data_points", 3000)

    @property
    def line_width(self):
        return 1 if self.high_res else 2

    @property
    def data_size(self):
        return self.max_data_points / self.line_width
Example #12
0
    class AnimOsdConfig(object):

        plugin_conf = PluginConfig(prefix)

        font = ConfProp(plugin_conf, "font", "Sans 22")
        string = ConfProp(plugin_conf, "string", DEFAULT_PATTERN)
        pos_y = FloatConfProp(plugin_conf, "pos_y", 0.0)
        corners = IntConfProp(plugin_conf, "corners", 1)
        delay = IntConfProp(plugin_conf, "delay", 2500)
        monitor = IntConfProp(plugin_conf, "monitor", 0)
        align = IntConfProp(plugin_conf, "align", 1)
        coversize = IntConfProp(plugin_conf, "coversize", 120)
        text = ColorConfProp(plugin_conf, "text", (0.9, 0.9, 0.9, 0.0))
        outline = ColorConfProp(plugin_conf, "outline", (-1.0, 0.0, 0.0, 0.2))
        shadow = ColorConfProp(plugin_conf, "shadow", (-1.0, 0.0, 0.0, 0.1))
        fill = ColorConfProp(plugin_conf, "fill", (0.25, 0.25, 0.25, 0.5))
Example #13
0
class Config:
    _config = PluginConfig(_PLUGIN_ID)

    need_user_check_if_number_of_albums_differs = BoolConfProp(  #
        _config, "need_user_check_if_number_of_albums_differs", True)

    need_user_check_if_number_of_tracks_differs = BoolConfProp(  #
        _config, "need_user_check_if_number_of_tracks_differs", True)

    max_track_similarity_to_need_user_check = FloatConfProp(  #
        _config, "max_track_similarity_to_need_user_check", 0.76)

    max_album_similarity_to_need_user_check = FloatConfProp(  #
        _config, "max_album_similarity_to_need_user_check", 0.80)

    delete_exports_after_importing = BoolConfProp(  #
        _config, "delete_exports_after_importing", True)

    pretty_print_json = BoolConfProp(_config, "pretty_print_json", False)
Example #14
0
from quodlibet.plugins import PluginConfig
from quodlibet.qltk.entry import ValidatingEntry, UndoEntry
from quodlibet.qltk.msg import Message
from quodlibet.qltk import Icons
from quodlibet.util.dprint import print_d
from quodlibet.util.picklehelper import pickle_load, pickle_dump, PickleError

import csv
from io import StringIO

from . import listenbrainz

DEFAULT_TITLEPAT = '<title><version| (<version>)>'
DEFAULT_ARTISTPAT = '<artist|<artist>|<composer|<composer>|<performer>>>'

plugin_config = PluginConfig("listenbrainz")
defaults = plugin_config.defaults
#defaults.set("endpoint", "https://api.listenbrainz.org")
defaults.set("user_token", "")

defaults.set("titlepat", "")
defaults.set("artistpat", "")
defaults.set("exclude", "")
defaults.set("offline", False)
defaults.set("tags", "")


def config_get_title_pattern():
    return plugin_config.get('titlepat') or DEFAULT_TITLEPAT

Example #15
0
#           2017 Christoph Reiter
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.

from gi.repository import Gtk

from quodlibet import _, print_d
from quodlibet.order import OrderInOrder
from quodlibet.plugins import PluginConfig
from quodlibet.plugins.playorder import ShufflePlugin
from quodlibet.qltk import Icons

pconfig = PluginConfig("skip_songs")
pconfig.defaults.set("threshold", 0.0)


class SkipZeros(ShufflePlugin, OrderInOrder):
    PLUGIN_ID = "skip_songs"
    PLUGIN_NAME = _("Skip Songs")
    PLUGIN_ICON = Icons.GO_JUMP
    PLUGIN_DESC = _("Playback skips over songs with a rating equal or below a "
                    "given threshold.")

    @classmethod
    def PluginPreferences(self, window):
        vb = Gtk.VBox(spacing=10)
        vb.set_border_width(0)
Example #16
0
class Config:
    _config = PluginConfig(__name__)

    DEFAULT_PATTERN = "<artist~title>"

    default_pattern = ConfProp(_config, "default_pattern", DEFAULT_PATTERN)
 def test_defaults(self):
     c = PluginConfig("some")
     c.defaults.set("hm", "mh")
     self.assertEqual(c.get("hm"), "mh")
 def test_mapping(self):
     c = PluginConfig("some")
     c.set("foo", "bar")
     self.assertEqual(config.get("plugins", "some_foo"), "bar")
Example #19
0
class DiscordStatusConfig:
    _config = PluginConfig(__name__)

    rp_line1 = ConfProp(_config, "rp_line1", CONFIG_DEFAULT_RP_LINE1)
    rp_line2 = ConfProp(_config, "rp_line2", CONFIG_DEFAULT_RP_LINE2)
Example #20
0
 def test_defaults(self):
     c = PluginConfig("some")
     c.defaults.set("hm", "mh")
     self.assertEqual(c.get("hm"), "mh")
Example #21
0
 def test_mapping(self):
     c = PluginConfig("some")
     c.set("foo", "bar")
     self.assertEqual(config.get("plugins", "some_foo"), "bar")
Example #22
0
class ProjectM(EventPlugin):
    """Launch external visualisations, e.g. via projectM

       Try this first (Ubuntu/Debian):
       sudo apt-get install projectm-pulseaudio
    """

    _config = PluginConfig(__name__)

    PLUGIN_ID = "visualisations"
    PLUGIN_NAME = _("Launch Visualisations")
    PLUGIN_ICON = Icons.IMAGE_X_GENERIC
    PLUGIN_DESC = _("Launch external visualisations.")

    DEFAULT_EXEC = 'projectM-pulseaudio'

    def __init__(self):
        self._pid = None

    def enabled(self):
        from gi.repository import GLib
        print_d("Starting %s" % self.PLUGIN_NAME)
        try:
            self._pid, fdin, fdout, fderr = GLib.spawn_async(
                argv=self.executable.split(),
                flags=GLib.SpawnFlags.SEARCH_PATH,
                standard_output=True,
                standard_input=True)
        except GLib.Error as e:
            msg = ((_("Couldn't run visualisations using '%s'") + " (%s)") %
                   (escape(self.executable), escape(e.message)))
            ErrorMessage(title=_("Error"), description=msg,
                         parent=app.window).run()
        else:
            # self._stdin = os.fdopen(fdin, mode='w')
            print_d("Launched with PID: %s" % self._pid)

    def disabled(self):
        if not self._pid:
            return
        print_d("Shutting down %s" % self.PLUGIN_NAME)
        try:
            os.kill(self._pid, signal.SIGTERM)
            os.kill(self._pid, signal.SIGKILL)
        except Exception as e:
            print_w("Couldn't shut down cleanly (%s)" % e)

    def PluginPreferences(self, *args):
        vbox = Gtk.VBox(spacing=12)

        label = Gtk.Label(label=_("Visualiser executable:"))

        def edited(widget):
            self.executable = widget.get_text()

        entry = UndoEntry()
        entry.connect('changed', edited)
        entry.set_text(self.executable)
        hbox = Gtk.HBox(spacing=6)
        hbox.pack_start(label, False, False, 0)
        hbox.pack_start(entry, True, True, 0)
        vbox.pack_start(hbox, True, True, 0)

        def refresh_clicked(widget):
            self.disabled()
            self.enabled()

        refresh_button = Button(_("Reload"), Icons.VIEW_REFRESH)
        refresh_button.connect('clicked', refresh_clicked)
        vbox.pack_start(refresh_button, False, False, 0)
        return vbox

    @property
    def executable(self):
        return self._config.get('executable', self.DEFAULT_EXEC)

    @executable.setter
    def executable(self, value):
        self._config.set('executable', value)
Example #23
0
class Config:
    plugin_config = PluginConfig(DownloadCoverArt.PLUGIN_ID)
    preview_size = IntConfProp(plugin_config, "preview_size", 300)
    save_pattern = ConfProp(plugin_config, "save_pattern", "folder.jpg")
    over_scale = BoolConfProp(plugin_config, "preview_over_scale", True)
    re_encode = BoolConfProp(plugin_config, "re_encode", False)
Example #24
0
class Config(object):
    _config = PluginConfig(__name__)

    elapsed_color = ConfProp(_config, "elapsed_color", "")
    preview_color = ConfProp(_config, "preview_color", "")
    remaining_color = ConfProp(_config, "remaining_color", "")
Example #25
0
import random

from gi.repository import Gtk, GLib

from quodlibet import _
from quodlibet import app
from quodlibet.order import OrderInOrder
from quodlibet.order import OrderRemembered
from quodlibet.order.reorder import Reorder
from quodlibet.plugins import PluginConfig
from quodlibet.plugins.playorder import ShufflePlugin
from quodlibet.qltk import Icons
from quodlibet.qltk.notif import Task


pconfig = PluginConfig("shufflebygrouping")
pconfig.defaults.set("grouping", "~grouping~album~albumartist")
pconfig.defaults.set("grouping_filter", "grouping")
pconfig.defaults.set("delay", 0)


class ShuffleByGrouping(ShufflePlugin, OrderRemembered):
    PLUGIN_ID = "Shuffle by Grouping"
    PLUGIN_NAME = _("Shuffle by Grouping")
    PLUGIN_DESC = _("Shuffles by a grouping of songs defined by a common tag "
                    "instead of by track, similar to album shuffle. This is "
                    "useful for shuffling multi-movement classical works "
                    "while making sure all movements play in order before "
                    "shuffling to the next piece.")
    PLUGIN_ICON = Icons.MEDIA_PLAYLIST_SHUFFLE
    display_name = _("Shuffle by grouping")
Example #26
0
from gi.repository import Gtk, GObject, GLib, Gio
from senf import fsn2uri

from quodlibet import _
from quodlibet import qltk, app
from quodlibet.plugins.events import EventPlugin
from quodlibet.plugins import PluginConfig
from quodlibet.pattern import XMLFromPattern
from quodlibet.qltk.textedit import TextView, TextBuffer
from quodlibet.qltk.entry import UndoEntry
from quodlibet.qltk.msg import ErrorMessage
from quodlibet.qltk import Icons
from quodlibet.util import unescape, print_w

pconfig = PluginConfig("notify")
pconfig.defaults.set("timeout", 4000)
pconfig.defaults.set("show_notifications", "all")
pconfig.defaults.set("show_only_when_unfocused", True)
pconfig.defaults.set("show_next_button", True)
pconfig.defaults.set("titlepattern", "<artist|<artist> - ><title>")
pconfig.defaults.set(
    "bodypattern", """<~length>
<album|<album><discsubtitle| - <discsubtitle>>
><~year|<~year>>""")


class PreferencesWidget(Gtk.VBox):
    def __init__(self, parent, plugin_instance):
        GObject.GObject.__init__(self, spacing=12)
        self.plugin_instance = plugin_instance
Example #27
0
    import musicbrainzngs
except ImportError:
    raise plugins.MissingModulePluginException("musicbrainzngs")

from gi.repository import Gtk
from quodlibet import _
from quodlibet.plugins import PluginConfig
from quodlibet.plugins.events import EventPlugin

ATTR_BRAINZ = 'musicbrainz_trackid'
ATTR_RATING = '~#rating'

BRAINZ_APP = "quodlibetMusicBrainzSync"
VERSION = "0.1"

plugin_config = PluginConfig("musicbrainz-sync")
defaults = plugin_config.defaults
defaults.set("username", "")
defaults.set("password", "")


class MusicBrainzSyncPlugin(EventPlugin):
    PLUGIN_ID = "musicbrainzsync"
    VERSION = VERSION
    PLUGIN_NAME = _("MusicBrainz Sync")
    PLUGIN_DESC = _("Syncs the rating of a song with MusicBrainz.")

    def __init__(self):
        super().__init__()
        musicbrainzngs.set_rate_limit()
        musicbrainzngs.set_useragent(BRAINZ_APP, VERSION,
Example #28
0
from quodlibet.qltk import Icons
from quodlibet.util.dprint import print_d
from quodlibet.util.picklehelper import pickle_load, pickle_dump, PickleError
from quodlibet.util.urllib import urlopen, UrllibError
from quodlibet.errorreport import errorhook

SERVICES = {
    'Last.fm': 'http://post.audioscrobbler.com/',
    'Libre.fm': 'http://turtle.libre.fm/'
}

DEFAULT_SERVICE = 'Last.fm'
DEFAULT_TITLEPAT = '<title><version| (<version>)>'
DEFAULT_ARTISTPAT = '<artist|<artist>|<composer|<composer>|<performer>>>'

plugin_config = PluginConfig("scrobbler")
defaults = plugin_config.defaults
defaults.set("service", DEFAULT_SERVICE)
defaults.set("titlepat", "")
defaults.set("artistpat", "")
defaults.set("url", "")
defaults.set("username", "")
defaults.set("password", "")
defaults.set("exclude", "")
defaults.set("offline", False)


def config_get_url():
    """Gets the URL for the currently configured service.
    This logic was used often enough to be split out from generic config
    """
Example #29
0
class Config(object):

    _config = PluginConfig(__name__)
    lcd_dev = ConfProp(_config, "lcd_dev", "/dev/serial/matrix_orbital")
    lcd_width = ConfProp(_config, "lcd_width", 20)
    lcd_interval = ConfProp(_config, "lcd_interval", 150)