Esempio n. 1
0
    def updateUi(self):
        #UPDATE MAINWINDOW UI WITH DATA FROM ALL DATA STRUCTURES
        if not self.loggedIn:
            return

        self.tabWidget.setEnabled(True)
        self.inbox = json.loads(
            MM_util.bm.getAllInboxMessages())['inboxMessages']

        chanMsgs = []
        for msg in self.inbox:
            subject = base64.b64decode(msg['subject'])
            if subject not in ('Msg', 'MultiMsg') and \
                    msg['toAddress'] in ( self.chan_v3, self.chan_v4 ):
                chanMsgs.append(msg)

        self.do_processinbox()
        self.loadLists()

        # Update 'Channel' Tab:
        self.chanGroupBox.setTitle("Channel: %s" % self.channame)
        # Join Chan if not already?
        numChanMsgs = len(chanMsgs)
        self.chanTableWidget.setRowCount(numChanMsgs)

        for i in range(numChanMsgs):
            subject = base64.b64decode(chanMsgs[i]['subject'])
            msgid = chanMsgs[i]['msgid']
            self.chanTableWidget.setItem(i, 0, QTableWidgetItem(subject))
            self.chanTableWidget.setItem(i, 1, QTableWidgetItem(msgid))

        # Update 'Markets' Tab:
        marketlist = self.listDict['market']
        numMarkets = len(marketlist)
        self.marketTableWidget.setRowCount(numMarkets)

        for i in range(numMarkets):
            self.marketTableWidget.setItem(
                i, 0, QTableWidgetItem(marketlist[i].obj['marketname']))
            self.marketTableWidget.setItem(
                i, 1, QTableWidgetItem(marketlist[i].obj['description']))
            self.marketTableWidget.setItem(
                i, 2, QTableWidgetItem(marketlist[i].hash))

        # Update 'Offers' Tab:
        if self.currentTag:
            self.offerGroupBox.setTitle( \
                    "Available Offers: Filtered for '%s'" % self.currentTag.obj['tagname'])
        else:
            self.offerGroupBox.setTitle("Available Offers:")
        self.populateMktBox(self.offerMktComboBox, self.searchText)

        if self.offerMktComboBox.count() <= 0:
            self.currentMarket = None

        if self.currentMarket:
            offerlist = self.listDict['offer']
            currentOffers = []

            for offer in offerlist:
                if offer.obj['markethash'] == self.currentMarket.hash:
                    if not self.currentTag or self.currentTag.hash in offer.obj[
                            'tags']:
                        currentOffers.append(offer)

            numOffers = len(currentOffers)
            self.offerTableWidget.setRowCount(numOffers)

            for i in range(numOffers):
                self.offerTableWidget.setItem(
                    i, 0, QTableWidgetItem(currentOffers[i].obj['name']))
                self.offerTableWidget.setItem(
                    i, 1, QTableWidgetItem(currentOffers[i].obj['locale']))
                self.offerTableWidget.setItem(
                    i, 2, QTableWidgetItem(currentOffers[i].obj['amount']))
                self.offerTableWidget.setItem(
                    i, 3, QTableWidgetItem(currentOffers[i].obj['price']))
                self.offerTableWidget.setItem(
                    i, 4, QTableWidgetItem(currentOffers[i].hash))
        else:
            self.offerTableWidget.clearContents()
            self.offerTableWidget.setRowCount(0)

        # Update 'Orders' Tab:
        index = self.indexFromOrderStatus()
        msgList = self.listDict[index]
        numMsgs = len(msgList)
        self.orderTableWidget.setRowCount(numMsgs)

        isCancelable = index in ('order', 'conf')
        self.orderCancelButton.setEnabled(isCancelable)

        for i in range(numMsgs):
            obj = msgList[i]
            msgstr = open(os.path.join('msg', obj.hash + '.dat'), 'r').read()
            offer = self.do_offerfromordermsg(obj)

            self.orderTableWidget.setItem(i, 0,
                                          QTableWidgetItem(offer.obj["name"]))
            self.orderTableWidget.setItem(
                i, 1, QTableWidgetItem(offer.obj["locale"]))
            self.orderTableWidget.setItem(
                i, 2, QTableWidgetItem(offer.obj["amount"]))
            self.orderTableWidget.setItem(i, 3,
                                          QTableWidgetItem(offer.obj["price"]))
            self.orderTableWidget.setItem(i, 4, QTableWidgetItem(obj.hash))
            self.orderTableWidget.setItem(i, 5, QTableWidgetItem(offer.hash))

        # Update 'Identities' Tab:
        self.setWindowTitle("METAbuyer-Qt [%s]" % self.username)
        self.identMyidLabel.setText("ID Hash: %s" % self.myid.hash)
        self.identBtcaddrLabel.setText("BTC Address: %s" % self.btcaddr)
        self.identBmaddrLabel.setText("BM Address: %s" % self.bmaddr)

        self.populateMktBox(self.identMktComboBox, self.searchText)

        if self.currentMarket:
            reglist = self.listDict['reg']
            registered = False
            for reg in reglist:
                if reg.obj['modid'] == self.currentMarket.obj['modid'] and \
                        reg.obj['userid'] == self.myid.hash:
                    registered = True
                    break
            self.identRegButton.setEnabled(not registered)
            self.identBurnButton.setEnabled(True)

            identlist = self.listDict['ident']
            numIdents = len(identlist)
            self.identTableWidget.setRowCount(numIdents)

            for i in range(numIdents):
                id = identlist[i]
                rep = MM_util.getrep(id.hash, decimal.Decimal(self.currentMarket.obj['multiplier']), \
                                        self.listDict['feedback'], self.listDict['burn'])

                self.identTableWidget.setItem(i, 0,
                                              QTableWidgetItem(id.obj['name']))
                self.identTableWidget.setItem(i, 1,
                                              QTableWidgetItem("%d" % rep))
                self.identTableWidget.setItem(i, 2, QTableWidgetItem(id.hash))
        else:
            self.identTableWidget.clearContents()
            self.identTableWidget.setRowCount(0)
            self.identRegButton.setEnabled(False)
            self.identBurnButton.setEnabled(False)