diff --git a/src/gd_con.erl b/src/gd_con.erl index 88b9e71..996b3fe 100644 --- a/src/gd_con.erl +++ b/src/gd_con.erl @@ -1349,11 +1349,14 @@ do_tic(MS, State = #s{timer = {T, _}}) -> T = erlang:send_after(MS, self(), tic), State#s{timer = {T, MS}}. +handle_tic(State = #s{wallet = #wallet{poas = []}, timer = {T, MS}}) -> + ok = cancel_timer(T), + NewT = erlang:send_after(MS, self(), tic), + State#s{timer = {NewT, MS}}; handle_tic(State = #s{wallet = This = #wallet{poas = POAs, endpoint = Node}, timer = {T, MS}, selected = Selected}) when Selected > 0 -> - NewState = case ensure_hz_set(Node) of {ok, ChainID} -> diff --git a/src/gd_v_devman.erl b/src/gd_v_devman.erl index e44b868..731a7a2 100644 --- a/src/gd_v_devman.erl +++ b/src/gd_v_devman.erl @@ -344,6 +344,7 @@ clicked3(State = #s{frame = Frame, j = J}, Contract, Name = {FunName, FunType}, KeyPicker = wxChoice:new(Dialog, ?wxID_ANY, [{choices, Keys}]), _ = wxStaticBoxSizer:add(KeySz, KeyPicker, zxw:flags(wide)), ok = wxChoice:setSelection(KeyPicker, Selected - 1), + ArgSz = call_arg_sizer(Dialog, J, FunSpec), {ParamSz, TTL_Tx, GasP_Tx, Gas_Tx, Amount_Tx} = call_param_sizer(Dialog, J), ButtSz = wxBoxSizer:new(?wxHORIZONTAL), Affirm = wxButton:new(Dialog, ?wxID_OK), @@ -351,6 +352,7 @@ clicked3(State = #s{frame = Frame, j = J}, Contract, Name = {FunName, FunType}, _ = wxBoxSizer:add(ButtSz, Affirm, zxw:flags(wide)), _ = wxBoxSizer:add(ButtSz, Cancel, zxw:flags(wide)), _ = wxSizer:add(Sizer, KeySz, zxw:flags(wide)), + _ = wxSizer:add(Sizer, ArgSz, zxw:flags(wide)), _ = wxSizer:add(Sizer, ParamSz, zxw:flags(wide)), _ = wxSizer:add(Sizer, ButtSz, zxw:flags(wide)), ok = wxDialog:setSizer(Dialog, Sizer), @@ -384,6 +386,8 @@ clicked3(State = #s{frame = Frame, j = J}, Contract, Name = {FunName, FunType}, Error -> handle_troubling(State, Error) end. +call_arg_sizer(Dialog, J, FunSpec) -> + call_param_sizer(Dialog, J) -> {ok, Height} = hz:top_height(), DefTTL = Height + 10000, @@ -423,14 +427,15 @@ call_params(Controls) -> call_params([], A) -> {ok, lists:reverse(A)}; call_params([{L, C} | T], A) -> - O = + R = try {ok, list_to_integer(wxTextCtrl:getValue(C))} catch error:badarg -> {error, {L, not_an_integer}} end, - case O of - {ok, N} -> call_params(T, [N | A]); + case R of + {ok, N} when N >= 0 -> call_params(T, [N | A]); + {ok, N} when N < 0 -> {error, {L, neg_integer}}; Error -> Error end.