def __init__(self, unit): super().__init__(visible=True, full_title=self.title) self.unit = unit self.config = self.unit.config self.ampd = self.unit.ampd.sub_executor() self.signal_handlers = [] self.actions = Gio.SimpleActionGroup() self.signals = {} self.win = None self.action_aggregator = unit.manager.create_aggregator( self.name + '.action', self.action_added_cb, self.action_removed_cb, also_wants=[ provider + '.action' for provider in self.use_resources ]) self.bind_property( 'status', self, 'full-title', GObject.BindingFlags(0), lambda x, y: "{} [{}]".format(self.title, self.status) if self.status else self.title) self.connect('destroy', self.__destroy_cb) self.connect('map', self.__map_cb) self.connect('unmap', self.__unmap_cb) self.signal_handler_connect(unit.unit_server.ampd_client, 'client-connected', self.client_connected_cb) if self.ampd.get_is_connected(): self.client_connected_cb(unit.unit_server.ampd_client)
def __init__(self, *args): super().__init__(*args) self.signals['check-resize'] = self.window_check_resize_cb self.pixbufs = PixbufCache() self.images = [] builder = self.unit.unit_builder.build_ui('current') self.welcome = builder.get_object('welcome') self.current = builder.get_object('current') self.unit.unit_server.bind_property('current-song', self.welcome, 'visible', GObject.BindingFlags.SYNC_CREATE, lambda x, y: not y) self.unit.unit_server.bind_property('current-song', self.current, 'visible', GObject.BindingFlags.SYNC_CREATE, lambda x, y: bool(y)) self.signal_handler_connect(self.unit.unit_server, 'notify::current-song', self.fader) self.fading = None self.width = 0 self.css_provider = Gtk.CssProvider.new() self.get_style_context().add_provider(self.css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) self.connect('size-allocate', self.size_allocate_cb) self.bind_property('size', builder.get_object('image-icon'), 'pixel-size', GObject.BindingFlags(0), lambda x, y: y * 5) for field in self.FIELD_NAMES: label = builder.get_object('label-' + field.lower()) label.field = field image = builder.get_object('image-' + field.lower()) if image: image_label = builder.get_object('image-label-' + field.lower()) if image_label: label.bind_property('label', image_label, 'label', GObject.BindingFlags.SYNC_CREATE) image.bind_property('visible', image_label, 'visible', GObject.BindingFlags.SYNC_CREATE) label.connect('notify::label', self.notify_label_cb, image) image.connect('size-allocate', self.image_size_allocate_cb) self.images.append(image) else: self.unit.unit_server.bind_property('current-song', label, 'visible', GObject.BindingFlags.SYNC_CREATE, lambda x, y, z: z in y, None, field) self.unit.unit_server.bind_property('current-song', label, 'label', GObject.BindingFlags.SYNC_CREATE, lambda x, y, z: self.set_size() or y.get(z, ''), None, field) self.add(builder.get_object('widget')) self.connect('map', self.__map_cb) self.connect('destroy', self.__destroy_cb)