Skip to content

Commit

Permalink
Add function to set audio file to beginning of the current line
Browse files Browse the repository at this point in the history
  • Loading branch information
innir committed Dec 10, 2016
1 parent f8319b8 commit de322d2
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 5 deletions.
32 changes: 30 additions & 2 deletions bin/gtranscribe
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ class gTranscribeWindow:
self.rewind_menu.set_sensitive(False)
self.forward_menu = builder.get_object('forward')
self.forward_menu.set_sensitive(False)
self.jump_menu = builder.get_object('jump')
self.jump_menu.set_sensitive(False)

self.speedscale = builder.get_object('scale_speed')

Expand Down Expand Up @@ -254,6 +256,7 @@ class gTranscribeWindow:
self.forward_button.set_sensitive(True)
self.rewind_menu.set_sensitive(True)
self.forward_menu.set_sensitive(True)
self.jump_menu.set_sensitive(True)

def on_file_ended(self, signal):
logging.debug('received signal "ended"')
Expand Down Expand Up @@ -351,6 +354,31 @@ class gTranscribeWindow:
self.player.position = new_position
GObject.idle_add(self.play_loop, True)

def jump(self, action):
# Only do this if an audio file is already loaded
if self.md5 is not None:
# Get the current cursor position
position = self.text_buffer.get_iter_at_mark(
self.text_buffer.get_insert())
# Get the cursor position relative to the beginning of this line
line_offset = position.get_line_offset()
# Get beginning of the line
line_start = position.get_offset() - line_offset
# Get the text at the end of the last line
pos = self.text_buffer.get_text(
self.text_buffer.get_iter_at_offset(line_start - 10),
self.text_buffer.get_iter_at_offset(line_start - 1), True)
logging.debug('Try to get the position from %s' % pos)
pos_tag = re.compile('\[\d\d:\d\d.\d\]')
if pos_tag.match(pos):
pos = pos[-8:-1]
pos_tag = re.compile('\d\d:\d\d.\d')
if pos_tag.match(pos):
self.player.position = time_to_ns(
datetime.datetime.strptime(pos, "%M:%S.%f"))
GObject.idle_add(self.play_loop, True)
logging.debug('Set position')

def copy_position(self, action):
pos_str = trim(ns_to_time(self.position).strftime(self.time_str))
clipboard = Gtk.clipboard_get()
Expand All @@ -368,7 +396,7 @@ class gTranscribeWindow:

def on_scale_position_value_changed(self, range):
if not self.seeking:
# Slider changed programmatically, do nothing
# Slider changed without user action, do nothing
return
value = range.get_value()
max_value = self.slider.get_adjustment().get_upper()
Expand Down Expand Up @@ -429,7 +457,7 @@ class gTranscribeWindow:
fin = open(self.filename, "r")
text = fin.read()
fin.close()
# Only do this is an audio file is already loaded
# Only do this if an audio file is already loaded
if self.md5 is not None:
# Try to get the last position
pos = text[-10:-1]
Expand Down
16 changes: 13 additions & 3 deletions data/ui/gTranscribe.glade
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,17 @@
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-missing-image</property>
<property name="stock">gtk-file</property>
</object>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-missing-image</property>
<property name="stock">gtk-go-down</property>
</object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-missing-image</property>
<property name="stock">gtk-go-up</property>
</object>
<object class="GtkWindow" id="gtranscribe_window">
<property name="can_focus">False</property>
Expand Down Expand Up @@ -182,6 +182,16 @@
<accelerator key="Left" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="jump">
<property name="label">gtk-jump-to</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_stock">True</property>
<signal name="activate" handler="jump" swapped="no"/>
<accelerator key="j" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</object>
</child>
</object>
</child>
</object>
Expand Down

0 comments on commit de322d2

Please sign in to comment.