def run_counter(self): if self.recording: logger.debug("Already recording, not starting again.") return # # Annoyances with the menus # logger.debug("Running Counter.") (main_x, main_y) = self.window.get_position() if main_x and main_y: prefs.main_x = main_x prefs.main_y = main_y self.indicator.recording = True self.indicator.menuitem_start.set_sensitive(False) self.indicator.menuitem_pause.set_sensitive(False) self.indicator.menuitem_finish.set_sensitive(True) self.indicator.menuitem_quit.set_sensitive(False) self.indicator.menuitem_finish.set_label(_("Cancel countdown")) self.in_countdown = True self.indicator.blink_set_state(BLINK_START) if prefs.sound: if (self.main_mode == MODE_SCREENCAST and prefs.capture_speakers) or \ (self.main_mode == MODE_BROADCAST and prefs.capture_speakers_broadcast) or \ (self.main_mode == MODE_WEBCAM and prefs.capture_speakers_webcam): try: audio_source = prefs.speaker_sources[prefs.audio_source][1] try: audio_channels = prefs.pa_q.get_source_info_by_index( prefs.speaker_sources[ prefs.audio_source][0])[2].channels except: audio_channels = 1 logger.debug( "Detected audio channels: {}".format(audio_channels)) except IndexError: logger.warning( "It appears that speakers audio source isn't set up correctly." ) audio_source = None else: audio_source = None audio_channels = 1 if (self.main_mode == MODE_SCREENCAST and prefs.capture_microphone) or \ (self.main_mode == MODE_BROADCAST and prefs.capture_microphone_broadcast) or \ (self.main_mode == MODE_WEBCAM and prefs.capture_microphone_webcam): try: audio2_source = prefs.mic_sources[prefs.audio2_source][1] try: audio2_channels = prefs.pa_q.get_source_info_by_index( prefs.speaker_sources[ prefs.audio2_source][0])[2].channels except: audio2_channels = 1 logger.debug( "Detected audio2 channels: {}".format(audio2_channels)) except IndexError: logger.warning( "It appears that microphone audio source isn't set up correctly." ) audio2_source = None else: audio2_source = None audio2_channels = 1 else: audio_source = None audio_channels = 1 audio2_source = None audio2_channels = 1 # # Get appropriate coordinates for recording # video_source = None screen = HW.get_current_screen(self.window) prefs.current_screen = screen if self.main_mode == MODE_WEBCAM: video_source = CAM_RESOLUTIONS[prefs.webcam_source] elif self.record_mode == MODE_ALL: video_source = HW.combined_screen else: video_source = HW.screens[screen] if self.main_mode in [MODE_SCREENCAST, MODE_WEBCAM, MODE_BROADCAST]: self.recorder = Screencast(self.main_mode) self.recorder.setup_sources( video_source, audio_source, audio2_source, prefs.area if self.record_mode == MODE_AREA and self.main_mode not in [MODE_WEBCAM, MODE_BROADCAST] else None, prefs.xid if self.record_mode == MODE_WIN and self.main_mode not in [MODE_WEBCAM, MODE_BROADCAST] else None, audio_channels, audio2_channels) self.recorder.connect("flush-done", self.cb_flush_done) elif self.main_mode == MODE_SCREENSHOT: self.grabber = Grabber() self.grabber.setup_sources( video_source, prefs.area if self.record_mode == MODE_AREA else None, prefs.xid if self.record_mode == MODE_WIN else None) self.grabber.connect("flush-done", self.cb_flush_done) self.countdown = CountdownWindow(self.indicator, show_window=prefs.countdown_splash) self.countdown.connect("counter-finished", self.cb_counter_finished) logger.debug("Starting counter.") self.countdown.run(prefs.countdown_timer) self.recording = True logger.debug("Hiding main window.") self.window.hide() if self.main_mode == MODE_SCREENCAST or self.main_mode == MODE_SCREENSHOT: try: if self.record_mode == MODE_AREA and prefs.area: logger.debug("Showing recording outline.") self.outline_window = OutlineWindow( prefs.area[0], prefs.area[1], prefs.area[4], prefs.area[5]) self.outline_window.show() else: logger.debug( "Ubuntu 13.04 or higher not detected, recording outline not shown." ) except: logger.debug("Unable to show recording outline.")
def run_counter(self): # # Annoyances with the menus # (main_x, main_y) = self.window.get_position() if main_x and main_y: prefs.main_x = main_x prefs.main_y = main_y self.indicator.recording = True self.indicator.menuitem_start.set_sensitive(False) self.indicator.menuitem_pause.set_sensitive(False) self.indicator.menuitem_finish.set_sensitive(True) self.indicator.menuitem_quit.set_sensitive(False) self.indicator.menuitem_finish.set_label(_("Cancel countdown")) self.in_countdown = True self.indicator.blink_set_state(BLINK_START) if self.main_mode == MODE_SCREENCAST and prefs.sound: if prefs.capture_speakers: try: audio_source = prefs.speaker_sources[prefs.audio_source][1] except IndexError: logger.warning("It appears that speakers audio source isn't set up correctly.") audio_source = None else: audio_source = None if prefs.capture_microphone: try: audio2_source = prefs.mic_sources[prefs.audio2_source][1] except IndexError: logger.warning("It appears that microphone audio source isn't set up correctly.") audio2_source = None else: audio2_source = None else: audio_source = None audio2_source = None # # Get appropriate coordinates for recording # video_source = None if self.record_mode == MODE_ALL: video_source = HW.combined_screen else: screen = HW.get_current_screen(self.window) video_source = HW.screens[screen] if self.main_mode == MODE_SCREENCAST: self.recorder = Screencast() self.recorder.setup_sources(video_source, audio_source, audio2_source, prefs.area if self.record_mode == MODE_AREA else None, prefs.xid if self.record_mode == MODE_WIN else None) self.recorder.connect("flush-done", self.cb_flush_done) elif self.main_mode == MODE_SCREENSHOT: self.grabber = Grabber() self.grabber.setup_sources(video_source, prefs.area if self.record_mode == MODE_AREA else None, prefs.xid if self.record_mode == MODE_WIN else None) self.grabber.connect("flush-done", self.cb_flush_done) self.countdown = CountdownWindow(self.indicator, show_window = prefs.countdown_splash) self.countdown.connect("counter-finished", self.cb_counter_finished) self.countdown.run(prefs.countdown_timer) self.recording = True logger.debug("Hiding main window.") self.window.hide() try: if self.record_mode == MODE_AREA and prefs.area: if prefs.dist[0] == 'Ubuntu' and int(prefs.dist[1].split(".")[0]) > 12: logger.debug("Showing recording outline.") self.outline_window = OutlineWindow(prefs.area[0], prefs.area[1], prefs.area[4], prefs.area[5]) self.outline_window.show() else: logger.debug("Ubuntu 13.04 or higher not detected, recording outline not shown.") except: logger.debug("Unable to show recording outline.")