def __init__(self, parent, selected_module_ids, selected_connection_ids,
                 scene):
        """ QControlFlowAssistDialog(selected_module_ids: list,
                                     selected_connection_ids: list,
                                     scene: QGraphicsScene)
                                     -> None
        Creates the control flow assistant dialog
        
        """

        # FIXME do this here to avoid circular refs
        from pipeline_view_select import QReadOnlyPortSelectPipelineView

        QtGui.QDialog.__init__(self, parent)
        self.module_ids = selected_module_ids
        self.connection_ids = selected_connection_ids

        self.setWindowTitle('Control Flow Assistant')
        layout = QtGui.QVBoxLayout(self)
        self.setLayout(layout)

        # Add instruction label
        self.instructionLabel = QtGui.QLabel(
            'Select one or more Input Ports to receive Lists, and one Output Port to produce a List'
        )
        layout.addWidget(self.instructionLabel)

        # Add pipeline view
        self.pipelineView = QReadOnlyPortSelectPipelineView(
            self, scene, True, selected_module_ids)
        self.controller = self.pipelineView.scene().controller
        layout.addWidget(self.pipelineView)

        self.enablePackage()

        # Add ok/cancel buttons
        buttonLayout = QtGui.QHBoxLayout()
        buttonLayout.setMargin(5)
        self.okButton = QtGui.QPushButton('&OK', self)
        self.okButton.setAutoDefault(False)
        self.okButton.setFixedWidth(100)
        buttonLayout.addWidget(self.okButton)
        self.cancelButton = QtGui.QPushButton('&Cancel', self)
        self.cancelButton.setAutoDefault(False)
        self.cancelButton.setShortcut('Esc')
        self.cancelButton.setFixedWidth(100)
        buttonLayout.addWidget(self.cancelButton)
        layout.addLayout(buttonLayout)
        self.connect(self.okButton, QtCore.SIGNAL('clicked(bool)'),
                     self.okClicked)
        self.connect(self.cancelButton, QtCore.SIGNAL('clicked(bool)'),
                     self.close)