Exemplo n.º 1
0
    def __init__(self, config, builder, notes_mode):
        """ Setup all the necessary for scribbling

        Args:
            config (:class:`~pympress.config.Config`): A config object containing preferences
            builder (:class:`~pympress.builder.Builder`): A builder from which to load widgets
            notes_mode (`bool`): The current notes mode, i.e. whether we display the notes on second slide
        """
        super(Scribbler, self).__init__()

        self.load_ui('highlight')
        self.connect_signals(self)
        builder.load_widgets(self)

        self.get_notes_mode = builder.get_callback_handler('get_notes_mode')
        self.get_current_page = builder.get_callback_handler('doc.current_page')
        self.redraw_current_slide = builder.get_callback_handler('redraw_current_slide')

        # Surface cache
        self.cache = surfacecache.SurfaceCache(document.EmptyDocument(), config.getint('cache', 'maxpages'))

        self.scribble_color = Gdk.RGBA()
        self.scribble_color.parse(config.get('scribble', 'color'))
        self.scribble_width = config.getint('scribble', 'width')
        self.cache.add_widget(self.scribble_p_da, PDF_CONTENT_PAGE if notes_mode else PDF_REGULAR, False)

        self.config = config

        # Presenter-size setup
        self.get_object("scribble_color").set_rgba(self.scribble_color)
        self.get_object("scribble_width").set_value(self.scribble_width)
Exemplo n.º 2
0
    def __init__(self, builder, conf):
        super(Media, self).__init__()
        self._setup_backends(conf)
        builder.load_widgets(self)

        self.c_overlay.queue_draw()
        self.p_overlay.queue_draw()
Exemplo n.º 3
0
    def __init__(self, config, builder, notes_mode):
        super(Scribbler, self).__init__()

        self.load_ui('highlight')
        builder.load_widgets(self)

        self.on_draw = builder.get_callback_handler('on_draw')
        self.track_motions = builder.get_callback_handler('track_motions')
        self.track_clicks = builder.get_callback_handler('track_clicks')
        self.swap_layout = builder.get_callback_handler('swap_layout')
        self.redraw_current_slide = builder.get_callback_handler('redraw_current_slide')
        self.resize_cache = builder.get_callback_handler('cache.resize_widget')
        self.get_slide_point = builder.get_callback_handler('zoom.get_slide_point')
        self.start_zooming = builder.get_callback_handler('zoom.start_zooming')
        self.stop_zooming = builder.get_callback_handler('zoom.stop_zooming')

        self.connect_signals(self)

        self.scribble_color = Gdk.RGBA()
        self.scribble_color.parse(config.get('scribble', 'color'))
        self.scribble_width = config.getint('scribble', 'width')

        self.config = config

        # Presenter-size setup
        self.get_object("scribble_color").set_rgba(self.scribble_color)
        self.get_object("scribble_width").set_value(self.scribble_width)
Exemplo n.º 4
0
    def __init__(self, builder):
        super(Zoom, self).__init__()
        builder.load_widgets(self)

        self.redraw_current_slide = builder.get_callback_handler(
            'redraw_current_slide')
        self.clear_cache = builder.get_callback_handler('clear_zoom_cache')
Exemplo n.º 5
0
    def __init__(self, config, builder, notes_mode):
        """ Setup all the necessary for scribbling

        Args:
            config (:class:`~pympress.config.Config`): A config object containing preferences
            builder (:class:`~pympress.builder.Builder`): A builder from which to load widgets
            notes_mode (`bool`): The current notes mode, i.e. whether we display the notes on second slide
        """
        super(Scribbler, self).__init__()

        self.load_ui('highlight')
        builder.load_widgets(self)

        self.on_draw = builder.get_callback_handler('on_draw')
        self.track_motions = builder.get_callback_handler('track_motions')
        self.track_clicks = builder.get_callback_handler('track_clicks')
        self.redraw_current_slide = builder.get_callback_handler(
            'redraw_current_slide')
        self.resize_cache = builder.get_callback_handler('cache.resize_widget')
        self.get_slide_point = builder.get_callback_handler(
            'zoom.get_slide_point')
        self.start_zooming = builder.get_callback_handler('zoom.start_zooming')
        self.stop_zooming = builder.get_callback_handler('zoom.stop_zooming')

        self.connect_signals(self)

        self.scribble_color = Gdk.RGBA()
        self.scribble_color.parse(config.get('scribble', 'color'))
        self.scribble_width = config.getint('scribble', 'width')

        self.config = config

        # Presenter-size setup
        self.get_object("scribble_color").set_rgba(self.scribble_color)
        self.get_object("scribble_width").set_value(self.scribble_width)
Exemplo n.º 6
0
    def __init__(self, config, builder, notes_mode):
        super(Scribbler, self).__init__()

        self.load_ui('highlight')
        builder.load_widgets(self)
        self.get_application().add_window(self.off_render)

        self.on_draw = builder.get_callback_handler('on_draw')
        self.track_motions = builder.get_callback_handler('track_motions')
        self.track_clicks = builder.get_callback_handler('track_clicks')
        self.load_layout = builder.get_callback_handler('load_layout')
        self.redraw_current_slide = builder.get_callback_handler('redraw_current_slide')
        self.resize_cache = builder.get_callback_handler('cache.resize_widget')
        self.get_slide_point = builder.get_callback_handler('zoom.get_slide_point')
        self.start_zooming = builder.get_callback_handler('zoom.start_zooming')
        self.stop_zooming = builder.get_callback_handler('zoom.stop_zooming')

        self.connect_signals(self)
        self.config = config

        # Prepare cairo surfaces for markers, with 3 different marker sizes, and for eraser
        ms = [1, 2, 3]
        icons = [cairo.ImageSurface.create_from_png(util.get_icon_path('marker_{}.png'.format(n))) for n in ms]
        masks = [cairo.ImageSurface.create_from_png(util.get_icon_path('marker_fill_{}.png'.format(n))) for n in ms]

        self.marker_surfaces = list(zip(icons, masks))
        self.eraser_surface = cairo.ImageSurface.create_from_png(util.get_icon_path('eraser.png'))

        # Load color and active pen preferences. Pen 0 is the eraser.
        self.color_width = [(Gdk.RGBA(0, 0, 0, 0), 150)] + list(zip(
            [self.parse_color(config.get('highlight', 'color_{}'.format(pen))) for pen in range(1, 10)],
            [config.getint('highlight', 'width_{}'.format(pen)) for pen in range(1, 10)],
        ))

        self.scribble_preset_buttons = [
            self.get_object('pen_preset_{}'.format(pen) if pen else 'eraser') for pen in range(10)
        ]

        self.tools_orientation = self.config.get('layout', 'highlight_tools')
        self.adjust_tools_orientation()

        active_pen = config.get('highlight', 'active_pen')
        self.setup_actions({
            'highlight':         dict(activate=self.switch_scribbling, state=False),
            'highlight-use-pen': dict(activate=self.load_preset, state=active_pen, parameter_type=str, enabled=False),
            'highlight-clear':   dict(activate=self.clear_scribble),
            'highlight-redo':    dict(activate=self.redo_scribble),
            'highlight-undo':    dict(activate=self.pop_scribble),
            'highlight-mode':    dict(activate=self.set_mode, state=self.highlight_mode, parameter_type=str),
            'highlight-tools-orientation': dict(activate=self.set_tools_orientation, state=self.tools_orientation,
                                                parameter_type=str),
        })


        self.pen_action = self.get_application().lookup_action('highlight-use-pen')
        self.load_preset(self.pen_action, int(active_pen) if active_pen.isnumeric() else 0)
        self.set_mode(None, GLib.Variant.new_string(config.get('highlight', 'mode')))
Exemplo n.º 7
0
    def __init__(self, builder):
        """ Load the widgets and setup for the annotations' display.

        Args:
            builder (:class:`~pympress.builder.Builder`): A builder from which to load widgets
        """
        super(Annotations, self).__init__()
        builder.load_widgets(self)

        self.scrolled_window.set_hexpand(True)
Exemplo n.º 8
0
    def __init__(self, builder):
        """ Setup all the necessary for zooming

        Args:
            builder (:class:`~pympress.builder.Builder`): A builder from which to load widgets
        """
        super(Zoom, self).__init__()
        builder.load_widgets(self)

        self.redraw_current_slide = builder.get_callback_handler(
            'redraw_current_slide')
        self.clear_cache = builder.get_callback_handler('clear_zoom_cache')
Exemplo n.º 9
0
    def __init__(self, builder, conf):
        """ Set up the required widgets and queue an initial draw.

        Args:
            builder (:class:`~pympress.builder.Builder`): A builder from which to load widgets
            conf (:class:`~pympress.config.Config`): An object containing the preferences
        """
        super(Media, self).__init__()
        self._setup_backends(conf)
        builder.load_widgets(self)

        self.c_overlay.queue_draw()
        self.p_overlay.queue_draw()
Exemplo n.º 10
0
    def __init__(self, builder):
        super(Zoom, self).__init__()
        builder.load_widgets(self)

        self.redraw_current_slide = builder.get_callback_handler(
            'redraw_current_slide')
        self.clear_cache = builder.get_callback_handler('clear_zoom_cache')
        self.set_action_enabled = builder.get_callback_handler(
            'app.set_action_enabled')

        builder.setup_actions({
            'zoom': dict(activate=self.start_zooming),
            'unzoom': dict(activate=self.stop_zooming),
        })
Exemplo n.º 11
0
    def __init__(self, builder, conf):
        super(Media, self).__init__()
        self.conf = conf

        self._setup_backends()
        builder.load_widgets(self)

        builder.setup_actions({
            'use-{}-backend'.format(backend): {
                'activate': self.toggle,
                'state': backend in self.types_list,
                'enabled': backend in self._backends,
            }
            for backend in self._backends
        })

        self.c_overlay.queue_draw()
        self.p_overlay.queue_draw()
Exemplo n.º 12
0
 def __init__(self, builder):
     super(Annotations, self).__init__()
     builder.load_widgets(self)
Exemplo n.º 13
0
    def __init__(self, builder):
        super(Annotations, self).__init__()
        builder.load_widgets(self)

        self.scrolled_window.set_hexpand(True)