From cb6db6a35786057ea8789b9a01ac07a7b2499223 Mon Sep 17 00:00:00 2001 From: Bachir Soussi Chiadmi Date: Mon, 5 Jun 2017 17:17:09 +0200 Subject: [PATCH] fixed stars code editor tabs, removed some print --- classes/design.py | 50 ++++++++++++++++++++++-------------------- classes/highlighter.py | 26 ++++++++++------------ 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/classes/design.py b/classes/design.py index 8d64fd5..b8c2561 100644 --- a/classes/design.py +++ b/classes/design.py @@ -155,7 +155,6 @@ class WebViewToolBar(QWidget): # page self.gotopage = QLabel("Go to Page: /"+self.parent.core.docsettings['np']) - # TODO: refresh page number on change self.hbox.addWidget(self.gotopage) self.page = QSpinBox(self) # TODO: action @@ -213,19 +212,19 @@ class WebViewToolBar(QWidget): self.recToolbarState('facing', self.facing.isChecked()) def onAddPage(self): - print("onAddPage") + # print("onAddPage") self.parent.core.addPage() # self.refreshNumberPage() def onRmPage(self): - print("onAddPage") + # print("onAddPage") self.parent.core.rmPage() # self.refreshNumberPage() # def refreshNumberPage(self): def onReload(self): - print("onReload") + # print("onReload") self.parent.webkitview.reload() def onGenPDF(self): @@ -233,10 +232,10 @@ class WebViewToolBar(QWidget): self.parent.webkitview.ongenPDF() def recToolbarState(self, prop, val): - print('recToolbarState : '+prop, val) + # print('recToolbarState : '+prop, val) settings = QSettings('FiguresLibres', 'Cascade') settings.setValue('design/toolbar/'+prop, val) - print('recToolbarState after : '+prop, settings.value('design/toolbar/'+prop)) + # print('recToolbarState after : '+prop, settings.value('design/toolbar/'+prop)) def onRefresh(self): # apply precedent toolbar state @@ -260,48 +259,47 @@ class WebViewToolBar(QWidget): # / /___/ /_/ / / /_/ /_/ / / # /_____/\__,_/_/\__/\____/_/ class CodeEditor(QPlainTextEdit): - def __init__(self, core, tabs, file, mode): + def __init__(self, parent, core, tabs, file, mode): super(CodeEditor, self).__init__() + self.parent = parent self.core = core self.tabs = tabs self.file = file + self.hl= highlighter.Highlighter(self.document(),mode) self.setText() self.setTabStopWidth(15) - self.hl= highlighter.Highlighter(self.document(),mode) + + self.textChanged.connect(self.onTextChanged) self.shortcut = QShortcut(QKeySequence("Ctrl+s"), self) self.shortcut.activated.connect(self.save) def setText(self): - try: - self.textChanged.disconnect(self.onTextChanged) - except Exception as e: - print(e) + # try: + # self.textChanged.disconnect(self.onTextChanged) + # except Exception as e: + # print(e) self.filepath = os.path.join(self.core.cwd,self.file) self.clear() self.insertPlainText(open(self.filepath, 'r').read()) self.changed = False - self.textChanged.connect(self.onTextChanged) - font = QFont() font.setFamily("Droid Sans Mono") font.setFixedPitch(True) font.setPointSize(12) self.setFont(font) - # self.highlighter = Highlighter(self.document()) - # https://pypi.python.org/pypi/QScintilla/2.9.2 - def onTextChanged(self): - # print('textChanged') + print('textChanged') # print(self.toPlainText()) # open(self.filepath, 'w').write(self.toPlainText()) if not self.changed: self.changed = True i = self.tabs.currentIndex() + # self.tabs.setTabText(i, re.sub(r'^\**\s', '', self.tabs.tabText(i))) self.tabs.setTabText(i, "* "+self.tabs.tabText(i)) # TODO: indicate that webview needs to be reloaded @@ -309,14 +307,15 @@ class CodeEditor(QPlainTextEdit): if self.changed: open(self.filepath, 'w').write(self.toPlainText()) i = self.tabs.currentIndex() - self.tabs.setTabText(i, re.sub(r'^\*\s', '', self.tabs.tabText(i))) + self.tabs.setTabText(i, re.sub(r'^\**\s', '', self.tabs.tabText(i))) + self.parent.reloadView() self.changed = False # TODO: how to combine file save and project save class Editor(QWidget): - def __init__(self, parent, core): + def __init__(self, parent): super(Editor, self).__init__() - self.core = core + self.parent = parent self.layout = QVBoxLayout(self) self.layout.setContentsMargins(0,0,0,0) @@ -324,8 +323,8 @@ class Editor(QWidget): # Initialize tab screen self.tabs = QTabWidget() - self.scsstab = CodeEditor(core, self.tabs, 'assets/css/styles.scss', "scss") - self.jstab = CodeEditor(core, self.tabs, 'assets/js/script.js', 'js') + self.scsstab = CodeEditor(self, self.parent.core, self.tabs, 'assets/css/styles.scss', "scss") + self.jstab = CodeEditor(self, self.parent.core, self.tabs, 'assets/js/script.js', 'js') # Add tabs self.tabs.addTab(self.scsstab,"scss") @@ -339,6 +338,9 @@ class Editor(QWidget): self.scsstab.setText() self.jstab.setText() + def reloadView(self): + self.parent.webkitview.reload() + # _____ __ __ # / ___// /_____ ______/ /__ # \__ \/ __/ __ `/ ___/ //_/ @@ -387,7 +389,7 @@ class DesignStack(QWidget): self.hsplitter.addWidget(self.webview) # editor - self.editor = Editor(self, core) + self.editor = Editor(self) self.hsplitter.addWidget(self.editor) self.hsplitter.splitterMoved.connect(self.movedSplitter) diff --git a/classes/highlighter.py b/classes/highlighter.py index c62b976..6256fdc 100644 --- a/classes/highlighter.py +++ b/classes/highlighter.py @@ -9,28 +9,26 @@ # @Last modified time: 03-06-2017 # @License: GPL-V3 -# TODO add link to the source +# based on code from : +# Copyright (C) 2008 Christophe Kibleur import sys import re -from PyQt5 import QtCore, QtGui +# from PyQt5 import QtCore +from PyQt5.QtGui import QColor, QTextCharFormat, QFont, QSyntaxHighlighter from pygments import highlight from pygments.lexers import * from pygments.formatter import Formatter from pygments.styles import get_all_styles, get_style_by_name -import time +# import time -# Copyright (C) 2008 Christophe Kibleur -# -# This file is part of WikiParser (http://thewikiblog.appspot.com/). -# def hex2QColor(c): r=int(c[0:2],16) g=int(c[2:4],16) b=int(c[4:6],16) - return QtGui.QColor(r,g,b) + return QColor(r,g,b) class QFormatter(Formatter): @@ -50,14 +48,14 @@ class QFormatter(Formatter): self.styles={} for token, style in self.style: - qtf=QtGui.QTextCharFormat() + qtf=QTextCharFormat() if style['color']: qtf.setForeground(hex2QColor(style['color'])) if style['bgcolor']: qtf.setBackground(hex2QColor(style['bgcolor'])) if style['bold']: - qtf.setFontWeight(QtGui.QFont.Bold) + qtf.setFontWeight(QFont.Bold) if style['italic']: qtf.setFontItalic(True) if style['underline']: @@ -81,11 +79,11 @@ class QFormatter(Formatter): self.data.extend([self.styles[t],]*l) -class Highlighter(QtGui.QSyntaxHighlighter): +class Highlighter(QSyntaxHighlighter): def __init__(self, parent, mode): - QtGui.QSyntaxHighlighter.__init__(self, parent) - self.tstamp=time.time() + QSyntaxHighlighter.__init__(self, parent) + # self.tstamp=time.time() # Keep the formatter and lexer, initializing them # may be costly. @@ -128,4 +126,4 @@ class Highlighter(QtGui.QSyntaxHighlighter): # I may need to do something about this being called # too quickly. - self.tstamp=time.time() + # self.tstamp=time.time()