E5Gui/E5SideBar.py

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

eric ide

mercurial