Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions tikz_editor/controllers/preferences.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ def _connectViewAndModel(self):
self.view.editor.autoWrapChangedSignal.connect(Preferences.setAutoWrap)
self.view.editor.errorMarkersChangedSignal.connect(Preferences.setShowErrorMarkers)
self.view.editor.errorAnnotationsChangedSignal.connect(Preferences.setShowErrorAnnotations)
self.view.editor.selectTagsChangedSignal.connect(Preferences.setSelectTags)
self.view.editor.autoPreviewChangedSignal.connect(Preferences.setAutoPreview)
self.view.editor.previewThresholdChangedSignal.connect(Preferences.setPreviewThreshold)

Expand All @@ -56,6 +57,7 @@ def _connectViewAndModel(self):
self.view.editor.autoWrapChangedSignal.connect(EditorView.reloadUserPreferences)
self.view.editor.errorMarkersChangedSignal.connect(ErrorsController.reloadUserPreferences)
self.view.editor.errorAnnotationsChangedSignal.connect(ErrorsController.reloadUserPreferences)
self.view.editor.selectTagsChangedSignal.connect(EditorView.reloadUserPreferences)

self.view.document.preambleTemplateChangedSignal.connect(Preferences.setPreambleTemplate)
self.view.document.latexFileTemplateChangedSignal.connect(Preferences.setLatexFileTemplate)
Expand All @@ -77,6 +79,7 @@ def _syncViewAndModel(self):
self.view.editor.auto_wrap = Preferences.getAutoWrap()
self.view.editor.error_markers = Preferences.getShowErrorMarkers()
self.view.editor.error_annotations = Preferences.getShowErrorAnnotations()
self.view.editor.select_tags = Preferences.getSelectTags()
self.view.editor.auto_preview = Preferences.getAutoPreview()
self.view.editor.preview_threshold = Preferences.getPreviewThreshold()

Expand Down
1 change: 1 addition & 0 deletions tikz_editor/globals/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
AUTO_WRAP = True
SHOW_ERROR_MARKERS = True
SHOW_ERROR_ANNOTATIONS = True
SELECT_TAGS = False
PREVIEW_THRESHOLD = 500 # times in ms before previewing when the user stop typing
AUTO_PREVIEW = True

Expand Down
19 changes: 19 additions & 0 deletions tikz_editor/models/preferences.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class PreferencesModel(object):
AUTO_WRAP = "AutoWrap"
SHOW_ERROR_MARKERS = "ShowErrorMarkers"
SHOW_ERROR_ANNOTATIONS = "ShowErrorAnnotations"
SELECT_TAGS = "SelectTags"
SNIPPETS = "Snippets"
PREVIEW_THRESHOLD = "PreviewThreshold"
AUTO_PREVIEW = "AutoPreview"
Expand Down Expand Up @@ -320,6 +321,24 @@ def setShowErrorAnnotations(value):
def defaultShowErrorAnnotations():
return defaults.SHOW_ERROR_MARKERS


@staticmethod
def hasSelectTags():
return PreferencesModel.containsKey(PreferencesModel.SELECT_TAGS)

@staticmethod
def getSelectTags():
return PreferencesModel.getValueOrDefault(PreferencesModel.SELECT_TAGS, PreferencesModel.defaultSelectTags()).toBool()

@staticmethod
def setSelectTags(value):
PreferencesModel.setValue(PreferencesModel.SELECT_TAGS, value)

@staticmethod
def defaultSelectTags():
return defaults.SELECT_TAGS


@staticmethod
def hasPreviewThreshold():
return PreferencesModel.containsKey(PreferencesModel.PREVIEW_THRESHOLD)
Expand Down
49 changes: 27 additions & 22 deletions tikz_editor/views/document/content.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from PyQt4.QtCore import *
from PyQt4.QtGui import *

from tikz_editor.models import Preferences
import tikz_editor.globals.actions as actions
from tikz_editor.tools.qt import ActionFactory, ToolBarFactory

Expand Down Expand Up @@ -103,27 +104,31 @@ def _sourceModificationAttemptedWhileReadOnly(self):
QApplication.beep()

def _sourceCursorPositionChanged(self, line, index):
source = self.source_editor_view
content = source.content
if not (content.startswith("\\begin{tikzpicture}") and content.startswith("\\begin{tikzpicture")):
source.content = "\\begin{tikzpicture}" + content[18:]
if line == 0 and index < 20:
source.setCursorPosition(0, 19)
source.setReadOnly(True)
elif line == source.lines() - 1:
source.setCursorPosition(source.lines() - 2, source.lineSize(source.lines() - 1))
source.setReadOnly(True)
select_tags = Preferences.getSelectTags()
if(not select_tags):
source = self.source_editor_view
content = source.content
if not (content.startswith("\\begin{tikzpicture}") and content.startswith("\\begin{tikzpicture")):
source.content = "\\begin{tikzpicture}" + content[18:]
if line == 0 and index < 20:
source.setCursorPosition(0, 19)
source.setReadOnly(True)
elif line == source.lines() - 1:
source.setCursorPosition(source.lines() - 2, source.lineSize(source.lines() - 1))
source.setReadOnly(True)

def _sourceSelectionChanged(self):
source = self.source_editor_view
(line_from, index_from, line_to, index_to) = source.getSelection()
selection_changed = False
if line_from == 0 and index_from < 19:
index_from = 19
selection_changed = True
if line_to == source.lines() - 1:
line_to = source.lines() - 2
index_to = source.lineSize(line_to + 1)
selection_changed = True
if selection_changed:
source.setSelection(line_from, index_from, line_to, index_to)
select_tags = Preferences.getSelectTags()
if(not select_tags):
source = self.source_editor_view
(line_from, index_from, line_to, index_to) = source.getSelection()
selection_changed = False
if line_from == 0 and index_from < 19:
index_from = 19
selection_changed = True
if line_to == source.lines() - 1:
line_to = source.lines() - 2
index_to = source.lineSize(line_to + 1)
selection_changed = True
if selection_changed:
source.setSelection(line_from, index_from, line_to, index_to)
15 changes: 15 additions & 0 deletions tikz_editor/views/preferences/editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class EditorPreferencesView(QWidget):
autoWrapChangedSignal = pyqtSignal(bool)
errorMarkersChangedSignal = pyqtSignal(bool)
errorAnnotationsChangedSignal = pyqtSignal(bool)
selectTagsChangedSignal = pyqtSignal(bool)
autoPreviewChangedSignal = pyqtSignal(bool)
previewThresholdChangedSignal = pyqtSignal(int)

Expand Down Expand Up @@ -61,6 +62,7 @@ def __init__(self, parent=None):
self.wrap_choice = QCheckBox("Auto-wrap lines")
self.error_markers_choice = QCheckBox("Show error marker in margin of erroneous lines")
self.error_annotations_choice = QCheckBox("Show error annotations beneath erroneous lines")
self.select_tags_choice = QCheckBox("Allow selection of \\begin/\\end tikzpicture tags")

self.preview_choice = QCheckBox("Trigger preview after stopping edition for")
self.preview_threshold_choice = QSpinBox()
Expand All @@ -80,6 +82,7 @@ def _initConnections(self):
self.wrap_choice.stateChanged.connect(self._autoWrapChanged)
self.error_markers_choice.stateChanged.connect(self._errorMarkersChanged)
self.error_annotations_choice.stateChanged.connect(self._errorAnnotationsChanged)
self.select_tags_choice.stateChanged.connect(self._selectTagsChanged)
self.preview_choice.stateChanged.connect(self._autoPreviewChanged)
self.preview_threshold_choice.valueChanged.connect(self._previewThresholdChanged)

Expand Down Expand Up @@ -124,6 +127,7 @@ def _initLayout(self):
layout.addRow(self.wrap_choice)
layout.addRow(self.error_markers_choice)
layout.addRow(self.error_annotations_choice)
layout.addRow(self.select_tags_choice)
layout.addRow(tikz_editor.views.factory.ViewFactory.createLineSeparator())
sublayout2 = QHBoxLayout()
sublayout2.addWidget(self.preview_choice)
Expand Down Expand Up @@ -160,6 +164,9 @@ def _errorMarkersChanged(self, state):
def _errorAnnotationsChanged(self, state):
self.errorAnnotationsChangedSignal.emit(state)

def _selectTagsChanged(self, state):
self.selectTagsChangedSignal.emit(state)

def _autoPreviewChanged(self, state):
self.autoPreviewChangedSignal.emit(state)

Expand Down Expand Up @@ -234,6 +241,14 @@ def error_annotations(self):
def error_annotations(self, value):
self.error_annotations_choice.setChecked(value)

@property
def select_tags(self):
return self.select_tags_choice.isChecked()

@auto_wrap.setter
def select_tags(self, value):
self.select_tags_choice.setChecked(value)

@property
def auto_preview(self):
return self.preview_choice.isChecked()
Expand Down