int dt_lua_init_early_types(lua_State *L) { luaA_conversion(L, char_20, push_char_array, to_char20); luaA_conversion_push(L, const char_20, push_char_array); luaA_conversion(L, char_32, push_char_array, to_char32); luaA_conversion_push(L, const char_32, push_char_array); luaA_conversion(L, char_52, push_char_array, to_char52); luaA_conversion_push(L, const char_52, push_char_array); luaA_conversion(L, char_64, push_char_array, to_char64); luaA_conversion_push(L, const char_64, push_char_array); luaA_conversion(L, char_128, push_char_array, to_char128); luaA_conversion_push(L, const char_128, push_char_array); luaA_conversion(L, char_256, push_char_array, to_char256); luaA_conversion_push(L, const char_256, push_char_array); luaA_conversion(L, char_512, push_char_array, to_char512); luaA_conversion_push(L, const char_512, push_char_array); luaA_conversion(L, char_1024, push_char_array, to_char1024); luaA_conversion_push(L, const char_1024, push_char_array); luaA_conversion(L, char_filename_length, push_char_array, to_charfilename_length); luaA_conversion_push(L, const char_filename_length, push_char_array); luaA_conversion(L, char_path_length, push_char_array, to_charpath_length); luaA_conversion_push(L, const char_path_length, push_char_array); luaA_conversion(L, int32_t, luaA_push_int, luaA_to_int); luaA_conversion_push(L, const int32_t, luaA_push_int); luaA_conversion_push(L, const_string, luaA_push_const_char_ptr); luaA_conversion(L, protected_double, push_protected_double, luaA_to_double); luaA_conversion(L, progress_double, push_progress_double, to_progress_double); luaA_conversion_push_type(L, luaA_type_add(L,"unknown",sizeof(void*)), unknown_pushfunc); // table of gpointer values lua_newtable(L); lua_newtable(L); lua_pushstring(L, "kv"); lua_setfield(L, -2, "__mode"); lua_setmetatable(L, -2); lua_setfield(L, LUA_REGISTRYINDEX, "dt_lua_gpointer_values"); luaA_enum(L,dt_lua_orientation_t); luaA_enum_value_name(L,dt_lua_orientation_t,GTK_ORIENTATION_HORIZONTAL,"horizontal"); luaA_enum_value_name(L,dt_lua_orientation_t,GTK_ORIENTATION_VERTICAL,"vertical"); luaA_enum(L, dt_lua_align_t); luaA_enum_value_name(L, dt_lua_align_t, GTK_ALIGN_FILL, "fill"); luaA_enum_value_name(L, dt_lua_align_t, GTK_ALIGN_START, "start"); luaA_enum_value_name(L, dt_lua_align_t, GTK_ALIGN_END, "end"); luaA_enum_value_name(L, dt_lua_align_t, GTK_ALIGN_CENTER, "center"); luaA_enum_value_name(L, dt_lua_align_t, GTK_ALIGN_BASELINE, "baseline"); luaA_enum(L, dt_lua_ellipsize_mode_t); luaA_enum_value_name(L, dt_lua_ellipsize_mode_t, PANGO_ELLIPSIZE_NONE, "none"); luaA_enum_value_name(L, dt_lua_ellipsize_mode_t, PANGO_ELLIPSIZE_START, "start"); luaA_enum_value_name(L, dt_lua_ellipsize_mode_t, PANGO_ELLIPSIZE_MIDDLE, "middle"); luaA_enum_value_name(L, dt_lua_ellipsize_mode_t, PANGO_ELLIPSIZE_END, "end"); return 0; }
int dt_lua_init_call(lua_State *L) { luaA_enum(L,yield_type); luaA_enum_value(L,yield_type,WAIT_MS,false); luaA_enum_value(L,yield_type,FILE_READABLE,false); luaA_enum_value(L,yield_type,RUN_COMMAND,false); return 0; }
int dt_lua_init_early_lib(lua_State *L) { #if 0 luaA_enum(L,dt_ui_container_t); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_LEFT_TOP); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_LEFT_CENTER); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_LEFT_BOTTOM); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_RIGHT_TOP); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_RIGHT_CENTER); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_RIGHT_BOTTOM); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_TOP_LEFT); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_TOP_CENTER); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_TOP_RIGHT); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_CENTER_TOP_LEFT); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_CENTER_TOP_CENTER); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_CENTER_TOP_RIGHT); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_CENTER_BOTTOM_LEFT); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_CENTER_BOTTOM_CENTER); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_CENTER_BOTTOM_RIGHT); luaA_enum_value(L,dt_ui_container_t,DT_UI_CONTAINER_PANEL_BOTTOM); #endif dt_lua_init_type(L, dt_lib_module_t); lua_pushcfunction(L, lib_reset); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const(L, dt_lib_module_t, "reset"); lua_pushcfunction(L, version_member); dt_lua_type_register_const(L, dt_lib_module_t, "version"); lua_pushcfunction(L, id_member); dt_lua_type_register_const(L, dt_lib_module_t, "id"); lua_pushcfunction(L, name_member); dt_lua_type_register_const(L, dt_lib_module_t, "name"); lua_pushcfunction(L, expandable_member); dt_lua_type_register_const(L, dt_lib_module_t, "expandable"); lua_pushcfunction(L, expanded_member); lua_pushcclosure(L,dt_lua_gtk_wrap,1); dt_lua_type_register(L, dt_lib_module_t, "expanded"); #if 0 lua_pushcfunction(L,position_member); dt_lua_type_register_const(L,dt_lib_module_t,"position"); lua_pushcfunction(L,container_member); dt_lua_type_register_const(L,dt_lib_module_t,"container"); lua_pushcfunction(L,views_member); dt_lua_type_register_const(L,dt_lib_module_t,"views"); #endif lua_pushcfunction(L, visible_member); lua_pushcclosure(L,dt_lua_gtk_wrap,1); dt_lua_type_register(L, dt_lib_module_t, "visible"); lua_pushcfunction(L, on_screen_member); dt_lua_type_register_const(L, dt_lib_module_t, "on_screen"); dt_lua_module_new(L, "lib"); // special case : will be attached to dt.gui in lua/gui.c:dt_lua_init_gui return 0; }
void init(struct dt_lib_module_t *self) { lua_State *L = darktable.lua_state.state; int my_type = dt_lua_module_entry_get_type(L, "lib", self->plugin_name); lua_pushcfunction(L, direction_member); dt_lua_type_register_type(L, my_type, "direction"); lua_pushcfunction(L, ratio_member); dt_lua_type_register_type(L, my_type, "ratio"); lua_pushcfunction(L, max_snapshot_member); dt_lua_type_register_const_type(L, my_type, "max_snapshot"); lua_pushlightuserdata(L, self); lua_pushcclosure(L, lua_take_snapshot, 1); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, my_type, "take_snapshot"); lua_pushcfunction(L, snapshots_length); lua_pushcfunction(L, number_member); dt_lua_type_register_number_const_type(L, my_type); lua_pushcfunction(L, selected_member); dt_lua_gtk_wrap(L); dt_lua_type_register_const_type(L, my_type, "selected"); dt_lua_init_int_type(L, dt_lua_snapshot_t); lua_pushlightuserdata(L, self); lua_pushcclosure(L, filename_member, 1); dt_lua_type_register_const(L, dt_lua_snapshot_t, "filename"); lua_pushlightuserdata(L, self); lua_pushcclosure(L, name_member, 1); dt_lua_gtk_wrap(L); dt_lua_type_register_const(L, dt_lua_snapshot_t, "name"); lua_pushlightuserdata(L, self); lua_pushcclosure(L, lua_select, 1); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const(L, dt_lua_snapshot_t, "select"); lua_pushlightuserdata(L, self); lua_pushcclosure(L, name_member, 1); dt_lua_gtk_wrap(L); dt_lua_type_setmetafield(L,dt_lua_snapshot_t,"__tostring"); luaA_enum(L, snapshot_direction_t); luaA_enum_value_name(L, snapshot_direction_t, SNS_LEFT, "left"); luaA_enum_value_name(L, snapshot_direction_t, SNS_RIGHT, "right"); luaA_enum_value_name(L, snapshot_direction_t, SNS_TOP, "top"); luaA_enum_value_name(L, snapshot_direction_t, SNS_BOTTOM, "bottom"); }
int dt_lua_init_widget(lua_State* L) { dt_lua_module_new(L,"widget"); widget_type.associated_type = dt_lua_init_gpointer_type(L,lua_widget); lua_pushcfunction(L,tooltip_member); lua_pushcclosure(L,dt_lua_gtk_wrap,1); dt_lua_type_register(L, lua_widget, "tooltip"); lua_pushcfunction(L,widget_gc); lua_pushcclosure(L,dt_lua_gtk_wrap,1); dt_lua_type_setmetafield(L,lua_widget,"__gc"); lua_pushcfunction(L,reset_member); dt_lua_type_register(L, lua_widget, "reset_callback"); lua_pushcfunction(L,widget_call); dt_lua_type_setmetafield(L,lua_widget,"__call"); lua_pushcfunction(L,sensitive_member); lua_pushcclosure(L,dt_lua_gtk_wrap,1); dt_lua_type_register(L, lua_widget, "sensitive"); dt_lua_init_widget_container(L); dt_lua_init_widget_box(L); dt_lua_init_widget_button(L); dt_lua_init_widget_check_button(L); dt_lua_init_widget_combobox(L); dt_lua_init_widget_label(L); dt_lua_init_widget_entry(L); dt_lua_init_widget_file_chooser_button(L); dt_lua_init_widget_separator(L); dt_lua_init_widget_slider(L); dt_lua_init_widget_stack(L); luaA_enum(L,dt_lua_orientation_t); luaA_enum_value_name(L,dt_lua_orientation_t,GTK_ORIENTATION_HORIZONTAL,"horizontal"); luaA_enum_value_name(L,dt_lua_orientation_t,GTK_ORIENTATION_VERTICAL,"vertical"); dt_lua_push_darktable_lib(L); lua_pushstring(L, "new_widget"); lua_pushcfunction(L, &new_widget); lua_settable(L, -3); lua_pop(L, 1); return 0; }
int dt_lua_init_call(lua_State *L) { luaA_enum(L, yield_type); luaA_enum_value(L, yield_type, WAIT_MS); luaA_enum_value(L, yield_type, FILE_READABLE); luaA_enum_value(L, yield_type, RUN_COMMAND); dt_lua_push_darktable_lib(L); luaA_Type type_id = dt_lua_init_singleton(L, "control", NULL); lua_setfield(L, -2, "control"); lua_pop(L, 1); lua_pushcfunction(L, ending_cb); dt_lua_type_register_const_type(L, type_id, "ending"); lua_pushcfunction(L, dispatch_cb); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, type_id, "dispatch"); lua_newtable(L); lua_setfield(L, LUA_REGISTRYINDEX, "dt_lua_bg_threads"); return 0; }
int dt_lua_init_configuration(lua_State *L) { char tmp_path[PATH_MAX] = { 0 }; dt_lua_push_darktable_lib(L); dt_lua_goto_subtable(L, "configuration"); // build the table containing the configuration info lua_pushstring(L, "tmp_dir"); dt_loc_get_tmp_dir(tmp_path, sizeof(tmp_path)); lua_pushstring(L, tmp_path); lua_settable(L, -3); lua_pushstring(L, "config_dir"); dt_loc_get_user_config_dir(tmp_path, sizeof(tmp_path)); lua_pushstring(L, tmp_path); lua_settable(L, -3); lua_pushstring(L, "cache_dir"); dt_loc_get_user_cache_dir(tmp_path, sizeof(tmp_path)); lua_pushstring(L, tmp_path); lua_settable(L, -3); lua_pushstring(L, "version"); lua_pushstring(L, darktable_package_version); lua_settable(L, -3); lua_pushstring(L, "verbose"); lua_pushboolean(L, darktable.unmuted & DT_DEBUG_LUA); lua_settable(L, -3); lua_pushstring(L, "has_gui"); lua_pushboolean(L, darktable.gui != NULL); lua_settable(L, -3); lua_pushstring(L, "api_version_major"); lua_pushinteger(L, LUA_API_VERSION_MAJOR); lua_settable(L, -3); lua_pushstring(L, "api_version_minor"); lua_pushinteger(L, LUA_API_VERSION_MINOR); lua_settable(L, -3); lua_pushstring(L, "api_version_patch"); lua_pushinteger(L, LUA_API_VERSION_PATCH); lua_settable(L, -3); lua_pushstring(L, "api_version_suffix"); lua_pushstring(L, LUA_API_VERSION_SUFFIX); lua_settable(L, -3); lua_pushstring(L, "api_version_string"); if(LUA_API_VERSION_SUFFIX[0] == '\0') { lua_pushfstring(L, "%d.%d.%d", LUA_API_VERSION_MAJOR, LUA_API_VERSION_MINOR, LUA_API_VERSION_PATCH); } else { lua_pushfstring(L, "%d.%d.%d-%s", LUA_API_VERSION_MAJOR, LUA_API_VERSION_MINOR, LUA_API_VERSION_PATCH, LUA_API_VERSION_SUFFIX); } lua_settable(L, -3); lua_pushstring(L, "check_version"); lua_pushcfunction(L, check_version); lua_settable(L, -3); luaA_enum(L, lua_os_type); luaA_enum_value_name(L, lua_os_type, os_windows, "windows"); luaA_enum_value_name(L, lua_os_type, os_macos, "macos"); luaA_enum_value_name(L, lua_os_type, os_linux, "linux"); luaA_enum_value_name(L, lua_os_type, os_unix, "unix"); lua_pushstring(L, "running_os"); luaA_push(L, lua_os_type, &cur_os); lua_settable(L, -3); lua_pop(L, 1); // remove the configuration table from the stack return 0; }