def create_menu(self, display_wgt, groups, sub_groups, ClientObj): self.display_wgt = display_wgt # create left subgroup menu self.old_title = self._parent.ClientObj._parent.windowTitle() # icon_visible(self._parent.ClientObj.MainWidget, 'Methods', True) icon_visible(self._parent.ClientObj.MainWidget, "Back", True) self.widget = QtGui.QWidget(self) # self.cur_palette = display_wgt._parent.viewport().palette() self.widget.setPalette(self.cur_palette) # self.widget.setStyleSheet("QWidget { background-color: rgb(%s) }" \ # %ClientObj.method_background_color.replace(' ',',',2)) self.widget.setStyleSheet("QWidget { background-color: #EEEEEE;}") self.lable_list = [] self.button_list = {} self.layout = QtGui.QVBoxLayout(self.widget) self.layout.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignHCenter) self.group_name = LabelWordWrap(sub_groups[0].split(".")[0], self) self.group_name.setStyleSheet("QLabel" "{" "border-bottom: 2px outset black;" "border-radius: 3px;" "}") self.group_name.setAlignment(QtCore.Qt.AlignHCenter) self.layout.addWidget(self.group_name) for num in range(len(sub_groups)): if len(sub_groups[num].split(".")) > 1: # try: sub_group = sub_groups[num].split(".")[1] # except (UnicodeDecodeError, UnicodeEncodeError): # pass attrubute_list = [] sub_group_list = [] if self.button_list.has_key(sub_group): attrubute_list = self.button_list[sub_group][0] sub_group_list = self.button_list[sub_group][1] self.button_list[sub_group] = [] param_list = [groups[num * 3], groups[num * 3 + 1], groups[num * 3 + 2]] self.button_list[sub_group].append(attrubute_list + param_list) sub_group_list.append(sub_groups[num].split(".", 1)[1]) self.button_list[sub_group].append(sub_group_list) Button = ButtonMenu(sub_group, sub_group, "folder-documents,folder", self) Button.clicked.connect( display_wgt.groupActivated(self.button_list[sub_group][0], self.button_list[sub_group][1]) ) self.button_list[sub_group].append(Button) continue for i in range(0, len(groups), 3): try: if len(sub_groups[i / 3].split(".")) > 1: continue except IndexError: pass Button = ButtonMenu(groups[i], groups[i + 1], groups[i + 2], self) Button.clicked.connect(self.onActivated) if not self.button_list.has_key(sub_groups[num]): self.button_list[sub_groups[num]] = [] self.button_list[sub_groups[num]].append(Button) for num in range(len(self.button_list)): # add subgroup if len(sub_groups[num].split(".")) > 1: sub_group = sub_groups[num].split(".")[1] self.layout.addWidget(self.button_list[sub_group][len(self.button_list[sub_group]) - 1]) continue # add methos for button in self.button_list[sub_groups[num]]: self.layout.addWidget(button) self.setWidget(self.widget) self.setWidgetResizable(True) # self.setFixedWidth(self.sizeHint().width() + \ # self.verticalScrollBar().sizeHint().width()) self.setFixedWidth(self.sizeHint().width())
def create_steps(self, method_name, steps, icons=None): self.old_title = self._parent.ClientObj._parent.windowTitle() if not hasattr(self, "step"): self.step = 0 # icon_visible(self._parent.ClientObj.MainWidget, 'Methods', True) icon_visible(self._parent.ClientObj.MainWidget, "Back", True) self.widget = QtGui.QWidget(self) self.widget.setPalette(self.cur_palette) # self.widget.setStyleSheet("QWidget { background-color: rgb (%s) }" \ # %self._parent.ClientObj.method_background_color.\ # replace(' ',',',2)) self.widget.setObjectName("QQQ") self.widget.setStyleSheet( "QWidget#QQQ { " # "background-color: #EEEEEE;}") # self.setStyleSheet("QScrollArea { " "background-color: qlineargradient(" "x1: 0, y1: 0, x2: 0, y2: 1, " "stop: 0 #EEEEEE, stop: 0.7 #EEEEEE, " "stop: 0.9 #E4E1E0, stop: 1 #E4E1E0);}" ) self.button_list = [] self.layout = QtGui.QVBoxLayout(self.widget) self.layout.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignHCenter) # self.layout.setContentsMargins(28,28,28,0) self.layout.setContentsMargins(2, 28, 2, 0) self.layout.setSpacing(5) if not icons: icons = [] width_list = [] for num_step in range(len(steps)): self.button_list.append(StepLabel(steps[num_step], self)) # if len(icons) > num_step: # themeName = QtGui.QIcon.themeName() # icon = QtGui.QIcon() # icon.setThemeName(themeName) # icon = icon.fromTheme(icons[num_step]) # if icon.isNull(): # icon.setThemeName('Tango') # icon = icon.fromTheme(icons[num_step]) # if not icon.isNull(): # self.button_list[num_step].setIcon(icon) # collect parameters object self.button_list[num_step].clicked.connect(self.collect_object(method_name, num_step)) # call function (or check parameters) self.button_list[num_step].clicked.connect(self.calling_method(method_name, num_step)) # self.button_list[num_step].clicked.connect \ # (self.check_step(method_name, num_step)) # calculate button width fmn = QtGui.QFontMetrics(QtGui.QFont("", -1, QtGui.QFont.Normal)) normal_width = fmn.width(self.button_list[num_step].text()) fmb = QtGui.QFontMetrics(QtGui.QFont("", -1, QtGui.QFont.Bold)) bold_width = fmb.width(self.button_list[num_step].text()) diff = bold_width - normal_width + 6 # self.button_list[num_step].setFixedWidth \ # (self.button_list[num_step].sizeHint().width() + diff) width_list.append(self.button_list[num_step].sizeHint().width() + diff) self.layout.addWidget(self.button_list[num_step]) if width_list: width_list.sort() max_width = width_list.pop() else: max_width = 0 for num_step in range(len(steps)): self.button_list[num_step].setFixedWidth(max_width) # set bold button self.changed_step(self._parent.ClientObj.param_objects[method_name]["step"]) # self.layout.addItem(QtGui.QSpacerItem(100, 100, \ # QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)) self.setWidget(self.widget) self.setWidgetResizable(True) self.setFixedWidth(self.sizeHint().width()) # + \ # self.verticalScrollBar().sizeHint().width()) if not self.isVisible(): self.show()