本文整理汇总了Python中quodlibet.qltk.x.Align类的典型用法代码示例。如果您正苦于以下问题:Python Align类的具体用法?Python Align怎么用?Python Align使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Align类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, library, player, pattern_filename):
super(SongInfo, self).__init__()
self._pattern_filename = pattern_filename
self.set_visible_window(False)
align = Align(halign=Gtk.Align.START, valign=Gtk.Align.START)
label = Gtk.Label()
label.set_ellipsize(Pango.EllipsizeMode.MIDDLE)
label.set_track_visited_links(False)
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)
开发者ID:mistotebe,项目名称:quodlibet,代码行数:28,代码来源:info.py
示例2: Frame
def Frame(name, widget):
f = Gtk.Frame()
f.set_shadow_type(Gtk.ShadowType.NONE)
l = Gtk.Label()
l.set_markup("<u><b>%s</b></u>" % name)
f.set_label_widget(l)
a = Align(top=3, left=12)
f.add(a)
a.add(widget)
return f
开发者ID:urielz,项目名称:quodlibet,代码行数:10,代码来源:information.py
示例3: pack
def pack(self, songpane):
self._main_box.pack1(self, True, False)
self._rh_box = rhbox = Gtk.VBox(spacing=6)
align = Align(self._sb_box, left=0, right=6, top=6)
rhbox.pack_start(align, False, True, 0)
rhbox.pack_start(songpane, True, True, 0)
self._main_box.pack2(rhbox, True, False)
rhbox.show()
align.show_all()
return self._main_box
开发者ID:mistotebe,项目名称:quodlibet,代码行数:10,代码来源:main.py
示例4: Frame
def Frame(name, widget):
def hx(value):
return hex(int(value * 255))[2:]
f = Gtk.Frame()
qltk.add_css(f, '* {opacity: 0.9}')
l = Gtk.Label()
l.set_markup(util.escape(name))
qltk.add_css(l, " * {opacity: 0.6; padding: 0px 2px;}")
f.set_label_widget(l)
a = Align(top=6, left=12, bottom=6, right=6)
f.add(a)
a.add(widget)
return f
开发者ID:elfalem,项目名称:quodlibet,代码行数:13,代码来源:information.py
示例5: _create_searchbar
def _create_searchbar(self, library):
completion = LibraryTagCompletion(library)
self.accelerators = Gtk.AccelGroup()
search = SearchBarBox(completion=completion,
validator=SoundcloudQuery.validator,
accel_group=self.accelerators,
timeout=3000)
self.__searchbar = search
search.connect('query-changed', self.__query_changed)
def focus(widget, *args):
qltk.get_top_parent(widget).songlist.grab_focus()
search.connect('focus-out', focus)
self._searchbox = Align(search, left=0, right=6, top=6)
self._searchbox.show_all()
开发者ID:zsau,项目名称:quodlibet,代码行数:16,代码来源:main.py
示例6: QuodLibetWindow
class QuodLibetWindow(Window, PersistentWindowMixin, AppWindow):
def __init__(self, library, player, headless=False, restore_cb=None):
super(QuodLibetWindow, self).__init__(dialog=False)
self.__destroyed = False
self.__update_title(player)
self.set_default_size(600, 480)
main_box = Gtk.VBox()
self.add(main_box)
self.side_book = qltk.Notebook()
# get the playlist up before other stuff
self.songlist = MainSongList(library, player)
self.songlist.connect("key-press-event", self.__songlist_key_press)
self.songlist.connect_after(
'drag-data-received', self.__songlist_drag_data_recv)
self.song_scroller = ScrolledWindow()
self.song_scroller.set_policy(
Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
self.song_scroller.set_shadow_type(Gtk.ShadowType.IN)
self.song_scroller.add(self.songlist)
self.qexpander = QueueExpander(library, player)
self.qexpander.set_no_show_all(True)
self.qexpander.set_visible(config.getboolean("memory", "queue"))
def on_queue_visible(qex, param):
config.set("memory", "queue", str(qex.get_visible()))
self.qexpander.connect("notify::visible", on_queue_visible)
self.playlist = PlaylistMux(
player, self.qexpander.model, self.songlist.model)
self.__player = player
# create main menubar, load/restore accelerator groups
self.__library = library
ui = self.__create_menu(player, library)
accel_group = ui.get_accel_group()
self.add_accel_group(accel_group)
def scroll_and_jump(*args):
self.__jump_to_current(True, None, True)
keyval, mod = Gtk.accelerator_parse("<Primary><shift>J")
accel_group.connect(keyval, mod, 0, scroll_and_jump)
# custom accel map
accel_fn = os.path.join(quodlibet.get_user_dir(), "accels")
Gtk.AccelMap.load(accel_fn)
# save right away so we fill the file with example comments of all
# accels
Gtk.AccelMap.save(accel_fn)
menubar = ui.get_widget("/Menu")
# Since https://git.gnome.org/browse/gtk+/commit/?id=b44df22895c79
# toplevel menu items show an empty 16x16 image. While we don't
# need image items there UIManager creates them by default.
# Work around by removing the empty GtkImages
for child in menubar.get_children():
if isinstance(child, Gtk.ImageMenuItem):
child.set_image(None)
main_box.pack_start(menubar, False, True, 0)
top_bar = TopBar(self, player, library)
main_box.pack_start(top_bar, False, True, 0)
self.top_bar = top_bar
self.__browserbox = Align(bottom=3)
self.__paned = paned = ConfigRHPaned("memory", "sidebar_pos", 0.25)
paned.pack1(self.__browserbox, resize=True)
# We'll pack2 when necessary (when the first sidebar plugin is set up)
main_box.pack_start(paned, True, True, 0)
play_order = PlayOrderWidget(self.songlist.model, player)
statusbox = StatusBarBox(play_order, self.qexpander)
self.order = play_order
self.statusbar = statusbox.statusbar
main_box.pack_start(
Align(statusbox, border=3, top=-3),
False, True, 0)
self.songpane = SongListPaned(self.song_scroller, self.qexpander)
self.songpane.show_all()
try:
orders = []
for e in config.getstringlist('memory', 'sortby', []):
orders.append((e[1:], int(e[0])))
except ValueError:
pass
else:
self.songlist.set_sort_orders(orders)
#.........这里部分代码省略.........
开发者ID:zsau,项目名称:quodlibet,代码行数:101,代码来源:quodlibetwindow.py
示例7: __init__
def __init__(self, library):
super(InternetRadio, 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)
completion = LibraryTagCompletion(self.__stations)
self.accelerators = Gtk.AccelGroup()
self.__searchbar = search = SearchBarBox(completion=completion, accel_group=self.accelerators)
search.connect("query-changed", self.__filter_changed)
menu = Gtk.Menu()
new_item = MenuItem(_(u"_New Station…"), Icons.LIST_ADD)
new_item.connect("activate", self.__add)
menu.append(new_item)
update_item = MenuItem(_("_Update Stations"), Icons.VIEW_REFRESH)
update_item.connect("activate", self.__update)
menu.append(update_item)
menu.show_all()
button = MenuButton(SymbolicIconImage(Icons.EMBLEM_SYSTEM, Gtk.IconSize.MENU), arrow=True)
button.set_menu(menu)
def focus(widget, *args):
qltk.get_top_parent(widget).songlist.grab_focus()
search.connect("focus-out", focus)
# treeview
scrolled_window = ScrolledWindow()
scrolled_window.show()
scrolled_window.set_shadow_type(Gtk.ShadowType.IN)
self.view = view = AllTreeView()
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)
model.append(row=[self.TYPE_ALL, Icons.FOLDER, "__all", _("All Stations")])
model.append(row=[self.TYPE_SEP, Icons.FOLDER, "", ""])
# Translators: Favorite radio stations
model.append(row=[self.TYPE_FAV, Icons.FOLDER, "__fav", _("Favorites")])
model.append(row=[self.TYPE_SEP, Icons.FOLDER, "", ""])
filters = self.filters
for text, k in sorted([(filters.text(k), k) for k in filters.keys()]):
model.append(row=[self.TYPE_FILTER, Icons.EDIT_FIND, k, text])
model.append(row=[self.TYPE_NOCAT, Icons.FOLDER, "nocat", _("No Category")])
def separator(model, iter, data):
return model[iter][self.TYPE] == self.TYPE_SEP
view.set_row_separator_func(separator, None)
def search_func(model, column, key, iter, data):
return key.lower() not in model[iter][column].lower()
view.set_search_column(self.NAME)
view.set_search_equal_func(search_func, None)
column = Gtk.TreeViewColumn("genres")
column.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
renderpb = Gtk.CellRendererPixbuf()
renderpb.props.xpad = 3
column.pack_start(renderpb, False)
column.add_attribute(renderpb, "icon-name", self.ICON_NAME)
render = Gtk.CellRendererText()
render.set_property("ellipsize", Pango.EllipsizeMode.END)
view.append_column(column)
column.pack_start(render, True)
column.add_attribute(render, "text", self.NAME)
view.set_model(model)
# selection
selection = view.get_selection()
selection.set_mode(Gtk.SelectionMode.MULTIPLE)
self.__changed_sig = connect_destroy(selection, "changed", util.DeferredSignal(lambda x: self.activate()))
box = Gtk.HBox(spacing=6)
box.pack_start(search, True, True, 0)
box.pack_start(button, False, True, 0)
self._searchbox = Align(box, left=0, right=6, top=6)
self._searchbox.show_all()
def qbar_response(infobar, response_id):
if response_id == infobar.RESPONSE_LOAD:
self.__update()
self.qbar = QuestionBar()
self.qbar.connect("response", qbar_response)
if self._is_library_empty():
#.........这里部分代码省略.........
开发者ID:virtuald,项目名称:quodlibet,代码行数:101,代码来源:iradio.py
示例8: InternetRadio
#.........这里部分代码省略.........
view.set_row_separator_func(separator, None)
def search_func(model, column, key, iter, data):
return key.lower() not in model[iter][column].lower()
view.set_search_column(self.NAME)
view.set_search_equal_func(search_func, None)
column = Gtk.TreeViewColumn("genres")
column.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
renderpb = Gtk.CellRendererPixbuf()
renderpb.props.xpad = 3
column.pack_start(renderpb, False)
column.add_attribute(renderpb, "icon-name", self.ICON_NAME)
render = Gtk.CellRendererText()
render.set_property("ellipsize", Pango.EllipsizeMode.END)
view.append_column(column)
column.pack_start(render, True)
column.add_attribute(render, "text", self.NAME)
view.set_model(model)
# selection
selection = view.get_selection()
selection.set_mode(Gtk.SelectionMode.MULTIPLE)
self.__changed_sig = connect_destroy(selection, "changed", util.DeferredSignal(lambda x: self.activate()))
box = Gtk.HBox(spacing=6)
box.pack_start(search, True, True, 0)
box.pack_start(button, False, True, 0)
self._searchbox = Align(box, left=0, right=6, top=6)
self._searchbox.show_all()
def qbar_response(infobar, response_id):
if response_id == infobar.RESPONSE_LOAD:
self.__update()
self.qbar = QuestionBar()
self.qbar.connect("response", qbar_response)
if self._is_library_empty():
self.qbar.show()
pane = qltk.ConfigRHPaned("browsers", "internetradio_pos", 0.4)
pane.show()
pane.pack1(scrolled_window, resize=False, shrink=False)
songbox = Gtk.VBox(spacing=6)
songbox.pack_start(self._searchbox, False, True, 0)
self._songpane_container = Gtk.VBox()
self._songpane_container.show()
songbox.pack_start(self._songpane_container, True, True, 0)
songbox.pack_start(self.qbar, False, True, 0)
songbox.show()
pane.pack2(songbox, resize=True, shrink=False)
self.pack_start(pane, True, True, 0)
self.show()
def _is_library_empty(self):
return not len(self.__stations) and not len(self.__fav_stations)
def pack(self, songpane):
container = Gtk.VBox()
container.add(self)
self._songpane_container.add(songpane)
开发者ID:virtuald,项目名称:quodlibet,代码行数:67,代码来源:iradio.py
示例9: ratings_vbox
def ratings_vbox(self):
"""Returns a new VBox containing all ratings widgets"""
vb = Gtk.VBox(spacing=6)
# Default Rating
model = Gtk.ListStore(float)
default_combo = Gtk.ComboBox(model=model)
default_lab = Gtk.Label(label=_("_Default rating:"))
default_lab.set_use_underline(True)
default_lab.set_alignment(0, 0.5)
def draw_rating(column, cell, model, it, data):
num = model[it][0]
text = "%0.2f: %s" % (num, util.format_rating(num))
cell.set_property('text', text)
def default_rating_changed(combo, model):
it = combo.get_active_iter()
if it is None:
return
RATINGS.default = model[it][0]
qltk.redraw_all_toplevels()
def populate_default_rating_model(combo, num):
model = combo.get_model()
model.clear()
deltas = []
default = RATINGS.default
precision = RATINGS.precision
for i in range(0, num + 1):
r = i * precision
model.append(row=[r])
deltas.append((abs(default - r), i))
active = sorted(deltas)[0][1]
print_d("Choosing #%d (%.2f), closest to current %.2f"
% (active, precision * active, default))
combo.set_active(active)
cell = Gtk.CellRendererText()
default_combo.pack_start(cell, True)
default_combo.set_cell_data_func(cell, draw_rating, None)
default_combo.connect('changed', default_rating_changed, model)
default_lab.set_mnemonic_widget(default_combo)
def refresh_default_combo(num):
populate_default_rating_model(default_combo, num)
# Rating Scale
model = Gtk.ListStore(int)
scale_combo = Gtk.ComboBox(model=model)
scale_lab = Gtk.Label(label=_("Rating _scale:"))
scale_lab.set_use_underline(True)
scale_lab.set_mnemonic_widget(scale_combo)
cell = Gtk.CellRendererText()
scale_combo.pack_start(cell, False)
num = RATINGS.number
for i in [1, 2, 3, 4, 5, 6, 8, 10]:
it = model.append(row=[i])
if i == num:
scale_combo.set_active_iter(it)
def draw_rating_scale(column, cell, model, it, data):
num_stars = model[it][0]
text = "%d: %s" % (num_stars, RATINGS.full_symbol * num_stars)
cell.set_property('text', text)
def rating_scale_changed(combo, model):
it = combo.get_active_iter()
if it is None:
return
RATINGS.number = num = model[it][0]
refresh_default_combo(num)
refresh_default_combo(RATINGS.number)
scale_combo.set_cell_data_func(cell, draw_rating_scale, None)
scale_combo.connect('changed', rating_scale_changed, model)
default_align = Align(halign=Gtk.Align.START)
default_align.add(default_lab)
scale_align = Align(halign=Gtk.Align.START)
scale_align.add(scale_lab)
grid = Gtk.Grid(column_spacing=6, row_spacing=6)
grid.add(scale_align)
grid.add(scale_combo)
grid.attach(default_align, 0, 1, 1, 1)
grid.attach(default_combo, 1, 1, 1, 1)
vb.pack_start(grid, False, False, 6)
# Bayesian Factor
bayesian_factor = config.getfloat("settings",
"bayesian_rating_factor", 0.0)
adj = Gtk.Adjustment.new(bayesian_factor, 0.0, 10.0, 0.5, 0.5, 0.0)
bayes_spin = Gtk.SpinButton(adjustment=adj, numeric=True)
bayes_spin.set_digits(1)
bayes_spin.connect('changed', self.__changed_and_signal_library,
'settings', 'bayesian_rating_factor')
bayes_spin.set_tooltip_text(
_("Bayesian Average factor (C) for aggregated ratings.\n"
#.........这里部分代码省略.........
开发者ID:faubiguy,项目名称:quodlibet,代码行数:101,代码来源:prefs.py
示例10: __init__
def __init__(self):
super(PreferencesWindow.Player, self).__init__(spacing=12)
self.set_border_width(12)
self.title = _("Playback")
# player backend
if app.player and hasattr(app.player, 'PlayerPreferences'):
player_prefs = app.player.PlayerPreferences()
f = qltk.Frame(_("Output Configuration"), child=player_prefs)
self.pack_start(f, False, True, 0)
# replaygain
fallback_gain = config.getfloat("player", "fallback_gain", 0.0)
adj = Gtk.Adjustment.new(fallback_gain, -12.0, 12.0, 0.5, 0.5, 0.0)
fb_spin = Gtk.SpinButton(adjustment=adj)
fb_spin.set_digits(1)
fb_spin.connect('changed', self.__changed,
'player', 'fallback_gain')
fb_spin.set_tooltip_text(
_("If no Replay Gain information is available "
"for a song, scale the volume by this value"))
fb_label = Gtk.Label(label=_("_Fall-back gain (dB):"))
fb_label.set_use_underline(True)
fb_label.set_mnemonic_widget(fb_spin)
pre_amp_gain = config.getfloat("player", "pre_amp_gain", 0.0)
adj = Gtk.Adjustment.new(pre_amp_gain, -6, 6, 0.5, 0.5, 0.0)
adj.connect('value-changed', self.__changed,
'player', 'pre_amp_gain')
pre_spin = Gtk.SpinButton(adjustment=adj)
pre_spin.set_digits(1)
pre_spin.set_tooltip_text(
_("Scale volume for all songs by this value, "
"as long as the result will not clip"))
pre_label = Gtk.Label(label=_("_Pre-amp gain (dB):"))
pre_label.set_use_underline(True)
pre_label.set_mnemonic_widget(pre_spin)
widgets = [pre_label, pre_spin, fb_label, fb_spin]
c = CCB(_("_Enable Replay Gain volume adjustment"),
"player", "replaygain", populate=True)
c.connect('toggled', self.__toggled_gain, widgets)
# packing
table = Gtk.Table.new(3, 2, False)
table.set_col_spacings(6)
table.set_row_spacings(6)
table.attach(c, 0, 2, 0, 1)
fb_label.set_alignment(0, 0.5)
table.attach(fb_label, 0, 1, 1, 2,
xoptions=Gtk.AttachOptions.FILL)
pre_label.set_alignment(0, 0.5)
table.attach(pre_label, 0, 1, 2, 3,
xoptions=Gtk.AttachOptions.FILL)
fb_align = Align(halign=Gtk.Align.START)
fb_align.add(fb_spin)
table.attach(fb_align, 1, 2, 1, 2)
pre_align = Align(halign=Gtk.Align.START)
pre_align.add(pre_spin)
table.attach(pre_align, 1, 2, 2, 3)
f = qltk.Frame(_("Replay Gain Volume Adjustment"), child=table)
c.emit('toggled')
self.pack_start(f, False, True, 0)
for child in self.get_children():
child.show_all()
开发者ID:faubiguy,项目名称:quodlibet,代码行数:74,代码来源:prefs.py
示例11: __init__
def __init__(self, parent=None):
if self.is_not_unique():
return
super(PluginWindow, self).__init__()
self.set_title(_("Plugins"))
self.set_border_width(12)
self.set_default_size(655, 404)
self.set_transient_for(parent)
paned = Paned()
vbox = Gtk.VBox(spacing=6)
sw = Gtk.ScrolledWindow()
sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.ALWAYS)
model = ObjectStore()
filter_model = ObjectModelFilter(child_model=model)
tv = PluginListView()
tv.set_model(filter_model)
tv.set_rules_hint(True)
tv.connect("plugin-toggled", self.__plugin_toggled)
fb = Gtk.HBox(spacing=6)
filter_combo = PluginFilterCombo()
filter_combo.connect("changed", lambda s: filter_model.refilter())
fb.pack_start(filter_combo, False, True, 0)
filter_entry = ClearEntry()
filter_entry.connect("changed", lambda s: filter_model.refilter())
filter_entry.enable_clear_button()
fb.pack_start(filter_entry, True, True, 0)
sw.add(tv)
sw.set_shadow_type(Gtk.ShadowType.IN)
sw.set_size_request(200, -1)
bbox = Gtk.HBox(homogeneous=True, spacing=12)
errors = qltk.Button(_("Show _Errors"), Icons.DIALOG_WARNING)
errors.set_focus_on_click(False)
errors.connect('clicked', self.__show_errors)
errors.set_no_show_all(True)
bbox.pack_start(errors, True, True, 0)
pref_box = PluginPreferencesContainer()
if const.DEBUG:
refresh = qltk.Button(_("_Refresh"), Icons.VIEW_REFRESH)
refresh.set_focus_on_click(False)
refresh.connect('clicked', self.__refresh, tv, pref_box, errors,
filter_combo)
bbox.pack_start(refresh, True, True, 0)
vbox.pack_start(fb, False, True, 0)
vbox.pack_start(sw, True, True, 0)
vbox.pack_start(bbox, False, True, 0)
paned.pack1(vbox, True, False)
close = qltk.Button(_("_Close"), Icons.WINDOW_CLOSE)
close.connect('clicked', lambda *x: self.destroy())
bb_align = Align(halign=Gtk.Align.END, valign=Gtk.Align.END)
bb = Gtk.HButtonBox()
bb.set_layout(Gtk.ButtonBoxStyle.END)
bb.pack_start(close, True, True, 0)
bb_align.add(bb)
selection = tv.get_selection()
selection.connect('changed', self.__selection_changed, pref_box)
selection.emit('changed')
right_box = Gtk.VBox(spacing=12)
right_box.pack_start(pref_box, True, True, 0)
self.use_header_bar()
if not self.has_close_button():
right_box.pack_start(bb_align, True, True, 0)
paned.pack2(Align(right_box, left=6), True, False)
paned.set_position(250)
self.add(paned)
self.__refill(tv, pref_box, errors, filter_combo)
self.connect('destroy', self.__destroy)
filter_model.set_visible_func(
self.__filter, (filter_entry, filter_combo))
self.get_child().show_all()
filter_entry.grab_focus()
restore_id = config.get("memory", "plugin_selection")
tv.select_by_plugin_id(restore_id)
开发者ID:virtuald,项目名称:quodlibet,代码行数:95,代码来源:pluginwin.py
示例12: add_sidebar_to_layout
def add_sidebar_to_layout(self, widget):
print_d("Recreating sidebar")
align = Align(widget, top=6, bottom=3)
self.__paned.pack2(align, shrink=True)
align.show_all()
开发者ID:zsau,项目名称:quodlibet,代码行数:5,代码来源:quodlibetwindow.py
示例13: __init__
def __init__(self, library, player, headless=False, restore_cb=None):
super(QuodLibetWindow, self).__init__(dialog=False)
self.last_dir = get_home_dir()
self.__destroyed = False
self.__update_title(player)
self.set_default_size(550, 450)
main_box = Gtk.VBox()
self.add(main_box)
# create main menubar, load/restore accelerator groups
self.__library = library
ui = self.__create_menu(player, library)
accel_group = ui.get_accel_group()
self.add_accel_group(accel_group)
def scroll_and_jump(*args):
self.__jump_to_current(True, True)
keyval, mod = Gtk.accelerator_parse("<control><shift>J")
accel_group.connect(keyval, mod, 0, scroll_and_jump)
# dbus app menu
# Unity puts the app menu next to our menu bar. Since it only contains
# menu items also available in the menu bar itself, don't add it.
if not util.is_unity():
AppMenu(self, ui.get_action_groups()[0])
# custom accel map
accel_fn = os.path.join(quodlibet.get_user_dir(), "accels")
Gtk.AccelMap.load(accel_fn)
# save right away so we fill the file with example comments of all
# accels
Gtk.AccelMap.save(accel_fn)
menubar = ui.get_widget("/Menu")
# Since https://git.gnome.org/browse/gtk+/commit/?id=b44df22895c79
# toplevel menu items show an empty 16x16 image. While we don't
# need image items there UIManager creates them by default.
# Work around by removing the empty GtkImages
for child in menubar.get_children():
if isinstance(child, Gtk.ImageMenuItem):
child.set_image(None)
main_box.pack_start(menubar, False, True, 0)
# get the playlist up before other stuff
self.songlist = MainSongList(library, player)
self.songlist.show_all()
self.songlist.connect("key-press-event", self.__songlist_key_press)
self.songlist.connect_after(
'drag-data-received', self.__songlist_drag_data_recv)
self.song_scroller = SongListScroller(
ui.get_widget("/Menu/View/SongList"))
self.song_scroller.add(self.songlist)
self.qexpander = QueueExpander(
ui.get_widget("/Menu/View/Queue"), library, player)
self.playlist = PlaylistMux(
player, self.qexpander.model, self.songlist.model)
top_bar = TopBar(self, player, library)
main_box.pack_start(top_bar, False, True, 0)
self.top_bar = top_bar
self.__browserbox = Align(bottom=3)
main_box.pack_start(self.__browserbox, True, True, 0)
statusbox = StatusBarBox(self.songlist.model, player)
self.order = statusbox.order
self.repeat = statusbox.repeat
self.statusbar = statusbox.statusbar
main_box.pack_start(
Align(statusbox, border=3, top=-3, right=3),
False, True, 0)
self.songpane = ConfigRVPaned("memory", "queue_position", 0.75)
self.songpane.pack1(self.song_scroller, resize=True, shrink=False)
self.songpane.pack2(self.qexpander, resize=True, shrink=False)
self.__handle_position = self.songpane.get_property("position")
def songpane_button_press_cb(pane, event):
"""If we start to drag the pane handle while the
queue expander is unexpanded, expand it and move the handle
to the bottom, so we can 'drag' the queue out
"""
if event.window != pane.get_handle_window():
return False
if not self.qexpander.get_expanded():
self.qexpander.set_expanded(True)
pane.set_relative(1.0)
return False
self.songpane.connect("button-press-event", songpane_button_press_cb)
self.song_scroller.connect('notify::visible', self.__show_or)
#.........这里部分代码省略.........
开发者ID:Konzertheld,项目名称:quodlibet,代码行数:101,代码来源:quodlibetwindow.py
示例14: QuodLibetWindow
class QuodLibetWindow(Window, PersistentWindowMixin):
def __init__(self, library, player, headless=False, restore_cb=None):
super(QuodLibetWindow, self).__init__(dialog=False)
self.last_dir = get_home_dir()
self.__destroyed = False
self.__update_title(player)
self.set_default_size(550, 450)
main_box = Gtk.VBox()
self.add(main_box)
# create main menubar, load/restore accelerator groups
self.__library = library
ui = self.__create_menu(player, library)
accel_group = ui.get_accel_group()
self.add_accel_group(accel_group)
def scroll_and_jump(*args):
self.__jump_to_current(True, True)
keyval, mod = Gtk.accelerator_parse("<control><shift>J")
accel_group.connect(keyval, mod, 0, scroll_and_jump)
# dbus app menu
# Unity puts the app menu next to our menu bar. Since it only contains
# menu items also available in the menu bar itself, don't add it.
if not util.is_unity():
AppMenu(self, ui.get_action_groups()[0])
# custom accel map
accel_fn = os.path.join(quodlibet.get_user_dir(), "accels")
Gtk.AccelMap.load(accel_fn)
# save right away so we fill the file with example comments of all
# accels
Gtk.AccelMap.save(accel_fn)
menubar = ui.get_widget("/Menu")
# Since https://git.gnome.org/browse/gtk+/commit/?id=b44df22895c79
# toplevel menu items show an empty 16x16 image. While we don't
# need image items there UIManager creates them by default.
# Work around by removing the empty GtkImages
for child in menubar.get_children():
if isinstance(child, Gtk.ImageMenuItem):
child.set_image(None)
main_box.pack_start(menubar, False, True, 0)
# get the playlist up before other stuff
self.songlist = MainSongList(library, player)
self.songlist.show_all()
self.songlist.connect("key-press-event", self.__songlist_key_press)
self.songlist.connect_after(
'drag-data-received', self.__songlist_drag_data_recv)
self.song_scroller = SongListScroller(
ui.get_widget("/Menu/View/SongList"))
self.song_scroller.add(self.songlist)
self.qexpander = QueueExpander(
ui.get_widget("/Menu/View/Queue"), library, player)
self.playlist = PlaylistMux(
player, self.qexpander.model, self.songlist.model)
top_bar = TopBar(self, player, library)
main_box.pack_start(top_bar, False, True, 0)
self.top_bar = top_bar
self.__browserbox = Align(bottom=3)
main_box.pack_start(self.__browserbox, True, True, 0)
statusbox = StatusBarBox(self.songlist.model, player)
self.order = statusbox.order
self.repeat = statusbox.repeat
self.statusbar = statusbox.statusbar
main_box.pack_start(
Align(statusbox, border=3, top=-3, right=3),
False, True, 0)
self.songpane = ConfigRVPaned("memory", "queue_position", 0.75)
self.songpane.pack1(self.song_scroller, resize=True, shrink=False)
self.songpane.pack2(self.qexpander, resize=True, shrink=False)
self.__handle_position = self.songpane.get_property("position")
def songpane_button_press_cb(pane, event):
"""If we start to drag the pane handle while the
queue expander is unexpanded, expand it and move the handle
to the bottom, so we can 'drag' the queue out
"""
if event.window != pane.get_handle_window():
return False
if not self.qexpander.get_expanded():
self.qexpander.set_expanded(True)
pane.set_relative(1.0)
return False
self.songpane.connect("button-press-event", songpane_button_press_cb)
#.........这里部分代码省略.........
开发者ID:Konzertheld,项目名称:quodlibet,代码行数:101,代码来源:quodlibetwindow.py
示例15: __init__
def __init__(self, library, player, headless=False, restore_cb=None):
super(QuodLibetWindow, self).__init__(dialog=False)
self.__destroyed = False
self.__update_title(player)
self.set_default_size(600, 480)
main_box = Gtk.VBox()
self.add(main_box)
self.side_book = qltk.Notebook()
# get the playlist up before other stuff
self.songlist = MainSongList(library, player)
self.songlist.connect("key-press-event", self.__songlist_key_press)
self.songlist.connect_after(
'drag-data-received', self.__songlist_drag_data_recv)
self.song_scroller = ScrolledWindow()
self.song_scroller.set_policy(
Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
self.song_scroller.set_shadow_type(Gtk.ShadowType.IN)
self.song_scroller.add(self.songlist)
self.qexpander = QueueExpander(library, player)
self.qexpander.set_no_show_all(True)
self.qexpander.set_visible(config.getboolean("memory", "queue"))
def on_queue_visible(qex, param):
config.set("memory", "queue", str(qex.get_visible()))
self.qexpander.connect("notify::visible", on_queue_visible)
self.playlist = PlaylistMux(
player, self.qexpander.model, self.songlist.model)
self.__player = player
# create main menubar, load/restore accelerator groups
self.__library = library
ui = self.__create_menu(player, library)
accel_group = ui.get_accel_group()
self.add_accel_group(accel_group)
def scroll_and_jump(*args):
self.__jump_to_current(True, None, True)
keyval, mod = Gtk.accelerator_parse("<Primary><shift>J")
accel_group.connect(keyval, mod, 0, scroll_and_jump)
# custom accel map
accel_fn = os.path.join(quodlibet.get_user_dir(), "accels")
Gtk.AccelMap.load(accel_fn)
# save right away so we fill the file with example comments of all
# accels
Gtk.AccelMap.save(accel_fn)
menubar = ui.get_widget("/Menu")
# Since https://git.gnome.org/browse/gtk+/commit/?id=b44df22895c79
# toplevel menu items show an empty 16x16 image. While we don't
# need image items there UIManager creates them by default.
# Work around by removing the empty GtkImages
for child in menubar.get_children():
if isinstance(child, Gtk.ImageMenuItem):
child.set_image(None)
main_box.pack_start(menubar, False, True, 0)
top_bar = TopBar(self, player, library)
main_box.pack_start(top_bar, False, True, 0)
self.top_bar = top_bar
self.__browserbox = Align(bottom=3)
self.__paned = paned = ConfigRHPaned("memory", "sidebar_pos", 0.25)
paned.pack1(self.__browserbox, resize=True)
# We'll pack2 when necessary (when the first sidebar plugin is set up)
main_box.pack_start(paned, True, True, 0)
play_order = PlayOrderWidget(self.songlist.model, player)
statusbox = StatusBarBox(play_order, self.qexpander)
self.order = play_order
self.statusbar = statusbox.statusbar
main_box.pack_start(
Align(statusbox, border=3, top=-3),
False, True, 0)
self.songpane = SongListPaned(self.song_scroller, self.qexpander)
self.songpane.show_all()
try:
orders = []
for e in config.getstringlist('memory', 'sortby', []):
orders.append((e[1:], int(e[0])))
except ValueError:
pass
else:
self.songlist.set_sort_orders(orders)
self.browser = None
self.ui = ui
#.........这里部分代码省略.........
开发者ID:zsau,项目名称:quodlibet,代码行数:101,代码来源:quodlibetwindow.py
示例16: __init__
def __init__(self, parent, song):
super(CoverArea, self).__init__()
self.song = song
self.dirname = song("~dirname")
self.main_win = parent
self.data_cache = []
self.current_data = None
self.current_pixbuf = None
self.image = Gtk.Image()
self.button = Button(_("_Save"), Icons.DOCUMENT_SAVE)
self.button.set_sensitive(False)
self.button.connect('clicked', self.__save)
close_button = Button(_("_Close"), Icons.WINDOW_CLOSE)
close_button.connect('clicked', lambda x: self.main_win.destroy())
self.window_fit = self.ConfigCheckButton(_('Fit image to _window'),
'fit', True)
self.window_fit.connect('toggled', self.__scale_pixbuf)
self.name_combo = Gtk.ComboBoxText()
self.cmd = qltk.entry.ValidatingEntry(iscommand)
# Both labels
label_open = Gtk.Label(label=_('_Program:'))
label_open.set_use_underline(True)
label_open.set_mnemonic_widget(self.cmd)
label_open.set_justify(Gtk.Justification.LEFT)
self.open_check = self.ConfigCheckButton(_('_Edit image after saving'),
'edit', False)
label_name = Gtk.Label(label=_('File_name:'), use_underline=True)
label_name.set_use_underline(True)
label_name.set_mnemonic_widget(self.name_combo)
label_name.set_justify(Gtk.Justification.LEFT)
self.cmd.set_text(self.config_get('edit_cmd', 'gimp'))
# Create the filename combo box
fn_list = ['cover.jpg', 'folder.jpg', '.folder.jpg']
# Issue 374 - add dynamic file names
artist = song("artist")
alartist = song("albumartist")
album = song("album")
labelid = song("labelid")
if album:
fn_list.append("<album>.jpg")
if alartist:
fn_list.append("<albumartist> - <album>.jpg")
else:
fn_list.append("<artist> - <album>.jpg")
else:
print_w(u"No album for \"%s\". Could be difficult "
u"finding art…" % song("~filename"))
title = song("title")
if title and artist:
fn_list.append("<artist> - <title>.jpg")
if labelid:
fn_list.append("<labelid>.jpg")
set_fn = self.config_get('fn', fn_list[0])
for i, fn in enumerate(fn_list):
self.name_combo.append_text(fn)
if fn == set_fn:
self.name_combo.set_active(i)
if self.name_combo.get_active() < 0:
self.name_combo.set_active(0)
table = Gtk.Table(n_rows=2, n_columns=2, homogeneous=False)
table.set_row_spacing(0, 5)
table.set_row_spacing(1, 5)
table.set_col_spacing(0, 5)
table.set_col_spacing(1, 5)
table.attach(label_open, 0, 1, 0, 1)
table.attach(label_name, 0, 1, 1, 2)
table.attach(self.cmd, 1, 2, 0, 1)
table.attach(self.name_combo, 1, 2, 1, 2)
self.scrolled = Gtk.ScrolledWindow()
self.scrolled.add_with_viewport(self.image)
self.scrolled.set_policy(Gtk.PolicyType.AUTOMATIC,
Gtk.PolicyType.AUTOMATIC)
bbox = Gtk.HButtonBox()
bbox.set_spacing(6)
bbox.set_layout(Gtk.ButtonBoxStyle.END)
bbox.pack_start(self.button, True, True, 0)
bbox.pack_start(close_button, True, True, 0)
bb_align = Align(valign=Gtk.Align.END, right=6)
bb_align.add(bbox)
#.........这里部分代码省略.........
开发者ID:vrasidas,项目名称:quodlibet,代码行数:101,代码来源:albumart.py
|
请发表评论