Extended QsciScintillaCompat to allow to set the modified status and made the selection of an encoding in the editor change the modified state.

Mon, 17 Mar 2014 19:11:48 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 17 Mar 2014 19:11:48 +0100
changeset 3393
080ace4829b4
parent 3390
7f46edbfcbc0
child 3394
d1d4d79b4f11

Extended QsciScintillaCompat to allow to set the modified status and made the selection of an encoding in the editor change the modified state.

APIs/Python3/eric5.api file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric5.QScintilla.Editor.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.QScintilla.QsciScintillaCompat.html file | annotate | diff | comparison | revisions
QScintilla/Editor.py file | annotate | diff | comparison | revisions
QScintilla/QsciScintillaCompat.py file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric5.api	Mon Mar 17 19:01:14 2014 +0100
+++ b/APIs/Python3/eric5.api	Mon Mar 17 19:11:48 2014 +0100
@@ -7407,6 +7407,7 @@
 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.indicatorDefine?4(indicator, style, color)
 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.inputMethodEvent?4(evt)
 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.inputMethodQuery?4(query)
+eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.isModified?4()
 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.lineAt?4(pos)
 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.lineEndPosition?4(line)
 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.lineIndexFromPosition?4(pos)
@@ -7436,6 +7437,7 @@
 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setIndicator?4(indicator, sline, sindex, eline, eindex)
 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setIndicatorRange?4(indicator, spos, length)
 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setLexer?4(lex=None)
+eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setModified?4(m)
 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setRectangularSelection?4(startLine, startIndex, endLine, endIndex)
 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setStyleBits?4(bits)
 eric5.QScintilla.QsciScintillaCompat.QsciScintillaCompat.setStyling?4(length, style)
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Mon Mar 17 19:01:14 2014 +0100
+++ b/Documentation/Help/source.qhp	Mon Mar 17 19:11:48 2014 +0100
@@ -9589,6 +9589,7 @@
       <keyword name="QsciScintillaCompat (Module)" id="QsciScintillaCompat (Module)" ref="eric5.QScintilla.QsciScintillaCompat.html" />
       <keyword name="QsciScintillaCompat.__completionListSelected" id="QsciScintillaCompat.__completionListSelected" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.__completionListSelected" />
       <keyword name="QsciScintillaCompat.__doSearchTarget" id="QsciScintillaCompat.__doSearchTarget" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.__doSearchTarget" />
+      <keyword name="QsciScintillaCompat.__modificationChanged" id="QsciScintillaCompat.__modificationChanged" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.__modificationChanged" />
       <keyword name="QsciScintillaCompat.__setFoldMarker" id="QsciScintillaCompat.__setFoldMarker" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.__setFoldMarker" />
       <keyword name="QsciScintillaCompat._encodeString" id="QsciScintillaCompat._encodeString" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat._encodeString" />
       <keyword name="QsciScintillaCompat.byteAt" id="QsciScintillaCompat.byteAt" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.byteAt" />
@@ -9645,6 +9646,7 @@
       <keyword name="QsciScintillaCompat.indicatorDefine" id="QsciScintillaCompat.indicatorDefine" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.indicatorDefine" />
       <keyword name="QsciScintillaCompat.inputMethodEvent" id="QsciScintillaCompat.inputMethodEvent" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.inputMethodEvent" />
       <keyword name="QsciScintillaCompat.inputMethodQuery" id="QsciScintillaCompat.inputMethodQuery" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.inputMethodQuery" />
+      <keyword name="QsciScintillaCompat.isModified" id="QsciScintillaCompat.isModified" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.isModified" />
       <keyword name="QsciScintillaCompat.lineAt" id="QsciScintillaCompat.lineAt" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.lineAt" />
       <keyword name="QsciScintillaCompat.lineEndPosition" id="QsciScintillaCompat.lineEndPosition" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.lineEndPosition" />
       <keyword name="QsciScintillaCompat.lineIndexFromPosition" id="QsciScintillaCompat.lineIndexFromPosition" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.lineIndexFromPosition" />
@@ -9674,6 +9676,7 @@
       <keyword name="QsciScintillaCompat.setIndicator" id="QsciScintillaCompat.setIndicator" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setIndicator" />
       <keyword name="QsciScintillaCompat.setIndicatorRange" id="QsciScintillaCompat.setIndicatorRange" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setIndicatorRange" />
       <keyword name="QsciScintillaCompat.setLexer" id="QsciScintillaCompat.setLexer" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setLexer" />
+      <keyword name="QsciScintillaCompat.setModified" id="QsciScintillaCompat.setModified" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setModified" />
       <keyword name="QsciScintillaCompat.setRectangularSelection" id="QsciScintillaCompat.setRectangularSelection" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setRectangularSelection" />
       <keyword name="QsciScintillaCompat.setStyleBits" id="QsciScintillaCompat.setStyleBits" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setStyleBits" />
       <keyword name="QsciScintillaCompat.setStyling" id="QsciScintillaCompat.setStyling" ref="eric5.QScintilla.QsciScintillaCompat.html#QsciScintillaCompat.setStyling" />
--- a/Documentation/Source/eric5.QScintilla.Editor.html	Mon Mar 17 19:01:14 2014 +0100
+++ b/Documentation/Source/eric5.QScintilla.Editor.html	Mon Mar 17 19:11:48 2014 +0100
@@ -1981,10 +1981,15 @@
         Private slot to create a new view to an open document.
 </p><a NAME="Editor.__normalizedEncoding" ID="Editor.__normalizedEncoding"></a>
 <h4>Editor.__normalizedEncoding</h4>
-<b>__normalizedEncoding</b>(<i></i>)
+<b>__normalizedEncoding</b>(<i>encoding=""</i>)
 <p>
         Private method to calculate the normalized encoding string.
 </p><dl>
+<dt><i>encoding</i></dt>
+<dd>
+encoding to be normalized (string)
+</dd>
+</dl><dl>
 <dt>Returns:</dt>
 <dd>
 normalized encoding (string)
--- a/Documentation/Source/eric5.QScintilla.QsciScintillaCompat.html	Mon Mar 17 19:01:14 2014 +0100
+++ b/Documentation/Source/eric5.QScintilla.QsciScintillaCompat.html	Mon Mar 17 19:11:48 2014 +0100
@@ -79,6 +79,9 @@
 <td><a href="#QsciScintillaCompat.__doSearchTarget">__doSearchTarget</a></td>
 <td>Private method to perform the search in target.</td>
 </tr><tr>
+<td><a href="#QsciScintillaCompat.__modificationChanged">__modificationChanged</a></td>
+<td>Private slot to handle the modificationChanged signal.</td>
+</tr><tr>
 <td><a href="#QsciScintillaCompat.__setFoldMarker">__setFoldMarker</a></td>
 <td>Private method to define a fold marker.</td>
 </tr><tr>
@@ -247,6 +250,9 @@
 <td><a href="#QsciScintillaCompat.inputMethodQuery">inputMethodQuery</a></td>
 <td>Protected method to cope with a glitch in some Qscintilla versions handling input events.</td>
 </tr><tr>
+<td><a href="#QsciScintillaCompat.isModified">isModified</a></td>
+<td>Public method to return the modification status.</td>
+</tr><tr>
 <td><a href="#QsciScintillaCompat.lineAt">lineAt</a></td>
 <td>Public method to calculate the line at a position.</td>
 </tr><tr>
@@ -334,6 +340,9 @@
 <td><a href="#QsciScintillaCompat.setLexer">setLexer</a></td>
 <td>Public method to set the lexer.</td>
 </tr><tr>
+<td><a href="#QsciScintillaCompat.setModified">setModified</a></td>
+<td>Public slot to set the modification status.</td>
+</tr><tr>
 <td><a href="#QsciScintillaCompat.setRectangularSelection">setRectangularSelection</a></td>
 <td>Public method to set a rectangular selection.</td>
 </tr><tr>
@@ -410,6 +419,16 @@
 <dd>
 flag indicating a successful search (boolean)
 </dd>
+</dl><a NAME="QsciScintillaCompat.__modificationChanged" ID="QsciScintillaCompat.__modificationChanged"></a>
+<h4>QsciScintillaCompat.__modificationChanged</h4>
+<b>__modificationChanged</b>(<i>m</i>)
+<p>
+        Private slot to handle the modificationChanged signal.
+</p><dl>
+<dt><i>m</i></dt>
+<dd>
+modification status (boolean)
+</dd>
 </dl><a NAME="QsciScintillaCompat.__setFoldMarker" ID="QsciScintillaCompat.__setFoldMarker"></a>
 <h4>QsciScintillaCompat.__setFoldMarker</h4>
 <b>__setFoldMarker</b>(<i>marknr, mark=QsciScintilla.SC_MARK_EMPTY</i>)
@@ -1073,6 +1092,16 @@
 <dd>
 object containing the requested information
 </dd>
+</dl><a NAME="QsciScintillaCompat.isModified" ID="QsciScintillaCompat.isModified"></a>
+<h4>QsciScintillaCompat.isModified</h4>
+<b>isModified</b>(<i></i>)
+<p>
+        Public method to return the modification status.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating the modification status (boolean)
+</dd>
 </dl><a NAME="QsciScintillaCompat.lineAt" ID="QsciScintillaCompat.lineAt"></a>
 <h4>QsciScintillaCompat.lineAt</h4>
 <b>lineAt</b>(<i>pos</i>)
@@ -1422,6 +1451,16 @@
 <dd>
 the lexer to be set or None to reset it.
 </dd>
+</dl><a NAME="QsciScintillaCompat.setModified" ID="QsciScintillaCompat.setModified"></a>
+<h4>QsciScintillaCompat.setModified</h4>
+<b>setModified</b>(<i>m</i>)
+<p>
+        Public slot to set the modification status.
+</p><dl>
+<dt><i>m</i></dt>
+<dd>
+new modification status (boolean)
+</dd>
 </dl><a NAME="QsciScintillaCompat.setRectangularSelection" ID="QsciScintillaCompat.setRectangularSelection"></a>
 <h4>QsciScintillaCompat.setRectangularSelection</h4>
 <b>setRectangularSelection</b>(<i>startLine, startIndex, endLine, endIndex</i>)
--- a/QScintilla/Editor.py	Mon Mar 17 19:01:14 2014 +0100
+++ b/QScintilla/Editor.py	Mon Mar 17 19:11:48 2014 +0100
@@ -1375,6 +1375,7 @@
         @param act reference to the action that was triggered (QAction)
         """
         encoding = act.data()
+        self.setModified(True)
         self.__encodingChanged("{0}-selected".format(encoding))
         
     def __checkEncoding(self):
@@ -1402,15 +1403,18 @@
             self.encodingChanged.emit(self.encoding)
             self.inEncodingChanged = False
         
-    def __normalizedEncoding(self):
+    def __normalizedEncoding(self, encoding=""):
         """
         Private method to calculate the normalized encoding string.
         
+        @param encoding encoding to be normalized (string)
         @return normalized encoding (string)
         """
-        return self.encoding.replace("-default", "")\
-                            .replace("-guessed", "")\
-                            .replace("-selected", "")
+        if not encoding:
+            encoding = self.encoding
+        return encoding.replace("-default", "")\
+                       .replace("-guessed", "")\
+                       .replace("-selected", "")
         
     def __showContextMenuEol(self):
         """
--- a/QScintilla/QsciScintillaCompat.py	Mon Mar 17 19:01:14 2014 +0100
+++ b/QScintilla/QsciScintillaCompat.py	Mon Mar 17 19:11:48 2014 +0100
@@ -68,7 +68,36 @@
         self.__targetSearchEnd = -1
         self.__targetSearchActive = False
         
+        self.__modified = False
+        
         self.userListActivated.connect(self.__completionListSelected)
+        self.modificationChanged.connect(self.__modificationChanged)
+    
+    def __modificationChanged(self, m):
+        """
+        Private slot to handle the modificationChanged signal.
+        
+        @param m modification status (boolean)
+        """
+        self.__modified = m
+    
+    def isModified(self):
+        """
+        Public method to return the modification status.
+        
+        @return flag indicating the modification status (boolean)
+        """
+        return self.__modified
+    
+    def setModified(self, m):
+        """
+        Public slot to set the modification status.
+        
+        @param m new modification status (boolean)
+        """
+        self.__modified = m
+        super().setModified(m)
+        self.modificationChanged.emit(m)
     
     def setLexer(self, lex=None):
         """

eric ide

mercurial