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)
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()
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)
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')
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)
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')))
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)
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')
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()
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), })
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()
def __init__(self, builder): super(Annotations, self).__init__() builder.load_widgets(self)
def __init__(self, builder): super(Annotations, self).__init__() builder.load_widgets(self) self.scrolled_window.set_hexpand(True)