def enabled(self): self.bar = SeekBar(app.player, app.librarian) self.buttons_table = find_widgets(app.window.top_bar, Gtk.Table)[1] self.seek_button = find_widgets(self.buttons_table, SeekButton)[0] self.buttons_table.remove(self.seek_button) self.buttons_table.attach(self.bar.elapsed_button, 1, 3, 0, 1) self.bar.show() app.window.set_seekbar_widget(self.bar)
def realized(widget): """Makes sure the widget is realized. view = Gtk.TreeView() with realized(view): do_something(view) """ own_window = False toplevel = widget.get_toplevel() if not isinstance(toplevel, Gtk.Window): window = Gtk.Window(type=Gtk.WindowType.POPUP) window.add(widget) own_window = True else: window = toplevel # realize all widgets without showing them for sub in find_widgets(window, Gtk.Widget): sub.realize() widget.realize() while Gtk.events_pending(): Gtk.main_iteration() assert widget.get_realized() assert window.get_realized() yield widget if own_window: window.remove(widget) window.destroy() while Gtk.events_pending(): Gtk.main_iteration()
def __init__(self, player): super(Volume, self).__init__(size=Gtk.IconSize.MENU, use_symbolic=True) # https://bugzilla.gnome.org/show_bug.cgi?id=781605 scales = qltk.find_widgets(self.get_popup(), Gtk.Scale) if scales: scales[0].props.round_digits = -1 self.set_relief(Gtk.ReliefStyle.NORMAL) self.set_adjustment(Gtk.Adjustment.new(0, 0, 1, 0.05, 0.1, 0)) popup = self.get_popup() if hasattr(Gtk, "Popover") and isinstance(popup, Gtk.Popover): popup.set_position(Gtk.PositionType.BOTTOM) self._id = self.connect('value-changed', self.__volume_changed, player) self._id2 = player.connect('notify::volume', self.__volume_notify) self._id3 = player.connect('notify::mute', self.__mute_notify) self._orig_icon_list = self.props.icons player.notify("volume") player.notify("mute") self.connect("event", self._on_button_event, player) replaygain_menu = VolumeMenu(player) self.connect('popup-menu', self.__popup, replaygain_menu) connect_obj(self, 'button-press-event', self.__volume_button_press, replaygain_menu, player)
def select_browser(self, activator, current, library, player, restore=False): if isinstance(current, Gtk.RadioAction): current = current.get_current_value() Browser = browsers.get(current) config.set("memory", "browser", Browser.__name__) if self.browser: container = self.browser.__container self.browser.unpack(container, self.songpane) if self.browser.accelerators: self.remove_accel_group(self.browser.accelerators) container.destroy() self.browser.destroy() self.browser = Browser(library, True) self.browser.connect('songs-selected', self.__browser_cb) self.browser.connect('activated', self.__browser_activate) if restore: self.browser.restore() self.browser.activate() self.browser.finalize(restore) if self.browser.reordered: self.songlist.enable_drop() elif self.browser.dropped: self.songlist.enable_drop(False) else: self.songlist.disable_drop() if self.browser.accelerators: self.add_accel_group(self.browser.accelerators) container = self.browser.__container = self.browser.pack(self.songpane) # find a paned and save the position paned = None for widget in qltk.find_widgets(container, RPaned): if widget is not self.songpane: paned = widget break if paned: try: key = "%s_pos" % self.browser.__class__.__name__ val = config.getfloat("browsers", key) # Use a minimum restore size val = max(val, 0.1) except: val = 0.4 paned.connect( 'notify::position', self.__browser_configure, self.browser) paned.set_relative(val) player.replaygain_profiles[1] = self.browser.replaygain_profiles player.volume = player.volume self.__browserbox.add(container) container.show() self.__hide_menus() self.__hide_headers() self.__refresh_size()
def __set_pane_size(self): widgets = qltk.find_widgets(self.__container, RPaned) if widgets: paned = widgets[0] try: key = "%s_pos" % self.browser.__class__.__name__ val = config.getfloat("browsers", key) except: val = 0.4 paned.set_relative(val)
def _set_timer_mode(self, mode='both'): widgets = find_widgets(self, TimeLabel) for elem in widgets: name = elem.get_name() if name == 'elapsed-label' or name == 'remaining-label': self.remove(elem) widgets = find_widgets(self.box, TimeLabel) for elem in widgets: name = elem.get_name() if name == 'elapsed-label' or name == 'remaining-label': self.box.remove(elem) if mode == 'both': self.box.pack_start(self.elapsed_label, True, True, 0) self.pack_start(self.remaining_label, False, True, 0) elif mode == 'remaining': self.box.pack_start(self.remaining_label, True, True, 0) elif mode == 'elapsed': self.box.pack_start(self.elapsed_label, True, True, 0) self.__timer_mode = mode config.set('plugins', self.c_timer_mode, self.__timer_mode)