Fixed an issue caused by Qt5.

Sun, 30 Dec 2012 15:47:47 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 30 Dec 2012 15:47:47 +0100
changeset 2293
ec6c1459f5b3
parent 2292
1e29752b51d7
child 2294
d041f6bcda5c

Fixed an issue caused by Qt5.

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.E5Gui.E5LineEdit.html file | annotate | diff | comparison | revisions
E5Gui/E5LineEdit.py file | annotate | diff | comparison | revisions
--- 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()
Binary file Documentation/Help/source.qch has changed
--- 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):
         """

eric ide

mercurial