def __init__(self, window, player): EmptyView.__init__(self, window, player) # Update image icon = self.builder.get_object('icon') icon.set_margin_bottom(32) icon.set_opacity(1) icon.set_from_resource('/org/gnome/Music/initial-state.png') icon.set_size_request(ArtSize.large.width, ArtSize.large.height) # Update label label = self.builder.get_object('label') label.set_label(_("Hey DJ")) label.set_opacity(1) label.set_margin_bottom(18)
def _setup_view(self): self._headerbar = HeaderBar(self._app) self._headerbar.props.stack = self._stack self._search_headerbar = SearchHeaderBar(self._app) self._search_headerbar.props.stack = self._stack self._headerbar_stack.add_named(self._headerbar, "main") self._headerbar_stack.add_named(self._search_headerbar, "search") self._search.bind_property( "search-mode-active", self._headerbar, "search-mode-active", GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) self._search.bind_property( "search-mode-active", self._search_headerbar, "search-mode-active", GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) self._search.bind_property( "state", self._search_headerbar, "search-state", GObject.BindingFlags.SYNC_CREATE) self._search.connect( "notify::search-mode-active", self._on_search_mode_changed) self._player_toolbar.props.player = self._player self._headerbar.connect( 'back-button-clicked', self._switch_back_from_childview) self.bind_property( 'selected-songs-count', self._headerbar, 'selected-songs-count') self.bind_property( "selected-songs-count", self._selection_toolbar, "selected-songs-count") self.bind_property( 'selection-mode', self._headerbar, 'selection-mode', GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) self.bind_property( "selected-songs-count", self._search_headerbar, "selected-songs-count") self.bind_property( "selection-mode", self._search_headerbar, "selection-mode", GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) self.bind_property( "selection-mode", self._player_toolbar, "visible", GObject.BindingFlags.INVERT_BOOLEAN) self.bind_property( "selection-mode", self._selection_toolbar, "visible") self.connect("notify::selection-mode", self._on_selection_mode_changed) self.views = [None] * len(View) # Create only the empty view at startup # if no music, switch to empty view and hide stack # if some music is available, populate stack with mainviews, # show stack and set empty_view to empty_search_view self.views[View.EMPTY] = EmptyView() self._stack.connect( "notify::visible-child", self._on_stack_visible_child_changed) self._stack.add_named(self.views[View.EMPTY], "emptyview") # Add the 'background' styleclass so it properly hides the # bottom line of the searchbar self._stack.get_style_context().add_class('background') self._selection_toolbar.connect( 'add-to-playlist', self._on_add_to_playlist) self._search.connect("notify::state", self._on_search_state_changed) self._headerbar.props.state = HeaderBar.State.MAIN self._app.props.coremodel.connect( "notify::songs-available", self._on_songs_available) self._app.props.coregrilo.connect( "notify::tracker-available", self._on_tracker_available) self._startup_timeout_id = GLib.timeout_add( 2000, self._on_songs_available, None, None)
def _setup_view(self): self._box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self._headerbar = HeaderBar() self._searchbar = Searchbar() self._player = Player(self) self._player_toolbar = PlayerToolbar(self._player, self) selection_toolbar = SelectionToolbar() self.views = [None] * len(View) self._stack = Gtk.Stack( transition_type=Gtk.StackTransitionType.CROSSFADE, transition_duration=100, homogeneous=False, visible=True, can_focus=False) self._headerbar.bind_property( "search-mode-enabled", self._searchbar, "search-mode-enabled", GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) self._searchbar.props.stack = self._stack self._headerbar.connect( 'back-button-clicked', self._switch_back_from_childview) self.connect('notify::selection-mode', self._on_selection_mode_changed) self.bind_property( 'selected-items-count', self._headerbar, 'selected-items-count') self.bind_property( 'selected-items-count', selection_toolbar, 'selected-items-count') self.bind_property( 'selection-mode', self._headerbar, 'selection-mode', GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) self.bind_property( 'selection-mode', selection_toolbar, 'visible', GObject.BindingFlags.SYNC_CREATE) # Create only the empty view at startup # if no music, switch to empty view and hide stack # if some music is available, populate stack with mainviews, # show stack and set empty_view to empty_search_view self.views[View.EMPTY] = EmptyView() self._stack.add_named(self.views[View.EMPTY], "emptyview") # Add the 'background' styleclass so it properly hides the # bottom line of the searchbar self._stack.get_style_context().add_class('background') self._overlay = Gtk.Overlay() self._overlay.add(self._stack) # FIXME: Need to find a proper way to do this. self._overlay.add_overlay(self._searchbar._dropdown) self._overlay.add_overlay(self.notifications_popup) self.set_titlebar(self._headerbar) self._box.pack_start(self._searchbar, False, False, 0) self._box.pack_start(self._overlay, True, True, 0) self._box.pack_start(self._player_toolbar, False, False, 0) self._box.pack_start(selection_toolbar, False, False, 0) self.add(self._box) self._headerbar._search_button.connect( 'toggled', self._on_search_toggled) selection_toolbar.connect( 'add-to-playlist', self._on_add_to_playlist) self._headerbar.props.state = HeaderBar.State.MAIN self._headerbar.show() self._overlay.show() self._player_toolbar.show_all() self._box.show() self.show() def songs_available_cb(available): if available: self._switch_to_player_view() else: self._switch_to_empty_view() if Query().music_folder: grilo.songs_available(songs_available_cb) else: self._switch_to_empty_view()
def _setup_view(self): self._search = Search() self._headerbar_stack = Gtk.Stack() transition_type = Gtk.StackTransitionType.CROSSFADE self._headerbar_stack.props.transition_type = transition_type self._headerbar = HeaderBar() self._search_headerbar = SearchHeaderBar(self._app) self._search_headerbar.props.stack = self._stack self._headerbar_stack.add_named(self._headerbar, "main") self._headerbar_stack.add_named(self._search_headerbar, "search") self._headerbar_stack.props.name = "search" self._search.bind_property( "search-mode-active", self._headerbar, "search-mode-active", GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) self._search.bind_property( "search-mode-active", self._search_headerbar, "search-mode-active", GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) self._search.bind_property( "state", self._search_headerbar, "search-state", GObject.BindingFlags.SYNC_CREATE) self._search.connect( "notify::search-mode-active", self._on_search_mode_changed) self._player_toolbar = PlayerToolbar() self._player_toolbar.props.player = self._player self._headerbar.connect( 'back-button-clicked', self._switch_back_from_childview) self.bind_property( 'selected-items-count', self._headerbar, 'selected-items-count') self.bind_property( "selected-items-count", self._selection_toolbar, "selected-items-count") self.bind_property( 'selection-mode', self._headerbar, 'selection-mode', GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) self.bind_property( "selected-items-count", self._search_headerbar, "selected-items-count") self.bind_property( "selection-mode", self._search_headerbar, "selection-mode", GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) self.bind_property( "selection-mode", self._player_toolbar, "visible", GObject.BindingFlags.INVERT_BOOLEAN) self.bind_property( "selection-mode", self._selection_toolbar, "visible") self.connect("notify::selection-mode", self._on_selection_mode_changed) self.views = [Gtk.Box()] * len(View) # Create only the empty view at startup # if no music, switch to empty view and hide stack # if some music is available, populate stack with mainviews, # show stack and set empty_view to empty_search_view self.views[View.EMPTY] = EmptyView() self._stack.add_named(self.views[View.EMPTY], "emptyview") # Add the 'background' styleclass so it properly hides the # bottom line of the searchbar self._stack.get_style_context().add_class('background') self._box.pack_end(self._player_toolbar, False, False, 0) self.set_titlebar(self._headerbar_stack) self._selection_toolbar.connect( 'add-to-playlist', self._on_add_to_playlist) self._search.connect("notify::state", self._on_search_state_changed) self._headerbar.props.state = HeaderBar.State.MAIN self._headerbar_stack.show_all() self._app.props.coremodel.connect( "notify::songs-available", self._on_songs_available) self._app.props.coremodel.props.grilo.connect( "notify::tracker-available", self._on_tracker_available) if self._app.props.coremodel.props.songs_available: self._switch_to_player_view() else: self._switch_to_empty_view()
def _setup_view(self): self._search = Search() self._searchbar = SearchBar() self._searchbar.props.stack = self._stack self._headerbar = HeaderBar() self._search.bind_property( "search-mode-active", self._headerbar, "search-mode-active", GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) self._search.bind_property("search-mode-active", self._searchbar, "search-mode-enabled", GObject.BindingFlags.SYNC_CREATE) self._search.bind_property("state", self._searchbar, "search-state", GObject.BindingFlags.SYNC_CREATE) self._player_toolbar = PlayerToolbar() self._player_toolbar.props.player = self._player self._headerbar.connect('back-button-clicked', self._switch_back_from_childview) self.bind_property('selected-items-count', self._headerbar, 'selected-items-count') self.bind_property("selected-items-count", self._selection_toolbar, "selected-items-count") self.bind_property( 'selection-mode', self._headerbar, 'selection-mode', GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) self.bind_property("selection-mode", self._player_toolbar, "visible", GObject.BindingFlags.INVERT_BOOLEAN) self.bind_property("selection-mode", self._selection_toolbar, "visible") self.connect("notify::selection-mode", self._on_selection_mode_changed) self.views = [Gtk.Box()] * len(View) # Create only the empty view at startup # if no music, switch to empty view and hide stack # if some music is available, populate stack with mainviews, # show stack and set empty_view to empty_search_view self.views[View.EMPTY] = EmptyView() self._stack.add_named(self.views[View.EMPTY], "emptyview") # Add the 'background' styleclass so it properly hides the # bottom line of the searchbar self._stack.get_style_context().add_class('background') # FIXME: Need to find a proper way to do this. self._overlay.add_overlay(self._searchbar._dropdown) self._box.pack_start(self._searchbar, False, False, 0) self._box.reorder_child(self._searchbar, 0) self._box.pack_end(self._player_toolbar, False, False, 0) self.set_titlebar(self._headerbar) self._selection_toolbar.connect('add-to-playlist', self._on_add_to_playlist) self._search.connect("notify::state", self._on_search_state_changed) self._headerbar.props.state = HeaderBar.State.MAIN self._headerbar.show() def songs_available_cb(available): if available: self._switch_to_player_view() else: self._switch_to_empty_view() if Query().music_folder: grilo.songs_available(songs_available_cb) else: self._switch_to_empty_view()