Beispiel #1
0
 def __on_volume_changed(self, player, data=None):
     self.PropertiesChanged(self.__MPRIS_PLAYER_IFACE, {
         'Volume': GLib.Variant('d',
                                Lp().player.volume),
     }, [])
Beispiel #2
0
 def set_reading_direction(self):
     self.reading_direction_action.set_state(
         GLib.Variant('s', self.reading_direction))
     self.controls.set_scale_direction(
         self.reading_direction == 'right-to-left')
Beispiel #3
0
 def _update_columns(self, *args):
     value = [(c[1].lower(), c[0]) for c in self.model]
     settings.set_value(self.key, GLib.Variant('a(sb)', value))
Beispiel #4
0
 def _dup_variant(self):
     return GLib.Variant('a{sv}', self._dup_variant_as_dict())
Beispiel #5
0
def filter_opt(opt):
    """Remove ``None`` values from a dictionary."""
    return {k: GLib.Variant(*v) for k, v in opt.items() if v[1] is not None}
Beispiel #6
0
    def _init_actions(self):
        Action = namedtuple(
            "Action", ("callback", "type", "enabled", "default", "accel"))
        Action.__new__.__defaults__ = (None, None, True, None, None)

        actions = {
            "browse-games":
            Action(lambda *x: open_uri("https://lutris.net/games/")),
            "register-account":
            Action(lambda *x: open_uri("https://lutris.net/user/register/")),
            "disconnect":
            Action(self.on_disconnect),
            "connect":
            Action(self.on_connect),
            "synchronize":
            Action(lambda *x: self.sync_library()),
            "sync-local":
            Action(lambda *x: self.open_sync_dialog()),
            "add-game":
            Action(self.on_add_game_button_clicked),
            "preferences":
            Action(self.on_preferences_activate),
            "manage-runners":
            Action(self.on_manage_runners),
            "about":
            Action(self.on_about_clicked),
            "show-installed-only":
            Action(
                self.on_show_installed_state_change,
                type="b",
                default=self.filter_installed,
                accel="<Primary>h",
            ),
            "show-installed-first":
            Action(
                self.on_show_installed_first_state_change,
                type="b",
                default=self.show_installed_first,
            ),
            "toggle-viewtype":
            Action(self.on_toggle_viewtype),
            "icon-type":
            Action(self.on_icontype_state_change,
                   type="s",
                   default=self.icon_type),
            "view-sorting":
            Action(self.on_view_sorting_state_change,
                   type="s",
                   default=self.view_sorting),
            "view-sorting-ascending":
            Action(
                self.on_view_sorting_direction_change,
                type="b",
                default=self.view_sorting_ascending,
            ),
            "use-dark-theme":
            Action(self.on_dark_theme_state_change,
                   type="b",
                   default=self.use_dark_theme),
            "show-tray-icon":
            Action(self.on_tray_icon_toggle,
                   type="b",
                   default=self.show_tray_icon),
            "show-side-bar":
            Action(
                self.on_sidebar_state_change,
                type="b",
                default=self.sidebar_visible,
                accel="F9",
            ),
        }

        self.actions = {}
        app = self.props.application
        for name, value in actions.items():
            if not value.type:
                action = Gio.SimpleAction.new(name)
                action.connect("activate", value.callback)
            else:
                default_value = None
                param_type = None
                if value.default is not None:
                    default_value = GLib.Variant(value.type, value.default)
                if value.type != "b":
                    param_type = default_value.get_type()
                action = Gio.SimpleAction.new_stateful(name, param_type,
                                                       default_value)
                action.connect("change-state", value.callback)
            self.actions[name] = action
            if value.enabled is False:
                action.props.enabled = False
            self.add_action(action)
            if value.accel:
                app.add_accelerator(value.accel, "win." + name)
Beispiel #7
0
 def on_confirm_action(n, action):
     if action == "confirm":
         invocation.return_value(GLib.Variant('()', ()))
     else:
         invocation.return_dbus_error('org.bluez.Error.Canceled',
                                      "User canceled pairing")
Beispiel #8
0
 def grant_permissions(self, doc_id, app_id, permissions):
     self.proxy.call_sync(
         "GrantPermissions",
         GLib.Variant('(ssas)', (doc_id, app_id, permissions)), 0, -1, None)
Beispiel #9
0
 def lookup(self, path):
     res = self.proxy.call_sync(
         "Lookup", GLib.Variant('(ay)', (filename_to_ay(path), )), 0, -1,
         None)
     return res[0]
Beispiel #10
0
	def Get(self, interface_name, property_name):
		type = self.readable_properties[interface_name + "." + property_name]
		result = getattr(self.object, property_name)
		return GLib.Variant(type, result)
Beispiel #11
0
 def get_mount_path(self):
     res = self.proxy.call_sync("GetMountPoint", GLib.Variant('()', ()), 0,
                                -1, None)
     return bytearray(res[0][:-1]).decode("utf-8")
Beispiel #12
0
				def onPropertiesChanged(iface, changed, invalidated):
					changed = {key: GLib.Variant(self.readable_properties[iface + "." + key], val) for key, val in changed.items()}
					args = GLib.Variant("(sa{sv}as)", (iface, changed, invalidated))
					self.SignalEmitted("org.freedesktop.DBus.Properties", "PropertiesChanged", args)
Beispiel #13
0
				def EmitSignal(iface, signal):
					return lambda *args: self.SignalEmitted(iface.name, signal.name, GLib.Variant("(" + "".join(s.signature for s in signal.args) + ")", args))
Beispiel #14
0
 def __on_status_changed(self, data=None):
     properties = {'PlaybackStatus': GLib.Variant('s', self.__get_status())}
     self.PropertiesChanged(self.__MPRIS_PLAYER_IFACE, properties, [])
def set_window_size(list):
    g_variant = GLib.Variant('ai', list)
    setting.set_value(window_size, g_variant)
Beispiel #16
0
 def delete(self, doc_id):
     self.proxy.call_sync("Delete", GLib.Variant('(s)', (doc_id, )), 0, -1,
                          None)
     del self.docs[doc_id]
Beispiel #17
0
 def close(self):
     param = GLib.Variant('(u)', (self._return_id, ))
     self.call_sync('CloseNotification', param, Gio.DBusProxyFlags.NONE, -1,
                    None)
     self._return_id = None
Beispiel #18
0
 def set_value(self, itr, column, value):
     var = GLib.Variant(self.get_column_schema(column), value)
     if isinstance(itr, int):
         itr = self.get_iter_at_row(itr)
     Dee.Model.set_value(self, itr, column, var)
Beispiel #19
0
 def _prepare_arguments(signature: str,
                        args: Collection[Any]) -> Optional[GLib.Variant]:
     return GLib.Variant(f"({signature})", args) if signature else None
Beispiel #20
0
 def new(name, parameter_type=None):
     return Gio.SimpleAction.new_stateful(name, parameter_type,
                                          GLib.Variant("b", False))
Beispiel #21
0
def test_get_metadata_has_track_number_in_album(core, player):
    core.tracklist.add([Track(uri="dummy:a", track_no=7)])
    core.playback.play().get()

    assert player.Metadata["xesam:trackNumber"] == GLib.Variant("i", 7)
Beispiel #22
0
 def set_state(self, value):
     Action.set_state(self, GLib.Variant("b", value))
Beispiel #23
0
 def _set_override(self, name, v):
     items = self._dup_variant_as_dict()
     items[name] = self.VARIANT_TYPES[name](v)
     n = GLib.Variant('a{sv}', items)
     self._settings.set_value('overrides', n)
     self._variant = self._settings.get_value("overrides")
Beispiel #24
0
 def __init__(self):
     super(Udisks2, self).__init__()
     self.no_options = GLib.Variant('a{sv}', {})
     self.read_only = GLib.Variant('a{sv}', {'options': GLib.Variant('s', 'ro')})
     self.no_interaction = GLib.Variant('a{sv}', {'auth.no_user_interaction': GLib.Variant('b', True)})
     self.devices = Tree()
Beispiel #25
0
 def set_borders_crop(self):
     self.borders_crop_action.set_state(GLib.Variant(
         'b', self.borders_crop))
def set_last_opened_list(list):
    g_variant = GLib.Variant('as', list)
    setting.set_value(last_opened_list, g_variant)
Beispiel #27
0
 def set_scaling(self):
     self.scaling_action.set_state(GLib.Variant('s', self.scaling))
def set_last_used_composite_key(list):
    g_variant = GLib.Variant('aas', list)
    setting.set_value(last_used_composite_key, g_variant)
Beispiel #29
0
 def _update_filter_string(self, *args):
     value = [(row[0], row[1], row[2]) for row in self.model]
     settings.set_value(self.key, GLib.Variant('a(sbs)', value))
Beispiel #30
0
 def __update_metadata(self):
     if self.__get_status() == 'Stopped':
         self.__metadata = {}
     else:
         if Lp().player.current_track.id >= 0:
             track_id = Lp().player.current_track.id
         else:
             track_id = randint(10000000, 90000000)
         self.__metadata['mpris:trackid'] = self.__get_media_id(track_id)
         track_number = Lp().player.current_track.number
         if track_number is None:
             track_number = 1
         self.__metadata['xesam:trackNumber'] = GLib.Variant(
             'i', track_number)
         self.__metadata['xesam:title'] = GLib.Variant(
             's',
             Lp().player.current_track.name)
         self.__metadata['xesam:album'] = GLib.Variant(
             's',
             Lp().player.current_track.album.name)
         self.__metadata['xesam:artist'] = GLib.Variant(
             'as',
             Lp().player.current_track.artists)
         self.__metadata['xesam:albumArtist'] = GLib.Variant(
             'as',
             Lp().player.current_track.album_artists)
         self.__metadata['mpris:length'] = GLib.Variant(
             'x',
             Lp().player.current_track.duration * 1000000)
         self.__metadata['xesam:genre'] = GLib.Variant(
             'as',
             Lp().player.current_track.genres)
         self.__metadata['xesam:url'] = GLib.Variant(
             's',
             Lp().player.current_track.uri)
         rate = Lp().player.current_track.get_rate()
         if rate == Type.NONE:
             rate = Lp().player.current_track.get_popularity()
         self.__metadata["xesam:userRating"] = GLib.Variant('d', rate / 5)
         if Lp().player.current_track.id == Type.RADIOS:
             cover_path = Lp().art.get_radio_cache_path(
                 ", ".join(Lp().player.current_track.artists),
                 ArtSize.MONSTER)
         elif Lp().player.current_track.id == Type.EXTERNALS:
             cover_path = "/tmp/lollypop_mpris.jpg"
             pixbuf = Lp().art.pixbuf_from_tags(
                 GLib.filename_from_uri(Lp().player.current_track.uri)[0],
                 ArtSize.MONSTER)
             if pixbuf is not None:
                 pixbuf.savev(cover_path, "jpeg", ["quality"], ["90"])
         else:
             cover_path = Lp().art.get_album_cache_path(
                 Lp().player.current_track.album, ArtSize.MONSTER)
         if cover_path is not None:
             self.__metadata['mpris:artUrl'] = GLib.Variant(
                 's', "file://" + cover_path)
         elif 'mpris:artUrl' in self.__metadata:
             self.__metadata['mpris:artUrl'] = GLib.Variant('s', '')