int dt_lua_init_widget_entry(lua_State* L) { dt_lua_init_widget_type(L,&entry_type,lua_entry,GTK_TYPE_ENTRY); lua_pushcfunction(L, tostring_member); dt_lua_gtk_wrap(L); dt_lua_type_setmetafield(L, lua_entry, "__tostring"); lua_pushcfunction(L,text_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_entry, "text"); lua_pushcfunction(L,is_password_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_entry, "is_password"); lua_pushcfunction(L,placeholder_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_entry, "placeholder"); lua_pushcfunction(L,editable_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_entry, "editable"); return 0; }
int dt_lua_init_widget_slider(lua_State* L) { dt_lua_init_widget_type(L,&slider_type,lua_slider,DT_BAUHAUS_WIDGET_TYPE); lua_pushcfunction(L, tostring_member); dt_lua_gtk_wrap(L); dt_lua_type_setmetafield(L, lua_slider, "__tostring"); lua_pushcfunction(L,digits_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_slider, "digits"); lua_pushcfunction(L,step_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_slider, "step"); lua_pushcfunction(L,hard_min_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_slider, "hard_min"); lua_pushcfunction(L,hard_max_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_slider, "hard_max"); lua_pushcfunction(L,soft_min_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_slider, "soft_min"); lua_pushcfunction(L,soft_max_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_slider, "soft_max"); lua_pushcfunction(L,value_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_slider, "value"); lua_pushcfunction(L,label_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_slider, "label"); return 0; }
int dt_lua_init_widget_button(lua_State* L) { dt_lua_init_widget_type(L,&button_type,lua_button,GTK_TYPE_BUTTON); lua_pushcfunction(L, tostring_member); dt_lua_gtk_wrap(L); dt_lua_type_setmetafield(L, lua_button, "__tostring"); lua_pushcfunction(L,label_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_button, "label"); dt_lua_widget_register_gtk_callback(L,lua_button,"clicked","clicked_callback",G_CALLBACK(clicked_callback)); 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"); }
static int lua_update_metadata(lua_State*L) { dt_lib_module_t *self = lua_touserdata(L, 1); int32_t imgid = lua_tointeger(L,2); dt_lua_module_entry_push(L,"lib",self->plugin_name); lua_getuservalue(L,-1); lua_getfield(L,4,"callbacks"); lua_getfield(L,4,"values"); lua_pushnil(L); while(lua_next(L, 5) != 0) { lua_pushvalue(L,-1); luaA_push(L,dt_lua_image_t,&imgid); lua_call(L,1,1); lua_pushvalue(L,7); lua_pushvalue(L,9); lua_settable(L,6); lua_pop(L, 2); } lua_pushcfunction(L,lua_update_widgets); dt_lua_gtk_wrap(L); lua_pushlightuserdata(L,self); lua_call(L,1,0); 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_combobox(lua_State* L) { dt_lua_init_widget_type(L,&combobox_type,lua_combobox,DT_BAUHAUS_WIDGET_TYPE); lua_pushcfunction(L, tostring_member); dt_lua_gtk_wrap(L); dt_lua_type_setmetafield(L, lua_combobox, "__tostring"); lua_pushcfunction(L,combobox_len); dt_lua_gtk_wrap(L); lua_pushcfunction(L,combobox_numindex); dt_lua_gtk_wrap(L); dt_lua_type_register_number(L,lua_combobox); lua_pushcfunction(L,value_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_combobox, "value"); lua_pushcfunction(L,selected_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_combobox, "selected"); dt_lua_widget_register_gtk_callback(L,lua_combobox,"value-changed","changed_callback",G_CALLBACK(changed_callback)); lua_pushcfunction(L,label_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_combobox, "label"); lua_pushcfunction(L,editable_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_combobox, "editable"); return 0; }
int dt_lua_init_widget_box(lua_State* L) { dt_lua_init_widget_type(L,&box_type,lua_box,GTK_TYPE_BOX); lua_pushcfunction(L,orientation_member); dt_lua_gtk_wrap(L); dt_lua_type_register(L, lua_box, "orientation"); return 0; }
void init(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_pushlightuserdata(L,self); lua_pushcclosure(L, lua_register_widget,1); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, my_type, "register_widget"); }
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, grouping_member); dt_lua_gtk_wrap(L); dt_lua_type_register_type(L, my_type, "grouping"); lua_pushcfunction(L, show_overlays_member); dt_lua_gtk_wrap(L); dt_lua_type_register_type(L, my_type, "show_overlays"); lua_pushcfunction(L, dt_lua_event_multiinstance_register); lua_pushcfunction(L, dt_lua_event_multiinstance_trigger); dt_lua_event_add(L, "global_toolbox-grouping_toggle"); lua_pushcfunction(L, dt_lua_event_multiinstance_register); lua_pushcfunction(L, dt_lua_event_multiinstance_trigger); dt_lua_event_add(L, "global_toolbox-overlay_toggle"); }
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); dt_lua_gtk_wrap(L); 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; }
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_pushlightuserdata(L, self); lua_pushcclosure(L, lua_register_selection ,1); dt_lua_gtk_wrap(L); lua_pushcclosure(L, dt_lua_type_member_common, 1); dt_lua_type_register_const_type(L, my_type, "register_selection"); dt_lua_module_entry_push(L,"lib",self->plugin_name); lua_getuservalue(L,-1); lua_newtable(L); lua_setfield(L,-2,"callbacks"); lua_pop(L,2); }
luaA_Type dt_lua_init_widget_type_type(lua_State *L, dt_lua_widget_type_t* widget_type,const char* lua_type,GType gtk_type) { luaA_Type type_id = dt_lua_init_gpointer_type_type(L,luaA_type_add(L,lua_type,sizeof(gpointer))); widget_type->associated_type = type_id; widget_type->gtk_type = gtk_type; dt_lua_type_register_parent_type(L, type_id, widget_type->parent->associated_type); lua_newtable(L); dt_lua_type_setmetafield_type(L,type_id,"__gtk_signals"); // add to the table lua_pushlightuserdata(L, widget_type); lua_pushcclosure(L, get_widget_params, 1); dt_lua_gtk_wrap(L); dt_lua_module_entry_new(L, -1, "widget", widget_type->name); lua_pop(L, 1); return type_id; };
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; }