E5Gui/E5SideBar.py

branch
5_1_x
changeset 1414
7d19eb1c0249
parent 1412
c733a118f4ca
child 1429
fa58f95c8976
equal deleted inserted replaced
1412:c733a118f4ca 1414:7d19eb1c0249
56 self.layout.addLayout(self.barLayout) 56 self.layout.addLayout(self.barLayout)
57 self.layout.addWidget(self.__stackedWidget) 57 self.layout.addWidget(self.__stackedWidget)
58 self.setLayout(self.layout) 58 self.setLayout(self.layout)
59 59
60 self.__minimized = False 60 self.__minimized = False
61 self.__minimum = 50
62 self.__minSize = 0 61 self.__minSize = 0
63 self.__maxSize = 0 62 self.__maxSize = 0
64 self.__bigSize = QSize() 63 self.__bigSize = QSize()
65 64
66 self.splitter = None 65 self.splitter = None
130 """ 129 """
131 self.__minimized = False 130 self.__minimized = False
132 self.__stackedWidget.show() 131 self.__stackedWidget.show()
133 self.resize(self.__bigSize) 132 self.resize(self.__bigSize)
134 if self.__orientation in [E5SideBar.North, E5SideBar.South]: 133 if self.__orientation in [E5SideBar.North, E5SideBar.South]:
135 self.setMinimumHeight(max(self.__minSize, self.__minimum)) 134 minSize = max(self.__minSize, self.minimumSizeHint().height())
135 self.setMinimumHeight(minSize)
136 self.setMaximumHeight(self.__maxSize) 136 self.setMaximumHeight(self.__maxSize)
137 else: 137 else:
138 self.setMinimumWidth(max(self.__minSize, self.__minimum)) 138 minSize = max(self.__minSize, self.minimumSizeHint().width())
139 self.setMinimumWidth(minSize)
139 self.setMaximumWidth(self.__maxSize) 140 self.setMaximumWidth(self.__maxSize)
140 if self.splitter: 141 if self.splitter:
142 index = self.splitter.indexOf(self)
143 self.splitterSizes[index] = max(self.splitterSizes[index], minSize+10)
141 self.splitter.setSizes(self.splitterSizes) 144 self.splitter.setSizes(self.splitterSizes)
142 145
143 def isMinimized(self): 146 def isMinimized(self):
144 """ 147 """
145 Public method to check the minimized state. 148 Public method to check the minimized state.
197 (QIcon, string) 200 (QIcon, string)
198 @param label the labeltext of the tab (string) (only to be 201 @param label the labeltext of the tab (string) (only to be
199 used, if the second parameter is a QIcon) 202 used, if the second parameter is a QIcon)
200 """ 203 """
201 if label: 204 if label:
202 self.__tabBar.addTab(iconOrLabel, label) 205 index = self.__tabBar.addTab(iconOrLabel, "")
206 self.__tabBar.setTabToolTip(index, label)
203 else: 207 else:
204 self.__tabBar.addTab(iconOrLabel) 208 self.__tabBar.addTab(iconOrLabel)
205 self.__stackedWidget.addWidget(widget) 209 self.__stackedWidget.addWidget(widget)
206 if self.__orientation in [E5SideBar.North, E5SideBar.South]: 210 if self.__orientation in [E5SideBar.North, E5SideBar.South]:
207 self.__minSize = self.minimumSizeHint().height() 211 self.__minSize = self.minimumSizeHint().height()
218 (QIcon, string) 222 (QIcon, string)
219 @param label the labeltext of the tab (string) (only to be 223 @param label the labeltext of the tab (string) (only to be
220 used, if the second parameter is a QIcon) 224 used, if the second parameter is a QIcon)
221 """ 225 """
222 if label: 226 if label:
223 self.__tabBar.insertTab(index, iconOrLabel, label) 227 self.__tabBar.insertTab(index, iconOrLabel, "")
228 self.__tabBar.setTabToolTip(index, label)
224 else: 229 else:
225 self.__tabBar.insertTab(index, iconOrLabel) 230 self.__tabBar.insertTab(index, iconOrLabel)
226 self.__stackedWidget.insertWidget(index, widget) 231 self.__stackedWidget.insertWidget(index, widget)
227 if self.__orientation in [E5SideBar.North, E5SideBar.South]: 232 if self.__orientation in [E5SideBar.North, E5SideBar.South]:
228 self.__minSize = self.minimumSizeHint().height() 233 self.__minSize = self.minimumSizeHint().height()
500 @return flag indicating success (boolean) 505 @return flag indicating success (boolean)
501 """ 506 """
502 if state.isEmpty(): 507 if state.isEmpty():
503 return False 508 return False
504 509
510 if self.__orientation in [E5SideBar.North, E5SideBar.South]:
511 minSize = self.layout.minimumSize().height()
512 else:
513 minSize = self.layout.minimumSize().width()
514
505 data = QByteArray(state) 515 data = QByteArray(state)
506 stream = QDataStream(data, QIODevice.ReadOnly) 516 stream = QDataStream(data, QIODevice.ReadOnly)
507 stream.readUInt16() # version 517 stream.readUInt16() # version
508 minimized = stream.readBool() 518 minimized = stream.readBool()
509 519
510 if minimized: 520 if minimized:
511 self.shrink() 521 self.shrink()
512 522
513 stream >> self.__bigSize 523 stream >> self.__bigSize
514 self.__minSize = stream.readUInt16() 524 self.__minSize = max(stream.readUInt16(), minSize)
515 self.__maxSize = stream.readUInt16() 525 self.__maxSize = stream.readUInt16()
516 count = stream.readUInt16() 526 count = stream.readUInt16()
517 self.splitterSizes = [] 527 self.splitterSizes = []
518 for i in range(count): 528 for i in range(count):
519 self.splitterSizes.append(stream.readUInt16()) 529 self.splitterSizes.append(stream.readUInt16())
530 if self.splitter:
531 index = self.splitter.indexOf(self)
532 self.splitterSizes[index] = max(self.splitterSizes[index], minSize)
520 533
521 self.__autoHide = stream.readBool() 534 self.__autoHide = stream.readBool()
522 self.__autoHideButton.setChecked(not self.__autoHide) 535 self.__autoHideButton.setChecked(not self.__autoHide)
523 536
524 if not minimized: 537 if not minimized:

eric ide

mercurial