MCGGtk: callback functions restructured

This commit is contained in:
coderkun 2012-06-24 00:26:52 +02:00
commit 1f3a7aef88

116
mcgGtk.py
View file

@ -35,17 +35,17 @@ class MCGGtk(Gtk.Window):
self.connect('size-allocate', self.save_size) self.connect('size-allocate', self.save_size)
self.connect('window-state-event', self.save_state) self.connect('window-state-event', self.save_state)
self.connect('delete-event', self.destroy) self.connect('delete-event', self.destroy)
self._toolbar.connect_signal(Toolbar.SIGNAL_CONNECT, self._connect) self._toolbar.connect_signal(Toolbar.SIGNAL_CONNECT, self.toolbar_connect_cb)
self._toolbar.connect_signal(Toolbar.SIGNAL_UPDATE, self.update) self._toolbar.connect_signal(Toolbar.SIGNAL_UPDATE, self.toolbar_update_cb)
self._toolbar.connect_signal(Toolbar.SIGNAL_PREV, self.prev) self._toolbar.connect_signal(Toolbar.SIGNAL_PREV, self.toolbar_prev_cb)
self._toolbar.connect_signal(Toolbar.SIGNAL_PLAYPAUSE, self.playpause) self._toolbar.connect_signal(Toolbar.SIGNAL_PLAYPAUSE, self.toolbar_playpause_cb)
self._toolbar.connect_signal(Toolbar.SIGNAL_NEXT, self.next) self._toolbar.connect_signal(Toolbar.SIGNAL_NEXT, self.toolbar_next_cb)
self._cover_panel.connect_signal(CoverPanel.SIGNAL_UPDATE_START, self.update_start_callback) self._cover_panel.connect_signal(CoverPanel.SIGNAL_PLAY, self.cover_panel_play_cb)
self._cover_panel.connect_signal(CoverPanel.SIGNAL_UPDATE_END, self.update_end_callback) self._cover_panel.connect_signal(CoverPanel.SIGNAL_UPDATE_START, self.cover_panel_update_start_cb)
self._cover_panel.connect_signal(CoverPanel.SIGNAL_PLAY, self.play_callback) self._cover_panel.connect_signal(CoverPanel.SIGNAL_UPDATE_END, self.cover_panel_update_end_cb)
self._mcg.connect_signal(mcg.MCGClient.SIGNAL_CONNECT, self.connect_callback) self._mcg.connect_signal(mcg.MCGClient.SIGNAL_CONNECT, self.mcg_connect_cb)
self._mcg.connect_signal(mcg.MCGClient.SIGNAL_STATUS, self.status_callback) self._mcg.connect_signal(mcg.MCGClient.SIGNAL_STATUS, self.mcg_status_cb)
self._mcg.connect_signal(mcg.MCGClient.SIGNAL_UPDATE, self.update_callback) self._mcg.connect_signal(mcg.MCGClient.SIGNAL_UPDATE, self.mcg_update_cb)
self.set_hide_titlebar_when_maximized(True) self.set_hide_titlebar_when_maximized(True)
self.resize_to_geometry(self._config.window_width, self._config.window_height) self.resize_to_geometry(self._config.window_width, self._config.window_height)
@ -74,44 +74,56 @@ class MCGGtk(Gtk.Window):
GObject.idle_add(Gtk.main_quit) GObject.idle_add(Gtk.main_quit)
def _connect(self): # Toolbar callbacks
if self._mcg.is_connected():
self._mcg.disconnect() def toolbar_connect_cb(self):
else: self._connect()
self._connection_panel.lock()
host = self._connection_panel.get_host()
port = self._connection_panel.get_port()
password = self._connection_panel.get_password()
self._mcg.connect(host, port, password)
def connect_callback(self, connected, message): def toolbar_update_cb(self):
self._toolbar.lock()
self._mcg.update()
def toolbar_prev_cb(self):
"""TODO prev()
"""
pass
def toolbar_playpause_cb(self):
self._mcg.playpause()
def toolbar_next_cb(self):
"""TODO next()
"""
pass
# Cover panel callbacks
def cover_panel_play_cb(self, album):
self._mcg.play_album(album)
def cover_panel_update_start_cb(self):
GObject.idle_add(self._toolbar.lock)
def cover_panel_update_end_cb(self):
GObject.idle_add(self._toolbar.unlock)
# MCG callbacks
def mcg_connect_cb(self, connected, message):
if connected: if connected:
GObject.idle_add(self._connect_connected) GObject.idle_add(self._connect_connected)
else: else:
GObject.idle_add(self._connect_disconnected) GObject.idle_add(self._connect_disconnected)
def prev(self): def mcg_status_cb(self, state, album):
"""TODO prev()
"""
pass
def playpause(self):
self._mcg.playpause()
def next(self):
"""TODO next()
"""
pass
def play_callback(self, album):
self._mcg.play_album(album)
def status_callback(self, state, album):
if state == 'play': if state == 'play':
GObject.idle_add(self._toolbar.set_pause) GObject.idle_add(self._toolbar.set_pause)
elif state == 'pause' or state == 'stop': elif state == 'pause' or state == 'stop':
@ -121,21 +133,21 @@ class MCGGtk(Gtk.Window):
GObject.idle_add(self._cover_panel.set_album, album.get_cover()) GObject.idle_add(self._cover_panel.set_album, album.get_cover())
def update(self): def mcg_update_cb(self, albums):
self._toolbar.lock()
self._mcg.update()
def update_callback(self, albums):
self._cover_panel.update(albums) self._cover_panel.update(albums)
def update_start_callback(self): # Private methods
GObject.idle_add(self._toolbar.lock)
def _connect(self):
def update_end_callback(self): if self._mcg.is_connected():
GObject.idle_add(self._toolbar.unlock) self._mcg.disconnect()
else:
self._connection_panel.lock()
host = self._connection_panel.get_host()
port = self._connection_panel.get_port()
password = self._connection_panel.get_password()
self._mcg.connect(host, port, password)
def _connect_connected(self): def _connect_connected(self):