本文整理汇总了Python中quodlibet.util.connect_destroy函数的典型用法代码示例。如果您正苦于以下问题:Python connect_destroy函数的具体用法?Python connect_destroy怎么用?Python connect_destroy使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了connect_destroy函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, library):
print_d("Creating Soundcloud Browser")
super(SoundcloudBrowser, self).__init__(spacing=12)
self.set_orientation(Gtk.Orientation.VERTICAL)
if not self.instances():
self._init(library)
self._register_instance()
self.connect('destroy', self.__destroy)
self.connect('uri-received', self.__handle_incoming_uri)
self.__auth_sig = self.api_client.connect('authenticated',
self.__on_authenticated)
connect_destroy(self.library, 'changed', self.__changed)
self.login_state = (State.LOGGED_IN if self.online
else State.LOGGED_OUT)
self._create_searchbar(self.library)
vbox = Gtk.VBox()
vbox.pack_start(self._create_footer(), False, False, 6)
vbox.pack_start(self._create_category_widget(), True, True, 0)
vbox.pack_start(self.create_login_button(), False, False, 6)
vbox.show()
pane = qltk.ConfigRHPaned("browsers", "soundcloud_pos", 0.4)
pane.show()
pane.pack1(vbox, resize=False, shrink=False)
self._songs_box = songs_box = Gtk.VBox(spacing=6)
songs_box.pack_start(self._searchbox, False, True, 0)
songs_box.show()
pane.pack2(songs_box, resize=True, shrink=False)
self.pack_start(pane, True, True, 0)
self.show()
示例2: __init__
def __init__(self, player, library):
super(WaveformSeekBar, self).__init__()
self._player = player
self._rms_vals = []
self._elapsed_label = TimeLabel()
self._remaining_label = TimeLabel()
self._waveform_scale = WaveformScale()
self.pack_start(Align(self._elapsed_label, border=6), False, True, 0)
self.pack_start(self._waveform_scale, True, True, 0)
self.pack_start(Align(self._remaining_label, border=6), False, True, 0)
for child in self.get_children():
child.show_all()
self._tracker = TimeTracker(player)
self._tracker.connect('tick', self._on_tick, player)
connect_destroy(player, 'seek', self._on_player_seek)
connect_destroy(player, 'song-started', self._on_song_started)
connect_destroy(player, 'song-ended', self._on_song_ended)
connect_destroy(player, 'notify::seekable', self._on_seekable_changed)
connect_destroy(library, 'changed', self._on_song_changed, player)
self.connect('destroy', self._on_destroy)
self._update(player)
self._tracker.tick()
if player.info:
self._create_waveform(player.info, CONFIG.data_size)
示例3: enable_window_tracking
def enable_window_tracking(self, config_prefix, size_suffix=""):
"""Enable tracking/saving of changes and restore size/pos/maximized.
Make sure to call set_transient_for() before since position is
restored relative to the parent in this case.
config_prefix -- prefix for the config key
(prefix_size, prefix_position, prefix_maximized)
size_suffix -- optional suffix for saving the size. For cases where the
window has multiple states with different content sizes.
(example: edit tags with one song or multiple)
"""
self.__state = 0
self.__name = config_prefix
self.__size_suffix = size_suffix
self.__save_size_pos_deferred = DeferredSignal(
self.__do_save_size_pos, timeout=50, owner=self)
self.connect('configure-event', self.__configure_event)
self.connect('window-state-event', self.__window_state_changed)
self.connect('notify::visible', self.__visible_changed)
parent = self.get_transient_for()
if parent:
connect_destroy(
parent, 'configure-event', self.__parent_configure_event)
self.__restore_window_state()
示例4: __init__
def __init__(self, library, player, pattern_filename):
super(SongInfo, self).__init__()
self._pattern_filename = pattern_filename
self.set_visible_window(False)
align = Gtk.Alignment(xscale=0.0, xalign=0.0, yscale=0.0, yalign=0.0)
label = Gtk.Label()
label.set_ellipsize(Pango.EllipsizeMode.MIDDLE)
label.set_selectable(True)
align.add(label)
label.set_alignment(0.0, 0.0)
self._label = label
connect_destroy(library, 'changed', self._on_library_changed, player)
connect_destroy(player, 'song-started', self._on_song_started)
label.connect('populate-popup', self._on_label_popup, player, library)
self.connect('button-press-event', self._on_button_press_event,
player, library)
try:
with open(self._pattern_filename, "rb") as h:
self._pattern = h.read().strip().decode("utf-8")
except (EnvironmentError, UnicodeDecodeError):
pass
self._compiled = XMLFromMarkupPattern(self._pattern)
align.show_all()
self.add(align)
示例5: __init__
def __init__(self, library, song, lyrics=True, bookmarks=True):
super(OneSong, self).__init__()
vbox = Gtk.VBox(spacing=12)
vbox.set_border_width(12)
self._title(song, vbox)
self._album(song, vbox)
self._people(song, vbox)
self._library(song, vbox)
self._file(song, vbox)
self._additional(song, vbox)
sw = SW()
sw.title = _("Information")
sw.add_with_viewport(vbox)
self.append_page(sw)
if lyrics:
lyrics = LyricsPane(song)
lyrics.title = _("Lyrics")
self.append_page(lyrics)
if bookmarks:
bookmarks = EditBookmarksPane(None, song)
bookmarks.title = _("Bookmarks")
bookmarks.set_border_width(12)
self.append_page(bookmarks)
connect_destroy(library, 'changed', self.__check_changed, vbox, song)
示例6: enable_row_update
def enable_row_update(self, view, sw, column):
connect_obj(view, "draw", self.__update_visibility, view)
connect_destroy(sw.get_vadjustment(), "value-changed", self.__stop_update, view)
self.__pending_paths = []
self.__update_deferred = DeferredSignal(self.__update_visible_rows, timeout=50, priority=GLib.PRIORITY_LOW)
self.__column = column
self.__first_expose = True
示例7: __init__
def __init__(self, parent, player, library):
super(TopBar, self).__init__()
# play controls
control_item = Gtk.ToolItem()
self.insert(control_item, 0)
t = PlayControls(player, library.librarian)
self.volume = t.volume
# only restore the volume in case it is managed locally, otherwise
# this could affect the system volume
if not player.has_external_volume:
player.volume = config.getfloat("memory", "volume")
self.volume.connect("value-changed", self._on_volume_changed)
control_item.add(t)
self.insert(Gtk.SeparatorToolItem(), 1)
info_item = Gtk.ToolItem()
self.insert(info_item, 2)
info_item.set_expand(True)
box = Gtk.Box(spacing=6)
info_item.add(box)
qltk.add_css(self, "GtkToolbar {padding: 3px;}")
# song text
info_pattern_path = os.path.join(quodlibet.get_user_dir(), "songinfo")
text = SongInfo(library.librarian, player, info_pattern_path)
box.pack_start(Align(text, border=3), True, True, 0)
# cover image
self.image = CoverImage(resize=True)
connect_destroy(player, 'song-started', self.__new_song)
# FIXME: makes testing easier
if app.cover_manager:
connect_destroy(
app.cover_manager, 'cover-changed',
self.__song_art_changed, library)
box.pack_start(Align(self.image, border=2), False, True, 0)
# On older Gtk+ (3.4, at least)
# setting a margin on CoverImage leads to errors and result in the
# QL window not beeing visible for some reason.
assert self.image.props.margin == 0
for child in self.get_children():
child.show_all()
context = self.get_style_context()
context.add_class("primary-toolbar")
示例8: __init__
def __init__(self, library, songs, parent=None):
super(Information, self).__init__(dialog=False)
self.set_default_size(400, 400)
self.set_transient_for(qltk.get_top_parent(parent))
self.enable_window_tracking("quodlibet_information")
if len(songs) > 1:
connect_destroy(library, 'changed', self.__check_changed)
if len(songs) > 0:
connect_destroy(library, 'removed', self.__check_removed)
self.__songs = songs
self.__update(library)
self.get_child().show_all()
示例9: __init__
def __init__(self, player, library):
super(SeekBar, self).__init__()
self._elapsed_label = TimeLabel()
self._remaining_label = TimeLabel()
scale = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL)
scale.set_adjustment(Gtk.Adjustment.new(0, 0, 0, 3, 15, 0))
scale.set_draw_value(False)
self._scale = scale
self.pack_start(Align(self._elapsed_label, border=6), False, True, 0)
self.pack_start(scale, True, True, 0)
self.pack_start(Align(self._remaining_label, border=6), False, True, 0)
for child in self.get_children():
child.show_all()
self._id = self._scale.connect("value-changed", self._on_user_changed, player)
self._scale.connect("value-changed", self._on_scale_value_changed, player)
self._tracker = TimeTracker(player)
self._tracker.connect("tick", self._on_tick, player)
connect_destroy(player, "seek", self._on_player_seek)
connect_destroy(player, "song-started", self._on_song_started)
connect_destroy(player, "notify::seekable", self._on_seekable_changed)
connect_destroy(library, "changed", self._on_song_changed, player)
self.connect("destroy", self._on_destroy)
with self._inhibit():
self._update(player)
self._tracker.tick()
示例10: test_main
def test_main(self):
from gi.repository import Gtk
b = Gtk.Button()
class A(Gtk.Button):
def foo(self):
pass
a = A()
ref = sys.getrefcount(a)
util.connect_destroy(b, "clicked", a.foo)
self.assertEqual(sys.getrefcount(a), ref + 1)
a.destroy()
self.assertEqual(sys.getrefcount(a), ref)
示例11: __init__
def __init__(self, model):
super(DuplicateSongsView, self).__init__(model)
connect_obj(self, 'row-activated',
self.__select_song, app.player)
# Selecting multiple is a nice feature it turns out.
self.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
# Handle signals propagated from the underlying library
self.connected_library_sigs = []
SIGNAL_MAP = {
'removed': self._removed,
'added': self._added,
'changed': self._changed
}
for (sig, callback) in SIGNAL_MAP.items():
print_d("Listening to library.%s signals" % sig)
connect_destroy(app.library, sig, callback)
示例12: __init__
def __init__(self, parent, player, library):
super(TopBar, self).__init__()
# play controls
control_item = Gtk.ToolItem()
self.insert(control_item, 0)
t = PlayControls(player, library.librarian)
self.volume = t.volume
control_item.add(t)
self.insert(Gtk.SeparatorToolItem(), 1)
info_item = Gtk.ToolItem()
self.insert(info_item, 2)
info_item.set_expand(True)
box = Gtk.Box(spacing=6)
info_item.add(box)
qltk.add_css(self, "GtkToolbar {padding: 3px;}")
# song text
info_pattern_path = os.path.join(const.USERDIR, "songinfo")
text = SongInfo(library.librarian, player, info_pattern_path)
box.pack_start(Alignment(text, border=3), True, True, 0)
# cover image
self.image = CoverImage(resize=True)
connect_destroy(player, 'song-started', self.__new_song)
# FIXME: makes testing easier
if app.cover_manager:
connect_destroy(
app.cover_manager, 'cover-changed',
self.__song_art_changed, library)
# CoverImage doesn't behave in a Alignment, so wrap it
coverbox = Gtk.Box()
coverbox.pack_start(self.image, True, True, 0)
box.pack_start(Alignment(coverbox, border=2), False, True, 0)
for child in self.get_children():
child.show_all()
context = self.get_style_context()
context.add_class("primary-toolbar")
示例13: _create_category_widget
def _create_category_widget(self):
scrolled_window = ScrolledWindow()
scrolled_window.show()
scrolled_window.set_shadow_type(Gtk.ShadowType.IN)
self.view = view = RCMHintedTreeView()
view.show()
view.set_headers_visible(False)
scrolled_window.set_policy(
Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
scrolled_window.add(view)
model = Gtk.ListStore(int, str, str, str, bool)
filters = self.filters
for (i, (name, data)) in enumerate(filters):
filter_type, icon, query, always = data
enabled = always
model.append(row=[filter_type, icon, name, query, enabled])
def search_func(model, column, key, iter, data):
return key.lower() not in model[iter][column].lower()
view.set_search_column(self.ModelIndex.NAME)
view.set_search_equal_func(search_func, None)
column = Gtk.TreeViewColumn("Songs")
column.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
renderpb = Gtk.CellRendererPixbuf()
renderpb.props.xpad = 6
renderpb.props.ypad = 6
column.pack_start(renderpb, False)
column.add_attribute(renderpb, "icon-name", self.ModelIndex.ICON_NAME)
render = Gtk.CellRendererText()
render.set_property('ellipsize', Pango.EllipsizeMode.END)
def cdf(column, cell, model, iter_, user_data):
on = (self.login_state == State.LOGGED_IN or
model[iter_][self.ModelIndex.ALWAYS_ENABLE])
cell.set_sensitive(on)
column.set_cell_data_func(render, cdf)
column.set_cell_data_func(renderpb, cdf)
view.append_column(column)
column.pack_start(render, True)
column.add_attribute(render, "text", self.ModelIndex.NAME)
view.set_model(model)
selection = view.get_selection()
def select_func(sel, model, path, value):
return (self.login_state == State.LOGGED_IN or
model[model.get_iter(path)][self.ModelIndex.ALWAYS_ENABLE])
selection.set_select_function(select_func)
self._refresh_online_filters()
self.__changed_sig = connect_destroy(selection, 'changed',
DeferredSignal(self._on_select))
return scrolled_window
示例14: __init__
def __init__(self, player, library):
super(WaveformSeekBar, self).__init__()
self._player = player
self._rms_vals = []
self._hovering = False
self._elapsed_label = TimeLabel()
self._remaining_label = TimeLabel()
self._waveform_scale = WaveformScale(player)
self.pack_start(Align(self._elapsed_label, border=6), False, True, 0)
self.pack_start(self._waveform_scale, True, True, 0)
self.pack_start(Align(self._remaining_label, border=6), False, True, 0)
for child in self.get_children():
child.show_all()
self.set_time_label_visibility(CONFIG.show_time_labels)
self._waveform_scale.connect('size-allocate',
self._update_redraw_interval)
self._waveform_scale.connect('motion-notify-event',
self._on_mouse_hover)
self._waveform_scale.connect('leave-notify-event',
self._on_mouse_leave)
self._label_tracker = TimeTracker(player)
self._label_tracker.connect('tick', self._on_tick_label, player)
self._redraw_tracker = TimeTracker(player)
self._redraw_tracker.connect('tick', self._on_tick_waveform, player)
connect_destroy(player, 'seek', self._on_player_seek)
connect_destroy(player, 'song-started', self._on_song_started)
connect_destroy(player, 'song-ended', self._on_song_ended)
connect_destroy(player, 'notify::seekable', self._on_seekable_changed)
connect_destroy(library, 'changed', self._on_song_changed, player)
self.connect('destroy', self._on_destroy)
self._update(player)
if player.info:
self._create_waveform(player.info, CONFIG.max_data_points)
示例15: __init__
def __init__(self, player, library):
hbox = Gtk.HBox(spacing=3)
l = TimeLabel()
self._time_label = l
hbox.pack_start(l, True, True, 0)
arrow = Gtk.Arrow.new(Gtk.ArrowType.RIGHT, Gtk.ShadowType.NONE)
hbox.pack_start(arrow, False, True, 0)
super(SeekBar, self).__init__(hbox)
self._slider_label = TimeLabel()
self.set_slider_widget(self._slider_label)
self._on_seekable_changed(player)
connect_destroy(player, "notify::seekable", self._on_seekable_changed)
self.scale.connect('button-press-event', self.__seek_lock)
self.scale.connect('button-release-event', self.__seek_unlock, player)
self.scale.connect('key-press-event', self.__seek_lock)
self.scale.connect('key-release-event', self.__seek_unlock, player)
self.connect('scroll-event', self.__scroll, player)
self.scale.connect('value-changed', self.__update_time, l)
m = Gtk.Menu()
c = ConfigCheckMenuItem(
_("Display remaining time"), "player", "time_remaining")
c.set_active(config.getboolean("player", "time_remaining"))
connect_obj(c, 'toggled', self.scale.emit, 'value-changed')
self.__remaining = c
m.append(c)
m.append(SeparatorMenuItem())
i = qltk.MenuItem(_(u"_Edit Bookmarks…"), Icons.EDIT)
def edit_bookmarks_cb(menu_item):
window = bookmarks.EditBookmarks(self, library, player)
window.show()
i.connect('activate', edit_bookmarks_cb)
m.append(i)
m.show_all()
m.attach_to_widget(self, None)
connect_obj(self,
'button-press-event', self.__check_menu, m, player, c)
connect_obj(self, 'popup-menu', self.__popup_menu, m, player)
timer = TimeTracker(player)
connect_obj(timer, 'tick', self.__check_time, player)
connect_destroy(
library, "changed", self.__songs_changed, player, m)
connect_destroy(player, 'song-started', self.__song_started, m)
connect_destroy(player, 'seek', self.__seeked)