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)