int dt_lua_init_gui(lua_State * L) { if(darktable.gui != NULL) { /* images */ dt_lua_push_darktable_lib(L); luaA_Type type_id = dt_lua_init_singleton(L,"gui_lib",NULL); lua_setfield(L,-2,"gui"); lua_pop(L,1); lua_pushcfunction(L,selection_cb); lua_pushcclosure(L,dt_lua_type_member_common,1); dt_lua_type_register_const_type(L,type_id,"selection"); lua_pushcfunction(L,hovered_cb); dt_lua_type_register_const_type(L,type_id,"hovered"); lua_pushcfunction(L,act_on_cb); dt_lua_type_register_const_type(L,type_id,"action_images"); lua_pushcfunction(L,current_view_cb); lua_pushcclosure(L,dt_lua_type_member_common,1); dt_lua_type_register_const_type(L,type_id,"current_view"); lua_pushcfunction(L, lua_create_job); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, type_id, "create_job"); // create a type describing a job object int job_type = dt_lua_init_gpointer_type(L, dt_lua_backgroundjob_t); lua_pushcfunction(L, lua_job_progress); dt_lua_type_register_type(L, job_type, "percent"); lua_pushcfunction(L, lua_job_valid); dt_lua_type_register_type(L, job_type, "valid"); } return 0; }
int dt_lua_init_gui(lua_State *L) { if(darktable.gui != NULL) { /* images */ dt_lua_push_darktable_lib(L); luaA_Type type_id = dt_lua_init_singleton(L, "gui_lib", NULL); lua_setfield(L, -2, "gui"); lua_pop(L, 1); lua_pushcfunction(L, selection_cb); lua_pushcclosure(L,dt_lua_gtk_wrap,1); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, type_id, "selection"); lua_pushcfunction(L, hovered_cb); dt_lua_type_register_const_type(L, type_id, "hovered"); lua_pushcfunction(L, act_on_cb); dt_lua_type_register_const_type(L, type_id, "action_images"); lua_pushcfunction(L, current_view_cb); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, type_id, "current_view"); lua_pushcfunction(L, lua_create_job); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, type_id, "create_job"); dt_lua_module_push(L, "lib"); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, type_id, "libs"); dt_lua_module_push(L, "view"); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, type_id, "views"); // create a type describing a job object int job_type = dt_lua_init_gpointer_type(L, dt_lua_backgroundjob_t); lua_pushcfunction(L, lua_job_progress); dt_lua_type_register_type(L, job_type, "percent"); lua_pushcfunction(L, lua_job_valid); dt_lua_type_register_type(L, job_type, "valid"); // allow to react to highlighting an image lua_pushcfunction(L, dt_lua_event_multiinstance_register); lua_pushcfunction(L, dt_lua_event_multiinstance_trigger); dt_lua_event_add(L, "mouse-over-image-changed"); dt_control_signal_connect(darktable.signals, DT_SIGNAL_MOUSE_OVER_IMAGE_CHANGE, G_CALLBACK(on_mouse_over_image_changed), NULL); } return 0; }
int dt_lua_init_widget(lua_State* L) { lua_newtable(L); lua_setfield(L, LUA_REGISTRYINDEX,"dt_lua_widget_bind_table"); dt_lua_module_new(L,"widget"); widget_type.associated_type = dt_lua_init_gpointer_type(L,lua_widget); lua_pushcfunction(L,tooltip_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_widget, "tooltip"); lua_pushcfunction(L,widget_gc); dt_lua_gtk_wrap(L); 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); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_widget, "sensitive"); lua_pushcfunction(L, dt_lua_widget_tostring_member); dt_lua_gtk_wrap(L); dt_lua_type_setmetafield(L,lua_widget,"__tostring"); 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); dt_lua_init_widget_text_view(L); 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_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_cairo(lua_State *L) { int cairo_type = dt_lua_init_gpointer_type(L, dt_lua_cairo_t); lua_pushcfunction(L, _draw_line); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, cairo_type, "draw_line"); lua_pushcfunction(L, _save); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, cairo_type, "save"); lua_pushcfunction(L, _restore); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, cairo_type, "restore"); lua_pushcfunction(L, _new_sub_path); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, cairo_type, "new_sub_path"); lua_pushcfunction(L, _scale); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, cairo_type, "scale"); lua_pushcfunction(L, _translate); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, cairo_type, "translate"); lua_pushcfunction(L, _rotate); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, cairo_type, "rotate"); lua_pushcfunction(L, _move_to); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, cairo_type, "move_to"); lua_pushcfunction(L, _line_to); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, cairo_type, "line_to"); lua_pushcfunction(L, _arc); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, cairo_type, "arc"); lua_pushcfunction(L, _arc_negative); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, cairo_type, "arc_negative"); lua_pushcfunction(L, _rectangle); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, cairo_type, "rectangle"); return 0; }