Exemple #1
0
 def remove_or_color_synctex_tags(self):
     for tag_count in list(self.synctex_highlight_tags):
         item = self.synctex_highlight_tags[tag_count]
         time_factor = time.time() - item['time']
         if time_factor > 1.5:
             if time_factor <= 1.75:
                 opacity_factor = int(
                     self.ease(1 - (time_factor - 1.5) * 4) * 20)
                 color_manager = ServiceLocator.get_color_manager()
                 item['tag'].set_property(
                     'background-rgba',
                     color_manager.get_rgba(0.976, 0.941, 0.420,
                                            opacity_factor * 0.03))
             else:
                 start = self.source_buffer.get_start_iter()
                 end = self.source_buffer.get_end_iter()
                 self.source_buffer.remove_tag(item['tag'], start, end)
                 self.source_buffer.get_tag_table().remove(item['tag'])
                 del (self.synctex_highlight_tags[tag_count])
     return bool(self.synctex_highlight_tags)
Exemple #2
0
    def __init__(self, preview, page_renderer, view):
        self.preview = preview
        self.page_renderer = page_renderer
        self.view = view

        self.highlight_duration = 1.5

        self.color_manager = ServiceLocator.get_color_manager()

        self.view.drawing_area.connect('draw', self.draw)
        self.scrolling_queue = queue.Queue()
        self.view.drawing_area.connect('size-allocate', self.scrolling_loop)
        GObject.timeout_add(50, self.scrolling_loop)

        self.preview.connect('pdf_changed', self.on_pdf_changed)
        self.preview.connect('invert_pdf_changed', self.on_invert_pdf_changed)
        self.preview.connect('layout_changed', self.on_layout_changed)
        self.page_renderer.connect('rendered_pages_changed',
                                   self.on_rendered_pages_changed)

        self.show_blank_slate()
    def change_notification(self, change_code, notifying_object, parameter):

        if change_code == 'building_started':
            self.document.change_build_state('building_in_progress')
                
        if change_code == 'reset_timer':
            self.document.build_widget.view.reset_timer()
            self.document.build_widget.view.label.set_text('0:00')

        if change_code == 'building_stopped':
            self.document.show_build_state('')
            self.document.change_build_state('idle')

        if change_code == 'building_finished':
            result_blob = parameter
            if result_blob['build'] != None or result_blob['forward_sync'] != None:
                if result_blob['build'] != None:
                    try:
                        self.document.preview.set_pdf_filename(result_blob['build']['pdf_filename'])
                    except KeyError: pass
                    self.document.add_change_code('pdf_updated')

                if result_blob['forward_sync'] != None:
                    self.document.preview.set_synctex_rectangles(result_blob['forward_sync'])
                    self.document.show_build_state('')

                if result_blob['build'] != None:
                    build_blob = result_blob['build']

                    if build_blob['error'] == 'interpreter_missing':
                        self.document.show_build_state('')
                        self.document.change_build_state('idle')
                        if DialogLocator.get_dialog('interpreter_missing').run(build_blob['error_arg']):
                            DialogLocator.get_dialog('preferences').run()
                        return

                    if build_blob['error'] == 'interpreter_not_working':
                        self.document.show_build_state('')
                        self.document.change_build_state('idle')
                        if DialogLocator.get_dialog('building_failed').run(build_blob['error_arg']):
                            DialogLocator.get_dialog('preferences').run()
                        return

                    build_blob['log_messages']['BibTeX'] = build_blob['bibtex_log_messages']
                    self.document.set_build_log_items(build_blob['log_messages'])
                    self.document.build_time = time.time() - self.document.last_build_start_time

                    error_count = self.document.get_error_count()
                    if error_count > 0:
                        error_color_rgba = ServiceLocator.get_color_manager().get_theme_color('error_color')
                        error_color = '#' + format(int(error_color_rgba.red * 255), '02x') + format(int(error_color_rgba.green * 255), '02x') + format(int(error_color_rgba.blue * 255), '02x')
                        str_errors = ngettext('<span color="{color}">Failed</span> ({amount} error)!', '<span color="{color}">Failed</span> ({amount} errors)!', error_count)
                        message = str_errors.format(color=error_color, amount=str(error_count))
                        self.document.show_build_state(message)
                    else:
                        self.document.show_build_state(_('Success!'))

                    self.document.set_has_synctex_file(build_blob['has_synctex_file'])
                    self.document.has_been_built = True

            elif result_blob['backward_sync'] != None:
                if not self.document.root_is_set:
                    if result_blob['backward_sync']['filename'] == self.document.get_filename():
                        self.document.set_synctex_position(result_blob['backward_sync'])
                elif self.document.is_root:
                    workspace = ServiceLocator.get_workspace()
                    document = workspace.open_document_by_filename(result_blob['backward_sync']['filename'])
                    if document != None:
                        document.set_synctex_position(result_blob['backward_sync'])

            self.document.change_build_state('idle')

            if result_blob['build'] != None:
                self.document.invalidate_build_log()