Sun, 30 Dec 2012 15:47:47 +0100
Fixed an issue caused by Qt5.
--- a/APIs/Python3/eric5.api Sat Dec 29 17:16:46 2012 +0100 +++ b/APIs/Python3/eric5.api Sun Dec 30 15:47:47 2012 +0100 @@ -1241,10 +1241,11 @@ eric5.E5Gui.E5LineEdit.E5LineEdit.addWidget?4(widget, position) eric5.E5Gui.E5LineEdit.E5LineEdit.event?4(evt) eric5.E5Gui.E5LineEdit.E5LineEdit.inactiveText?4() +eric5.E5Gui.E5LineEdit.E5LineEdit.leftMargin?4() eric5.E5Gui.E5LineEdit.E5LineEdit.paintEvent?4(evt) eric5.E5Gui.E5LineEdit.E5LineEdit.removeWidget?4(widget) -eric5.E5Gui.E5LineEdit.E5LineEdit.resizeEvent?4(evt) eric5.E5Gui.E5LineEdit.E5LineEdit.setInactiveText?4(inactiveText) +eric5.E5Gui.E5LineEdit.E5LineEdit.setLeftMargin?4(margin) eric5.E5Gui.E5LineEdit.E5LineEdit.setWidgetSpacing?4(spacing) eric5.E5Gui.E5LineEdit.E5LineEdit.textMargin?4(position) eric5.E5Gui.E5LineEdit.E5LineEdit.widgetSpacing?4()
--- a/Documentation/Help/source.qhp Sat Dec 29 17:16:46 2012 +0100 +++ b/Documentation/Help/source.qhp Sun Dec 30 15:47:47 2012 +0100 @@ -3433,15 +3433,15 @@ <keyword name="E5LineEdit" id="E5LineEdit" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit" /> <keyword name="E5LineEdit (Constructor)" id="E5LineEdit (Constructor)" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.__init__" /> <keyword name="E5LineEdit (Module)" id="E5LineEdit (Module)" ref="eric5.E5Gui.E5LineEdit.html" /> - <keyword name="E5LineEdit.__updateSideWidgetLocations" id="E5LineEdit.__updateSideWidgetLocations" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.__updateSideWidgetLocations" /> <keyword name="E5LineEdit._updateTextMargins" id="E5LineEdit._updateTextMargins" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit._updateTextMargins" /> <keyword name="E5LineEdit.addWidget" id="E5LineEdit.addWidget" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.addWidget" /> <keyword name="E5LineEdit.event" id="E5LineEdit.event" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.event" /> <keyword name="E5LineEdit.inactiveText" id="E5LineEdit.inactiveText" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.inactiveText" /> + <keyword name="E5LineEdit.leftMargin" id="E5LineEdit.leftMargin" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.leftMargin" /> <keyword name="E5LineEdit.paintEvent" id="E5LineEdit.paintEvent" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.paintEvent" /> <keyword name="E5LineEdit.removeWidget" id="E5LineEdit.removeWidget" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.removeWidget" /> - <keyword name="E5LineEdit.resizeEvent" id="E5LineEdit.resizeEvent" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.resizeEvent" /> <keyword name="E5LineEdit.setInactiveText" id="E5LineEdit.setInactiveText" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.setInactiveText" /> + <keyword name="E5LineEdit.setLeftMargin" id="E5LineEdit.setLeftMargin" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.setLeftMargin" /> <keyword name="E5LineEdit.setWidgetSpacing" id="E5LineEdit.setWidgetSpacing" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.setWidgetSpacing" /> <keyword name="E5LineEdit.textMargin" id="E5LineEdit.textMargin" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.textMargin" /> <keyword name="E5LineEdit.widgetSpacing" id="E5LineEdit.widgetSpacing" ref="eric5.E5Gui.E5LineEdit.html#E5LineEdit.widgetSpacing" />
--- a/Documentation/Source/eric5.E5Gui.E5LineEdit.html Sat Dec 29 17:16:46 2012 +0100 +++ b/Documentation/Source/eric5.E5Gui.E5LineEdit.html Sun Dec 30 15:47:47 2012 +0100 @@ -127,9 +127,6 @@ <td><a href="#E5LineEdit.__init__">E5LineEdit</a></td> <td>Constructor</td> </tr><tr> -<td><a href="#E5LineEdit.__updateSideWidgetLocations">__updateSideWidgetLocations</a></td> -<td>Private method to update the side widget locations.</td> -</tr><tr> <td><a href="#E5LineEdit._updateTextMargins">_updateTextMargins</a></td> <td>Protected slot to update the text margins.</td> </tr><tr> @@ -142,18 +139,21 @@ <td><a href="#E5LineEdit.inactiveText">inactiveText</a></td> <td>Public method to get the inactive text.</td> </tr><tr> +<td><a href="#E5LineEdit.leftMargin">leftMargin</a></td> +<td>Public method to get the size of the left margin.</td> +</tr><tr> <td><a href="#E5LineEdit.paintEvent">paintEvent</a></td> <td>Protected method handling a paint event.</td> </tr><tr> <td><a href="#E5LineEdit.removeWidget">removeWidget</a></td> <td>Public method to remove a widget from a side.</td> </tr><tr> -<td><a href="#E5LineEdit.resizeEvent">resizeEvent</a></td> -<td>Protected method to handle resize events.</td> -</tr><tr> <td><a href="#E5LineEdit.setInactiveText">setInactiveText</a></td> <td>Public method to set the inactive text.</td> </tr><tr> +<td><a href="#E5LineEdit.setLeftMargin">setLeftMargin</a></td> +<td>Public method to set the left margin.</td> +</tr><tr> <td><a href="#E5LineEdit.setWidgetSpacing">setWidgetSpacing</a></td> <td>Public method to set the side widget spacing.</td> </tr><tr> @@ -181,12 +181,7 @@ <dd> text to be shown on inactivity (string) </dd> -</dl><a NAME="E5LineEdit.__updateSideWidgetLocations" ID="E5LineEdit.__updateSideWidgetLocations"></a> -<h4>E5LineEdit.__updateSideWidgetLocations</h4> -<b>__updateSideWidgetLocations</b>(<i></i>) -<p> - Private method to update the side widget locations. -</p><a NAME="E5LineEdit._updateTextMargins" ID="E5LineEdit._updateTextMargins"></a> +</dl><a NAME="E5LineEdit._updateTextMargins" ID="E5LineEdit._updateTextMargins"></a> <h4>E5LineEdit._updateTextMargins</h4> <b>_updateTextMargins</b>(<i></i>) <p> @@ -226,7 +221,17 @@ Public method to get the inactive text. </p><p> return inactive text (string) -</p><a NAME="E5LineEdit.paintEvent" ID="E5LineEdit.paintEvent"></a> +</p><a NAME="E5LineEdit.leftMargin" ID="E5LineEdit.leftMargin"></a> +<h4>E5LineEdit.leftMargin</h4> +<b>leftMargin</b>(<i></i>) +<p> + Public method to get the size of the left margin. +</p><dl> +<dt>Returns:</dt> +<dd> +left margin in pixel (integer) +</dd> +</dl><a NAME="E5LineEdit.paintEvent" ID="E5LineEdit.paintEvent"></a> <h4>E5LineEdit.paintEvent</h4> <b>paintEvent</b>(<i>evt</i>) <p> @@ -246,16 +251,6 @@ <dd> reference to the widget to remove (QWidget) </dd> -</dl><a NAME="E5LineEdit.resizeEvent" ID="E5LineEdit.resizeEvent"></a> -<h4>E5LineEdit.resizeEvent</h4> -<b>resizeEvent</b>(<i>evt</i>) -<p> - Protected method to handle resize events. -</p><dl> -<dt><i>evt</i></dt> -<dd> -reference to the resize event (QResizeEvent) -</dd> </dl><a NAME="E5LineEdit.setInactiveText" ID="E5LineEdit.setInactiveText"></a> <h4>E5LineEdit.setInactiveText</h4> <b>setInactiveText</b>(<i>inactiveText</i>) @@ -266,6 +261,16 @@ <dd> text to be shown on inactivity (string) </dd> +</dl><a NAME="E5LineEdit.setLeftMargin" ID="E5LineEdit.setLeftMargin"></a> +<h4>E5LineEdit.setLeftMargin</h4> +<b>setLeftMargin</b>(<i>margin</i>) +<p> + Public method to set the left margin. +</p><dl> +<dt><i>margin</i></dt> +<dd> +left margin in pixel (integer) +</dd> </dl><a NAME="E5LineEdit.setWidgetSpacing" ID="E5LineEdit.setWidgetSpacing"></a> <h4>E5LineEdit.setWidgetSpacing</h4> <b>setWidgetSpacing</b>(<i>spacing</i>)
--- a/E5Gui/E5LineEdit.py Sat Dec 29 17:16:46 2012 +0100 +++ b/E5Gui/E5LineEdit.py Sun Dec 30 15:47:47 2012 +0100 @@ -65,10 +65,15 @@ else: self.setPlaceholderText(inactiveText) + self.__mainLayout = QHBoxLayout(self) + self.__mainLayout.setContentsMargins(0, 0, 0, 0) + self.__mainLayout.setSpacing(0) + + self.__leftMargin = 0 self.__leftWidget = E5LineEditSideWidget(self) self.__leftWidget.resize(0, 0) self.__leftLayout = QHBoxLayout(self.__leftWidget) - self.__leftLayout.setContentsMargins(0, 0, 0, 0) + self.__leftLayout.setContentsMargins(0, 0, 2, 0) if QApplication.isRightToLeft(): self.__leftLayout.setDirection(QBoxLayout.RightToLeft) else: @@ -78,18 +83,43 @@ self.__rightWidget = E5LineEditSideWidget(self) self.__rightWidget.resize(0, 0) self.__rightLayout = QHBoxLayout(self.__rightWidget) - self.__rightLayout.setContentsMargins(0, 0, 0, 0) + self.__rightLayout.setContentsMargins(0, 0, 2, 0) if self.isRightToLeft(): self.__rightLayout.setDirection(QBoxLayout.RightToLeft) else: self.__rightLayout.setDirection(QBoxLayout.LeftToRight) + horizontalSpacer = QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Minimum) - self.__rightLayout.addItem(horizontalSpacer) + self.__mainLayout.addWidget( + self.__leftWidget, 0, Qt.AlignVCenter | Qt.AlignLeft) + self.__mainLayout.addItem(horizontalSpacer) + self.__mainLayout.addWidget( + self.__rightWidget, 0, Qt.AlignVCenter | Qt.AlignRight) + if self.isRightToLeft(): + self.__mainLayout.setDirection(QBoxLayout.RightToLeft) + else: + self.__mainLayout.setDirection(QBoxLayout.LeftToRight) self.setWidgetSpacing(3) self.__leftWidget.sizeHintChanged.connect(self._updateTextMargins) self.__rightWidget.sizeHintChanged.connect(self._updateTextMargins) + def setLeftMargin(self, margin): + """ + Public method to set the left margin. + + @param margin left margin in pixel (integer) + """ + self.__leftMargin = margin + + def leftMargin(self): + """ + Public method to get the size of the left margin. + + @return left margin in pixel (integer) + """ + return self.__leftMargin + def event(self, evt): """ Protected method to handle events. @@ -99,22 +129,15 @@ """ if evt.type() == QEvent.LayoutDirectionChange: if self.isRightToLeft(): + self.__mainLayout.setDirection(QBoxLayout.RightToLeft) self.__leftLayout.setDirection(QBoxLayout.RightToLeft) self.__rightLayout.setDirection(QBoxLayout.RightToLeft) else: + self.__mainLayout.setDirection(QBoxLayout.LeftToRight) self.__leftLayout.setDirection(QBoxLayout.LeftToRight) self.__rightLayout.setDirection(QBoxLayout.LeftToRight) return QLineEdit.event(self, evt) - def resizeEvent(self, evt): - """ - Protected method to handle resize events. - - @param evt reference to the resize event (QResizeEvent) - """ - self.__updateSideWidgetLocations() - super().resizeEvent(evt) - def paintEvent(self, evt): """ Protected method handling a paint event. @@ -141,40 +164,18 @@ painter.drawText( textRect, Qt.AlignLeft | Qt.AlignVCenter, self.__inactiveText) - def __updateSideWidgetLocations(self): - """ - Private method to update the side widget locations. - """ - opt = QStyleOptionFrameV2() - self.initStyleOption(opt) - textRect = \ - self.style().subElementRect(QStyle.SE_LineEditContents, opt, self) - textRect.adjust(2, 0, 0, 0) - - left = self.textMargin(self.LeftSide) - - midHeight = textRect.center().y() + 1 - - if self.__leftLayout.count() > 0: - leftHeight = midHeight - self.__leftWidget.height() // 2 - leftWidth = self.__leftWidget.width() - if leftWidth == 0: - leftHeight = midHeight - self.__leftWidget.sizeHint().height() // 2 - self.__leftWidget.move(textRect.x(), leftHeight) - - textRect.setX(left) - textRect.setY(midHeight - self.__rightWidget.sizeHint().height() // 2) - textRect.setHeight(self.__rightWidget.sizeHint().height()) - self.__rightWidget.setGeometry(textRect) - def _updateTextMargins(self): """ Protected slot to update the text margins. """ - left = self.textMargin(self.LeftSide) - right = self.textMargin(self.RightSide) - self.setTextMargins(left, 0, right, 0) - self.__updateSideWidgetLocations() + if self.__leftMargin == 0: + left = self.__leftWidget.sizeHint().width() + else: + left = self.__leftMargin + right = self.__rightWidget.sizeHint().width() + top = 0 + bottom = 0 + self.setTextMargins(left, top, right, bottom) def addWidget(self, widget, position): """