Przeglądaj źródła

added shortcuts to zoom and page change

Bachir Soussi Chiadmi 7 lat temu
rodzic
commit
556a638d4e
1 zmienionych plików z 52 dodań i 8 usunięć
  1. 52 8
      classes/design.py

+ 52 - 8
classes/design.py

@@ -12,7 +12,7 @@
 import os, re
 import os, re
 # sys,
 # sys,
 from PyQt5 import QtCore
 from PyQt5 import QtCore
-from PyQt5.QtCore import QUrl, QSettings, QSizeF
+from PyQt5.QtCore import QUrl, QSettings, QSizeF, Qt
 from PyQt5.QtGui import QKeySequence, QFont
 from PyQt5.QtGui import QKeySequence, QFont
 from PyQt5.QtWidgets import QWidget, QTabWidget, QVBoxLayout, QHBoxLayout, QSplitter, QPlainTextEdit, QShortcut, QPushButton, QCheckBox, QSpinBox, QLabel
 from PyQt5.QtWidgets import QWidget, QTabWidget, QVBoxLayout, QHBoxLayout, QSplitter, QPlainTextEdit, QShortcut, QPushButton, QCheckBox, QSpinBox, QLabel
 from PyQt5.QtWebKit import QWebSettings
 from PyQt5.QtWebKit import QWebSettings
@@ -89,9 +89,19 @@ class WebkitView(QWebView):
       command = """document.documentElement.classList."""+togg+"""('"""+c+"""')"""
       command = """document.documentElement.classList."""+togg+"""('"""+c+"""')"""
       self.evaluateJS(command)
       self.evaluateJS(command)
 
 
+   def zoom(self,z):
+      self.setZoomFactor(z/100)
+      # command = """
+      #    var zoomLevel = """+str(z)+""" / 100;
+      #    var elt = document.documentElement.querySelector("#pages");
+      #    elt.style.webkitTransform = "scale(" + zoomLevel + ")";
+      #    elt.style.webkitTransformOrigin = "0 0";
+      # """
+      # self.evaluateJS(command)
+
    def changePage(self,p=0):
    def changePage(self,p=0):
       command = """
       command = """
-         var pageNumber = """+str(p)+""";
+         var pageNumber = """+str(p-1)+""";
          var target = document.documentElement.querySelectorAll('.paper')[pageNumber];
          var target = document.documentElement.querySelectorAll('.paper')[pageNumber];
          var offsetTop = target.offsetTop;
          var offsetTop = target.offsetTop;
          var offsetLeft = target.offsetLeft;
          var offsetLeft = target.offsetLeft;
@@ -161,17 +171,30 @@ class WebViewToolBar(QWidget):
       # zoom
       # zoom
       self.hbox.addWidget(QLabel("Zoom:"))
       self.hbox.addWidget(QLabel("Zoom:"))
       self.zoom = QSpinBox(self)
       self.zoom = QSpinBox(self)
-      # TODO: action
+      self.zoom.setMinimum(-100)
+      self.zoom.setMaximum(200)
+      self.zoom.setSingleStep(10)
+      self.zoom.setValue(90)
+      self.zoom.valueChanged.connect(self.onZoomChanged)
       self.hbox.addWidget(self.zoom)
       self.hbox.addWidget(self.zoom)
+      self.zoomon_shortcut = QShortcut(QKeySequence(Qt.ControlModifier+Qt.Key_Plus), self)
+      self.zoomon_shortcut.activated.connect(self.onZoomOn)
+      self.zoomout_shortcut = QShortcut(QKeySequence(Qt.ControlModifier+Qt.Key_Minus), self)
+      self.zoomout_shortcut.activated.connect(self.onZoomOut)
+
 
 
       # page
       # page
       self.gotopage = QLabel("Go to Page: /"+self.parent.core.docsettings['np'])
       self.gotopage = QLabel("Go to Page: /"+self.parent.core.docsettings['np'])
       self.hbox.addWidget(self.gotopage)
       self.hbox.addWidget(self.gotopage)
-      self.page = QSpinBox()
-      self.page.setMinimum(0)
+      self.page = QSpinBox(self)
+      self.page.setMinimum(1)
       self.page.setMaximum(int(self.parent.core.docsettings['np']))
       self.page.setMaximum(int(self.parent.core.docsettings['np']))
       self.page.valueChanged.connect(self.onChangePage)
       self.page.valueChanged.connect(self.onChangePage)
       self.hbox.addWidget(self.page)
       self.hbox.addWidget(self.page)
+      self.pagenext_shortcut = QShortcut(QKeySequence(Qt.ControlModifier+Qt.ShiftModifier+Qt.Key_Right), self)
+      self.pagenext_shortcut.activated.connect(self.onNextPage)
+      self.pageprev_shortcut = QShortcut(QKeySequence(Qt.ControlModifier+Qt.ShiftModifier+Qt.Key_Left), self)
+      self.pageprev_shortcut.activated.connect(self.onPrevPage)
 
 
       self.addpage = QPushButton("&Add Page", self)
       self.addpage = QPushButton("&Add Page", self)
       self.addpage.clicked.connect(self.onAddPage)
       self.addpage.clicked.connect(self.onAddPage)
@@ -224,10 +247,30 @@ class WebViewToolBar(QWidget):
       self.parent.webkitview.toggleDocClass('facing', self.facing.isChecked())
       self.parent.webkitview.toggleDocClass('facing', self.facing.isChecked())
       self.recToolbarState('facing', self.facing.isChecked())
       self.recToolbarState('facing', self.facing.isChecked())
 
 
+   def onZoomChanged(self,i):
+      # print("onZoomChanged : "+str(i))
+      self.parent.webkitview.zoom(i)
+
+   def onZoomOn(self):
+      # print("onZoomOn")
+      self.zoom.setValue(self.zoom.value()+self.zoom.singleStep())
+
+   def onZoomOut(self):
+      # print("onZoomOut")
+      self.zoom.setValue(self.zoom.value()-self.zoom.singleStep())
+
    def onChangePage(self, i):
    def onChangePage(self, i):
-      print("onChangePage : "+str(i))
+      # print("onChangePage : "+str(i))
       self.parent.webkitview.changePage(i)
       self.parent.webkitview.changePage(i)
 
 
+   def onNextPage(self):
+      # print('onNextPage')
+      self.page.setValue(self.page.value()+self.page.singleStep())
+
+   def onPrevPage(self):
+      # print('onPrevPage')
+      self.page.setValue(self.page.value()-self.page.singleStep())
+
    def onAddPage(self):
    def onAddPage(self):
       # print("onAddPage")
       # print("onAddPage")
       self.parent.core.addPage()
       self.parent.core.addPage()
@@ -267,6 +310,7 @@ class WebViewToolBar(QWidget):
       self.parent.webkitview.toggleDocClass('spread', self.spread.isChecked())
       self.parent.webkitview.toggleDocClass('spread', self.spread.isChecked())
 
 
       self.gotopage.setText("Go to Page: /"+str(self.parent.core.docsettings['np']))
       self.gotopage.setText("Go to Page: /"+str(self.parent.core.docsettings['np']))
+      self.page.setMaximum(int(self.parent.core.docsettings['np']))
       self.parent.webkitview.changePage(self.page.value())
       self.parent.webkitview.changePage(self.page.value())
 #     ______    ___ __
 #     ______    ___ __
 #    / ____/___/ (_) /_____  _____
 #    / ____/___/ (_) /_____  _____
@@ -286,8 +330,8 @@ class CodeEditor(QPlainTextEdit):
 
 
       self.textChanged.connect(self.onTextChanged)
       self.textChanged.connect(self.onTextChanged)
 
 
-      self.shortcut = QShortcut(QKeySequence("Ctrl+s"), self)
-      self.shortcut.activated.connect(self.save)
+      self.save_shortcut = QShortcut(QKeySequence("Ctrl+s"), self)
+      self.save_shortcut.activated.connect(self.save)
 
 
    def setText(self):
    def setText(self):
       # try:
       # try: