diff --git a/src/auto4_base.cpp b/src/auto4_base.cpp index e3a796f73..0b9c292bd 100644 --- a/src/auto4_base.cpp +++ b/src/auto4_base.cpp @@ -221,13 +221,6 @@ namespace Automation4 { }); } - int ProgressSink::ShowDialog(wxDialog *dialog) - { - int ret = 0; - agi::dispatch::Main().Sync([&] { ret = dialog->ShowModal(); }); - return ret; - } - BackgroundScriptRunner::BackgroundScriptRunner(wxWindow *parent, std::string const& title) : impl(new DialogProgress(parent, to_wx(title))) { diff --git a/src/auto4_base.h b/src/auto4_base.h index dae5f2fdc..0c54b744f 100644 --- a/src/auto4_base.h +++ b/src/auto4_base.h @@ -133,7 +133,6 @@ namespace Automation4 { /// Show the passed dialog on the GUI thread, blocking the calling /// thread until it closes void ShowDialog(ScriptDialog *config_dialog); - int ShowDialog(wxDialog *dialog); wxWindow *GetParentWindow() const { return bsr->GetParentWindow(); } /// Get the current automation trace level diff --git a/src/auto4_lua_progresssink.cpp b/src/auto4_lua_progresssink.cpp index 026cb9583..856912131 100644 --- a/src/auto4_lua_progresssink.cpp +++ b/src/auto4_lua_progresssink.cpp @@ -36,6 +36,7 @@ #include "compat.h" +#include #include #include @@ -197,7 +198,6 @@ namespace Automation4 { int LuaProgressSink::LuaDisplayOpenDialog(lua_State *L) { - ProgressSink *ps = GetObjPointer(L, lua_upvalueindex(1)); wxString message(check_wxstring(L, 1)); wxString dir(check_wxstring(L, 2)); wxString file(check_wxstring(L, 3)); @@ -211,26 +211,24 @@ namespace Automation4 { if (must_exist) flags |= wxFD_FILE_MUST_EXIST; - wxFileDialog diag(nullptr, message, dir, file, wildcard, flags); - if (ps->ShowDialog(&diag) == wxID_CANCEL) { - lua_pushnil(L); - return 1; - } + agi::dispatch::Main().Sync([&] { + wxFileDialog diag(nullptr, message, dir, file, wildcard, flags); + if (diag.ShowModal() == wxID_CANCEL) { + lua_pushnil(L); + } else if (multiple) { + wxArrayString files; + diag.GetPaths(files); - if (multiple) { - wxArrayString files; - diag.GetPaths(files); - - lua_createtable(L, files.size(), 0); - for (size_t i = 0; i < files.size(); ++i) { - lua_pushstring(L, files[i].utf8_str()); - lua_rawseti(L, -2, i + 1); + lua_createtable(L, files.size(), 0); + for (size_t i = 0; i < files.size(); ++i) { + lua_pushstring(L, files[i].utf8_str()); + lua_rawseti(L, -2, i + 1); + } + } else { + lua_pushstring(L, diag.GetPath().utf8_str()); } + }); - return 1; - } - - lua_pushstring(L, diag.GetPath().utf8_str()); return 1; } @@ -247,13 +245,15 @@ namespace Automation4 { if (prompt_overwrite) flags |= wxFD_OVERWRITE_PROMPT; - wxFileDialog diag(ps->GetParentWindow(), message, dir, file, wildcard, flags); - if (ps->ShowDialog(&diag) == wxID_CANCEL) { - lua_pushnil(L); - return 1; - } + agi::dispatch::Main().Sync([&] { + wxFileDialog diag(ps->GetParentWindow(), message, dir, file, wildcard, flags); + if (diag.ShowModal() == wxID_CANCEL) { + lua_pushnil(L); + } else { + lua_pushstring(L, diag.GetPath().utf8_str()); + } + }); - lua_pushstring(L, diag.GetPath().utf8_str()); return 1; } }