'Add a stack for a given scheme and connects the CONF values.'

def add_color_scheme_stack(self, scheme_name, custom=False):

    color_scheme_groups = [(_('Text'), ['normal', 'comment', 'string', 'number', 'keyword', 'builtin', 'definition', 'instance']), (_('Highlight'), ['currentcell', 'currentline', 'occurrence', 'matched_p', 'unmatched_p', 'ctrlclick']), (_('Background'), ['background', 'sideareas'])]
    parent = self.parent
    line_edit = parent.create_lineedit(_('Scheme    name:'), '{0}/name'.format(scheme_name))
    self.widgets[scheme_name] = {}
    line_edit.label.setAlignment((Qt.AlignRight | Qt.AlignVCenter))
    self.setWindowTitle(_('Color    scheme    editor'))
    name_layout = QHBoxLayout()
    name_layout.addWidget(line_edit.label)
    name_layout.addWidget(line_edit.textbox)
    self.scheme_name_textbox[scheme_name] = line_edit.textbox
    if (not custom):
        line_edit.textbox.setDisabled(True)
    cs_layout = QVBoxLayout()
    cs_layout.addLayout(name_layout)
    h_layout = QHBoxLayout()
    v_layout = QVBoxLayout()
    for (index, item) in enumerate(color_scheme_groups):
        (group_name, keys) = item
        group_layout = QGridLayout()
        for (row, key) in enumerate(keys):
            option = '{0}/{1}'.format(scheme_name, key)
            value = self.parent.get_option(option)
            name = syntaxhighlighters.COLOR_SCHEME_KEYS[key]
            if is_text_string(value):
                (label, clayout) = parent.create_coloredit(name, option, without_layout=True)
                label.setAlignment((Qt.AlignRight | Qt.AlignVCenter))
                group_layout.addWidget(label, (row + 1), 0)
                group_layout.addLayout(clayout, (row + 1), 1)
                self.widgets[scheme_name][key] = [clayout]
            else:
                (label, clayout, cb_bold, cb_italic) = parent.create_scedit(name, option, without_layout=True)
                label.setAlignment((Qt.AlignRight | Qt.AlignVCenter))
                group_layout.addWidget(label, (row + 1), 0)
                group_layout.addLayout(clayout, (row + 1), 1)
                group_layout.addWidget(cb_bold, (row + 1), 2)
                group_layout.addWidget(cb_italic, (row + 1), 3)
                self.widgets[scheme_name][key] = [clayout, cb_bold, cb_italic]
        group_box = QGroupBox(group_name)
        group_box.setLayout(group_layout)
        if (index == 0):
            h_layout.addWidget(group_box)
        else:
            v_layout.addWidget(group_box)
    h_layout.addLayout(v_layout)
    cs_layout.addLayout(h_layout)
    stackitem = QWidget()
    stackitem.setLayout(cs_layout)
    self.stack.addWidget(stackitem)
    self.order.append(scheme_name)
