WIP
This commit is contained in:
+12
-88
@@ -729,104 +729,28 @@ spend(Selected, State = #s{accounts = Accounts}) ->
|
||||
end.
|
||||
|
||||
spend2(#poa{id = ID, name = Name}, Nonce, Height, State = #s{frame = Frame, j = J}) ->
|
||||
Dialog = wxDialog:new(Frame, ?wxID_ANY, J("Transfer"), [{size, {500, 400}}]),
|
||||
Sizer = wxBoxSizer:new(?wxVERTICAL),
|
||||
|
||||
Title = J("Transfer Gajus"),
|
||||
Account = [Name, " (", ID, ")"],
|
||||
FromTx = wxStaticText:new(Dialog, ?wxID_ANY, Account),
|
||||
FromSz = wxStaticBoxSizer:new(?wxVERTICAL, Dialog, [{label, J("From")}]),
|
||||
_ = wxStaticBoxSizer:add(FromSz, FromTx, zxw:flags(wide)),
|
||||
|
||||
ToTx = wxTextCtrl:new(Dialog, ?wxID_ANY),
|
||||
ToSz = wxStaticBoxSizer:new(?wxVERTICAL, Dialog, [{label, J("To")}]),
|
||||
_ = wxStaticBoxSizer:add(ToSz, ToTx, zxw:flags(wide)),
|
||||
|
||||
AmtTx = wxTextCtrl:new(Dialog, ?wxID_ANY),
|
||||
AmtSz = wxStaticBoxSizer:new(?wxVERTICAL, Dialog, [{label, J("Amount")}]),
|
||||
AmtInSz = wxBoxSizer:new(?wxHORIZONTAL),
|
||||
AmtLabel = wxStaticText:new(Dialog, ?wxID_ANY, "木"),
|
||||
_ = wxStaticBoxSizer:add(AmtInSz, AmtLabel, zxw:flags(base)),
|
||||
_ = wxStaticBoxSizer:add(AmtInSz, AmtTx, zxw:flags(wide)),
|
||||
_ = wxStaticBoxSizer:add(AmtSz, AmtInSz, zxw:flags(wide)),
|
||||
|
||||
DataTx = wxTextCtrl:new(Dialog, ?wxID_ANY, [{style, ?wxTE_MULTILINE}]),
|
||||
DataSz = wxStaticBoxSizer:new(?wxVERTICAL, Dialog, [{label, J("Message (optional)")}]),
|
||||
_ = wxStaticBoxSizer:add(DataSz, DataTx, zxw:flags(wide)),
|
||||
|
||||
Style = [{style, ?wxSL_HORIZONTAL bor ?wxSL_LABELS}],
|
||||
|
||||
TTL_Sl = wxSlider:new(Dialog, ?wxID_ANY, 100, 10, 1000, Style),
|
||||
TTL_Sz = wxStaticBoxSizer:new(?wxVERTICAL, Dialog, [{label, J("TTL")}]),
|
||||
_ = wxStaticBoxSizer:add(TTL_Sz, TTL_Sl, zxw:flags(wide)),
|
||||
|
||||
Min = hz:min_gas_price(),
|
||||
Max = Min * 2,
|
||||
GasSl = wxSlider:new(Dialog, ?wxID_ANY, Min, Min, Max, Style),
|
||||
GasSz = wxStaticBoxSizer:new(?wxVERTICAL, Dialog, [{label, J("Gas Price")}]),
|
||||
_ = wxStaticBoxSizer:add(GasSz, GasSl, zxw:flags(wide)),
|
||||
|
||||
ButtSz = wxBoxSizer:new(?wxHORIZONTAL),
|
||||
Affirm = wxButton:new(Dialog, ?wxID_OK),
|
||||
Cancel = wxButton:new(Dialog, ?wxID_CANCEL),
|
||||
_ = wxBoxSizer:add(ButtSz, Affirm, zxw:flags(wide)),
|
||||
_ = wxBoxSizer:add(ButtSz, Cancel, zxw:flags(wide)),
|
||||
|
||||
_ = wxBoxSizer:add(Sizer, FromSz, zxw:flags(base)),
|
||||
_ = wxBoxSizer:add(Sizer, ToSz, zxw:flags(base)),
|
||||
_ = wxBoxSizer:add(Sizer, AmtSz, zxw:flags(base)),
|
||||
_ = wxBoxSizer:add(Sizer, DataSz, zxw:flags(wide)),
|
||||
_ = wxBoxSizer:add(Sizer, TTL_Sz, zxw:flags(wide)),
|
||||
_ = wxBoxSizer:add(Sizer, GasSz, zxw:flags(base)),
|
||||
_ = wxBoxSizer:add(Sizer, ButtSz, zxw:flags(base)),
|
||||
ok = wxDialog:setSizer(Dialog, Sizer),
|
||||
ok = wxBoxSizer:layout(Sizer),
|
||||
ok = wxFrame:setSize(Dialog, {500, 450}),
|
||||
ok = wxFrame:center(Dialog),
|
||||
Args = {Account, Nonce, Height},
|
||||
Labels = {J("From"), J("To"), J("Amount"), J("Message (optional)"), J("TTL"), J("Gas Price")},
|
||||
ok =
|
||||
case wxDialog:showModal(Dialog) of
|
||||
?wxID_OK ->
|
||||
case gd_m_spend:show(Frame, Title, Args, Labels) of
|
||||
{ok, RecipientID, Amount, GasPrice, TTL, Payload} ->
|
||||
TX =
|
||||
#spend_tx{sender_id = ID,
|
||||
recipient_id = wxTextCtrl:getValue(ToTx),
|
||||
amount = wxTextCtrl:getValue(AmtTx),
|
||||
gas_price = wxSlider:getValue(GasSl),
|
||||
recipient_id = RecipientID,
|
||||
amount = Amount,
|
||||
gas_price = GasPrice,
|
||||
gas = 20000,
|
||||
ttl = Height + wxSlider:getValue(TTL_Sl),
|
||||
ttl = Height + TTL,
|
||||
nonce = Nonce,
|
||||
payload = wxTextCtrl:getValue(DataTx)},
|
||||
clean_spend(TX);
|
||||
?wxID_CANCEL ->
|
||||
payload = Payload},
|
||||
gd_con:spend(TX);
|
||||
cancel ->
|
||||
ok
|
||||
end,
|
||||
ok = wxDialog:destroy(Dialog),
|
||||
State.
|
||||
|
||||
clean_spend(#spend_tx{recipient_id = ""}) ->
|
||||
ok;
|
||||
clean_spend( TX = #spend_tx{amount = S}) when is_list(S) ->
|
||||
case string_to_price(S) of
|
||||
{ok, Amount} -> clean_spend(TX#spend_tx{amount = Amount});
|
||||
{error, _} -> ok
|
||||
end;
|
||||
clean_spend(TX = #spend_tx{gas_price = S}) when is_list(S) ->
|
||||
case is_int(S) of
|
||||
true -> clean_spend(TX#spend_tx{gas_price = list_to_integer(S)});
|
||||
false -> ok
|
||||
end;
|
||||
clean_spend(TX = #spend_tx{gas = S}) when is_list(S) ->
|
||||
case is_int(S) of
|
||||
true -> clean_spend(TX#spend_tx{gas = list_to_integer(S)});
|
||||
false -> ok
|
||||
end;
|
||||
clean_spend(TX = #spend_tx{payload = S}) when is_list(S) ->
|
||||
clean_spend(TX#spend_tx{payload = list_to_binary(S)});
|
||||
clean_spend(TX) ->
|
||||
gd_con:spend(TX).
|
||||
|
||||
|
||||
is_int(S) ->
|
||||
lists:all(fun(C) -> $0 =< C andalso C =< $9 end, S).
|
||||
|
||||
|
||||
grids_dialogue(State = #s{frame = Frame, j = J}) ->
|
||||
Title = J("GRIDS URL"),
|
||||
|
||||
Reference in New Issue
Block a user