def __init__(self, parent): QtGui.QWidget.__init__(self, parent) uic.loadUi(uic.getUiPath('tradepage.ui'), self) wallet.p2ptrade_init() self.timer = QtCore.QTimer() self.timer.timeout.connect(self.update_offers) self.timer.start(2500) self.modelBuy = OffersTableModel(self) self.proxyModelBuy = OffersProxyModel(self) self.proxyModelBuy.setSourceModel(self.modelBuy) self.proxyModelBuy.setDynamicSortFilter(True) self.proxyModelBuy.setSortCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxyModelBuy.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.tvBuy.setModel(self.proxyModelBuy) self.tvBuy.hideColumn(3) self.tvBuy.sortByColumn(0, QtCore.Qt.AscendingOrder) self.tvBuy.horizontalHeader().setResizeMode( 0, QtGui.QHeaderView.Stretch) self.tvBuy.horizontalHeader().setResizeMode( 1, QtGui.QHeaderView.ResizeToContents) self.modelSell = OffersTableModel(self) self.proxyModelSell = OffersProxyModel(self) self.proxyModelSell.setSourceModel(self.modelSell) self.proxyModelSell.setDynamicSortFilter(True) self.proxyModelSell.setSortCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxyModelSell.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.tvSell.setModel(self.proxyModelSell) self.tvSell.hideColumn(3) self.tvSell.sortByColumn(0, QtCore.Qt.AscendingOrder) self.tvSell.horizontalHeader().setResizeMode( 0, QtGui.QHeaderView.Stretch) self.tvSell.horizontalHeader().setResizeMode( 1, QtGui.QHeaderView.ResizeToContents) self.cbMoniker.currentIndexChanged.connect(self.cbMonikerIndexChanged) for wname in ['edtBuyQuantity', 'edtBuyPrice', 'edtSellQuantity', 'edtSellPrice']: getattr(self, wname).focusInEvent = \ lambda e, name=wname: getattr(self, name).setStyleSheet('') self.edtBuyQuantity.textChanged.connect(self.lblBuyTotalChange) self.edtBuyPrice.textChanged.connect(self.lblBuyTotalChange) self.btnBuy.clicked.connect(self.btnBuyClicked) self.tvBuy.doubleClicked.connect(self.tvBuyDoubleClicked) self.edtSellQuantity.textChanged.connect(self.lblSellTotalChange) self.edtSellPrice.textChanged.connect(self.lblSellTotalChange) self.btnSell.clicked.connect(self.btnSellClicked) self.tvSell.doubleClicked.connect(self.tvSellDoubleClicked)
def __init__(self, parent): QtGui.QWidget.__init__(self, parent) uic.loadUi(uic.getUiPath('tradepage.ui'), self) wallet.p2ptrade_init() self.timer = QtCore.QTimer() self.timer.timeout.connect(self.update_agent) self.timer.start(2500) self.modelBuy = OffersTableModel(self) self.proxyModelBuy = OffersProxyModel(self) self.proxyModelBuy.setSourceModel(self.modelBuy) self.proxyModelBuy.setDynamicSortFilter(True) self.proxyModelBuy.setSortCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxyModelBuy.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.tvBuy.setModel(self.proxyModelBuy) self.tvBuy.hideColumn(3) self.tvBuy.sortByColumn(0, QtCore.Qt.AscendingOrder) self.tvBuy.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.Stretch) self.tvBuy.horizontalHeader().setResizeMode( 1, QtGui.QHeaderView.ResizeToContents) self.modelSell = OffersTableModel(self) self.proxyModelSell = OffersProxyModel(self) self.proxyModelSell.setSourceModel(self.modelSell) self.proxyModelSell.setDynamicSortFilter(True) self.proxyModelSell.setSortCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxyModelSell.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.tvSell.setModel(self.proxyModelSell) self.tvSell.hideColumn(3) self.tvSell.sortByColumn(0, QtCore.Qt.AscendingOrder) self.tvSell.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.Stretch) self.tvSell.horizontalHeader().setResizeMode( 1, QtGui.QHeaderView.ResizeToContents) self.cbMoniker.currentIndexChanged.connect(self.cbMonikerIndexChanged) for wname in [ 'edtBuyQuantity', 'edtBuyPrice', 'edtSellQuantity', 'edtSellPrice' ]: def clearBackground(event, wname=wname): getattr(self, wname).setStyleSheet('') QtGui.QLineEdit.focusInEvent(getattr(self, wname), event) getattr(self, wname).focusInEvent = clearBackground self.edtBuyQuantity.textChanged.connect(self.lblBuyTotalChange) self.edtBuyPrice.textChanged.connect(self.lblBuyTotalChange) self.btnBuy.clicked.connect(self.btnBuyClicked) self.tvBuy.doubleClicked.connect(self.tvBuyDoubleClicked) self.edtSellQuantity.textChanged.connect(self.lblSellTotalChange) self.edtSellPrice.textChanged.connect(self.lblSellTotalChange) self.btnSell.clicked.connect(self.btnSellClicked) self.tvSell.doubleClicked.connect(self.tvSellDoubleClicked) self.need_update_offers = False def set_need_update_offers(data): self.need_update_offers = True wallet.p2p_agent.set_event_handler('offers_updated', set_need_update_offers)
def __init__(self, parent): QtGui.QWidget.__init__(self, parent) uic.loadUi(uic.getUiPath('tradepage.ui'), self) wallet.p2ptrade_init() self.timer = QtCore.QTimer() self.timer.timeout.connect(self.update_agent) self.timer.start(2500) self.modelBuy = OffersTableModel(self) self.proxyModelBuy = OffersProxyModel(self) self.proxyModelBuy.setSourceModel(self.modelBuy) self.proxyModelBuy.setDynamicSortFilter(True) self.proxyModelBuy.setSortCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxyModelBuy.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.tvBuy.setModel(self.proxyModelBuy) self.tvBuy.hideColumn(3) self.tvBuy.sortByColumn(0, QtCore.Qt.AscendingOrder) self.tvBuy.horizontalHeader().setResizeMode( 0, QtGui.QHeaderView.Stretch) self.tvBuy.horizontalHeader().setResizeMode( 1, QtGui.QHeaderView.ResizeToContents) self.modelSell = OffersTableModel(self) self.proxyModelSell = OffersProxyModel(self) self.proxyModelSell.setSourceModel(self.modelSell) self.proxyModelSell.setDynamicSortFilter(True) self.proxyModelSell.setSortCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxyModelSell.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.tvSell.setModel(self.proxyModelSell) self.tvSell.hideColumn(3) self.tvSell.sortByColumn(0, QtCore.Qt.AscendingOrder) self.tvSell.horizontalHeader().setResizeMode( 0, QtGui.QHeaderView.Stretch) self.tvSell.horizontalHeader().setResizeMode( 1, QtGui.QHeaderView.ResizeToContents) self.cbMoniker.currentIndexChanged.connect(self.cbMonikerIndexChanged) for wname in ['edtBuyQuantity', 'edtBuyPrice', 'edtSellQuantity', 'edtSellPrice']: def clearBackground(event, wname=wname): getattr(self, wname).setStyleSheet('') QtGui.QLineEdit.focusInEvent(getattr(self, wname), event) getattr(self, wname).focusInEvent = clearBackground self.edtBuyQuantity.textChanged.connect(self.lblBuyTotalChange) self.edtBuyPrice.textChanged.connect(self.lblBuyTotalChange) self.btnBuy.clicked.connect(self.btnBuyClicked) self.tvBuy.doubleClicked.connect(self.tvBuyDoubleClicked) self.edtSellQuantity.textChanged.connect(self.lblSellTotalChange) self.edtSellPrice.textChanged.connect(self.lblSellTotalChange) self.btnSell.clicked.connect(self.btnSellClicked) self.tvSell.doubleClicked.connect(self.tvSellDoubleClicked) self.need_update_offers = False def set_need_update_offers(data): self.need_update_offers = True wallet.p2p_agent.set_event_handler('offers_updated', set_need_update_offers) def information_about_offer(offer, action='Create'): A, B = offer.get_data()['A'], offer.get_data()['B'] bitcoin = wallet.get_asset_definition('bitcoin') sell_offer = B['color_spec'] == '' asset = wallet.get_asset_definition_by_color_set( (A if sell_offer else B)['color_spec']) value = (A if sell_offer else B)['value'] total = (B if sell_offer else A)['value'] text = '{action} {type} offer {value} {moniker} for {price} btc. (Total: {total} btc)'.format(**{ 'action': action, 'type': 'sell' if sell_offer else 'buy', 'value': asset.format_value(value), 'moniker': asset.get_monikers()[0], 'price': bitcoin.format_value(total*asset.unit/value), 'total': bitcoin.format_value(total), }) QtGui.QMessageBox.information(self, '{action} offer'.format(action=action), text, QtGui.QMessageBox.Yes) wallet.p2p_agent.set_event_handler('register_my_offer', lambda offer: information_about_offer(offer, 'Create')) wallet.p2p_agent.set_event_handler('cancel_my_offer', lambda offer: information_about_offer(offer, 'Cancel'))
def __init__(self, parent): QtGui.QWidget.__init__(self, parent) uic.loadUi(uic.getUiPath('tradepage.ui'), self) wallet.p2ptrade_init() self.timer = QtCore.QTimer() self.timer.timeout.connect(self.update_agent) self.timer.start(2500) self.modelBuy = OffersTableModel(self) self.proxyModelBuy = OffersProxyModel(self) self.proxyModelBuy.setSourceModel(self.modelBuy) self.proxyModelBuy.setDynamicSortFilter(True) self.proxyModelBuy.setSortCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxyModelBuy.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.tvBuy.setModel(self.proxyModelBuy) self.tvBuy.hideColumn(3) self.tvBuy.sortByColumn(0, QtCore.Qt.AscendingOrder) self.tvBuy.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.Stretch) self.tvBuy.horizontalHeader().setResizeMode( 1, QtGui.QHeaderView.ResizeToContents) self.modelSell = OffersTableModel(self) self.proxyModelSell = OffersProxyModel(self) self.proxyModelSell.setSourceModel(self.modelSell) self.proxyModelSell.setDynamicSortFilter(True) self.proxyModelSell.setSortCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxyModelSell.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.tvSell.setModel(self.proxyModelSell) self.tvSell.hideColumn(3) self.tvSell.sortByColumn(0, QtCore.Qt.AscendingOrder) self.tvSell.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.Stretch) self.tvSell.horizontalHeader().setResizeMode( 1, QtGui.QHeaderView.ResizeToContents) self.cbMoniker.currentIndexChanged.connect(self.cbMonikerIndexChanged) for wname in [ 'edtBuyQuantity', 'edtBuyPrice', 'edtSellQuantity', 'edtSellPrice' ]: def clearBackground(event, wname=wname): getattr(self, wname).setStyleSheet('') QtGui.QLineEdit.focusInEvent(getattr(self, wname), event) getattr(self, wname).focusInEvent = clearBackground self.edtBuyQuantity.textChanged.connect(self.lblBuyTotalChange) self.edtBuyPrice.textChanged.connect(self.lblBuyTotalChange) self.btnBuy.clicked.connect(self.btnBuyClicked) self.tvBuy.doubleClicked.connect(self.tvBuyDoubleClicked) self.edtSellQuantity.textChanged.connect(self.lblSellTotalChange) self.edtSellPrice.textChanged.connect(self.lblSellTotalChange) self.btnSell.clicked.connect(self.btnSellClicked) self.tvSell.doubleClicked.connect(self.tvSellDoubleClicked) self.need_update_offers = False def set_need_update_offers(data): self.need_update_offers = True wallet.p2p_agent.set_event_handler('offers_updated', set_need_update_offers) def information_about_offer(offer, action='Create'): A, B = offer.get_data()['A'], offer.get_data()['B'] bitcoin = wallet.get_asset_definition('bitcoin') sell_offer = B['color_spec'] == '' asset = wallet.get_asset_definition_by_color_set( (A if sell_offer else B)['color_spec']) value = (A if sell_offer else B)['value'] total = (B if sell_offer else A)['value'] text = '{action} {type} offer {value} {moniker} for {price} btc. (Total: {total} btc)'.format( **{ 'action': action, 'type': 'sell' if sell_offer else 'buy', 'value': asset.format_value(value), 'moniker': asset.get_monikers()[0], 'price': bitcoin.format_value(total * asset.unit / value), 'total': bitcoin.format_value(total), }) QtGui.QMessageBox.information( self, '{action} offer'.format(action=action), text, QtGui.QMessageBox.Yes) wallet.p2p_agent.set_event_handler( 'register_my_offer', lambda offer: information_about_offer(offer, 'Create')) wallet.p2p_agent.set_event_handler( 'cancel_my_offer', lambda offer: information_about_offer(offer, 'Cancel'))
def __init__(self, parent): QtGui.QWidget.__init__(self, parent) uic.loadUi(uic.getUiPath('tradepage.ui'), self) self.logger = logging.getLogger('ngcccbase.ui.trade') wallet.p2ptrade_init() self.timer = QtCore.QTimer() self.timer.timeout.connect(self.update_agent) self.timer.start(2500) self.modelBuy = OffersTableModel(self) self.proxyModelBuy = OffersProxyModel(self) self.proxyModelBuy.setSourceModel(self.modelBuy) self.proxyModelBuy.setDynamicSortFilter(True) self.proxyModelBuy.setSortCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxyModelBuy.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.tvBuy.setModel(self.proxyModelBuy) self.tvBuy.hideColumn(3) self.tvBuy.sortByColumn(0, QtCore.Qt.AscendingOrder) self.tvBuy.horizontalHeader().setResizeMode( 0, QtGui.QHeaderView.Stretch) self.tvBuy.horizontalHeader().setResizeMode( 1, QtGui.QHeaderView.ResizeToContents) self.modelSell = OffersTableModel(self) self.proxyModelSell = OffersProxyModel(self) self.proxyModelSell.setSourceModel(self.modelSell) self.proxyModelSell.setDynamicSortFilter(True) self.proxyModelSell.setSortCaseSensitivity(QtCore.Qt.CaseInsensitive) self.proxyModelSell.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.tvSell.setModel(self.proxyModelSell) self.tvSell.hideColumn(3) self.tvSell.sortByColumn(0, QtCore.Qt.AscendingOrder) self.tvSell.horizontalHeader().setResizeMode( 0, QtGui.QHeaderView.Stretch) self.tvSell.horizontalHeader().setResizeMode( 1, QtGui.QHeaderView.ResizeToContents) self.cbMoniker.currentIndexChanged.connect(self.update_balance) for wname in ['edtBuyQuantity', 'edtBuyPrice', 'edtSellQuantity', 'edtSellPrice']: def clearBackground(event, wname=wname): getattr(self, wname).setStyleSheet('') QtGui.QLineEdit.focusInEvent(getattr(self, wname), event) getattr(self, wname).focusInEvent = clearBackground self.edtBuyQuantity.textChanged.connect(self.lblBuyTotalChange) self.edtBuyPrice.textChanged.connect(self.lblBuyTotalChange) self.btnBuy.clicked.connect(self.btnBuyClicked) self.tvBuy.doubleClicked.connect(self.tvBuyDoubleClicked) self.edtSellQuantity.textChanged.connect(self.lblSellTotalChange) self.edtSellPrice.textChanged.connect(self.lblSellTotalChange) self.btnSell.clicked.connect(self.btnSellClicked) self.tvSell.doubleClicked.connect(self.tvSellDoubleClicked) self.need_update_offers = False def set_need_update_offers(data): self.need_update_offers = True wallet.p2p_agent.set_event_handler('offers_updated', set_need_update_offers) def information_about_offer(offer, action, buysell_text): A, B = offer.get_data()['A'], offer.get_data()['B'] bitcoin = wallet.get_asset_definition('bitcoin') sell_offer = B['color_spec'] == '' asset = wallet.get_asset_definition_by_color_set( (A if sell_offer else B)['color_spec']) value = (A if sell_offer else B)['value'] total = (B if sell_offer else A)['value'] if not value: return # division by zero text = '{action} {type} {value} {moniker} @{price} btc ea. (Total: {total} btc)'.format(**{ 'action': action, 'type': buysell_text[sell_offer], 'value': asset.format_value(value), 'moniker': asset.get_monikers()[0], 'price': bitcoin.format_value(total*asset.unit/value), 'total': bitcoin.format_value(total), }) self.add_log_entry(text) wallet.p2p_agent.set_event_handler( 'register_my_offer', lambda offer: information_about_offer(offer, 'Created', ("bid", "ask"))) wallet.p2p_agent.set_event_handler( 'cancel_my_offer', lambda offer: information_about_offer(offer, 'Canceled', ("bid", "ask"))) wallet.p2p_agent.set_event_handler( 'make_ep', lambda ep: information_about_offer(ep.my_offer, 'In progress', ('buying', 'selling'))) wallet.p2p_agent.set_event_handler( 'accept_ep', lambda eps: information_about_offer(eps[1].my_offer, 'In progress', ('buying', 'selling'))) def on_trade_complete(ep): information_about_offer(ep.my_offer, 'Trade complete:', ('bought', 'sold')) self.update_balance() wallet.p2p_agent.set_event_handler('trade_complete', on_trade_complete)