Ejemplo n.º 1
0
    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())
Ejemplo n.º 2
0
    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()