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)
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)
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)
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()
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()