mastercoin-wallet 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|