From 0230724e66734a0298c2b9c99409017bd6ec1370 Mon Sep 17 00:00:00 2001 From: Bill Ferguson Date: Fri, 9 Aug 2024 14:19:34 -0400 Subject: [PATCH 1/2] src/CMakeLists.txt - added lua/util.c module src/lua/configuration.h - bumped API to 9.4.0 src/lua/init.c - added util module src/lua/util.c - added inter-script-communication event. src/lua/util.h Added darktable.util.message() function to the API for sending messages between scripts --- src/CMakeLists.txt | 1 + src/lua/configuration.h | 3 +- src/lua/init.c | 3 +- src/lua/util.c | 66 +++++++++++++++++++++++++++++++++++++++++ src/lua/util.h | 28 +++++++++++++++++ 5 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 src/lua/util.c create mode 100644 src/lua/util.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2d275cdcc007..065938dce5a8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -746,6 +746,7 @@ if(USE_LUA) "lua/styles.c" "lua/tags.c" "lua/types.c" + "lua/util.c" "lua/view.c" "lua/widget/box.c" "lua/widget/button.c" diff --git a/src/lua/configuration.h b/src/lua/configuration.h index 5e04dd79e8f2..b324d93f60a5 100644 --- a/src/lua/configuration.h +++ b/src/lua/configuration.h @@ -40,10 +40,11 @@ // 4.4.0 was 9.1.0 (added mimic and dt_lua_image_t changes) // 4.6.0 was 9.2.0 (added change_timestamp to dt_image_t) // 4.8.0 was 9.3.0 (added button and box widget enhancements) +// 5.0.0 was 9.4.0 (added group events and uuid) /* incompatible API change */ #define LUA_API_VERSION_MAJOR 9 /* backward compatible API change */ -#define LUA_API_VERSION_MINOR 3 +#define LUA_API_VERSION_MINOR 4 /* bugfixes that should not change anything to the API */ #define LUA_API_VERSION_PATCH 0 /* suffix for unstable version */ diff --git a/src/lua/init.c b/src/lua/init.c index b3bf425e2493..01086d466218 100644 --- a/src/lua/init.c +++ b/src/lua/init.c @@ -43,6 +43,7 @@ #include "lua/styles.h" #include "lua/tags.h" #include "lua/types.h" +#include "lua/util.h" #include "lua/view.h" #include "lua/widget/widget.h" @@ -138,7 +139,7 @@ static lua_CFunction init_funcs[] dt_lua_init_luastorages, dt_lua_init_tags, dt_lua_init_film, dt_lua_init_call, dt_lua_init_view, dt_lua_init_events, dt_lua_init_init, dt_lua_init_widget, dt_lua_init_lualib, dt_lua_init_gettext, dt_lua_init_guides, dt_lua_init_cairo, - dt_lua_init_password, NULL }; + dt_lua_init_password, dt_lua_init_util, NULL }; void dt_lua_init(lua_State *L, const char *lua_command) diff --git a/src/lua/util.c b/src/lua/util.c new file mode 100644 index 000000000000..bee63c56c659 --- /dev/null +++ b/src/lua/util.c @@ -0,0 +1,66 @@ +/* + This file is part of darktable, + Copyright (C) 2013-2020 darktable developers. + + darktable is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + darktable is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with darktable. If not, see . + */ +#include "lua/preferences.h" +#include "lua/call.h" +#include "lua/events.h" +#include +#include +#include + +static int message(lua_State *L) +{ + const char *sender = luaL_checkstring(L, 1); + const char *receiver = luaL_checkstring(L, 2); + const char *message = luaL_checkstring(L, 3); + + dt_lua_async_call_alien(dt_lua_event_trigger_wrapper, + 0, NULL, NULL, + LUA_ASYNC_TYPENAME, "const char*", "inter-script-communication", + LUA_ASYNC_TYPENAME, "const char*", sender, + LUA_ASYNC_TYPENAME, "const char*", receiver, + LUA_ASYNC_TYPENAME, "const char*", message, + LUA_ASYNC_DONE); + + return 0; +} + + +int dt_lua_init_util(lua_State *L) +{ + dt_lua_push_darktable_lib(L); + dt_lua_goto_subtable(L, "util"); + + lua_pushcfunction(L, message); + lua_setfield(L, -2, "message"); + + lua_pop(L, 1); + + + lua_pushcfunction(L, dt_lua_event_multiinstance_register); + lua_pushcfunction(L, dt_lua_event_multiinstance_destroy); + lua_pushcfunction(L, dt_lua_event_multiinstance_trigger); + dt_lua_event_add(L, "inter-script-communication"); + + return 0; +} +// clang-format off +// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py +// vim: shiftwidth=2 expandtab tabstop=2 cindent +// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified; +// clang-format on + diff --git a/src/lua/util.h b/src/lua/util.h new file mode 100644 index 000000000000..4c188f2f3cc9 --- /dev/null +++ b/src/lua/util.h @@ -0,0 +1,28 @@ +/* + This file is part of darktable, + Copyright (C) 2013-2020 darktable developers. + + darktable is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + darktable is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with darktable. If not, see . + */ + +#pragma once + +int dt_lua_init_util(lua_State *L); + +// clang-format off +// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py +// vim: shiftwidth=2 expandtab tabstop=2 cindent +// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified; +// clang-format on + From a7b0693aa5aec874dabb9306894c6c4c0cefa9fb Mon Sep 17 00:00:00 2001 From: Bill Ferguson Date: Mon, 9 Sep 2024 09:17:51 -0400 Subject: [PATCH 2/2] lua/util - fixed copyright --- src/lua/util.c | 2 +- src/lua/util.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lua/util.c b/src/lua/util.c index bee63c56c659..e463c3e32fb8 100644 --- a/src/lua/util.c +++ b/src/lua/util.c @@ -1,6 +1,6 @@ /* This file is part of darktable, - Copyright (C) 2013-2020 darktable developers. + Copyright (C) 2024 darktable developers. darktable is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/src/lua/util.h b/src/lua/util.h index 4c188f2f3cc9..2eb685bb8105 100644 --- a/src/lua/util.h +++ b/src/lua/util.h @@ -1,6 +1,6 @@ /* This file is part of darktable, - Copyright (C) 2013-2020 darktable developers. + Copyright (C) 2024 darktable developers. darktable is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by