Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/record.py
diff options
context:
space:
mode:
Diffstat (limited to 'record.py')
-rwxr-xr-x[-rw-r--r--]record.py90
1 files changed, 83 insertions, 7 deletions
diff --git a/record.py b/record.py
index e25010e..3b2c1a5 100644..100755
--- a/record.py
+++ b/record.py
@@ -27,6 +27,7 @@ from gettext import ngettext
import gtk
from gtk import gdk
+import gio
import cairo
import pango
import pangocairo
@@ -72,10 +73,11 @@ else:
class Record(activity.Activity):
+
def __init__(self, handle):
super(Record, self).__init__(handle)
self.props.enable_fullscreen_mode = False
- Instance(self)
+ self.Instance = Instance(self)
self.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK)
self.connect("visibility-notify-event", self._visibility_changed)
@@ -172,7 +174,7 @@ class Record(activity.Activity):
self._toolbar.insert(gtk.SeparatorToolItem(), -1)
- self._toolbar_controls = RecordControl(self._toolbar)
+ self._toolbar_controls = RecordControl(self._toolbar, self, 8 if self._video_button else 6)
separator = gtk.SeparatorToolItem()
separator.props.draw = False
@@ -854,29 +856,103 @@ class PlayButton(gtk.Button):
class RecordControl():
-
- def __init__(self, toolbar):
+ def __init__(self, toolbar, activity, output_pos):
+ self.activity = activity
+ self.toolbar = toolbar
+ self.output_pos = output_pos
self._timer_value = TIMER_VALUES[0]
self._timer_button = ToolButton('timer-0')
self._timer_button.set_tooltip(_('Select timer'))
self._timer_button.connect('clicked', self._timer_selection_cb)
- toolbar.insert(self._timer_button, -1)
+ self.toolbar.insert(self._timer_button, -1)
self._setup_timer_palette()
self._duration_value = DURATION_VALUES[0]
self._duration_button = ToolButton('duration-2')
self._duration_button.set_tooltip(_('Select duration'))
self._duration_button.connect('clicked', self._duration_selection_cb)
- toolbar.insert(self._duration_button, -1)
+ self.toolbar.insert(self._duration_button, -1)
self._setup_duration_palette()
self._quality_value = 0
self._quality_button = ToolButton('low-quality')
self._quality_button.set_tooltip(_('Select quality'))
self._quality_button.connect('clicked', self._quality_selection_cb)
- toolbar.insert(self._quality_button, -1)
+ self.toolbar.insert(self._quality_button, -1)
self._setup_quality_palette()
+
+ self._setup_output_palette(False)
+ return
+
+ def _output_selection_cb(self, widget):
+ if self._output_palette:
+ if not self._output_palette.is_up():
+ self._output_palette.popup(immediate=True,
+ state=self._timer_palette.SECONDARY)
+ else:
+ self._output_palette.popdown(immediate=True)
+ return
+
+ def _setup_output_palette(self, notFirst):
+ if notFirst:
+ self.toolbar.remove(self._output_button)
+ self._output_button = ToolButton()
+ self._output_button.set_icon_name('user-documents')
+ self._output_button.set_tooltip(_('Select output device'))
+ self._output_button.connect('clicked', self._output_selection_cb)
+ self._output_button.show()
+ self.toolbar.insert(self._output_button, self.output_pos)
+ self._output_palette = self._output_button.get_palette()
+
+ volume_monitor = gio.volume_monitor_get()
+ self._mount_added_hid = volume_monitor.connect('mount-added',
+ self.__mount_change_cb)
+ self._mount_removed_hid = volume_monitor.connect('mount-removed',
+ self.__mount_change_cb)
+
+ button = MenuItem(icon_name='activity-journal',
+ text_label='Journal')
+ self._output_palette.menu.append(button)
+ button.connect('activate', self._output_selected_cb, None)
+ button.show()
+ self._output_palette.menu.append(button)
+
+ for mount in volume_monitor.get_mounts():
+ self._add_button(mount)
+
+ def __mount_change_cb(self, volume_monitor, mount):
+ self._setup_output_palette(True)
+
+ def _get_mount_icon_name(self, mount, size):
+ icon = mount.get_icon()
+ if isinstance(icon, gio.ThemedIcon):
+ icon_theme = gtk.icon_theme_get_default()
+ for icon_name in icon.props.names:
+ if icon_theme.lookup_icon(icon_name, size, 0) is not None:
+ return icon_name
+ logging.error('Cannot find icon name for %s, %s', icon, mount)
+ return 'drive'
+
+ def _add_button(self, mount):
+ logging.debug('VolumeToolbar._add_button: %r', mount.get_name())
+
+ button = MenuItem(icon_name=
+ self._get_mount_icon_name(mount, gtk.ICON_SIZE_LARGE_TOOLBAR),
+ text_label=mount.get_name())
+ self._output_palette.menu.append(button)
+ button.connect('activate', self._output_selected_cb, mount)
+ button.show()
+ self._output_palette.menu.append(button)
+
+ def _output_selected_cb(self, button, mount):
+ if mount:
+ self.activity.Instance.savePath = mount.get_root().get_path()
+ self._output_button.set_icon_name(self._get_mount_icon_name(mount,
+ gtk.ICON_SIZE_LARGE_TOOLBAR))
+ else:
+ self.activity.Instance.savePath = None
+ self._output_button.set_icon_name('activity-journal')
def _timer_selection_cb(self, widget):
if self._timer_palette: