summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul W. Frields <stickster@gmail.com>2011-09-09 15:09:54 -0400
committerPaul W. Frields <stickster@gmail.com>2012-10-04 17:59:31 -0400
commit97beaf7aec9e85ccd9a3d01a1004dfb1c5822908 (patch)
tree1f3809d2388dff453fc8544ddcd575945ae36742
parenta24d3bbed4c7b1aa9ed8eb1977db45e327d5fc40 (diff)
downloadpulsecaster-97beaf7aec9e85ccd9a3d01a1004dfb1c5822908.tar.gz
pulsecaster-97beaf7aec9e85ccd9a3d01a1004dfb1c5822908.tar.xz
pulsecaster-97beaf7aec9e85ccd9a3d01a1004dfb1c5822908.zip
Include show/hide functions and alternate pipeline
-rw-r--r--pulsecaster/data/pulsecaster.ui5
-rw-r--r--pulsecaster/gconfig.py5
-rw-r--r--pulsecaster/ui.py92
3 files changed, 71 insertions, 31 deletions
diff --git a/pulsecaster/data/pulsecaster.ui b/pulsecaster/data/pulsecaster.ui
index 714ba07..cad63a9 100644
--- a/pulsecaster/data/pulsecaster.ui
+++ b/pulsecaster/data/pulsecaster.ui
@@ -36,6 +36,10 @@
<object class="GtkDialog" id="adv_dialog">
<property name="can_focus">False</property>
<property name="border_width">5</property>
+ <property name="type">popup</property>
+ <property name="resizable">False</property>
+ <property name="modal">True</property>
+ <property name="window_position">center-on-parent</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox3">
@@ -87,7 +91,6 @@
<property name="xalign">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
- <property name="group">flac_button</property>
<child>
<object class="GtkBox" id="box2">
<property name="visible">True</property>
diff --git a/pulsecaster/gconfig.py b/pulsecaster/gconfig.py
index 919449e..dfddc72 100644
--- a/pulsecaster/gconfig.py
+++ b/pulsecaster/gconfig.py
@@ -43,6 +43,11 @@ class PulseCasterGconf:
self.codec = 'vorbis'
self.client.set_string(self.dirbase + '/codec', self.codec)
+ self.expert = self.client.get(self.dirbase + '/expert')
+ if type(self.expert) is not bool:
+ self.expert = False
+ self.client.set_bool(self.dirbase + '/expert', self.expert)
+
def change_warn(self, val):
if type(val) is not bool:
raise ValueError, "requires bool value"
diff --git a/pulsecaster/ui.py b/pulsecaster/ui.py
index 95e2bdd..ea534db 100644
--- a/pulsecaster/ui.py
+++ b/pulsecaster/ui.py
@@ -217,11 +217,6 @@ class PulseCasterUI:
self.main.set_sensitive(True)
def on_record(self, *args):
- # Create temporary file
- (self.tempfd, self.temppath) = tempfile.mkstemp(prefix='%s-tmp.'
- % (NAME))
- self.tempfile = os.fdopen(self.tempfd)
- _debugPrint('tempfile: %s (fd %s)' % (self.temppath, self.tempfd))
# Adjust UI
self.user_vox.cbox.set_sensitive(False)
self.subject_vox.cbox.set_sensitive(False)
@@ -232,31 +227,65 @@ class PulseCasterUI:
self.lsource.set_property('device', self.user_vox.pulsesrc)
self.rsource = gst.element_factory_make('pulsesrc', 'rsrc')
self.rsource.set_property('device', self.subject_vox.pulsesrc)
-
+
self.adder = gst.element_factory_make('adder', 'mix')
- self.encoder = gst.element_factory_make(self.gconfig.codec + 'enc',
- 'enc')
- if self.gconfig.codec == 'vorbis':
- self.muxer = gst.element_factory_make('oggmux', 'mux')
- self.filesink = gst.element_factory_make('filesink', 'fsink')
- self.filesink.set_property('location', self.temppath)
-
- self.combiner.add(self.lsource,
- self.rsource,
- self.adder,
- self.encoder,
- self.filesink)
- if self.gconfig.codec == 'vorbis':
- self.combiner.add(self.muxer)
- gst.element_link_many(self.lsource,
+
+ if self.gconfig.expert is not True:
+ # Create temporary file
+ (self.tempfd, self.temppath) = tempfile.mkstemp(prefix='%s-tmp.'
+ % (NAME))
+ self.tempfile = os.fdopen(self.tempfd)
+ _debugPrint('tempfile: %s (fd %s)' % (self.temppath, self.tempfd))
+ self.encoder = gst.element_factory_make(self.gconfig.codec +
+ 'enc', 'enc')
+ if self.gconfig.codec == 'vorbis':
+ self.muxer = gst.element_factory_make('oggmux', 'mux')
+ self.filesink = gst.element_factory_make('filesink', 'fsink')
+ self.filesink.set_property('location', self.temppath)
+
+ self.combiner.add(self.lsource,
+ self.rsource,
self.adder,
- self.encoder)
- if self.gconfig.codec == 'vorbis':
- self.encoder.link(self.muxer)
- self.muxer.link(self.filesink)
- else: # flac
- self.encoder.link(self.filesink)
- gst.element_link_many(self.rsource, self.adder)
+ self.encoder,
+ self.filesink)
+ if self.gconfig.codec == 'vorbis':
+ self.combiner.add(self.muxer)
+ gst.element_link_many(self.lsource,
+ self.adder,
+ self.encoder)
+ if self.gconfig.codec == 'vorbis':
+ self.encoder.link(self.muxer)
+ self.muxer.link(self.filesink)
+ else: # flac
+ self.encoder.link(self.filesink)
+ gst.element_link_many(self.rsource, self.adder)
+ else:
+ # Create temporary file
+ (self.tempfd1, self.temppath1) = tempfile.mkstemp(prefix='%s-1-tmp.'
+ % (NAME))
+ (self.tempfd2, self.temppath2) = tempfile.mkstemp(prefix='%s-2-tmp.'
+ % (NAME))
+ self.tempfile1 = os.fdopen(self.tempfd1)
+ self.tempfile2 = os.fdopen(self.tempfd2)
+ _debugPrint('tempfiles: %s (fd %s), %s (fd %s)' %
+ (self.temppath1, self.tempfd1, self.temppath2,
+ self.temppath2))
+ # We're in expert mode
+ # Disregard vorbis, use WAV
+ self.encoder1 = gst.element_factory_make('wavenc', 'enc1')
+ self.encoder2 = gst.element_factory_make('wavenc', 'enc2')
+ self.filesink1 = gst.element_factory_make('filesink', 'fsink1')
+ self.filesink1.set_property('location', self.temppath1)
+ self.filesink2 = gst.element_factory_make('filesink', 'fsink2')
+ self.filesink2.set_property('location', self.temppath2)
+ self.combiner.add(self.lsource,
+ self.rsource,
+ self.encoder1,
+ self.encoder2,
+ self.filesink1,
+ self.filesink2)
+ gst.element_link_many(self.lsource, self.encoder1, self.filesink1)
+ gst.element_link_many(self.rsource, self.encoder2, self.filesink2)
# FIXME: Dim elements other than the 'record' widget
self.record.set_label(Gtk.STOCK_MEDIA_STOP)
@@ -300,9 +329,12 @@ class PulseCasterUI:
def hideAbout(self, *args):
self.about.hide()
+ def showAdv(self, *args):
+ self.adv.show()
+
def hideAdv(self, *args):
- pass
-
+ self.adv.hide()
+
def showFileChooser(self, *args):
self.file_chooser = Gtk.FileChooserDialog(title=_('Save your recording'),
action=Gtk.FileChooserAction.SAVE,