Ejemplo n.º 1
0
    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.")
Ejemplo n.º 2
0
    def __init__(self, datadir, dist, debug, mode, preferences=False):
        GObject.GObject.__init__(self)
        logger.debug("Setting variables.{0}".format(datadir))

        self.mode = mode
        self.take = 0

        prefs.datadir = datadir
        prefs.debug = debug
        prefs.dist = dist
        prefs.get_sound_files()

        if preferences:
            logger.debug("Preferences requested.")
            from kazam.frontend.preferences import Preferences
            from kazam.pulseaudio.pulseaudio import pulseaudio_q
            prefs.pa_q = pulseaudio_q()
            prefs.pa_q.start()
            prefs.get_audio_sources()

            self.preferences_window = Preferences()
            self.preferences_window.connect("prefs-quit", self.cb_prefs_quit)
            self.preferences_window.open()

        else:
            self.old_path = None

            if HW.combined_screen:
                self.video_source = HW.combined_screen
            else:
                screen = HW.get_current_screen()
                self.video_source = HW.screens[screen]

            self.grabber = Grabber()
            self.grabber.connect("flush-done", self.cb_flush_done)
            self.grabber.connect("save-done", self.cb_save_done)

            if self.mode == MODE_AREA:
                logger.debug("Area ON.")
                from kazam.frontend.window_area import AreaWindow
                self.area_window = AreaWindow()
                self.area_window.connect("area-selected",
                                         self.cb_area_selected)
                self.area_window.connect("area-canceled",
                                         self.cb_area_canceled)
                self.area_window.window.show_all()
            elif self.mode == MODE_ALL:
                self.grabber.setup_sources(self.video_source, None, None)
                logger.debug("Grabbing screen")
                self.grabber.grab()
            elif self.mode == MODE_ACTIVE:
                self.grabber.setup_sources(self.video_source,
                                           None,
                                           None,
                                           active=True)
                logger.debug("Grabbing screen")
                self.grabber.grab()
            elif self.mode == MODE_WIN:
                logger.debug("Window Selection ON.")
                from kazam.frontend.window_select import SelectWindow
                self.select_window = SelectWindow()
                self.select_window.connect("window-selected",
                                           self.cb_window_selected)
                self.select_window.connect("window-canceled",
                                           self.cb_window_canceled)
                self.select_window.window.show_all()
            elif self.mode == MODE_GOD:
                logger.debug("Grabbing in god mode.")
                self.grabber.setup_sources(self.video_source,
                                           None,
                                           None,
                                           god=True)
                self.grabber.grab()
                self.grabber.setup_sources(self.video_source,
                                           None,
                                           None,
                                           active=True,
                                           god=True)
                self.grabber.grab()
            else:
                sys.exit(0)
Ejemplo n.º 3
0
    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.")