Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/jukeboxactivity.py
diff options
context:
space:
mode:
Diffstat (limited to 'jukeboxactivity.py')
-rw-r--r--jukeboxactivity.py96
1 files changed, 67 insertions, 29 deletions
diff --git a/jukeboxactivity.py b/jukeboxactivity.py
index fc20f2b..3655229 100644
--- a/jukeboxactivity.py
+++ b/jukeboxactivity.py
@@ -30,6 +30,19 @@ from sugar.activity import activity
from sugar.graphics.objectchooser import ObjectChooser
from sugar import mime
+OLD_TOOLBAR = False
+try:
+ from sugar.graphics.toolbarbox import ToolbarBox
+ from sugar.activity.widgets import StopButton
+except ImportError:
+ OLD_TOOLBAR = True
+
+from sugar.graphics.toolbutton import ToolButton
+from sugar.graphics.xocolor import XoColor
+from sugar import profile
+from sugar.bundle.activitybundle import ActivityBundle
+from sugar.graphics.icon import Icon
+
import pygtk
pygtk.require('2.0')
@@ -44,7 +57,7 @@ import gst.interfaces
import gtk
import urllib
-from ControlToolbar import ControlToolbar
+from ControlToolbar import Control
from ConfigParser import ConfigParser
cf = ConfigParser()
@@ -58,23 +71,50 @@ class JukeboxActivity(activity.Activity):
self.set_title(_('Jukebox Activity'))
self.player = None
- toolbox = activity.ActivityToolbox(self)
- self.set_toolbox(toolbox)
+ if OLD_TOOLBAR:
+ toolbox = activity.ActivityToolbox(self)
+ self.set_toolbox(toolbox)
+ toolbar = gtk.Toolbar()
+ self.control = Control(toolbar, self)
+ toolbox.add_toolbar(_('Play'), toolbar)
+
+ toolbar.show()
+ toolbox.show()
+
+ toolbox.connect("key_press_event", self._key_press_event_cb)
+ self.control.connect('go-fullscreen', self.__go_fullscreen_cb)
+
+ toolbar.grab_focus()
+ #self.connect("shared", self._shared_cb)
+ activity_toolbar = toolbox.get_activity_toolbar()
+ activity_toolbar.remove(activity_toolbar.share)
+ activity_toolbar.share = None
+ activity_toolbar.remove(activity_toolbar.keep)
+ activity_toolbar.keep = None
- self.toolbar = toolbar = ControlToolbar(toolbox, self)
- toolbox.add_toolbar(_('Play'), toolbar)
+ else:
+ toolbar_box = ToolbarBox()
+ activity_button = ToolButton()
+ color = XoColor(profile.get_color())
+ bundle = ActivityBundle(activity.get_bundle_path())
+ icon = Icon(file=bundle.get_icon(), xo_color=color)
+ activity_button.set_icon_widget(icon)
+ activity_button.show()
+
+ toolbar_box.toolbar.insert(activity_button, 0)
+ self.control = Control(toolbar_box.toolbar, self)
+ self.control.connect('go-fullscreen', self.__go_fullscreen_cb)
- toolbar.show()
- toolbox.show()
- self.toolbar.connect('go-fullscreen', self.__go_fullscreen_cb)
+ separator = gtk.SeparatorToolItem()
+ separator.props.draw = False
+ separator.set_expand(True)
+ toolbar_box.toolbar.insert(separator, -1)
- self.toolbar.grab_focus()
- #self.connect("shared", self._shared_cb)
- activity_toolbar = toolbox.get_activity_toolbar()
- activity_toolbar.remove(activity_toolbar.share)
- activity_toolbar.share = None
- activity_toolbar.remove(activity_toolbar.keep)
- activity_toolbar.keep = None
+ toolbar_box.toolbar.insert(StopButton(self), -1)
+
+ self.set_toolbar_box(toolbar_box)
+ toolbar_box.show_all()
+ toolbar_box.connect("key_press_event", self._key_press_event_cb)
if handle.uri:
pass
@@ -117,8 +157,6 @@ class JukeboxActivity(activity.Activity):
self.uri = handle.uri
gobject.idle_add(self._start, self.uri)
- self.toolbox.connect("key_press_event", self._key_press_event_cb)
-
def open_button_clicked_cb(self, widget):
""" To open the dialog to select a new file"""
#self.player.seek(0L)
@@ -142,13 +180,13 @@ class JukeboxActivity(activity.Activity):
def check_if_next_prev(self):
if self.currentplaying == 0:
- self.toolbar.prev_button.set_sensitive(False)
+ self.control.prev_button.set_sensitive(False)
else:
- self.toolbar.prev_button.set_sensitive(True)
+ self.control.prev_button.set_sensitive(True)
if self.currentplaying == len(self.playlist) - 1:
- self.toolbar.next_button.set_sensitive(False)
+ self.control.next_button.set_sensitive(False)
else:
- self.toolbar.next_button.set_sensitive(True)
+ self.control.next_button.set_sensitive(True)
def songchange(self,direction):
@@ -193,7 +231,7 @@ class JukeboxActivity(activity.Activity):
def _player_error_cb(self, widget, message, detail):
self.player.stop()
self.player.set_uri(None)
- self.toolbar.set_disabled()
+ self.control.set_disabled()
self.bin.remove(self.videowidget)
text = gtk.Label("Error: %s - %s" % (message, detail))
text.show_all()
@@ -330,23 +368,23 @@ class JukeboxActivity(activity.Activity):
def play_toggled(self):
if self.player.is_playing():
self.player.pause()
- self.toolbar.set_button_play()
+ self.control.set_button_play()
else:
if self.player.error:
- self.toolbar.set_disabled()
+ self.control.set_disabled()
else:
self.player.play()
if self.update_id == -1:
self.update_id = gobject.timeout_add(self.UPDATE_INTERVAL,
self.update_scale_cb)
- self.toolbar.set_button_pause()
+ self.control.set_button_pause()
def volume_changed_cb(self, widget, value):
if self.player:
self.player.player.set_property('volume', value)
def scale_button_press_cb(self, widget, event):
- self.toolbar.button.set_sensitive(False)
+ self.control.button.set_sensitive(False)
self.was_playing = self.player.is_playing()
if self.was_playing:
self.player.pause()
@@ -358,7 +396,7 @@ class JukeboxActivity(activity.Activity):
# make sure we get changed notifies
if self.changed_id == -1:
- self.changed_id = self.toolbar.hscale.connect('value-changed',
+ self.changed_id = self.control.hscale.connect('value-changed',
self.scale_value_changed_cb)
def scale_value_changed_cb(self, scale):
@@ -373,7 +411,7 @@ class JukeboxActivity(activity.Activity):
widget.disconnect(self.changed_id)
self.changed_id = -1
- self.toolbar.button.set_sensitive(True)
+ self.control.button.set_sensitive(True)
if self.seek_timeout_id != -1:
gobject.source_remove(self.seek_timeout_id)
self.seek_timeout_id = -1
@@ -391,7 +429,7 @@ class JukeboxActivity(activity.Activity):
self.p_position, self.p_duration = self.player.query_position()
if self.p_position != gst.CLOCK_TIME_NONE:
value = self.p_position * 100.0 / self.p_duration
- self.toolbar.adjustment.set_value(value)
+ self.control.adjustment.set_value(value)
return True