From b41e3ed1fd7c87e62e77765805a3f4a4dc26060b Mon Sep 17 00:00:00 2001 From: Craig Everett Date: Wed, 9 Oct 2024 19:10:58 +0900 Subject: [PATCH] Add "send money" dialogue --- src/gmc_con.erl | 1 - src/gmc_gui.erl | 93 +++++++++++++++++++++++++++++++------------------ 2 files changed, 59 insertions(+), 35 deletions(-) diff --git a/src/gmc_con.erl b/src/gmc_con.erl index fb82aa5..b7440d0 100644 --- a/src/gmc_con.erl +++ b/src/gmc_con.erl @@ -518,7 +518,6 @@ read(Path, Pass) -> ok = log(info, "Decrypt failed at ~p", [L]), {error, bad_password}; E:R -> - tell("Here: ~p", [{E, R}]), {E, R} end; Error -> diff --git a/src/gmc_gui.erl b/src/gmc_gui.erl index 82acf01..8289ae2 100644 --- a/src/gmc_gui.erl +++ b/src/gmc_gui.erl @@ -581,42 +581,67 @@ www(State = #s{id = {_, #w{wx = ID_T}}}) -> State. -spend(State) -> - tell("Would be doing a SpendTX"), +spend(State = #s{accounts = []}) -> + State; +spend(State = #s{picker = Picker}) -> + case wxListBox:getSelection(Picker) of + -1 -> State; + Selected -> spend(Selected + 1, State) + end. + +spend(Selected, State = #s{frame = Frame, j = J, accounts = Accounts}) -> + #poa{id = ID, name = Name} = lists:nth(Selected, Accounts), + Dialog = wxDialog:new(Frame, ?wxID_ANY, J("Transfer"), [{size, {500, 400}}]), + Sizer = wxBoxSizer:new(?wxVERTICAL), + + 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")}]), + _ = wxStaticBoxSizer:add(AmtSz, AmtTx, 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}], + Preset = 1_000, + Min = 1, + Max = 1_000_000_000, + GasSl = wxSlider:new(Dialog, ?wxID_ANY, Preset, 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, GasSz, zxw:flags(base)), + _ = wxBoxSizer:add(Sizer, ButtSz, zxw:flags(base)), + ok = wxDialog:setSizer(Dialog, Sizer), + ok = wxBoxSizer:layout(Sizer), + ok = wxFrame:center(Dialog), + ok = + case wxDialog:showModal(Dialog) of + ?wxID_OK -> gmc_con:drop_key(ID); + ?wxID_CANCEL -> ok + end, + ok = wxDialog:destroy(Dialog), State. -%spend(State = #s{accounts = []}) -> -% State; -%spend(State = #s{picker = Picker}) -> -% case wxListBox:getSelection(Picker) of -% -1 -> State; -% Selected -> spend(Selected + 1, State) -% end. - -%spend(Selected, State = #s{frame = Frame, j = J, }) -> -% #poa{id = ID, name = Name} = lists:nth(Selected, Accounts), -% Dialog = wxDialog:new(Frame, ?wxID_ANY, J("New Key")), -% Sizer = wxBoxSizer:new(?wxVERTICAL), -% Account = [J("From: "), Name, " (", ID, ")"], -% MessageT = wxStaticText:new(Dialog, ?wxID_ANY, Message), -% 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, MessageT, zxw:flags(wide)), -% _ = wxBoxSizer:add(Sizer, ButtSz, zxw:flags(base)), -% ok = wxDialog:setSizer(Dialog, Sizer), -% ok = wxBoxSizer:layout(Sizer), -% ok = wxFrame:center(Dialog), -% ok = -% case wxDialog:showModal(Dialog) of -% ?wxID_OK -> gmc_con:drop_key(ID); -% ?wxID_CANCEL -> ok -% end, -% ok = wxDialog:destroy(Dialog), -% State State. - grids_dialogue(State) -> %grids_dialogue(State = #s{frame = Frame, j = J}) ->