Tue, 04 Mar 2014 19:52:06 +0100
Started implementing support for a marker map in the editor.
--- a/APIs/Python3/eric5.api Tue Mar 04 18:28:29 2014 +0100 +++ b/APIs/Python3/eric5.api Tue Mar 04 19:52:06 2014 +0100 @@ -1284,6 +1284,27 @@ eric5.E5Gui.E5ListView.E5ListView.removeSelected?4() eric5.E5Gui.E5MainWindow.E5MainWindow.setStyle?4(styleName, styleSheetFile) eric5.E5Gui.E5MainWindow.E5MainWindow?1(parent=None) +eric5.E5Gui.E5MapWidget.E5MapWidget._paintIt?5(painter) +eric5.E5Gui.E5MapWidget.E5MapWidget.backgroundColor?4() +eric5.E5Gui.E5MapWidget.E5MapWidget.calculateGeometry?4() +eric5.E5Gui.E5MapWidget.E5MapWidget.generateIndicatorRect?4(position) +eric5.E5Gui.E5MapWidget.E5MapWidget.isEnabled?4() +eric5.E5Gui.E5MapWidget.E5MapWidget.lineDimensions?4() +eric5.E5Gui.E5MapWidget.E5MapWidget.mousePressEvent?4(event) +eric5.E5Gui.E5MapWidget.E5MapWidget.paintEvent?4(event) +eric5.E5Gui.E5MapWidget.E5MapWidget.position2Value?4(position, slider=False) +eric5.E5Gui.E5MapWidget.E5MapWidget.scaleFactor?4(slider=False) +eric5.E5Gui.E5MapWidget.E5MapWidget.setBackgroundColor?4(color) +eric5.E5Gui.E5MapWidget.E5MapWidget.setEnabled?4(enable) +eric5.E5Gui.E5MapWidget.E5MapWidget.setLineDimensions?4(border, height) +eric5.E5Gui.E5MapWidget.E5MapWidget.setMaster?4(master) +eric5.E5Gui.E5MapWidget.E5MapWidget.setSliderColors?4(border, background) +eric5.E5Gui.E5MapWidget.E5MapWidget.setWidth?4(width) +eric5.E5Gui.E5MapWidget.E5MapWidget.sizeHint?4() +eric5.E5Gui.E5MapWidget.E5MapWidget.sliderColors?4() +eric5.E5Gui.E5MapWidget.E5MapWidget.value2Position?4(value, slider=False) +eric5.E5Gui.E5MapWidget.E5MapWidget.width?4() +eric5.E5Gui.E5MapWidget.E5MapWidget?1(parent=None) eric5.E5Gui.E5MessageBox.Abort?7 eric5.E5Gui.E5MessageBox.AcceptRole?7 eric5.E5Gui.E5MessageBox.ActionRole?7 @@ -6918,6 +6939,7 @@ eric5.QScintilla.Editor.Editor.refreshCoverageAnnotations?4() eric5.QScintilla.Editor.Editor.refreshed?7 eric5.QScintilla.Editor.Editor.removeClone?4(editor) +eric5.QScintilla.Editor.Editor.resizeEvent?4(evt) eric5.QScintilla.Editor.Editor.revertToUnmodified?4() eric5.QScintilla.Editor.Editor.saveFile?4(saveas=False, path=None) eric5.QScintilla.Editor.Editor.saveFileAs?4(path=None, toProject=False) @@ -6960,6 +6982,7 @@ eric5.QScintilla.Editor.Editor.unindentLineOrSelection?4() eric5.QScintilla.Editor.Editor.unsetAutoCompletionHook?4() eric5.QScintilla.Editor.Editor.unsetCallTipHook?4() +eric5.QScintilla.Editor.Editor.viewportEvent?4(evt) eric5.QScintilla.Editor.Editor.wheelEvent?4(evt) eric5.QScintilla.Editor.Editor.writeFile?4(fn) eric5.QScintilla.Editor.Editor?1(dbs, fn=None, vm=None, filetype="", editor=None, tv=None)
--- a/APIs/Python3/eric5.bas Tue Mar 04 18:28:29 2014 +0100 +++ b/APIs/Python3/eric5.bas Tue Mar 04 19:52:06 2014 +0100 @@ -162,6 +162,7 @@ E5LineEditSideWidget QWidget E5ListView QListView E5MainWindow QMainWindow +E5MapWidget QWidget E5MessageBox QMessageBox E5MessageBoxWizard QObject E5MessageBoxWizardDialog QDialog Ui_E5MessageBoxWizardDialog
--- a/Documentation/Help/source.qhp Tue Mar 04 18:28:29 2014 +0100 +++ b/Documentation/Help/source.qhp Tue Mar 04 19:52:06 2014 +0100 @@ -127,6 +127,7 @@ <section title="eric5.E5Gui.E5LineEditButton" ref="eric5.E5Gui.E5LineEditButton.html" /> <section title="eric5.E5Gui.E5ListView" ref="eric5.E5Gui.E5ListView.html" /> <section title="eric5.E5Gui.E5MainWindow" ref="eric5.E5Gui.E5MainWindow.html" /> + <section title="eric5.E5Gui.E5MapWidget" ref="eric5.E5Gui.E5MapWidget.html" /> <section title="eric5.E5Gui.E5MessageBox" ref="eric5.E5Gui.E5MessageBox.html" /> <section title="eric5.E5Gui.E5ModelMenu" ref="eric5.E5Gui.E5ModelMenu.html" /> <section title="eric5.E5Gui.E5ModelToolBar" ref="eric5.E5Gui.E5ModelToolBar.html" /> @@ -3828,6 +3829,31 @@ <keyword name="E5MainWindow (Constructor)" id="E5MainWindow (Constructor)" ref="eric5.E5Gui.E5MainWindow.html#E5MainWindow.__init__" /> <keyword name="E5MainWindow (Module)" id="E5MainWindow (Module)" ref="eric5.E5Gui.E5MainWindow.html" /> <keyword name="E5MainWindow.setStyle" id="E5MainWindow.setStyle" ref="eric5.E5Gui.E5MainWindow.html#E5MainWindow.setStyle" /> + <keyword name="E5MapWidget" id="E5MapWidget" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget" /> + <keyword name="E5MapWidget (Constructor)" id="E5MapWidget (Constructor)" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.__init__" /> + <keyword name="E5MapWidget (Module)" id="E5MapWidget (Module)" ref="eric5.E5Gui.E5MapWidget.html" /> + <keyword name="E5MapWidget.__generateSliderRange" id="E5MapWidget.__generateSliderRange" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.__generateSliderRange" /> + <keyword name="E5MapWidget.__updateMasterViewportWidth" id="E5MapWidget.__updateMasterViewportWidth" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.__updateMasterViewportWidth" /> + <keyword name="E5MapWidget._paintIt" id="E5MapWidget._paintIt" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget._paintIt" /> + <keyword name="E5MapWidget.backgroundColor" id="E5MapWidget.backgroundColor" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.backgroundColor" /> + <keyword name="E5MapWidget.calculateGeometry" id="E5MapWidget.calculateGeometry" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.calculateGeometry" /> + <keyword name="E5MapWidget.generateIndicatorRect" id="E5MapWidget.generateIndicatorRect" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.generateIndicatorRect" /> + <keyword name="E5MapWidget.isEnabled" id="E5MapWidget.isEnabled" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.isEnabled" /> + <keyword name="E5MapWidget.lineDimensions" id="E5MapWidget.lineDimensions" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.lineDimensions" /> + <keyword name="E5MapWidget.mousePressEvent" id="E5MapWidget.mousePressEvent" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.mousePressEvent" /> + <keyword name="E5MapWidget.paintEvent" id="E5MapWidget.paintEvent" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.paintEvent" /> + <keyword name="E5MapWidget.position2Value" id="E5MapWidget.position2Value" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.position2Value" /> + <keyword name="E5MapWidget.scaleFactor" id="E5MapWidget.scaleFactor" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.scaleFactor" /> + <keyword name="E5MapWidget.setBackgroundColor" id="E5MapWidget.setBackgroundColor" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.setBackgroundColor" /> + <keyword name="E5MapWidget.setEnabled" id="E5MapWidget.setEnabled" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.setEnabled" /> + <keyword name="E5MapWidget.setLineDimensions" id="E5MapWidget.setLineDimensions" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.setLineDimensions" /> + <keyword name="E5MapWidget.setMaster" id="E5MapWidget.setMaster" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.setMaster" /> + <keyword name="E5MapWidget.setSliderColors" id="E5MapWidget.setSliderColors" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.setSliderColors" /> + <keyword name="E5MapWidget.setWidth" id="E5MapWidget.setWidth" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.setWidth" /> + <keyword name="E5MapWidget.sizeHint" id="E5MapWidget.sizeHint" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.sizeHint" /> + <keyword name="E5MapWidget.sliderColors" id="E5MapWidget.sliderColors" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.sliderColors" /> + <keyword name="E5MapWidget.value2Position" id="E5MapWidget.value2Position" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.value2Position" /> + <keyword name="E5MapWidget.width" id="E5MapWidget.width" ref="eric5.E5Gui.E5MapWidget.html#E5MapWidget.width" /> <keyword name="E5MessageBox" id="E5MessageBox" ref="eric5.E5Gui.E5MessageBox.html#E5MessageBox" /> <keyword name="E5MessageBox (Constructor)" id="E5MessageBox (Constructor)" ref="eric5.E5Gui.E5MessageBox.html#E5MessageBox.__init__" /> <keyword name="E5MessageBox (Module)" id="E5MessageBox (Module)" ref="eric5.E5Gui.E5MessageBox.html" /> @@ -4559,6 +4585,7 @@ <keyword name="Editor.refresh" id="Editor.refresh" ref="eric5.QScintilla.Editor.html#Editor.refresh" /> <keyword name="Editor.refreshCoverageAnnotations" id="Editor.refreshCoverageAnnotations" ref="eric5.QScintilla.Editor.html#Editor.refreshCoverageAnnotations" /> <keyword name="Editor.removeClone" id="Editor.removeClone" ref="eric5.QScintilla.Editor.html#Editor.removeClone" /> + <keyword name="Editor.resizeEvent" id="Editor.resizeEvent" ref="eric5.QScintilla.Editor.html#Editor.resizeEvent" /> <keyword name="Editor.revertToUnmodified" id="Editor.revertToUnmodified" ref="eric5.QScintilla.Editor.html#Editor.revertToUnmodified" /> <keyword name="Editor.saveFile" id="Editor.saveFile" ref="eric5.QScintilla.Editor.html#Editor.saveFile" /> <keyword name="Editor.saveFileAs" id="Editor.saveFileAs" ref="eric5.QScintilla.Editor.html#Editor.saveFileAs" /> @@ -4597,6 +4624,7 @@ <keyword name="Editor.unindentLineOrSelection" id="Editor.unindentLineOrSelection" ref="eric5.QScintilla.Editor.html#Editor.unindentLineOrSelection" /> <keyword name="Editor.unsetAutoCompletionHook" id="Editor.unsetAutoCompletionHook" ref="eric5.QScintilla.Editor.html#Editor.unsetAutoCompletionHook" /> <keyword name="Editor.unsetCallTipHook" id="Editor.unsetCallTipHook" ref="eric5.QScintilla.Editor.html#Editor.unsetCallTipHook" /> + <keyword name="Editor.viewportEvent" id="Editor.viewportEvent" ref="eric5.QScintilla.Editor.html#Editor.viewportEvent" /> <keyword name="Editor.wheelEvent" id="Editor.wheelEvent" ref="eric5.QScintilla.Editor.html#Editor.wheelEvent" /> <keyword name="Editor.writeFile" id="Editor.writeFile" ref="eric5.QScintilla.Editor.html#Editor.writeFile" /> <keyword name="EditorAPIsPage" id="EditorAPIsPage" ref="eric5.Preferences.ConfigurationPages.EditorAPIsPage.html#EditorAPIsPage" /> @@ -13793,6 +13821,7 @@ <file>eric5.E5Gui.E5LineEditButton.html</file> <file>eric5.E5Gui.E5ListView.html</file> <file>eric5.E5Gui.E5MainWindow.html</file> + <file>eric5.E5Gui.E5MapWidget.html</file> <file>eric5.E5Gui.E5MessageBox.html</file> <file>eric5.E5Gui.E5ModelMenu.html</file> <file>eric5.E5Gui.E5ModelToolBar.html</file>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric5.E5Gui.E5MapWidget.html Tue Mar 04 19:52:06 2014 +0100 @@ -0,0 +1,400 @@ +<!DOCTYPE html> +<html><head> +<title>eric5.E5Gui.E5MapWidget</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric5.E5Gui.E5MapWidget</h1> +<p> +Module implementing a base class for showing a document map. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#E5MapWidget">E5MapWidget</a></td> +<td>Class implementing a base class for showing a document map.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="E5MapWidget" ID="E5MapWidget"></a> +<h2>E5MapWidget</h2> +<p> + Class implementing a base class for showing a document map. +</p> +<h3>Derived from</h3> +QWidget +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#E5MapWidget.__init__">E5MapWidget</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#E5MapWidget.__generateSliderRange">__generateSliderRange</a></td> +<td>Private method to generate the slider rectangle.</td> +</tr><tr> +<td><a href="#E5MapWidget.__updateMasterViewportWidth">__updateMasterViewportWidth</a></td> +<td>Private method to update the master's viewport width.</td> +</tr><tr> +<td><a href="#E5MapWidget._paintIt">_paintIt</a></td> +<td>Protected method for painting the widget's indicators.</td> +</tr><tr> +<td><a href="#E5MapWidget.backgroundColor">backgroundColor</a></td> +<td>Public method to get the background color.</td> +</tr><tr> +<td><a href="#E5MapWidget.calculateGeometry">calculateGeometry</a></td> +<td>Public method to recalculate the map widget's geometry.</td> +</tr><tr> +<td><a href="#E5MapWidget.generateIndicatorRect">generateIndicatorRect</a></td> +<td>Public method to generate an indicator rectangle.</td> +</tr><tr> +<td><a href="#E5MapWidget.isEnabled">isEnabled</a></td> +<td>Public method to check the enabled state.</td> +</tr><tr> +<td><a href="#E5MapWidget.lineDimensions">lineDimensions</a></td> +<td>Public method to get the line (indicator) dimensions.</td> +</tr><tr> +<td><a href="#E5MapWidget.mousePressEvent">mousePressEvent</a></td> +<td>Protected method to handle a mouse button press.</td> +</tr><tr> +<td><a href="#E5MapWidget.paintEvent">paintEvent</a></td> +<td>Protected method to handle a paint event.</td> +</tr><tr> +<td><a href="#E5MapWidget.position2Value">position2Value</a></td> +<td>Public method to convert a position into a scrollbar value.</td> +</tr><tr> +<td><a href="#E5MapWidget.scaleFactor">scaleFactor</a></td> +<td>Public method to determine the scrollbar's scale factor.</td> +</tr><tr> +<td><a href="#E5MapWidget.setBackgroundColor">setBackgroundColor</a></td> +<td>Public method to set the widget background color.</td> +</tr><tr> +<td><a href="#E5MapWidget.setEnabled">setEnabled</a></td> +<td>Public method to set the enabled state.</td> +</tr><tr> +<td><a href="#E5MapWidget.setLineDimensions">setLineDimensions</a></td> +<td>Public method to set the line (indicator) dimensions.</td> +</tr><tr> +<td><a href="#E5MapWidget.setMaster">setMaster</a></td> +<td>Public method to set the map master widget.</td> +</tr><tr> +<td><a href="#E5MapWidget.setSliderColors">setSliderColors</a></td> +<td>Public method to set the slider colors.</td> +</tr><tr> +<td><a href="#E5MapWidget.setWidth">setWidth</a></td> +<td>Public method to set the widget width.</td> +</tr><tr> +<td><a href="#E5MapWidget.sizeHint">sizeHint</a></td> +<td>Public method to give an indication about the preferred size.</td> +</tr><tr> +<td><a href="#E5MapWidget.sliderColors">sliderColors</a></td> +<td>Public method to get the slider colors.</td> +</tr><tr> +<td><a href="#E5MapWidget.value2Position">value2Position</a></td> +<td>Public method to convert a scrollbar value into a position.</td> +</tr><tr> +<td><a href="#E5MapWidget.width">width</a></td> +<td>Public method to get the widget's width.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="E5MapWidget.__init__" ID="E5MapWidget.__init__"></a> +<h4>E5MapWidget (Constructor)</h4> +<b>E5MapWidget</b>(<i>parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>parent</i></dt> +<dd> +reference to the parent widget (QWidget) +</dd> +</dl><a NAME="E5MapWidget.__generateSliderRange" ID="E5MapWidget.__generateSliderRange"></a> +<h4>E5MapWidget.__generateSliderRange</h4> +<b>__generateSliderRange</b>(<i>scrollbar</i>) +<p> + Private method to generate the slider rectangle. +</p><dl> +<dt><i>scrollbar</i></dt> +<dd> +reference to the vertical scrollbar (QScrollBar) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +slider rectangle (QRect) +</dd> +</dl><a NAME="E5MapWidget.__updateMasterViewportWidth" ID="E5MapWidget.__updateMasterViewportWidth"></a> +<h4>E5MapWidget.__updateMasterViewportWidth</h4> +<b>__updateMasterViewportWidth</b>(<i></i>) +<p> + Private method to update the master's viewport width. +</p><a NAME="E5MapWidget._paintIt" ID="E5MapWidget._paintIt"></a> +<h4>E5MapWidget._paintIt</h4> +<b>_paintIt</b>(<i>painter</i>) +<p> + Protected method for painting the widget's indicators. +</p><p> + Note: This method should be implemented by subclasses. +</p><dl> +<dt><i>painter</i></dt> +<dd> +reference to the painter object (QPainter) +</dd> +</dl><a NAME="E5MapWidget.backgroundColor" ID="E5MapWidget.backgroundColor"></a> +<h4>E5MapWidget.backgroundColor</h4> +<b>backgroundColor</b>(<i></i>) +<p> + Public method to get the background color. +</p><dl> +<dt>Returns:</dt> +<dd> +background color (QColor) +</dd> +</dl><a NAME="E5MapWidget.calculateGeometry" ID="E5MapWidget.calculateGeometry"></a> +<h4>E5MapWidget.calculateGeometry</h4> +<b>calculateGeometry</b>(<i></i>) +<p> + Public method to recalculate the map widget's geometry. +</p><a NAME="E5MapWidget.generateIndicatorRect" ID="E5MapWidget.generateIndicatorRect"></a> +<h4>E5MapWidget.generateIndicatorRect</h4> +<b>generateIndicatorRect</b>(<i>position</i>) +<p> + Public method to generate an indicator rectangle. +</p><dl> +<dt><i>position</i></dt> +<dd> +indicator position (integer) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +indicator rectangle (QRect) +</dd> +</dl><a NAME="E5MapWidget.isEnabled" ID="E5MapWidget.isEnabled"></a> +<h4>E5MapWidget.isEnabled</h4> +<b>isEnabled</b>(<i></i>) +<p> + Public method to check the enabled state. +</p><dl> +<dt>Returns:</dt> +<dd> +flag indicating the enabled state (boolean) +</dd> +</dl><a NAME="E5MapWidget.lineDimensions" ID="E5MapWidget.lineDimensions"></a> +<h4>E5MapWidget.lineDimensions</h4> +<b>lineDimensions</b>(<i></i>) +<p> + Public method to get the line (indicator) dimensions. +</p><dl> +<dt>Returns:</dt> +<dd> +tuple with border width (integer) and line height (integer) +</dd> +</dl><a NAME="E5MapWidget.mousePressEvent" ID="E5MapWidget.mousePressEvent"></a> +<h4>E5MapWidget.mousePressEvent</h4> +<b>mousePressEvent</b>(<i>event</i>) +<p> + Protected method to handle a mouse button press. +</p><dl> +<dt><i>event</i></dt> +<dd> +mouse event (QMouseEvent) +</dd> +</dl><a NAME="E5MapWidget.paintEvent" ID="E5MapWidget.paintEvent"></a> +<h4>E5MapWidget.paintEvent</h4> +<b>paintEvent</b>(<i>event</i>) +<p> + Protected method to handle a paint event. +</p><dl> +<dt><i>event</i></dt> +<dd> +paint event (QPaintEvent) +</dd> +</dl><a NAME="E5MapWidget.position2Value" ID="E5MapWidget.position2Value"></a> +<h4>E5MapWidget.position2Value</h4> +<b>position2Value</b>(<i>position, slider=False</i>) +<p> + Public method to convert a position into a scrollbar value. +</p><dl> +<dt><i>position</i></dt> +<dd> +scrollbar position to convert (integer) +</dd><dt><i>slider</i></dt> +<dd> +flag indicating to calculate the result for the slider + (boolean) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +scrollbar value (integer) +</dd> +</dl><a NAME="E5MapWidget.scaleFactor" ID="E5MapWidget.scaleFactor"></a> +<h4>E5MapWidget.scaleFactor</h4> +<b>scaleFactor</b>(<i>slider=False</i>) +<p> + Public method to determine the scrollbar's scale factor. +</p><dl> +<dt><i>slider</i></dt> +<dd> +flag indicating to calculate the result for the slider + (boolean) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +scale factor (float) +</dd> +</dl><a NAME="E5MapWidget.setBackgroundColor" ID="E5MapWidget.setBackgroundColor"></a> +<h4>E5MapWidget.setBackgroundColor</h4> +<b>setBackgroundColor</b>(<i>color</i>) +<p> + Public method to set the widget background color. +</p><dl> +<dt><i>color</i></dt> +<dd> +color for the background (QColor) +</dd> +</dl><a NAME="E5MapWidget.setEnabled" ID="E5MapWidget.setEnabled"></a> +<h4>E5MapWidget.setEnabled</h4> +<b>setEnabled</b>(<i>enable</i>) +<p> + Public method to set the enabled state. +</p><dl> +<dt><i>enable</i></dt> +<dd> +flag indicating the enabled state (boolean) +</dd> +</dl><a NAME="E5MapWidget.setLineDimensions" ID="E5MapWidget.setLineDimensions"></a> +<h4>E5MapWidget.setLineDimensions</h4> +<b>setLineDimensions</b>(<i>border, height</i>) +<p> + Public method to set the line (indicator) dimensions. +</p><dl> +<dt><i>border</i></dt> +<dd> +border width on each side in x-direction (integer) +</dd><dt><i>height</i></dt> +<dd> +height of the line in pixels (integer) +</dd> +</dl><a NAME="E5MapWidget.setMaster" ID="E5MapWidget.setMaster"></a> +<h4>E5MapWidget.setMaster</h4> +<b>setMaster</b>(<i>master</i>) +<p> + Public method to set the map master widget. +</p><dl> +<dt><i>master</i></dt> +<dd> +map master widget (QAbstractScrollArea) +</dd> +</dl><a NAME="E5MapWidget.setSliderColors" ID="E5MapWidget.setSliderColors"></a> +<h4>E5MapWidget.setSliderColors</h4> +<b>setSliderColors</b>(<i>border, background</i>) +<p> + Public method to set the slider colors. +</p><dl> +<dt><i>border</i></dt> +<dd> +border color (QColor) +</dd><dt><i>background</i></dt> +<dd> +background color (QColor) +</dd> +</dl><a NAME="E5MapWidget.setWidth" ID="E5MapWidget.setWidth"></a> +<h4>E5MapWidget.setWidth</h4> +<b>setWidth</b>(<i>width</i>) +<p> + Public method to set the widget width. +</p><dl> +<dt><i>width</i></dt> +<dd> +widget width (integer) +</dd> +</dl><a NAME="E5MapWidget.sizeHint" ID="E5MapWidget.sizeHint"></a> +<h4>E5MapWidget.sizeHint</h4> +<b>sizeHint</b>(<i></i>) +<p> + Public method to give an indication about the preferred size. +</p><dl> +<dt>Returns:</dt> +<dd> +preferred size (QSize) +</dd> +</dl><a NAME="E5MapWidget.sliderColors" ID="E5MapWidget.sliderColors"></a> +<h4>E5MapWidget.sliderColors</h4> +<b>sliderColors</b>(<i></i>) +<p> + Public method to get the slider colors. +</p><dl> +<dt>Returns:</dt> +<dd> +tuple with the slider's border color (QColor) and + background color (QColor) +</dd> +</dl><a NAME="E5MapWidget.value2Position" ID="E5MapWidget.value2Position"></a> +<h4>E5MapWidget.value2Position</h4> +<b>value2Position</b>(<i>value, slider=False</i>) +<p> + Public method to convert a scrollbar value into a position. +</p><dl> +<dt><i>value</i></dt> +<dd> +value to convert (integer) +</dd><dt><i>slider</i></dt> +<dd> +flag indicating to calculate the result for the slider + (boolean) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +position (integer) +</dd> +</dl><a NAME="E5MapWidget.width" ID="E5MapWidget.width"></a> +<h4>E5MapWidget.width</h4> +<b>width</b>(<i></i>) +<p> + Public method to get the widget's width. +</p><dl> +<dt>Returns:</dt> +<dd> +widget width (integer) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/eric5.QScintilla.Editor.html Tue Mar 04 18:28:29 2014 +0100 +++ b/Documentation/Source/eric5.QScintilla.Editor.html Tue Mar 04 19:52:06 2014 +0100 @@ -992,6 +992,9 @@ <td><a href="#Editor.removeClone">removeClone</a></td> <td>Public method to remove a clone from our list.</td> </tr><tr> +<td><a href="#Editor.resizeEvent">resizeEvent</a></td> +<td>Protected method handling resize events.</td> +</tr><tr> <td><a href="#Editor.revertToUnmodified">revertToUnmodified</a></td> <td>Public method to revert back to the last saved state.</td> </tr><tr> @@ -1106,6 +1109,9 @@ <td><a href="#Editor.unsetCallTipHook">unsetCallTipHook</a></td> <td>Public method to unset a calltip hook.</td> </tr><tr> +<td><a href="#Editor.viewportEvent">viewportEvent</a></td> +<td>Protected method handling event of the viewport.</td> +</tr><tr> <td><a href="#Editor.wheelEvent">wheelEvent</a></td> <td>Protected method to handle wheel events.</td> </tr><tr> @@ -3625,6 +3631,16 @@ <dd> reference to the cloned editor (Editor) </dd> +</dl><a NAME="Editor.resizeEvent" ID="Editor.resizeEvent"></a> +<h4>Editor.resizeEvent</h4> +<b>resizeEvent</b>(<i>evt</i>) +<p> + Protected method handling resize events. +</p><dl> +<dt><i>evt</i></dt> +<dd> +reference to the resize event (QResizeEvent) +</dd> </dl><a NAME="Editor.revertToUnmodified" ID="Editor.revertToUnmodified"></a> <h4>Editor.revertToUnmodified</h4> <b>revertToUnmodified</b>(<i></i>) @@ -3970,7 +3986,22 @@ <b>unsetCallTipHook</b>(<i></i>) <p> Public method to unset a calltip hook. -</p><a NAME="Editor.wheelEvent" ID="Editor.wheelEvent"></a> +</p><a NAME="Editor.viewportEvent" ID="Editor.viewportEvent"></a> +<h4>Editor.viewportEvent</h4> +<b>viewportEvent</b>(<i>evt</i>) +<p> + Protected method handling event of the viewport. +</p><dl> +<dt><i>evt</i></dt> +<dd> +reference to the event (QEvent) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indiating that the event was handled (boolean) +</dd> +</dl><a NAME="Editor.wheelEvent" ID="Editor.wheelEvent"></a> <h4>Editor.wheelEvent</h4> <b>wheelEvent</b>(<i>evt</i>) <p>
--- a/Documentation/Source/index-eric5.E5Gui.html Tue Mar 04 18:28:29 2014 +0100 +++ b/Documentation/Source/index-eric5.E5Gui.html Tue Mar 04 19:52:06 2014 +0100 @@ -69,6 +69,9 @@ <td><a href="eric5.E5Gui.E5MainWindow.html">E5MainWindow</a></td> <td>Module implementing a main window class with styling support.</td> </tr><tr> +<td><a href="eric5.E5Gui.E5MapWidget.html">E5MapWidget</a></td> +<td>Module implementing a base class for showing a document map.</td> +</tr><tr> <td><a href="eric5.E5Gui.E5MessageBox.html">E5MessageBox</a></td> <td>Module implementing QMessageBox replacements and more convenience function.</td> </tr><tr>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/E5Gui/E5MapWidget.py Tue Mar 04 19:52:06 2014 +0100 @@ -0,0 +1,290 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2014 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a base class for showing a document map. +""" + +from PyQt4.QtCore import Qt, QSize, QRect +from PyQt4.QtGui import QWidget, QAbstractScrollArea, QColor, QBrush, QPainter + + +class E5MapWidget(QWidget): + """ + Class implementing a base class for showing a document map. + """ + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent widget (QWidget) + """ + super().__init__(parent) + self.setAttribute(Qt.WA_OpaquePaintEvent) + + self.__width = 12 + self.__lineBorder = 2 + self.__lineHeight = 2 + self.__backgroundColor = QColor(Qt.lightGray).lighter(120) + self.__sliderBorderColor = QColor(Qt.black) + self.__sliderBackgroundColor = QColor(Qt.white) + + self.__master = None + self.__enabled = False + + if parent is not None and isinstance(parent, QAbstractScrollArea): + self.setMaster(parent) + + def __updateMasterViewportWidth(self): + """ + Private method to update the master's viewport width. + """ + if self.__master: + if self.__enabled: + width = self.__width + else: + width = 0 + self.__master.setViewportMargins(0, 0, width, 0) + + def setMaster(self, master): + """ + Public method to set the map master widget. + + @param master map master widget (QAbstractScrollArea) + """ + self.__master = master + self.__master.verticalScrollBar().valueChanged.connect(self.repaint) + self.__updateMasterViewportWidth() + + def setWidth(self, width): + """ + Public method to set the widget width. + + @param width widget width (integer) + """ + self.__width = width + + def width(self): + """ + Public method to get the widget's width. + + @return widget width (integer) + """ + return self.__width + + def setLineDimensions(self, border, height): + """ + Public method to set the line (indicator) dimensions. + + @param border border width on each side in x-direction (integer) + @param height height of the line in pixels (integer) + """ + self.__lineBorder = border + self.__lineHeight = max(2, height) # min height is 2 pixels + + def lineDimensions(self): + """ + Public method to get the line (indicator) dimensions. + + @return tuple with border width (integer) and line height (integer) + """ + return self.__lineBorder, self.__lineHeight + + def setEnabled(self, enable): + """ + Public method to set the enabled state. + + @param enable flag indicating the enabled state (boolean) + """ + self.__enabled = enable + self.setVisible(enable) + self.__updateMasterViewportWidth() + + def isEnabled(self): + """ + Public method to check the enabled state. + + @return flag indicating the enabled state (boolean) + """ + return self.__enabled + + def setBackgroundColor(self, color): + """ + Public method to set the widget background color. + + @param color color for the background (QColor) + """ + self.__backgroundColor = color + + def backgroundColor(self): + """ + Public method to get the background color. + + @return background color (QColor) + """ + return QColor(self.__backgroundColor) + + def setSliderColors(self, border, background): + """ + Public method to set the slider colors. + + @param border border color (QColor) + @param background background color (QColor) + """ + self.__sliderBorderColor = border + self.__sliderBackgroundColor = background + + def sliderColors(self): + """ + Public method to get the slider colors. + + @return tuple with the slider's border color (QColor) and + background color (QColor) + """ + return (QColor(self.__sliderBorderColor), + QColor(self.__sliderBackgroundColor)) + + def sizeHint(self): + """ + Public method to give an indication about the preferred size. + + @return preferred size (QSize) + """ + return QSize(self.__width, 0) + + def paintEvent(self, event): + """ + Protected method to handle a paint event. + + @param event paint event (QPaintEvent) + """ + # step 1: fill the whole painting area + painter = QPainter(self) + painter.fillRect(event.rect(), self.__backgroundColor) + + # step 2: paint the indicators + self._paintIt(painter) + + # step 3: paint the slider + if self.__master: + penColor = self.__sliderBorderColor + penColor.setAlphaF(0.8) + painter.setPen(penColor) + brushColor = self.__sliderBackgroundColor + brushColor.setAlphaF(0.5) + painter.setBrush(QBrush(brushColor)) + painter.drawRect(self.__generateSliderRange( + self.__master.verticalScrollBar())) + + def _paintIt(self, painter): + """ + Protected method for painting the widget's indicators. + + Note: This method should be implemented by subclasses. + + @param painter reference to the painter object (QPainter) + """ + pass + + def mousePressEvent(self, event): + """ + Protected method to handle a mouse button press. + + @param event mouse event (QMouseEvent) + """ + if event.button() == Qt.LeftButton and self.__master: + vsb = self.__master.verticalScrollBar() + value = self.position2Value(event.pos().y() - 1) + vsb.setValue(value - 0.5 * vsb.pageStep()) # center on page + + def calculateGeometry(self): + """ + Public method to recalculate the map widget's geometry. + """ + if self.__master: + cr = self.__master.contentsRect() + vsb = self.__master.verticalScrollBar() + if vsb.isVisible(): + vsbw = vsb.contentsRect().width() + else: + vsbw = 0 + left, top, right, bottom = self.__master.getContentsMargins() + if right > vsbw: + vsbw = 0 + self.setGeometry(QRect(cr.right() - self.__width - vsbw, cr.top(), + self.__width, cr.height())) + + def scaleFactor(self, slider=False): + """ + Public method to determine the scrollbar's scale factor. + + @param slider flag indicating to calculate the result for the slider + (boolean) + @return scale factor (float) + """ + if self.__master: + delta = 0 if slider else 2 + vsb = self.__master.verticalScrollBar() + posHeight = vsb.height() - delta - 1 + valHeight = vsb.maximum() - vsb.minimum() + vsb.pageStep() + return posHeight / valHeight + else: + return 1.0 + + def value2Position(self, value, slider=False): + """ + Public method to convert a scrollbar value into a position. + + @param value value to convert (integer) + @param slider flag indicating to calculate the result for the slider + (boolean) + @return position (integer) + """ + if self.__master: + offset = 0 if slider else 1 + vsb = self.__master.verticalScrollBar() + return (value - vsb.minimum()) * self.scaleFactor(slider) + offset + else: + return value + + def position2Value(self, position, slider=False): + """ + Public method to convert a position into a scrollbar value. + + @param position scrollbar position to convert (integer) + @param slider flag indicating to calculate the result for the slider + (boolean) + @return scrollbar value (integer) + """ + if self.__master: + offset = 0 if slider else 1 + vsb = self.__master.verticalScrollBar() + return vsb.minimum() + max( + 0, (position - offset) / self.scaleFactor(slider)) + else: + return position + + def generateIndicatorRect(self, position): + """ + Public method to generate an indicator rectangle. + + @param position indicator position (integer) + @return indicator rectangle (QRect) + """ + return QRect(self.__lineBorder, position - self.__lineHeight // 2, + self.__width - self.__lineBorder, self.__lineHeight) + + def __generateSliderRange(self, scrollbar): + """ + Private method to generate the slider rectangle. + + @param scrollbar reference to the vertical scrollbar (QScrollBar) + @return slider rectangle (QRect) + """ + pos1 = self.value2Position(scrollbar.value(), slider=True) + pos2 = self.value2Position(scrollbar.value() + scrollbar.pageStep(), + slider=True) + return QRect(1, pos1, self.__width - 2, pos2 - pos1 + 1) + # TODO: check slider appearance and adjust to self.__width
--- a/QScintilla/Editor.py Tue Mar 04 18:28:29 2014 +0100 +++ b/QScintilla/Editor.py Tue Mar 04 19:52:06 2014 +0100 @@ -19,6 +19,7 @@ from E5Gui.E5Application import e5App from E5Gui import E5FileDialog, E5MessageBox +from E5Gui.E5MapWidget import E5MapWidget from .QsciScintillaCompat import QsciScintillaCompat, QSCINTILLA_VERSION @@ -291,6 +292,8 @@ self.changeMarkersMask = (1 << self.__changeMarkerSaved) | \ (1 << self.__changeMarkerUnsaved) + self.__markerMap = E5MapWidget(self) + # configure the margins self.__setMarginsDisplay() self.linesChanged.connect(self.__resizeLinenoMargin) @@ -1206,7 +1209,7 @@ self.getLanguage(normalized=False))) else: self.pygmentsSelAct.setText(self.tr("Alternatives")) - self.showMenu.emit("Languages", self.languagesMenu, self) + self.showMenu.emit("Languages", self.languagesMenu, self) def __selectPygmentsLexer(self): """ @@ -1360,7 +1363,7 @@ Private slot handling the aboutToShow signal of the encodings context menu. """ - self.showMenu.emit("Encodings", self.encodingsMenu, self) + self.showMenu.emit("Encodings", self.encodingsMenu, self) def __encodingsMenuTriggered(self, act): """ @@ -1410,7 +1413,7 @@ """ Private slot handling the aboutToShow signal of the eol context menu. """ - self.showMenu.emit("Eol", self.eolMenu, self) + self.showMenu.emit("Eol", self.eolMenu, self) def __eolMenuTriggered(self, act): """ @@ -4189,6 +4192,8 @@ self.setVirtualSpaceOptions( Preferences.getEditor("VirtualSpaceOptions")) + + self.__markerMap.setEnabled(True) def __setEolMode(self): """ @@ -4474,7 +4479,7 @@ depth -= 1 if depth == 0: break - ch, pos = self.__getCharacter(pos) + ch, pos = self.__getCharacter(pos) elif ch == '(': found = True break @@ -4718,7 +4723,7 @@ self.menuActs["Tools"].setEnabled(not self.toolsMenu.isEmpty()) - self.showMenu.emit("Main", self.menu, self) + self.showMenu.emit("Main", self.menu, self) def __showContextMenuAutocompletion(self): """ @@ -4730,7 +4735,7 @@ self.menuActs["acAPIDocument"].setEnabled(self.acAPI) self.menuActs["calltip"].setEnabled(self.acAPI) - self.showMenu.emit("Autocompletion", self.autocompletionMenu, self) + self.showMenu.emit("Autocompletion", self.autocompletionMenu, self) def __showContextMenuShow(self): """ @@ -4782,7 +4787,7 @@ self.coverageHideAnnotationMenuAct.setEnabled( len(self.notcoveredMarkers) > 0) - self.showMenu.emit("Show", self.menuShow, self) + self.showMenu.emit("Show", self.menuShow, self) def __showContextMenuGraphics(self): """ @@ -4795,7 +4800,7 @@ else: self.applicationDiagramMenuAct.setEnabled(False) - self.showMenu.emit("Graphics", self.graphicsMenu, self) + self.showMenu.emit("Graphics", self.graphicsMenu, self) def __showContextMenuMargin(self): """ @@ -4891,21 +4896,21 @@ self.marginMenuActs["PreviousChangeMarker"].setEnabled(False) self.marginMenuActs["NextChangeMarker"].setEnabled(False) - self.showMenu.emit("Margin", self.sender(), self) + self.showMenu.emit("Margin", self.sender(), self) def __showContextMenuChecks(self): """ Private slot handling the aboutToShow signal of the checks context menu. """ - self.showMenu.emit("Checks", self.checksMenu, self) + self.showMenu.emit("Checks", self.checksMenu, self) def __showContextMenuTools(self): """ Private slot handling the aboutToShow signal of the tools context menu. """ - self.showMenu.emit("Tools", self.toolsMenu, self) + self.showMenu.emit("Tools", self.toolsMenu, self) def __contextSave(self): """ @@ -5077,7 +5082,7 @@ isinstance(warning, ImportStarUsed): continue - _fn, lineno, messageID, messageArgs = \ + _fn, lineno, messageID, messageArgs = \ warning.getMessageData() if "__IGNORE_WARNING__" not in \ Utilities.extractLineFlags( @@ -6230,6 +6235,25 @@ self.zoomTo(zoom) evt.accept() + def resizeEvent(self, evt): + """ + Protected method handling resize events. + + @param evt reference to the resize event (QResizeEvent) + """ + super().resizeEvent(evt) + self.__markerMap.calculateGeometry() + + def viewportEvent(self, evt): + """ + Protected method handling event of the viewport. + + @param evt reference to the event (QEvent) + @return flag indiating that the event was handled (boolean) + """ + self.__markerMap.calculateGeometry() + return super().viewportEvent(evt) + def __updateReadOnly(self, bForce=True): """ Private method to update the readOnly information for this editor. @@ -6434,7 +6458,7 @@ Private slot handling the aboutToShow signal of the resources context menu. """ - self.showMenu.emit("Resources", self.resourcesMenu, self) + self.showMenu.emit("Resources", self.resourcesMenu, self) def __addFileResource(self): """ @@ -6878,7 +6902,7 @@ self.spellingMenu.addAction( self.tr("Ignore All"), self.__ignoreSpellingAlways) - self.showMenu.emit("Spelling", self.spellingMenu, self) + self.showMenu.emit("Spelling", self.spellingMenu, self) def __contextMenuSpellingTriggered(self, action): """
--- a/eric5.e4p Tue Mar 04 18:28:29 2014 +0100 +++ b/eric5.e4p Tue Mar 04 19:52:06 2014 +0100 @@ -1127,6 +1127,7 @@ <Source>Plugins/VcsPlugins/vcsMercurial/LargefilesExtension/LfConvertDataDialog.py</Source> <Source>Plugins/VcsPlugins/vcsMercurial/LargefilesExtension/ProjectBrowserHelper.py</Source> <Source>Plugins/VcsPlugins/vcsMercurial/LargefilesExtension/LfRevisionsInputDialog.py</Source> + <Source>E5Gui/E5MapWidget.py</Source> </Sources> <Forms> <Form>PyUnit/UnittestDialog.ui</Form>