mastercoin-wallet 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +4 -2
- data/Gemfile.lock +38 -15
- data/Makefile +13 -1
- data/README.rdoc +7 -2
- data/Rakefile +19 -0
- data/VERSION +1 -1
- data/bin/mastercoin-wallet +1 -1
- data/lib/mastercoin-wallet/builder.rb +254 -0
- data/lib/mastercoin-wallet/gui/bitcoin_offer_window.rb +50 -0
- data/lib/mastercoin-wallet/gui/bitcoin_offer_window.ui +121 -0
- data/lib/mastercoin-wallet/gui/main_window.rb +160 -34
- data/lib/mastercoin-wallet/gui/main_window.ui +356 -0
- data/lib/mastercoin-wallet/gui/purchase_offer_window.rb +60 -0
- data/lib/mastercoin-wallet/gui/purchase_offer_window.ui +142 -0
- data/lib/mastercoin-wallet/gui/selling_offer_window.rb +60 -0
- data/lib/mastercoin-wallet/gui/selling_offer_window.ui +154 -0
- data/lib/mastercoin-wallet/gui/simple_send_window.rb +6 -120
- data/lib/mastercoin-wallet/gui/simple_send_window.ui +7 -0
- data/lib/mastercoin-wallet/gui/ui_bitcoin_offer.rb +113 -0
- data/lib/mastercoin-wallet/gui/ui_main.rb +167 -0
- data/lib/mastercoin-wallet/gui/ui_purchase_offer.rb +140 -0
- data/lib/mastercoin-wallet/gui/ui_selling_offer.rb +155 -0
- data/lib/mastercoin-wallet/gui/ui_simple_send.rb +5 -1
- data/lib/mastercoin-wallet/models/selling_offer.rb +18 -0
- data/lib/mastercoin-wallet/network/selling_offer.rb +15 -0
- data/lib/mastercoin-wallet/network/wallet.rb +32 -0
- data/lib/mastercoin-wallet.rb +27 -4
- data/mastercoin-wallet.gemspec +30 -9
- data/resources/logo.icns +0 -0
- metadata +55 -8
- data/lib/mastercoin-wallet/network.rb +0 -34
@@ -0,0 +1,50 @@
|
|
1
|
+
module MastercoinWallet
|
2
|
+
class BitcoinOfferWindow < Qt::Dialog
|
3
|
+
include Bitcoin::Builder
|
4
|
+
include MastercoinWallet::Builder
|
5
|
+
|
6
|
+
slots 'send_transaction()'
|
7
|
+
|
8
|
+
def initialize(parent=nil, options)
|
9
|
+
super(parent)
|
10
|
+
|
11
|
+
@ui = Ui_BitcoinOffer.new
|
12
|
+
@ui.setupUi(self)
|
13
|
+
|
14
|
+
@amount_input = findChild(Qt::LineEdit, "amountInput")
|
15
|
+
@password_input = findChild(Qt::LineEdit, "passwordInput")
|
16
|
+
@address_input = findChild(Qt::LineEdit, "addressInput")
|
17
|
+
|
18
|
+
@amount_input.text = options[:bitcoin_amount] if options.has_key?(:bitcoin_amount)
|
19
|
+
@address_input.text = options[:address] if options.has_key?(:address)
|
20
|
+
|
21
|
+
@submit = findChild(Qt::PushButton, "submit_button")
|
22
|
+
|
23
|
+
@amount_input.validator = Qt::DoubleValidator.new(0.00000001, 10000,8, @amount_input)
|
24
|
+
|
25
|
+
@submit.enabled = true
|
26
|
+
|
27
|
+
connect(@submit, SIGNAL('clicked()'), self, SLOT('send_transaction()'))
|
28
|
+
end
|
29
|
+
|
30
|
+
def send_transaction
|
31
|
+
@amount = @amount_input.text()
|
32
|
+
@receiving_address = @address_input.text()
|
33
|
+
@password = @password_input.text()
|
34
|
+
|
35
|
+
unless Bitcoin::valid_address?(@receiving_address)
|
36
|
+
Qt::MessageBox.critical(self, tr("Invalid address"),
|
37
|
+
tr("Please fill in a valid Bitcoin/Mastercoin address"))
|
38
|
+
end
|
39
|
+
|
40
|
+
unless @receiving_address.empty? || @amount.empty? || @password.empty?
|
41
|
+
create_bitcoin_transaction_for(@amount)
|
42
|
+
close()
|
43
|
+
else
|
44
|
+
Qt::MessageBox.critical(self, tr("Invalid form"),
|
45
|
+
tr("Please fill in all required inputs"))
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ui version="4.0">
|
3
|
+
<class>BitcoinOffer</class>
|
4
|
+
<widget class="QDialog" name="BitcoinOffer">
|
5
|
+
<property name="geometry">
|
6
|
+
<rect>
|
7
|
+
<x>0</x>
|
8
|
+
<y>0</y>
|
9
|
+
<width>534</width>
|
10
|
+
<height>238</height>
|
11
|
+
</rect>
|
12
|
+
</property>
|
13
|
+
<property name="windowTitle">
|
14
|
+
<string>New Purchase Offer</string>
|
15
|
+
</property>
|
16
|
+
<widget class="QWidget" name="verticalLayoutWidget">
|
17
|
+
<property name="geometry">
|
18
|
+
<rect>
|
19
|
+
<x>9</x>
|
20
|
+
<y>39</y>
|
21
|
+
<width>518</width>
|
22
|
+
<height>148</height>
|
23
|
+
</rect>
|
24
|
+
</property>
|
25
|
+
<layout class="QVBoxLayout" name="verticalLayout">
|
26
|
+
<item>
|
27
|
+
<layout class="QGridLayout" name="gridLayout">
|
28
|
+
<item row="2" column="1">
|
29
|
+
<widget class="QLineEdit" name="passwordInput">
|
30
|
+
<property name="echoMode">
|
31
|
+
<enum>QLineEdit::Password</enum>
|
32
|
+
</property>
|
33
|
+
</widget>
|
34
|
+
</item>
|
35
|
+
<item row="0" column="1">
|
36
|
+
<widget class="QLineEdit" name="addressInput">
|
37
|
+
<property name="minimumSize">
|
38
|
+
<size>
|
39
|
+
<width>300</width>
|
40
|
+
<height>0</height>
|
41
|
+
</size>
|
42
|
+
</property>
|
43
|
+
<property name="placeholderText">
|
44
|
+
<string/>
|
45
|
+
</property>
|
46
|
+
</widget>
|
47
|
+
</item>
|
48
|
+
<item row="0" column="0">
|
49
|
+
<widget class="QLabel" name="label_2">
|
50
|
+
<property name="text">
|
51
|
+
<string>Masteroin address</string>
|
52
|
+
</property>
|
53
|
+
</widget>
|
54
|
+
</item>
|
55
|
+
<item row="1" column="0">
|
56
|
+
<widget class="QLabel" name="label_3">
|
57
|
+
<property name="text">
|
58
|
+
<string>Amount</string>
|
59
|
+
</property>
|
60
|
+
</widget>
|
61
|
+
</item>
|
62
|
+
<item row="2" column="0">
|
63
|
+
<widget class="QLabel" name="label_5">
|
64
|
+
<property name="text">
|
65
|
+
<string>Password</string>
|
66
|
+
</property>
|
67
|
+
</widget>
|
68
|
+
</item>
|
69
|
+
<item row="1" column="1">
|
70
|
+
<widget class="QLineEdit" name="amountInput">
|
71
|
+
<property name="placeholderText">
|
72
|
+
<string/>
|
73
|
+
</property>
|
74
|
+
</widget>
|
75
|
+
</item>
|
76
|
+
</layout>
|
77
|
+
</item>
|
78
|
+
</layout>
|
79
|
+
</widget>
|
80
|
+
<widget class="QLabel" name="label">
|
81
|
+
<property name="geometry">
|
82
|
+
<rect>
|
83
|
+
<x>10</x>
|
84
|
+
<y>0</y>
|
85
|
+
<width>231</width>
|
86
|
+
<height>31</height>
|
87
|
+
</rect>
|
88
|
+
</property>
|
89
|
+
<property name="text">
|
90
|
+
<string><h3>Pay for Purchase Offer</h3></string>
|
91
|
+
</property>
|
92
|
+
</widget>
|
93
|
+
<widget class="QPushButton" name="submit_button">
|
94
|
+
<property name="enabled">
|
95
|
+
<bool>false</bool>
|
96
|
+
</property>
|
97
|
+
<property name="geometry">
|
98
|
+
<rect>
|
99
|
+
<x>410</x>
|
100
|
+
<y>190</y>
|
101
|
+
<width>114</width>
|
102
|
+
<height>32</height>
|
103
|
+
</rect>
|
104
|
+
</property>
|
105
|
+
<property name="text">
|
106
|
+
<string>Send</string>
|
107
|
+
</property>
|
108
|
+
<property name="autoDefault">
|
109
|
+
<bool>false</bool>
|
110
|
+
</property>
|
111
|
+
</widget>
|
112
|
+
</widget>
|
113
|
+
<tabstops>
|
114
|
+
<tabstop>addressInput</tabstop>
|
115
|
+
<tabstop>amountInput</tabstop>
|
116
|
+
<tabstop>passwordInput</tabstop>
|
117
|
+
<tabstop>submit_button</tabstop>
|
118
|
+
</tabstops>
|
119
|
+
<resources/>
|
120
|
+
<connections/>
|
121
|
+
</ui>
|
@@ -1,41 +1,93 @@
|
|
1
1
|
module MastercoinWallet
|
2
2
|
class MainWindow < Qt::Dialog
|
3
|
-
slots 'new_simple_send()'
|
3
|
+
slots 'new_simple_send()', 'new_selling_offer()', 'new_purchase_offer()', 'create_order(QTreeWidgetItem *, int)', 'sync()', 'create_bitcoin_tx(QTreeWidgetItem *, int)'
|
4
|
+
|
5
|
+
def create_order(item, position)
|
6
|
+
address = item.text(0)
|
7
|
+
available = item.text(2)
|
8
|
+
fee = item.text(4)
|
9
|
+
new_purchase_offer({address: address, available: available, fee: fee})
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_bitcoin_tx(item, position)
|
13
|
+
address = item.text(0)
|
14
|
+
bitcoin_amount = item.text(2)
|
15
|
+
if item.text(4) == "Waiting on Payment"
|
16
|
+
new_bitcoin_payment({address: address, bitcoin_amount: bitcoin_amount})
|
17
|
+
else
|
18
|
+
Qt::MessageBox.critical(self, tr("Invalid offer"),
|
19
|
+
tr("You can't pay for this offer, either because it's not accepted yet or because it's expired."))
|
20
|
+
end
|
21
|
+
end
|
4
22
|
|
5
23
|
def initialize()
|
6
24
|
super
|
7
|
-
|
25
|
+
|
8
26
|
|
9
|
-
@
|
27
|
+
@ui = Ui_MainWindow.new
|
28
|
+
@ui.setupUi(self)
|
10
29
|
|
11
|
-
|
30
|
+
setWindowTitle(tr("Mastercoin wallet - v0.0.3"))
|
12
31
|
|
13
|
-
@
|
14
|
-
@recentTransactions.setColumnCount(2)
|
15
|
-
@recentTransactions.setHeaderLabels(["Address", "Amount", "Date"])
|
32
|
+
@rows = []
|
16
33
|
|
34
|
+
#createBalanceOverview()
|
35
|
+
|
36
|
+
@recentTransactions = findChild(Qt::TreeWidget, "overviewTree")
|
17
37
|
@recentTransactions.setColumnWidth(0,300)
|
18
38
|
@recentTransactions.setColumnWidth(1,50)
|
19
39
|
|
20
|
-
|
21
|
-
@
|
22
|
-
|
23
|
-
|
24
|
-
|
40
|
+
@order_book = findChild(Qt::TreeWidget, "orderTree")
|
41
|
+
@order_book.setColumnWidth(0,280)
|
42
|
+
@order_book.setColumnWidth(1,70)
|
43
|
+
@order_book.setColumnWidth(2,80)
|
44
|
+
@order_book.setColumnWidth(4,70)
|
45
|
+
|
46
|
+
connect(@order_book, SIGNAL('itemDoubleClicked(QTreeWidgetItem *, int)'), self, SLOT('create_order(QTreeWidgetItem *,int)'))
|
47
|
+
|
48
|
+
@purchase_offers = findChild(Qt::TreeWidget, "purchaseTree")
|
49
|
+
@purchase_offers.setColumnWidth(0,280)
|
50
|
+
@purchase_offers.setColumnWidth(1,70)
|
51
|
+
@purchase_offers.setColumnWidth(2,80)
|
52
|
+
@purchase_offers.setColumnWidth(4,100)
|
53
|
+
|
54
|
+
connect(@purchase_offers, SIGNAL('itemDoubleClicked(QTreeWidgetItem *, int)'), self, SLOT('create_bitcoin_tx(QTreeWidgetItem *,int)'))
|
55
|
+
|
56
|
+
@balance_label = findChild(Qt::Label, "mscBalanceLabel")
|
57
|
+
@test_balance_label = findChild(Qt::Label, "tMscBalanceLabel")
|
58
|
+
@btc_balance_label = findChild(Qt::Label, "bitcoinLabel")
|
59
|
+
@address_label = findChild(Qt::Label, "mscAddressLabel")
|
60
|
+
@address_label.text = MastercoinWallet.config.address
|
25
61
|
|
26
|
-
simple_send = Qt::PushButton
|
62
|
+
simple_send = findChild(Qt::PushButton, "simpleSendButton")
|
27
63
|
simple_send.setText("New simple send")
|
28
64
|
connect(simple_send, SIGNAL('clicked()'), self, SLOT('new_simple_send()'))
|
29
65
|
|
30
|
-
|
31
|
-
|
32
|
-
m.addLayout(overview, 0, 1)
|
33
|
-
m.addWidget(@recentTransactions, 1,0,1, 2)
|
34
|
-
m.addWidget(simple_send, 2,1)
|
35
|
-
end
|
66
|
+
selling_offer = findChild(Qt::PushButton, "sellingButton")
|
67
|
+
connect(selling_offer, SIGNAL('clicked()'), self, SLOT('new_selling_offer()'))
|
36
68
|
|
37
|
-
|
38
|
-
|
69
|
+
purchase_offer = findChild(Qt::PushButton, "purchaseButton")
|
70
|
+
connect(purchase_offer, SIGNAL('clicked()'), self, SLOT('new_purchase_offer()'))
|
71
|
+
|
72
|
+
self.update
|
73
|
+
MastercoinWallet.selling_offers.add_observer(self, :update_order_book)
|
74
|
+
MastercoinWallet.wallet.add_observer(self, :update)
|
75
|
+
self.sync
|
76
|
+
|
77
|
+
# Sync every 30 seconds
|
78
|
+
@timer = Qt::Timer.new(self)
|
79
|
+
connect(@timer, SIGNAL('timeout()'), self, SLOT('sync()'))
|
80
|
+
@timer.start(30000)
|
81
|
+
end
|
82
|
+
|
83
|
+
def sync
|
84
|
+
MastercoinWallet.selling_offers.retrieve!
|
85
|
+
MastercoinWallet.wallet.sync!
|
86
|
+
end
|
87
|
+
|
88
|
+
def new_bitcoin_payment(options = {})
|
89
|
+
dialog = MastercoinWallet::BitcoinOfferWindow.new(nil, options)
|
90
|
+
dialog.exec
|
39
91
|
end
|
40
92
|
|
41
93
|
def new_simple_send
|
@@ -43,39 +95,113 @@ module MastercoinWallet
|
|
43
95
|
dialog.exec
|
44
96
|
end
|
45
97
|
|
98
|
+
def new_selling_offer
|
99
|
+
dialog = MastercoinWallet::SellingOfferWindow.new
|
100
|
+
dialog.exec
|
101
|
+
end
|
102
|
+
|
103
|
+
def new_purchase_offer(options = {})
|
104
|
+
dialog = MastercoinWallet::PurchaseOfferWindow.new(nil, options)
|
105
|
+
dialog.exec
|
106
|
+
end
|
107
|
+
|
46
108
|
def update(status = true)
|
47
|
-
puts "update"
|
48
109
|
load_transactions
|
49
110
|
update_balance
|
50
111
|
end
|
51
112
|
|
113
|
+
|
114
|
+
def coin_name(currency_id)
|
115
|
+
if currency_id.to_s == "1"
|
116
|
+
"MSC"
|
117
|
+
else
|
118
|
+
"Test MSC"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def add_row(item, type)
|
123
|
+
row = Qt::TreeWidgetItem.new
|
124
|
+
row.setText(0, item["address"])
|
125
|
+
row.setText(1, item["amount"])
|
126
|
+
row.setText(2, type)
|
127
|
+
row.setText(3, coin_name(item["currency_id"]))
|
128
|
+
row.setText(4, item["tx_date"])
|
129
|
+
return row
|
130
|
+
end
|
131
|
+
|
132
|
+
def add_offer_row(item)
|
133
|
+
row = Qt::TreeWidgetItem.new
|
134
|
+
row.setText(0, item["address"])
|
135
|
+
row.setText(1, coin_name(item["currency_id"]))
|
136
|
+
row.setText(2, item["amount_available"])
|
137
|
+
row.setText(3, "#{item["price_per_coin"]} BTC")
|
138
|
+
row.setText(4, item["required_fee"])
|
139
|
+
row.setText(5, item["tx_date"])
|
140
|
+
return row
|
141
|
+
end
|
142
|
+
|
143
|
+
def add_purchase_row(item)
|
144
|
+
row = Qt::TreeWidgetItem.new
|
145
|
+
row.setText(0, item["selling_offer"]["address"])
|
146
|
+
row.setText(1, item["amount"])
|
147
|
+
row.setText(2, item["bitcoins_required"])
|
148
|
+
row.setText(3, coin_name(item["currency_id"]))
|
149
|
+
row.setText(4, item["status_text"])
|
150
|
+
row.setText(5, item["tx_date"])
|
151
|
+
return row
|
152
|
+
end
|
153
|
+
|
154
|
+
def update_order_book(orders)
|
155
|
+
orders.each do |order|
|
156
|
+
@rows << add_offer_row(order)
|
157
|
+
end
|
158
|
+
@order_book.clear()
|
159
|
+
@order_book.insertTopLevelItems(0, @rows)
|
160
|
+
end
|
161
|
+
|
52
162
|
def load_transactions
|
163
|
+
if MastercoinWallet.config.has_key?(:pending_offers)
|
164
|
+
MastercoinWallet.config.pending_offers.each do |x|
|
165
|
+
@rows << add_purchase_row(x)
|
166
|
+
end
|
167
|
+
@purchase_offers.clear()
|
168
|
+
@purchase_offers.insertTopLevelItems(0, @rows)
|
169
|
+
end
|
170
|
+
|
53
171
|
if MastercoinWallet.config.has_key?(:received_transactions)
|
54
172
|
MastercoinWallet.config.received_transactions.each do |x|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
173
|
+
@rows << add_row(x, "Receiving")
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
if MastercoinWallet.config.has_key?(:exodus_transactions)
|
178
|
+
MastercoinWallet.config.exodus_transactions.each do |x|
|
179
|
+
@rows << add_row(x, "Exodus")
|
60
180
|
end
|
61
181
|
end
|
62
182
|
|
63
183
|
if MastercoinWallet.config.has_key?(:sent_transactions)
|
64
184
|
MastercoinWallet.config.sent_transactions.each do |x|
|
65
|
-
|
66
|
-
row.setText(0, x["receiving_address"])
|
67
|
-
row.setText(1, x["amount"])
|
68
|
-
row.setText(2, x["tx_date"])
|
69
|
-
@rows << row
|
185
|
+
@rows << add_row(x, "Sent")
|
70
186
|
end
|
71
187
|
end
|
72
|
-
|
188
|
+
if MastercoinWallet.config.has_key?(:bought)
|
189
|
+
MastercoinWallet.config.sent_transactions.each do |x|
|
190
|
+
@rows << add_row(x, "Bought")
|
191
|
+
end
|
192
|
+
end
|
193
|
+
if MastercoinWallet.config.has_key?(:sold)
|
194
|
+
MastercoinWallet.config.sent_transactions.each do |x|
|
195
|
+
@rows << add_row(x, "Sold")
|
196
|
+
end
|
197
|
+
end
|
198
|
+
@recentTransactions.clear()
|
73
199
|
@recentTransactions.insertTopLevelItems(0, @rows)
|
74
200
|
end
|
75
201
|
|
76
202
|
def update_balance
|
77
203
|
@balance_label.setText("#{MastercoinWallet.config.balance} MSC")
|
78
|
-
@test_balance_label.setText("
|
204
|
+
@test_balance_label.setText("#{MastercoinWallet.config.test_balance} Test MSC")
|
79
205
|
@btc_balance_label.setText(tr("#{MastercoinWallet.config.btc_balance} BTC"))
|
80
206
|
end
|
81
207
|
|
@@ -0,0 +1,356 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ui version="4.0">
|
3
|
+
<class>MainWindow</class>
|
4
|
+
<widget class="QDialog" name="MainWindow">
|
5
|
+
<property name="geometry">
|
6
|
+
<rect>
|
7
|
+
<x>0</x>
|
8
|
+
<y>0</y>
|
9
|
+
<width>746</width>
|
10
|
+
<height>469</height>
|
11
|
+
</rect>
|
12
|
+
</property>
|
13
|
+
<property name="sizePolicy">
|
14
|
+
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
15
|
+
<horstretch>0</horstretch>
|
16
|
+
<verstretch>0</verstretch>
|
17
|
+
</sizepolicy>
|
18
|
+
</property>
|
19
|
+
<property name="windowTitle">
|
20
|
+
<string>New Purchase Offer</string>
|
21
|
+
</property>
|
22
|
+
<widget class="QTabWidget" name="mainTab">
|
23
|
+
<property name="geometry">
|
24
|
+
<rect>
|
25
|
+
<x>10</x>
|
26
|
+
<y>10</y>
|
27
|
+
<width>731</width>
|
28
|
+
<height>451</height>
|
29
|
+
</rect>
|
30
|
+
</property>
|
31
|
+
<property name="sizePolicy">
|
32
|
+
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
33
|
+
<horstretch>0</horstretch>
|
34
|
+
<verstretch>0</verstretch>
|
35
|
+
</sizepolicy>
|
36
|
+
</property>
|
37
|
+
<property name="currentIndex">
|
38
|
+
<number>0</number>
|
39
|
+
</property>
|
40
|
+
<widget class="QWidget" name="tab">
|
41
|
+
<attribute name="title">
|
42
|
+
<string>Dashboard</string>
|
43
|
+
</attribute>
|
44
|
+
<widget class="QGroupBox" name="balanceGroup">
|
45
|
+
<property name="geometry">
|
46
|
+
<rect>
|
47
|
+
<x>10</x>
|
48
|
+
<y>0</y>
|
49
|
+
<width>201</width>
|
50
|
+
<height>111</height>
|
51
|
+
</rect>
|
52
|
+
</property>
|
53
|
+
<property name="title">
|
54
|
+
<string>Balances</string>
|
55
|
+
</property>
|
56
|
+
<widget class="QLabel" name="mscBalanceLabel">
|
57
|
+
<property name="geometry">
|
58
|
+
<rect>
|
59
|
+
<x>10</x>
|
60
|
+
<y>30</y>
|
61
|
+
<width>181</width>
|
62
|
+
<height>19</height>
|
63
|
+
</rect>
|
64
|
+
</property>
|
65
|
+
<property name="text">
|
66
|
+
<string>Updating MSC balance</string>
|
67
|
+
</property>
|
68
|
+
</widget>
|
69
|
+
<widget class="QLabel" name="tMscBalanceLabel">
|
70
|
+
<property name="geometry">
|
71
|
+
<rect>
|
72
|
+
<x>10</x>
|
73
|
+
<y>50</y>
|
74
|
+
<width>171</width>
|
75
|
+
<height>20</height>
|
76
|
+
</rect>
|
77
|
+
</property>
|
78
|
+
<property name="text">
|
79
|
+
<string>Updating test MSC balance</string>
|
80
|
+
</property>
|
81
|
+
</widget>
|
82
|
+
<widget class="QLabel" name="bitcoinLabel">
|
83
|
+
<property name="geometry">
|
84
|
+
<rect>
|
85
|
+
<x>10</x>
|
86
|
+
<y>70</y>
|
87
|
+
<width>171</width>
|
88
|
+
<height>19</height>
|
89
|
+
</rect>
|
90
|
+
</property>
|
91
|
+
<property name="text">
|
92
|
+
<string>Updating Bitcoin balance</string>
|
93
|
+
</property>
|
94
|
+
</widget>
|
95
|
+
</widget>
|
96
|
+
<widget class="QLabel" name="mscAddressLabel">
|
97
|
+
<property name="geometry">
|
98
|
+
<rect>
|
99
|
+
<x>220</x>
|
100
|
+
<y>40</y>
|
101
|
+
<width>471</width>
|
102
|
+
<height>51</height>
|
103
|
+
</rect>
|
104
|
+
</property>
|
105
|
+
<property name="font">
|
106
|
+
<font>
|
107
|
+
<family>Verdana</family>
|
108
|
+
<pointsize>24</pointsize>
|
109
|
+
</font>
|
110
|
+
</property>
|
111
|
+
<property name="text">
|
112
|
+
<string>MSC Address</string>
|
113
|
+
</property>
|
114
|
+
</widget>
|
115
|
+
<widget class="QTreeWidget" name="overviewTree">
|
116
|
+
<property name="geometry">
|
117
|
+
<rect>
|
118
|
+
<x>10</x>
|
119
|
+
<y>120</y>
|
120
|
+
<width>711</width>
|
121
|
+
<height>251</height>
|
122
|
+
</rect>
|
123
|
+
</property>
|
124
|
+
<property name="sortingEnabled">
|
125
|
+
<bool>true</bool>
|
126
|
+
</property>
|
127
|
+
<property name="columnCount">
|
128
|
+
<number>5</number>
|
129
|
+
</property>
|
130
|
+
<column>
|
131
|
+
<property name="text">
|
132
|
+
<string>Address</string>
|
133
|
+
</property>
|
134
|
+
</column>
|
135
|
+
<column>
|
136
|
+
<property name="text">
|
137
|
+
<string>Amount</string>
|
138
|
+
</property>
|
139
|
+
</column>
|
140
|
+
<column>
|
141
|
+
<property name="text">
|
142
|
+
<string>Type</string>
|
143
|
+
</property>
|
144
|
+
</column>
|
145
|
+
<column>
|
146
|
+
<property name="text">
|
147
|
+
<string>Currency</string>
|
148
|
+
</property>
|
149
|
+
</column>
|
150
|
+
<column>
|
151
|
+
<property name="text">
|
152
|
+
<string>Date</string>
|
153
|
+
</property>
|
154
|
+
</column>
|
155
|
+
</widget>
|
156
|
+
<widget class="QPushButton" name="simpleSendButton">
|
157
|
+
<property name="geometry">
|
158
|
+
<rect>
|
159
|
+
<x>580</x>
|
160
|
+
<y>380</y>
|
161
|
+
<width>141</width>
|
162
|
+
<height>32</height>
|
163
|
+
</rect>
|
164
|
+
</property>
|
165
|
+
<property name="text">
|
166
|
+
<string>new Simple Send</string>
|
167
|
+
</property>
|
168
|
+
</widget>
|
169
|
+
<widget class="QLabel" name="label_3">
|
170
|
+
<property name="geometry">
|
171
|
+
<rect>
|
172
|
+
<x>220</x>
|
173
|
+
<y>20</y>
|
174
|
+
<width>231</width>
|
175
|
+
<height>19</height>
|
176
|
+
</rect>
|
177
|
+
</property>
|
178
|
+
<property name="text">
|
179
|
+
<string>Mastercoin wallet for</string>
|
180
|
+
</property>
|
181
|
+
</widget>
|
182
|
+
</widget>
|
183
|
+
<widget class="QWidget" name="tab_2">
|
184
|
+
<attribute name="title">
|
185
|
+
<string>Distributed exchange</string>
|
186
|
+
</attribute>
|
187
|
+
<widget class="QTreeWidget" name="orderTree">
|
188
|
+
<property name="geometry">
|
189
|
+
<rect>
|
190
|
+
<x>10</x>
|
191
|
+
<y>30</y>
|
192
|
+
<width>701</width>
|
193
|
+
<height>131</height>
|
194
|
+
</rect>
|
195
|
+
</property>
|
196
|
+
<property name="toolTip">
|
197
|
+
<string>Double click to create a purchase offer from this Selling Offer</string>
|
198
|
+
</property>
|
199
|
+
<column>
|
200
|
+
<property name="text">
|
201
|
+
<string>Seller</string>
|
202
|
+
</property>
|
203
|
+
</column>
|
204
|
+
<column>
|
205
|
+
<property name="text">
|
206
|
+
<string>Currency</string>
|
207
|
+
</property>
|
208
|
+
</column>
|
209
|
+
<column>
|
210
|
+
<property name="text">
|
211
|
+
<string>Units available</string>
|
212
|
+
</property>
|
213
|
+
</column>
|
214
|
+
<column>
|
215
|
+
<property name="text">
|
216
|
+
<string>Price per coin</string>
|
217
|
+
</property>
|
218
|
+
</column>
|
219
|
+
<column>
|
220
|
+
<property name="text">
|
221
|
+
<string>Required fee</string>
|
222
|
+
</property>
|
223
|
+
</column>
|
224
|
+
<column>
|
225
|
+
<property name="text">
|
226
|
+
<string>Date</string>
|
227
|
+
</property>
|
228
|
+
</column>
|
229
|
+
</widget>
|
230
|
+
<widget class="QLabel" name="label">
|
231
|
+
<property name="geometry">
|
232
|
+
<rect>
|
233
|
+
<x>10</x>
|
234
|
+
<y>-2</y>
|
235
|
+
<width>151</width>
|
236
|
+
<height>31</height>
|
237
|
+
</rect>
|
238
|
+
</property>
|
239
|
+
<property name="text">
|
240
|
+
<string><h2>Order book</h2></string>
|
241
|
+
</property>
|
242
|
+
</widget>
|
243
|
+
<widget class="QPushButton" name="sellingButton">
|
244
|
+
<property name="geometry">
|
245
|
+
<rect>
|
246
|
+
<x>580</x>
|
247
|
+
<y>160</y>
|
248
|
+
<width>131</width>
|
249
|
+
<height>32</height>
|
250
|
+
</rect>
|
251
|
+
</property>
|
252
|
+
<property name="text">
|
253
|
+
<string>New Selling Offer</string>
|
254
|
+
</property>
|
255
|
+
</widget>
|
256
|
+
<widget class="QTreeWidget" name="purchaseTree">
|
257
|
+
<property name="geometry">
|
258
|
+
<rect>
|
259
|
+
<x>10</x>
|
260
|
+
<y>250</y>
|
261
|
+
<width>701</width>
|
262
|
+
<height>131</height>
|
263
|
+
</rect>
|
264
|
+
</property>
|
265
|
+
<column>
|
266
|
+
<property name="text">
|
267
|
+
<string>Offer address</string>
|
268
|
+
</property>
|
269
|
+
</column>
|
270
|
+
<column>
|
271
|
+
<property name="text">
|
272
|
+
<string>Amount</string>
|
273
|
+
</property>
|
274
|
+
</column>
|
275
|
+
<column>
|
276
|
+
<property name="text">
|
277
|
+
<string>Bitcoin amount</string>
|
278
|
+
</property>
|
279
|
+
</column>
|
280
|
+
<column>
|
281
|
+
<property name="text">
|
282
|
+
<string>Currency</string>
|
283
|
+
</property>
|
284
|
+
</column>
|
285
|
+
<column>
|
286
|
+
<property name="text">
|
287
|
+
<string>Offer status</string>
|
288
|
+
</property>
|
289
|
+
</column>
|
290
|
+
<column>
|
291
|
+
<property name="text">
|
292
|
+
<string>Date</string>
|
293
|
+
</property>
|
294
|
+
</column>
|
295
|
+
</widget>
|
296
|
+
<widget class="QLabel" name="label_2">
|
297
|
+
<property name="geometry">
|
298
|
+
<rect>
|
299
|
+
<x>10</x>
|
300
|
+
<y>210</y>
|
301
|
+
<width>191</width>
|
302
|
+
<height>31</height>
|
303
|
+
</rect>
|
304
|
+
</property>
|
305
|
+
<property name="text">
|
306
|
+
<string><h2>My purchase offers</h2></string>
|
307
|
+
</property>
|
308
|
+
</widget>
|
309
|
+
<widget class="QPushButton" name="purchaseButton">
|
310
|
+
<property name="geometry">
|
311
|
+
<rect>
|
312
|
+
<x>560</x>
|
313
|
+
<y>380</y>
|
314
|
+
<width>151</width>
|
315
|
+
<height>32</height>
|
316
|
+
</rect>
|
317
|
+
</property>
|
318
|
+
<property name="text">
|
319
|
+
<string>New Purchase Offer</string>
|
320
|
+
</property>
|
321
|
+
</widget>
|
322
|
+
<widget class="QLabel" name="label_4">
|
323
|
+
<property name="geometry">
|
324
|
+
<rect>
|
325
|
+
<x>10</x>
|
326
|
+
<y>160</y>
|
327
|
+
<width>521</width>
|
328
|
+
<height>21</height>
|
329
|
+
</rect>
|
330
|
+
</property>
|
331
|
+
<property name="text">
|
332
|
+
<string>Hint: You can double click to create a Purchase Offer for an item in the order book</string>
|
333
|
+
</property>
|
334
|
+
</widget>
|
335
|
+
<widget class="QLabel" name="label_5">
|
336
|
+
<property name="geometry">
|
337
|
+
<rect>
|
338
|
+
<x>10</x>
|
339
|
+
<y>380</y>
|
340
|
+
<width>521</width>
|
341
|
+
<height>41</height>
|
342
|
+
</rect>
|
343
|
+
</property>
|
344
|
+
<property name="text">
|
345
|
+
<string>Hint: You can double click to send the required Bitcoins for an accepted Purchase offer that's waiting on payment</string>
|
346
|
+
</property>
|
347
|
+
<property name="wordWrap">
|
348
|
+
<bool>true</bool>
|
349
|
+
</property>
|
350
|
+
</widget>
|
351
|
+
</widget>
|
352
|
+
</widget>
|
353
|
+
</widget>
|
354
|
+
<resources/>
|
355
|
+
<connections/>
|
356
|
+
</ui>
|