Changeset 2516
- Timestamp:
- 2006-10-07 03:21:13 (2 years ago)
- Files:
-
- keystroke/trunk/keystroke.py (modified) (4 diffs)
- keystroke/trunk/scriptview.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
keystroke/trunk/keystroke.py
r2515 r2516 207 207 self.start_time.set_text(previous['start']) 208 208 self.end_time.set_text(previous['end']) 209 self.clip_text.set_text(self.scriptview.get_clip_text(previous['start'],previous['track'])) 209 210 self.progress.props.fraction = float(to_ms(previous["start"]))/self.pipeline_duration 210 211 else: … … 220 221 self.start_time.set_text(next['start']) 221 222 self.end_time.set_text(next['end']) 223 self.clip_text.set_text(self.scriptview.get_clip_text(next['start'],next['track'])) 222 224 elif self.end_time.get_text()!="xx:xx:xx.xxx": 223 225 self.seek(self.end_time.get_text()) … … 247 249 data = self.scriptview.export_buffer() 248 250 self.textsource.clear() 249 print "PUSH TEXT"250 251 for clip in data["subtitle-en"]: 251 252 desc = clip[2] … … 258 259 #Handles clip to text buffer, formatting and pipeline control. 259 260 if self.show_keystrokes: print "Enter" 261 current_time = self.pipeline.query_position(gst.FORMAT_TIME)[0]/gst.MSECOND 260 262 if (self.pipeline.get_state()[1] == gst.STATE_PLAYING): 261 263 self.pipeline.set_state(gst.STATE_PAUSED); 262 264 current_time = self.pipeline.query_position(gst.FORMAT_TIME)[0]/gst.MSECOND 263 self.end_time.set_text(format_time(current_time)) 265 if self.mode=="transcribe": 266 self.end_time.set_text(format_time(current_time)) 267 elif self.mode=="review": 268 current = self.scriptview.current(current_time) 269 self.scriptview.highlight(current["start"]) 270 self.start_time.set_text(current['start']) 271 self.end_time.set_text(current['end']) 272 self.clip_text.set_text(self.scriptview.get_clip_text(current['start'],current['track'])) 264 273 self.progress.props.text = self.current_file + ": Paused." 265 274 if self.pipeline_duration==10: 266 275 self.pipeline_duration = self.pipeline.query_duration(gst.FORMAT_TIME)[0]/gst.MSECOND 267 276 self.progress.props.fraction = float(current_time)/self.pipeline_duration 268 elif self.pipeline.get_state()[1] == gst.STATE_PAUSED and self.mode=='transcribe': 269 text = self.clip_text.get_text() 270 if text[:1] == ")" or (text.find(":")==-1 and text != "") and self.start_time.get_text() != 'xx:xx:xx.xxx': 271 self.scriptview.add(self.start_time.get_text(),self.end_time.get_text(),text.strip().strip(")"),"default") 272 elif text != "" and self.start_time.get_text() != 'xx:xx:xx.xxx': 273 # If using the last type def make sure doesn't have ';' instead of intended ':' 274 if text.find(":")==-1 and text.find(";")!=-1: 275 dialog = gtk.Dialog("Did you mean...", self.window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_NO, gtk.RESPONSE_NO, gtk.STOCK_YES, gtk.RESPONSE_YES)) 276 label = gtk.Label("It looks like you may have intended to have a new speaker but mistakenly typed a semi-colon (;) instead of a colon (:). Would you like to change the semi-colon to a colon in, '"+text+"'?") 277 label.set_line_wrap(True) 278 dialog.vbox.pack_start(label, True, False, 0) 279 dialog.set_default_response(gtk.RESPONSE_YES) 280 label.show() 281 if dialog.run() == gtk.RESPONSE_YES: 282 text = text.replace(";", ":", 1) 283 dialog.destroy() 284 if text.find(":")!=-1: 285 speaker = text[:text.find(":")+1] 286 else: 287 speaker = None 288 self.scriptview.add(self.start_time.get_text(),self.end_time.get_text(),text.strip().strip(")"),"default",speaker) 289 elif text != "": 290 self.scriptview.add(self.start_time.get_text(),self.end_time.get_text(),text.strip()) 291 self.clip_text.set_text("") 292 self.start_time.set_text(format_time(self.pipeline.query_position(gst.FORMAT_TIME)[0]/gst.MSECOND)) 293 self.end_time.set_text("xx:xx:xx.xxx") 277 elif self.pipeline.get_state()[1] == gst.STATE_PAUSED: 278 if self.mode=="transcribe": 279 text = self.clip_text.get_text() 280 if text[:1] == ")" or (text.find(":")==-1 and text != "") and self.start_time.get_text() != 'xx:xx:xx.xxx': 281 self.scriptview.add(self.start_time.get_text(),self.end_time.get_text(),text.strip().strip(")"),"default") 282 elif text != "" and self.start_time.get_text() != 'xx:xx:xx.xxx': 283 # If using the last type def make sure doesn't have ';' instead of intended ':' 284 if text.find(":")==-1 and text.find(";")!=-1: 285 dialog = gtk.Dialog("Did you mean...", self.window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_NO, gtk.RESPONSE_NO, gtk.STOCK_YES, gtk.RESPONSE_YES)) 286 label = gtk.Label("It looks like you may have intended to have a new speaker but mistakenly typed a semi-colon (;) instead of a colon (:). Would you like to change the semi-colon to a colon in, '"+text+"'?") 287 label.set_line_wrap(True) 288 dialog.vbox.pack_start(label, True, False, 0) 289 dialog.set_default_response(gtk.RESPONSE_YES) 290 label.show() 291 if dialog.run() == gtk.RESPONSE_YES: 292 text = text.replace(";", ":", 1) 293 dialog.destroy() 294 if text.find(":")!=-1: 295 speaker = text[:text.find(":")+1] 296 else: 297 speaker = None 298 self.scriptview.add(self.start_time.get_text(),self.end_time.get_text(),text.strip().strip(")"),"default",speaker) 299 elif text != "": 300 self.scriptview.add(self.start_time.get_text(),self.end_time.get_text(),text.strip()) 301 self.clip_text.set_text("") 302 self.start_time.set_text(format_time(self.pipeline.query_position(gst.FORMAT_TIME)[0]/gst.MSECOND)) 303 self.end_time.set_text("xx:xx:xx.xxx") 304 elif self.mode=="review": 305 pass 306 #FIXME this is where to put clip update code. 294 307 self.scriptview.scroll_to_bottom(self.mode) 295 308 self.pipeline.set_state(gst.STATE_PLAYING); 296 self.progress.props.text = self.current_file + ": Playing." 297 elif self.pipeline.get_state()[1] == gst.STATE_PAUSED: 298 self.start_time.set_text(format_time(self.pipeline.query_position(gst.FORMAT_TIME)[0]/gst.MSECOND)) 299 self.end_time.set_text("xx:xx:xx.xxx") 300 self.pipeline.set_state(gst.STATE_PLAYING); 301 self.progress.props.text = self.current_file + ": Playing." 309 self.progress.props.text = self.current_file + ": Playing." 302 310 return 303 311 keystroke/trunk/scriptview.py
r2515 r2516 128 128 while x<len(self.__times[self.__current_track]['start']) and time>=to_ms(self.__times[self.__current_track]['start'][x]): 129 129 x += 1 130 return x-1 130 if not time > to_ms(self.__times[self.__current_track]['end'][-1]): 131 return {"start":self.__times[self.__current_track]['start'][x-1],"end":self.__times[self.__current_track]['end'][x-1],"track":self.__current_track,"index":x-1} 132 else: 133 return None 131 134 132 135 def next(self,time): … … 134 137 time. If the current clip is the end then return None.""" 135 138 current = self.current(time) 139 current = current['index'] 136 140 if current+1<len(self.__times[self.__current_track]['start']): 137 return {"start":self.__times[self.__current_track]['start'][current+1],"end":self.__times[self.__current_track]['end'][current+1]," index":current+1}141 return {"start":self.__times[self.__current_track]['start'][current+1],"end":self.__times[self.__current_track]['end'][current+1],"track":self.__current_track,"index":current+1} 138 142 else: 139 143 return None … … 143 147 given time. If the current clip is the first then return None.""" 144 148 current = self.current(time) 149 current = current['index'] 145 150 if current>0: 146 return {"start" : self.__times[self.__current_track]['start'][current-1],"end" : self.__times[self.__current_track]['end'][current-1]," index":current-1}151 return {"start" : self.__times[self.__current_track]['start'][current-1],"end" : self.__times[self.__current_track]['end'][current-1],"track":self.__current_track,"index":current-1} 147 152 else: 148 153 return None … … 160 165 self.__text.apply_tag(self.__tag_current, start_iter, end_iter) 161 166 self.__textView.scroll_to_mark(mark,0.1) 162 return163 167 164 168 def get_textview(self): … … 240 244 print "Switched to " + keys[new_track%len(keys)] + "." 241 245 self.__current_track = keys[new_track%len(keys)] 246 247 def get_clip_text(self,time,track): 248 """This highlights the text for the clip with the given start time. Also 249 note that it will remove any other highlights.""" 250 mark = self.__text.get_mark(track + "-" + time) 251 start_iter = self.__text.get_iter_at_mark(mark) 252 if not start_iter.begins_tag(self.__tag_clip): 253 start_iter.forward_to_tag_toggle(self.__tag_clip) 254 end_iter = start_iter.copy() 255 end_iter.forward_to_tag_toggle(self.__tag_clip) 256 return self.__text.get_text(start_iter, end_iter)