def __init__(self, html, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_SearchResultsDialog()
        self.ui.setupUi(self)

        self.html = html
        self.canceled = False

        self.importing = None
        self.pending_selected = None

        self.initializeUi()
        self.setupSignals()
class SearchResultsController(QtGui.QDialog):
    # UI and signal setup
    def __init__(self, html, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_SearchResultsDialog()
        self.ui.setupUi(self)

        self.html = html
        self.canceled = False

        self.importing = None
        self.pending_selected = None

        self.initializeUi()
        self.setupSignals()

    def initializeUi(self):
        # search results
        html = str(self.html)
        systems = []
        names = []
        urls = []
        doc = fromstring(html)
        el = doc.xpath("//table[@class='results']")
        for table in el:
            rows = table.getchildren()[2:]
            for row in rows:
                system = row.getchildren()[0].text.strip()
                if system == "":
                    system = systems[-1]
                systems.append(system)
                names.append(row.getchildren()[1].findtext("a"))
                urls.append(GAMEFAQS_URL + row.getchildren()[1].getchildren()[0].attrib["href"])

        # Displaying search results
        model = QStandardItemModel()
        if len(systems) > 0:
            for i in range(0, len(systems)):
                item = QStandardItem("(" + systems[i] + ") " + names[i])
                item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
                item.setData(Qt.Unchecked, Qt.CheckStateRole)
                model.appendRow(item)
            model.itemChanged.connect(self.on_item_changed)
        else:
            item = QStandardItem("No game was found")
            model.appendRow(item)
        self.ui.listViewGames.setModel(model)

        self.urls = urls
        self.checked = 0
        self.ui.pushButtonOk.setEnabled(False)

    def setupSignals(self):
        self.ui.pushButtonOk.clicked.connect(self.okClicked)
        self.ui.pushButtonCancel.clicked.connect(self.cancelClicked)

        # Signal slots

    def okClicked(self):
        self.close()

    def cancelClicked(self):
        self.close()
        self.canceled = True

    # Modification of the behaviour of the items, so they behave like radio buttons
    def on_item_changed(self, item):
        if item.checkState() == QtCore.Qt.Checked:
            self.checked = self.checked + 1
            if self.checked == 1:
                self.ui.pushButtonOk.setEnabled(True)
        else:
            self.checked = self.checked - 1
            if self.checked == 0:
                self.ui.pushButtonOk.setEnabled(False)

    def get_search_results(self):
        selected = []
        if not self.canceled:
            model = self.ui.listViewGames.model()
            for index in range(model.rowCount()):
                item = model.item(index)
                if item.isCheckable() and item.checkState() == QtCore.Qt.Checked:
                    selected.append(self.urls[index])

        return selected