use right toolbar to show panel-specific toolbar and migrate toolbar of playlist panel

This commit is contained in:
coderkun 2016-06-04 14:11:42 +02:00
commit c9f01de84b
2 changed files with 133 additions and 62 deletions

View file

@ -332,73 +332,36 @@
</packing>
</child>
<child>
<object class="GtkBox" id="playlist-panel">
<placeholder/>
</child>
<child>
<object class="GtkScrolledWindow" id="playlist-panel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="can_focus">True</property>
<child>
<object class="GtkToolbar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="show_arrow">False</property>
<child>
<object class="GtkToolButton" id="playlist-clear">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="icon_name">edit-clear</property>
<signal name="clicked" handler="on_playlist-clear_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<style>
<class name="no-bg"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<object class="GtkIconView" id="playlist-iconview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
<object class="GtkIconView" id="playlist-iconview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="margin">0</property>
<property name="item_orientation">horizontal</property>
<property name="columns">3</property>
<property name="row_spacing">0</property>
<property name="column_spacing">0</property>
<property name="tooltip_column">1</property>
<property name="item_padding">5</property>
<style>
<class name="no-bg"/>
</style>
</object>
</child>
<property name="margin">6</property>
<property name="item_orientation">horizontal</property>
<property name="columns">3</property>
<property name="row_spacing">0</property>
<property name="column_spacing">0</property>
<property name="tooltip_column">1</property>
<property name="item_padding">5</property>
<style>
<class name="no-bg"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<style>
<class name="no-bg"/>
</style>
</object>
<packing>
<property name="name">playlist</property>
<property name="title" translatable="yes">Playlist</property>
<property name="position">2</property>
<property name="position">3</property>
</packing>
</child>
<child>
@ -579,7 +542,7 @@
<packing>
<property name="name">library</property>
<property name="title" translatable="yes">Library</property>
<property name="position">3</property>
<property name="position">4</property>
</packing>
</child>
</object>
@ -756,13 +719,91 @@
</object>
</child>
<child>
<object class="GtkToolbar">
<object class="GtkStack" id="toolbarstack">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="show_arrow">False</property>
<style>
<class name="no-bg"/>
</style>
<child>
<object class="GtkToolbar" id="server-toolbar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<style>
<class name="no-bg"/>
</style>
</object>
<packing>
<property name="name">server</property>
<property name="title" translatable="yes">Server</property>
</packing>
</child>
<child>
<object class="GtkToolbar" id="cover-toolbar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<style>
<class name="no-bg"/>
</style>
</object>
<packing>
<property name="name">cover</property>
<property name="title" translatable="yes">Cover</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkToolbar" id="playlist-toolbar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="show_arrow">False</property>
<child>
<object class="GtkToolButton" id="playlist-toolbar-clear">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="icon_name">edit-clear</property>
<signal name="clicked" handler="on_playlist-toolbar-clear_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<style>
<class name="no-bg"/>
</style>
</object>
<packing>
<property name="name">playlist</property>
<property name="title" translatable="yes">Playlist</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkToolbar" id="library-toolbar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="show_arrow">False</property>
<child>
<object class="GtkToolButton" id="library-toolbar-update">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-refresh</property>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<style>
<class name="no-bg"/>
</style>
</object>
<packing>
<property name="name">library</property>
<property name="title" translatable="yes">Library</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="pack_type">end</property>

View file

@ -151,6 +151,8 @@ class Window():
self._stack = builder.get_object('panelstack')
# Header
self._header_bar = HeaderBar(builder)
# Toolbar stack
self._toolbar_stack = builder.get_object('toolbarstack')
# Properties
self._header_bar.set_sensitive(False, False)
@ -233,6 +235,7 @@ class Window():
# HeaderBar callbacks
def on_header_bar_stack_switched(self, widget):
self._set_visible_toolbar()
self._save_visible_panel()
@ -418,6 +421,13 @@ class Window():
self._settings.set_int(Application.SETTING_PANEL, panel_index_selected)
def _set_visible_toolbar(self):
panels = [panel.get() for panel in self._panels]
panel_index_selected = panels.index(self._stack.get_visible_child())
toolbar = self._panels[panel_index_selected].get_toolbar()
self._toolbar_stack.set_visible_child(toolbar)
def _show_error(self, message):
self._infobar.show_error(message)
@ -605,6 +615,7 @@ class ConnectionPanel(mcg.Base):
# Widgets
self._panel = builder.get_object('server-panel')
self._toolbar = builder.get_object('server-toolbar')
# Zeroconf
self._zeroconf_list = builder.get_object('server-zeroconf-list')
self._zeroconf_list.set_model(self._services)
@ -629,6 +640,10 @@ class ConnectionPanel(mcg.Base):
return self._panel
def get_toolbar(self):
return self._toolbar
def get_signal_handlers(self):
return {
'on_server-zeroconf-list-selection_changed': self.on_service_selected,
@ -731,6 +746,7 @@ class CoverPanel(mcg.Base):
# Widgets
self._panel = builder.get_object('cover-panel')
self._toolbar = builder.get_object('cover-toolbar')
# Cover
self._cover_scroll = builder.get_object('cover-scroll')
self._cover_image = builder.get_object('cover-image')
@ -747,6 +763,10 @@ class CoverPanel(mcg.Base):
return self._panel
def get_toolbar(self):
return self._toolbar
def get_signal_handlers(self):
return {
'on_cover-box_button_press_event': self.on_cover_box_pressed,
@ -949,8 +969,9 @@ class PlaylistPanel(mcg.Base):
# Widgets
self._panel = builder.get_object('playlist-panel')
self._toolbar = builder.get_object('playlist-toolbar')
# Clear button
self._playlist_clear_button = builder.get_object('playlist-clear')
self._playlist_clear_button = builder.get_object('playlist-toolbar-clear')
# Playlist Grid: Model
self._playlist_grid_model = Gtk.ListStore(GdkPixbuf.Pixbuf, str, str)
# Playlist Grid
@ -965,9 +986,13 @@ class PlaylistPanel(mcg.Base):
return self._panel
def get_toolbar(self):
return self._toolbar
def get_signal_handlers(self):
return {
'on_playlist-clear_clicked': self._callback_from_widget
'on_playlist-toolbar-clear_clicked': self._callback_from_widget
}
@ -1068,6 +1093,7 @@ class LibraryPanel(mcg.Base):
# Widgets
self._panel = builder.get_object('library-panel')
self._toolbar = builder.get_object('library-toolbar')
# Progress Bar
self._progress_revealer = builder.get_object('library-progress-revealer')
self._progress_bar = builder.get_object('library-progress')
@ -1109,6 +1135,10 @@ class LibraryPanel(mcg.Base):
return self._panel
def get_toolbar(self):
return self._toolbar
def get_signal_handlers(self):
return {
'on_library-update_clicked': self.on_update_clicked,