Exemple #1
0
 def on_ip_toggle_toggled(self, button):
     workspace = ServiceLocator.get_workspace()
     new_state = not workspace.actions.toggle_invert_pdf_action.get_state(
     ).get_boolean()
     workspace.actions.toggle_invert_pdf_action.set_state(
         GLib.Variant.new_boolean(new_state))
     workspace.set_invert_pdf(new_state)
Exemple #2
0
    def __init__(self, document, document_view):
        self.document = document
        self.document_view = document_view

        self.scbar_view = context_menu_view.ContextMenuView(document)
        stack = document_view.shortcutsbar_bottom.more_actions_popover.get_child(
        )
        stack.add_named(self.scbar_view, 'main')

        self.scbar_view.model_button_undo.connect('clicked', self.on_undo)
        self.scbar_view.model_button_redo.connect('clicked', self.on_redo)
        self.scbar_view.model_button_cut.connect('clicked', self.on_cut)
        self.scbar_view.model_button_copy.connect('clicked', self.on_copy)
        self.scbar_view.model_button_paste.connect('clicked', self.on_paste)
        self.scbar_view.model_button_delete.connect('clicked', self.on_delete)
        self.scbar_view.model_button_select_all.connect(
            'clicked', self.on_select_all)
        self.scbar_view.model_button_zoom_out.connect('button-press-event',
                                                      self.on_zoom_out)
        self.scbar_view.model_button_zoom_in.connect('button-press-event',
                                                     self.on_zoom_in)
        self.scbar_view.model_button_reset_zoom.connect(
            'button-press-event', self.on_reset_zoom)

        if self.document.is_latex_document():
            self.scbar_view.model_button_toggle_comment.connect(
                'clicked', self.on_toggle_comment)
            self.scbar_view.model_button_show_in_preview.connect(
                'clicked', self.on_show_in_preview)

        self.document_view.source_view.connect('populate-popup',
                                               self.on_populate_popup)
        self.document.content.connect('selection_might_have_changed',
                                      self.on_has_selection_changed)
        self.document.content.connect('can_undo_changed',
                                      self.on_can_undo_changed)
        self.document.content.connect('can_redo_changed',
                                      self.on_can_redo_changed)

        self.scbar_view.model_button_undo.set_sensitive(
            self.document.content.get_can_undo())
        self.scbar_view.model_button_redo.set_sensitive(
            self.document.content.get_can_redo())

        self.can_sync = False
        self.has_selection = False
        self.workspace = ServiceLocator.get_workspace()
        if self.document.is_latex_document():
            self.workspace.connect('update_sync_state',
                                   self.on_update_sync_state)

        self.font_manager = ServiceLocator.get_font_manager()
        self.font_manager.connect('font_string_changed',
                                  self.on_font_string_changed)
Exemple #3
0
 def build_document_request(self, button_object=None):
     if self.document.filename == None:
         if DialogLocator.get_dialog('build_save').run(self.document):
             DialogLocator.get_dialog('save_document').run(self.document)
         else:
             return False
     if self.document.filename != None:
         active_document = ServiceLocator.get_workspace(
         ).get_active_document()
         if active_document != None:
             self.document.build_system.build_and_forward_sync(
                 active_document)
Exemple #4
0
    def on_dark_mode_toggle_toggled(self, button):
        workspace = ServiceLocator.get_workspace()
        new_state = not workspace.actions.toggle_dark_mode_action.get_state(
        ).get_boolean()
        workspace.actions.toggle_dark_mode_action.set_state(
            GLib.Variant.new_boolean(new_state))
        workspace.set_dark_mode(new_state)

        self.view.style_switcher_stack.set_visible_child_name(
            'dark' if new_state else 'light')
        self.update_font_color_preview()
        self.update_remove_button()
Exemple #5
0
 def build_and_forward_sync(self):
     document = ServiceLocator.get_workspace().active_document
     if document != None:
         insert = document.source_buffer.get_iter_at_mark(
             document.source_buffer.get_insert())
         self.forward_sync_arguments = dict()
         self.forward_sync_arguments['filename'] = document.get_filename()
         self.forward_sync_arguments['line'] = insert.get_line() + 1
         self.forward_sync_arguments[
             'line_offset'] = insert.get_line_offset() + 1
         self.set_build_mode('build_and_forward_sync')
         self.start_building()
    def __init__(self, document, document_view):

        self.document = document
        self.view = document_view

        self.workspace = ServiceLocator.get_workspace()

        self.view.source_view.connect('key-press-event', self.on_keypress)
        self.view.source_view.connect('button-press-event',
                                      self.on_buttonpress)
        self.continue_save_date_loop = True
        GObject.timeout_add(500, self.save_date_loop)
    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()