@@ -32,7 +32,8 @@ from coverart_browser_prefs import GSetting
|
||||
from coverart_browser_prefs import CoverLocale
|
||||
from stars import ReactiveStar
|
||||
from coverart_timer import ttimer
|
||||
|
||||
from coverart_widgets import PlaylistPopupButton
|
||||
from coverart_widgets import GenrePopupButton
|
||||
|
||||
class CoverArtBrowserSource(RB.Source):
|
||||
'''
|
||||
@@ -66,7 +67,6 @@ class CoverArtBrowserSource(RB.Source):
|
||||
self.search_text = ''
|
||||
self.hasActivated = False
|
||||
self.last_toolbar_pos = None
|
||||
self.genre_changed_ignore = False
|
||||
|
||||
def _connect_properties(self):
|
||||
'''
|
||||
@@ -310,16 +310,23 @@ class CoverArtBrowserSource(RB.Source):
|
||||
'filter_all_menu_item').get_label())
|
||||
|
||||
# genre
|
||||
self.genre_combobox = ui.get_object('genre_combobox')
|
||||
#self.genre_combobox = ui.get_object('genre_combobox')
|
||||
|
||||
self.genres_model = self.shell.props.library_source.\
|
||||
get_property_views()[0].get_model()
|
||||
self.genre_deleted_id = self.genres_model.connect('row-deleted',
|
||||
self.on_genre_deleted)
|
||||
#self.genres_model = self.shell.props.library_source.\
|
||||
# get_property_views()[0].get_model()
|
||||
#self.genre_deleted_id = self.genres_model.connect('row-deleted',
|
||||
# self.on_genre_deleted)
|
||||
|
||||
self.genre_combobox.set_model(self.genres_model)
|
||||
self.genre_combobox.set_active(0)
|
||||
#self.genre_combobox.set_model(self.genres_model)
|
||||
#self.genre_combobox.set_active(0)
|
||||
self.genre_button = ui.get_object('genre_button')
|
||||
self.genre_button.initialise(self.shell, self.genre_filter_callback)
|
||||
self.on_notify_genre_filter_visible(_)
|
||||
|
||||
# get playlist popup
|
||||
self.playlist_button = ui.get_object('playlist_button')
|
||||
self.playlist_button.initialise(self.shell, self.filter_by_model)
|
||||
|
||||
print "CoverArtBrowser DEBUG - end _toolbar"
|
||||
|
||||
def _setup_source(self):
|
||||
@@ -503,7 +510,8 @@ class CoverArtBrowserSource(RB.Source):
|
||||
'''
|
||||
print "CoverArtBrowser DEBUG - on_notify_genre_filter_visible"
|
||||
|
||||
self.genre_combobox.set_visible(self.genre_filter_visible)
|
||||
#self.genre_combobox.set_visible(self.genre_filter_visible)
|
||||
self.genre_button.set_visible(self.genre_filter_visible)
|
||||
|
||||
print "CoverArtBrowser DEBUG - end on_notify_genre_filter_visible"
|
||||
|
||||
@@ -549,32 +557,32 @@ class CoverArtBrowserSource(RB.Source):
|
||||
|
||||
print "CoverArtBrowser DEBUG - end on_notify_toolbar_pos"
|
||||
|
||||
def on_genre_deleted(self, *args):
|
||||
'''
|
||||
fills the genre combobox with all current genres found
|
||||
in the library source
|
||||
'''
|
||||
print "CoverArtBrowser DEBUG - on_genre_deleted"
|
||||
# if the current genre filter doesn't show anything, set the default
|
||||
# filter back
|
||||
if self.current_genre not in self.genres_model:
|
||||
self.genre_combobox.set_active(0)
|
||||
#def on_genre_deleted(self, *args):
|
||||
# '''
|
||||
# fills the genre combobox with all current genres found
|
||||
# in the library source
|
||||
# '''
|
||||
# print "CoverArtBrowser DEBUG - on_genre_deleted"
|
||||
# # if the current genre filter doesn't show anything, set the default
|
||||
# # filter back
|
||||
# if self.current_genre not in self.genres_model:
|
||||
# self.genre_combobox.set_active(0)
|
||||
|
||||
print "CoverArtBrowser DEBUG - end on_genre_deleted"
|
||||
# print "CoverArtBrowser DEBUG - end on_genre_deleted"
|
||||
|
||||
def genre_changed(self, widget):
|
||||
'''
|
||||
signal called when genre value changed
|
||||
'''
|
||||
print "CoverArtBrowser DEBUG - genre changed"
|
||||
self.current_genre = widget.get_active_text()
|
||||
#def genre_changed(self, widget):
|
||||
# '''
|
||||
# signal called when genre value changed
|
||||
# '''
|
||||
# print "CoverArtBrowser DEBUG - genre changed"
|
||||
# self.current_genre = widget.get_active_text()
|
||||
|
||||
if self.current_genre == 'All':
|
||||
self.album_manager.model.remove_filter('genre')
|
||||
else:
|
||||
self.album_manager.model.replace_filter('genre',
|
||||
self.current_genre)
|
||||
print "CoverArtBrowser DEBUG - end genre changed"
|
||||
# if self.current_genre == 'All':
|
||||
# self.album_manager.model.remove_filter('genre')
|
||||
# else:
|
||||
# self.album_manager.model.replace_filter('genre',
|
||||
# self.current_genre)
|
||||
# print "CoverArtBrowser DEBUG - end genre changed"
|
||||
|
||||
def on_notify_display_bottom_enabled(self, *args):
|
||||
'''
|
||||
@@ -1295,6 +1303,12 @@ class CoverArtBrowserSource(RB.Source):
|
||||
|
||||
print "CoverArtBrowser DEBUG - end rating_changed_callback"
|
||||
|
||||
def genre_filter_callback(self, genre):
|
||||
if genre == None:
|
||||
self.album_manager.model.remove_filter('genre')
|
||||
else:
|
||||
self.album_manager.model.replace_filter('genre', genre)
|
||||
|
||||
@classmethod
|
||||
def get_instance(cls, **kwargs):
|
||||
'''
|
||||
|
||||
@@ -0,0 +1,233 @@
|
||||
# -*- Mode: python; coding: utf-8; tab-width: 4; indent-tabs-mode: nil; -*-
|
||||
#
|
||||
# Copyright (C) 2012 - fossfreedom
|
||||
# Copyright (C) 2012 - Agustin Carrasco
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
from gi.repository import Gtk
|
||||
from gi.repository import GdkPixbuf
|
||||
|
||||
ui_string = \
|
||||
"""<interface>
|
||||
<object class="GtkMenu" id="popupbutton_menu">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
</interface>"""
|
||||
|
||||
# generic class from which implementation inherit from
|
||||
class PopupButton(Gtk.Button):
|
||||
# the following vars are to be defined in the inherited classes
|
||||
#__gtype_name__ = gobject typename
|
||||
|
||||
def __init__(self, **kargs):
|
||||
'''
|
||||
Initializes the button.
|
||||
'''
|
||||
super(PopupButton, self).__init__(
|
||||
**kargs)
|
||||
|
||||
self._builder = Gtk.Builder()
|
||||
self._builder.add_from_string(ui_string)
|
||||
|
||||
self._popup_menu = self._builder.get_object('popupbutton_menu')
|
||||
self._actiongroup = Gtk.ActionGroup((self.__gtype_name__+"menu"))
|
||||
|
||||
def initialise(self, shell, callback):
|
||||
'''
|
||||
initialise - derived objects call this first
|
||||
shell = rhythmbox shell
|
||||
callback = function to call when a menuitem is selected
|
||||
'''
|
||||
self.shell = shell
|
||||
self.callback = callback
|
||||
self.set_popup_value(self.get_initial_label())
|
||||
|
||||
def clear_popupmenu(self):
|
||||
'''
|
||||
reinitialises/clears the current popup menu and associated actions
|
||||
'''
|
||||
for menu_item in self._popup_menu:
|
||||
self._popup_menu.remove(menu_item)
|
||||
|
||||
self._popup_menu.show_all()
|
||||
self.shell.props.ui_manager.ensure_update()
|
||||
|
||||
for action in self._actiongroup.list_actions():
|
||||
self._actiongroup.remove_action(action)
|
||||
|
||||
def add_menuitem(self, label, func, val):
|
||||
'''
|
||||
add a new menu item to the popup
|
||||
'''
|
||||
new_menu_item = Gtk.MenuItem(label=label)
|
||||
action = Gtk.Action(label=label, name=label,
|
||||
tooltip='', stock_id=Gtk.STOCK_CLEAR)
|
||||
action.connect('activate', func, val)
|
||||
new_menu_item.set_related_action(action)
|
||||
self._popup_menu.append(new_menu_item)
|
||||
self._actiongroup.add_action(action)
|
||||
|
||||
def show_popup(self):
|
||||
'''
|
||||
show the current popup menu
|
||||
'''
|
||||
self._popup_menu.show_all()
|
||||
self.shell.props.ui_manager.ensure_update()
|
||||
|
||||
self._popup_menu.popup(None, None, None, None, 0,
|
||||
Gtk.get_current_event_time())
|
||||
|
||||
def set_popup_value(self, val):
|
||||
'''
|
||||
set the tooltip according to the popup menu chosen
|
||||
'''
|
||||
if val == None:
|
||||
self.set_tooltip_text(self.get_initial_label())
|
||||
else:
|
||||
self.set_tooltip_text(val)
|
||||
|
||||
def set_initial_label(self, val):
|
||||
'''
|
||||
all popup's should have a default initial value
|
||||
'''
|
||||
self._initial_label = val
|
||||
|
||||
def get_initial_label(self):
|
||||
'''
|
||||
get the first initial value stored in a popup
|
||||
'''
|
||||
return self._initial_label
|
||||
|
||||
def do_delete_thyself(self):
|
||||
self.clear_popupmenu()
|
||||
del self._popupmenu
|
||||
del self._actiongroup
|
||||
del self._builder
|
||||
|
||||
class PlaylistPopupButton(PopupButton):
|
||||
__gtype_name__ = 'PlaylistPopupButton'
|
||||
def __init__(self, **kargs):
|
||||
'''
|
||||
Initializes the button.
|
||||
'''
|
||||
super(PlaylistPopupButton, self).__init__(
|
||||
**kargs)
|
||||
|
||||
self.set_initial_label(_("Music"))
|
||||
|
||||
def do_clicked(self):
|
||||
'''
|
||||
when button is clicked, update the popup with current playlists
|
||||
before displaying the popup
|
||||
'''
|
||||
playlist_manager = self.shell.props.playlist_manager
|
||||
playlists_entries = playlist_manager.get_playlists()
|
||||
|
||||
self.clear_popupmenu()
|
||||
self.add_menuitem( self.get_initial_label(), self._change_playlist_source, None)
|
||||
|
||||
if playlists_entries:
|
||||
for playlist in playlists_entries:
|
||||
if playlist.props.is_local:
|
||||
self.add_menuitem( playlist.props.name, self._change_playlist_source, playlist)
|
||||
|
||||
self.show_popup()
|
||||
|
||||
def _change_playlist_source(self, menu, playlist ):
|
||||
'''
|
||||
when a popup menu item is chosen change the button tooltip
|
||||
before invoking the source callback function
|
||||
'''
|
||||
try:
|
||||
model = playlist.get_query_model()
|
||||
self.set_popup_value(playlist.props.name)
|
||||
except:
|
||||
model = None
|
||||
self.set_popup_value(self.get_initial_label())
|
||||
|
||||
self.callback(model)
|
||||
|
||||
class GenrePopupButton(PopupButton):
|
||||
__gtype_name__ = 'GenrePopupButton'
|
||||
|
||||
def __init__(self, **kargs):
|
||||
'''
|
||||
Initializes the button.
|
||||
'''
|
||||
super(GenrePopupButton, self).__init__(
|
||||
**kargs)
|
||||
|
||||
def get_genres(self):
|
||||
'''
|
||||
get all the current genres which happens to be stored in
|
||||
the main library source
|
||||
'''
|
||||
model = self.shell.props.library_source.get_property_views()[0].get_model()
|
||||
# seems like view [0] is the genre property view
|
||||
|
||||
genres = []
|
||||
|
||||
for genre in model:
|
||||
genres.append(genre[0])
|
||||
|
||||
return genres #self.set_initial_label( model[0][0])
|
||||
|
||||
def initialise(self, shell, callback):
|
||||
'''
|
||||
extend the default initialise function
|
||||
because we need to also resize the picture
|
||||
associated with the genre button
|
||||
'''
|
||||
self.shell = shell
|
||||
|
||||
self.set_initial_label( self.get_genres()[0])
|
||||
|
||||
super(GenrePopupButton, self).initialise(shell, callback)
|
||||
|
||||
what, width, height = Gtk.icon_size_lookup(Gtk.IconSize.BUTTON)
|
||||
image = self.get_image()
|
||||
|
||||
pixbuf = image.get_pixbuf().scale_simple(width, height,
|
||||
GdkPixbuf.InterpType.BILINEAR)
|
||||
|
||||
image.set_from_pixbuf(pixbuf)
|
||||
|
||||
def do_clicked(self):
|
||||
'''
|
||||
when button is clicked, update the popup with current genres
|
||||
before displaying the popup
|
||||
'''
|
||||
self.clear_popupmenu()
|
||||
genres = self.get_genres()
|
||||
|
||||
for entry in genres:
|
||||
self.add_menuitem( entry, self._genre_changed, entry)
|
||||
|
||||
self.show_popup()
|
||||
|
||||
def _genre_changed(self, menu, genre):
|
||||
'''
|
||||
called when genre popup menu item chosen
|
||||
return None if the first entry in popup returned
|
||||
'''
|
||||
self.set_popup_value(genre)
|
||||
|
||||
if genre == self.get_initial_label():
|
||||
self.callback(None)
|
||||
else:
|
||||
self.callback(genre)
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
|
||||
Developer note:
|
||||
|
||||
since we have some custom glade widgets as described in catalog.xml,
|
||||
to ensure no glade errors when launched use the syntax:
|
||||
|
||||
GLADE_CATALOG_SEARCH_PATH=. glade [gladefile].ui
|
||||
|
||||
for example
|
||||
|
||||
GLADE_CATALOG_SEARCH_PATH=. glade coverart_browser.ui
|
||||
@@ -0,0 +1,22 @@
|
||||
<glade-catalog name="coverart_widgets" library="gladepython" domain="glade-3"
|
||||
depends="gtk+" version="1.0">
|
||||
<init-function>glade_python_init</init-function>
|
||||
<glade-widget-classes>
|
||||
<glade-widget-class title="PlaylistPopupButton" name="PlaylistPopupButton"
|
||||
generic-name="PlaylistPopupButton" parent="GtkButton"
|
||||
icon-name="widget-gtk-button"/>
|
||||
<glade-widget-class title="GenrePopupButton" name="GenrePopupButton"
|
||||
generic-name="GenrePopupButton" parent="GtkButton"
|
||||
icon-name="widget-gtk-button"/>
|
||||
<glade-widget-class title="RBSearchEntry" name="RBSearchEntry"
|
||||
generic-name="RBSearchEntry" parent="GtkHBox"
|
||||
icon-name="widget-gtk-box"/>
|
||||
</glade-widget-classes>
|
||||
|
||||
<glade-widget-group name="python" title="Python">
|
||||
<glade-widget-class-ref name="PlaylistPopupButton"/>
|
||||
<glade-widget-class-ref name="GenrePopupButton"/>
|
||||
<glade-widget-class-ref name="RBSearchEntry"/>
|
||||
</glade-widget-group>
|
||||
|
||||
</glade-catalog>
|
||||
+252
-210
@@ -1,68 +1,128 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<!-- interface-requires gtk+ 3.0 -->
|
||||
<object class="GtkImage" id="cancel-icon">
|
||||
<!-- interface-requires coverart_widgets 1.0 -->
|
||||
<object class="GtkImage" id="arrow_down">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="stock">gtk-cancel</property>
|
||||
<property name="stock">gtk-go-down</property>
|
||||
</object>
|
||||
<object class="GtkImage" id="arrow_up">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="stock">gtk-go-up</property>
|
||||
</object>
|
||||
<object class="GtkImage" id="arrow_down">
|
||||
<object class="GtkImage" id="cancel-icon">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="stock">gtk-go-down</property>
|
||||
<property name="stock">gtk-cancel</property>
|
||||
</object>
|
||||
<object class="GtkMenu" id="filter_menu">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkRadioMenuItem" id="filter_all_menu_item">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="tooltip_text" translatable="yes">Search using all fields</property>
|
||||
<property name="label" translatable="yes">Search all fields</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">True</property>
|
||||
<signal name="toggled" handler="filter_menu_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioMenuItem" id="filter_album_artist_menu_item">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Search using album artist names</property>
|
||||
<property name="label" translatable="yes">Search album artists</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="group">filter_all_menu_item</property>
|
||||
<signal name="toggled" handler="filter_menu_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioMenuItem" id="filter_artist_menu_item">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Search using track artist names</property>
|
||||
<property name="label" translatable="yes">Search track artists</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="group">filter_all_menu_item</property>
|
||||
<signal name="toggled" handler="filter_menu_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioMenuItem" id="filter_album_menu_item">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Search using album titles</property>
|
||||
<property name="label" translatable="yes">Search albums</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="group">filter_all_menu_item</property>
|
||||
<signal name="toggled" handler="filter_menu_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioMenuItem" id="filter_track_title_menu_item">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Search using track titles</property>
|
||||
<property name="label" translatable="yes">Search tracks</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="group">filter_all_menu_item</property>
|
||||
<signal name="toggled" handler="filter_menu_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkImage" id="genre_icon">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="pixbuf">genre.png</property>
|
||||
</object>
|
||||
<object class="GtkImage" id="playlist_connect">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="stock">gtk-connect</property>
|
||||
</object>
|
||||
<object class="GtkBox" id="main_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_top">1</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="margin_top">1</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="toolbar_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="genre_combobox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Filter by genre</property>
|
||||
<property name="has_entry">True</property>
|
||||
<signal name="changed" handler="genre_changed" swapped="no"/>
|
||||
<child internal-child="entry">
|
||||
<object class="GtkEntry" id="combobox-entry">
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButtonBox" id="sorting_criteria_button_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="spacing">1</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_left">5</property>
|
||||
<property name="margin_right">5</property>
|
||||
<property name="spacing">1</property>
|
||||
<property name="layout_style">start</property>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="album_name_sort_radio">
|
||||
<property name="label" translatable="yes">Album</property>
|
||||
<property name="tooltip_text" translatable="yes">Sort by album name</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Sort by album name</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="relief">none</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="draw_indicator">False</property>
|
||||
<signal name="toggled" handler="sorting_criteria_changed" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
@@ -74,12 +134,15 @@
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="artist_name_sort_radio">
|
||||
<property name="label" translatable="yes">Artist</property>
|
||||
<property name="tooltip_text" translatable="yes">Sort by album artist</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Sort by album artist</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="relief">none</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="draw_indicator">False</property>
|
||||
<property name="group">album_name_sort_radio</property>
|
||||
<signal name="toggled" handler="sorting_criteria_changed" swapped="no"/>
|
||||
</object>
|
||||
@@ -92,12 +155,15 @@
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="year_sort_radio">
|
||||
<property name="label" translatable="yes">Year</property>
|
||||
<property name="tooltip_text" translatable="yes">Sort by year</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Sort by year</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="relief">none</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="draw_indicator">False</property>
|
||||
<property name="group">album_name_sort_radio</property>
|
||||
<signal name="toggled" handler="sorting_criteria_changed" swapped="no"/>
|
||||
</object>
|
||||
@@ -110,12 +176,15 @@
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="rating_sort_radio">
|
||||
<property name="label" translatable="yes">Rating</property>
|
||||
<property name="tooltip_text" translatable="yes">Sort by rating</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Sort by rating</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="relief">none</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="draw_indicator">False</property>
|
||||
<property name="group">album_name_sort_radio</property>
|
||||
<signal name="toggled" handler="sorting_criteria_changed" swapped="no"/>
|
||||
</object>
|
||||
@@ -129,22 +198,43 @@
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="sort_order">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="relief">none</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="has_tooltip">True</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin_right">1</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="image">arrow_up</property>
|
||||
<property name="relief">half</property>
|
||||
<signal name="clicked" handler="sorting_direction_changed" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="PlaylistPopupButton" id="playlist_button">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="has_tooltip">True</property>
|
||||
<signal name="clicked" handler="sorting_direction_changed" swapped="no"/>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin_right">1</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="image">playlist_connect</property>
|
||||
<property name="relief">half</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
@@ -152,6 +242,27 @@
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GenrePopupButton" id="genre_button">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="has_tooltip">True</property>
|
||||
<property name="tooltip_text" translatable="yes">All Genres</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin_right">1</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="image">genre_icon</property>
|
||||
<property name="relief">half</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkAlignment" id="entry_search_alignment">
|
||||
<property name="visible">True</property>
|
||||
@@ -160,6 +271,7 @@
|
||||
<property name="xscale">0.25</property>
|
||||
<child>
|
||||
<object class="RBSearchEntry" id="search_entry">
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -177,74 +289,77 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkPaned" id="paned">
|
||||
<object class="GtkPaned" id="paned">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<signal name="button-press-event" handler="paned_button_press_callback" swapped="no"/>
|
||||
<signal name="button-release-event" handler="on_paned_button_release_event" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolled_window">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<signal name="size-allocate" handler="update_iconview_callback" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkIconView" id="covers_view">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="selection_mode">multiple</property>
|
||||
<property name="tooltip_column">0</property>
|
||||
<signal name="button-press-event" handler="mouseclick_callback" swapped="no"/>
|
||||
<signal name="selection-changed" handler="selectionchanged_callback" swapped="no"/>
|
||||
<signal name="item-activated" handler="item_activated_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="resize">True</property>
|
||||
<property name="shrink">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="bottom_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow" id="scrolled_window">
|
||||
<object class="GtkExpander" id="bottom_expander">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkNotebook" id="bottom_notebook">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<signal name="size-allocate" handler="update_iconview_callback" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkIconView" id="covers_view">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="tooltip_column">0</property>
|
||||
<property name="pixbuf_column">1</property>
|
||||
<property name="selection-mode">3</property>
|
||||
<signal name="button-press-event" handler="mouseclick_callback" swapped="no"/>
|
||||
<signal name="selection-changed" handler="selectionchanged_callback" swapped="no"/>
|
||||
<signal name="item-activated" handler="item_activated_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="resize">True</property>
|
||||
<property name="shrink">True</property>
|
||||
</packing>
|
||||
<property name="tab_pos">bottom</property>
|
||||
<signal name="switch-page" handler="notebook_switch_page_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="bottom_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkExpander" id="bottom_expander">
|
||||
<property name="label" translatable="yes">Tracks & Covers</property>
|
||||
<property name="visible">True</property>
|
||||
<signal name="notify::expanded" handler="bottom_expander_expanded_callback" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkNotebook" id="bottom_notebook">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="tab_pos">bottom</property>
|
||||
<property name="vexpand">True</property>
|
||||
<signal name="switch-page" handler="notebook_switch_page_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="resize">True</property>
|
||||
<property name="shrink">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<signal name="button-press-event" handler="paned_button_press_callback" swapped="no"/>
|
||||
<signal name="button-release-event" handler="on_paned_button_release_event" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">20</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="resize">True</property>
|
||||
<property name="shrink">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">20</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="status_label">
|
||||
<property name="can_focus">False</property>
|
||||
@@ -355,28 +470,28 @@
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="select" handler="playlist_menu_item_callback" swapped="no"/>
|
||||
<child type="submenu">
|
||||
<object class="GtkMenu" id="playlist_sub_menu_item">
|
||||
<object class="GtkMenu" id="playlist_sub_menu_item">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="new_playlist">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="new_playlist">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Add this album to a new playlist</property>
|
||||
<property name="label" translatable="yes">New Playlist</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="add_playlist_menu_item_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSeparatorMenuItem" id="popup_separator_playlist">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<property name="tooltip_text" translatable="yes">Add this album to a new playlist</property>
|
||||
<property name="label" translatable="yes">New Playlist</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="add_playlist_menu_item_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSeparatorMenuItem" id="popup_separator_playlist">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
@@ -419,27 +534,27 @@
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="select" handler="favourite_playlist_menu_item_callback" swapped="no"/>
|
||||
<child type="submenu">
|
||||
<object class="GtkMenu" id="favourite_playlist_sub_menu_item">
|
||||
<object class="GtkMenu" id="favourite_playlist_sub_menu_item">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="favourite_new_playlist">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="favourite_new_playlist">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">New Playlist</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="favourite_add_playlist_menu_item_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSeparatorMenuItem" id="favourite_popup_separator_playlist">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<property name="label" translatable="yes">New Playlist</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="favourite_add_playlist_menu_item_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSeparatorMenuItem" id="favourite_popup_separator_playlist">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
@@ -471,102 +586,29 @@
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="show_properties_menu_item">
|
||||
<property name="label">gtk-properties</property>
|
||||
<property name="tooltip_text" translatable="yes">Show album properties</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Show album properties</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="activate" handler="show_properties_menu_item_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkMenu" id="source_menu">
|
||||
</object>
|
||||
<object class="GtkMenu" id="source_menu">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="source_search_menu_item">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="sensitive">False</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Search for covers where an album does not currently have one</property>
|
||||
<property name="label" translatable="yes">Download all the covers</property>
|
||||
<signal name="activate" handler="search_all_covers_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkMenu" id="filter_menu">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkRadioMenuItem" id="filter_all_menu_item">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Search using all fields</property>
|
||||
<property name="label" translatable="yes">Search all fields</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="active">True</property>
|
||||
<signal name="toggled" handler="filter_menu_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioMenuItem" id="filter_album_artist_menu_item">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Search using album artist names</property>
|
||||
<property name="label" translatable="yes">Search album artists</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="group">filter_all_menu_item</property>
|
||||
<signal name="toggled" handler="filter_menu_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioMenuItem" id="filter_artist_menu_item">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Search using track artist names</property>
|
||||
<property name="label" translatable="yes">Search track artists</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="group">filter_all_menu_item</property>
|
||||
<signal name="toggled" handler="filter_menu_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioMenuItem" id="filter_album_menu_item">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Search using album titles</property>
|
||||
<property name="label" translatable="yes">Search albums</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="group">filter_all_menu_item</property>
|
||||
<signal name="toggled" handler="filter_menu_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioMenuItem" id="filter_track_title_menu_item">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Search using track titles</property>
|
||||
<property name="label" translatable="yes">Search tracks</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="group">filter_all_menu_item</property>
|
||||
<signal name="toggled" handler="filter_menu_callback" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
||||
|
||||
+78
-35
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<!-- interface-requires gtk+ 3.0 -->
|
||||
<!-- interface-requires coverart_widgets 1.0 -->
|
||||
<object class="GtkImage" id="arrow_down">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
@@ -26,6 +27,16 @@
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkImage" id="genre_icon">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="pixbuf">genre.png</property>
|
||||
</object>
|
||||
<object class="GtkImage" id="playlist_connect">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="stock">gtk-connect</property>
|
||||
</object>
|
||||
<object class="GtkBox" id="main_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
@@ -55,35 +66,14 @@
|
||||
<property name="xalign">0</property>
|
||||
<child>
|
||||
<object class="RBSearchEntry" id="search_entry">
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">20</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="genre_combobox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes">Filter by genre</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="has_entry">True</property>
|
||||
<signal name="changed" handler="genre_changed" swapped="no"/>
|
||||
<child internal-child="entry">
|
||||
<object class="GtkEntry" id="combobox-entry">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="shadow_type">none</property>
|
||||
<property name="progress_fraction">0.0099999997764825821</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">30</property>
|
||||
<property name="position">20</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -186,24 +176,77 @@
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="sort_order">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<object class="GtkBox" id="box1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="has_tooltip">True</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin_right">1</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="image">arrow_up</property>
|
||||
<property name="relief">half</property>
|
||||
<signal name="clicked" handler="sorting_direction_changed" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkButton" id="sort_order">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="has_tooltip">True</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin_right">1</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="image">arrow_up</property>
|
||||
<property name="relief">half</property>
|
||||
<signal name="clicked" handler="sorting_direction_changed" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="PlaylistPopupButton" id="playlist_button">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="has_tooltip">True</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin_right">1</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="image">playlist_connect</property>
|
||||
<property name="relief">half</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GenrePopupButton" id="genre_button">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="has_tooltip">True</property>
|
||||
<property name="tooltip_markup" translatable="yes">All Genres</property>
|
||||
<property name="tooltip_text" translatable="yes">All Genres</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="margin_right">1</property>
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="image">genre_icon</property>
|
||||
<property name="relief">half</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">50</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">60</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
Arquivo binário não exibido.
|
Depois Largura: | Altura: | Tamanho: 1.7 KiB |
Referência em uma Nova Issue
Bloquear um usuário