static gint luaH_label_newindex(lua_State *L, widget_t *w, luakit_token_t token) { size_t len; const gchar *tmp; GdkColor c; PangoFontDescription *font; switch(token) { LUAKIT_WIDGET_NEWINDEX_COMMON(w) case L_TK_PADDING: return luaH_label_set_padding(L, w); case L_TK_ALIGN: return luaH_label_set_align(L, w); case L_TK_TEXT: gtk_label_set_markup(GTK_LABEL(w->widget), luaL_checklstring(L, 3, &len)); break; case L_TK_FG: tmp = luaL_checklstring(L, 3, &len); if (!gdk_color_parse(tmp, &c)) { warn("invalid color: %s", tmp); return 0; } gtk_widget_modify_fg(GTK_WIDGET(w->widget), GTK_STATE_NORMAL, &c); g_object_set_data_full(G_OBJECT(w->widget), "fg", g_strdup(tmp), g_free); break; case L_TK_FONT: tmp = luaL_checklstring(L, 3, &len); font = pango_font_description_from_string(tmp); gtk_widget_modify_font(GTK_WIDGET(w->widget), font); pango_font_description_free(font); g_object_set_data_full(G_OBJECT(w->widget), "font", g_strdup(tmp), g_free); break; case L_TK_SELECTABLE: gtk_label_set_selectable(GTK_LABEL(w->widget), luaH_checkboolean(L, 3)); break; case L_TK_WIDTH: gtk_label_set_width_chars(GTK_LABEL(w->widget), (gint)luaL_checknumber(L, 3)); return 0; default: warn("unknown property: %s", luaL_checkstring(L, 2)); return 0; } return luaH_object_property_signal(L, 1, token); }
static gint luaH_notebook_newindex(lua_State *L, widget_t *w, luakit_token_t token) { switch(token) { LUAKIT_WIDGET_NEWINDEX_COMMON(w) case L_TK_SHOW_TABS: gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w->widget), luaH_checkboolean(L, 3)); break; case L_TK_SHOW_BORDER: gtk_notebook_set_show_border(GTK_NOTEBOOK(w->widget), luaH_checkboolean(L, 3)); break; default: return 0; } return luaH_object_property_signal(L, 1, token); }
static gint luaH_box_newindex(lua_State *L, widget_t *w, luakit_token_t token) { size_t len; const gchar *tmp; GdkRGBA c; switch(token) { LUAKIT_WIDGET_NEWINDEX_COMMON(w) case L_TK_HOMOGENEOUS: gtk_box_set_homogeneous(GTK_BOX(w->widget), luaH_checkboolean(L, 3)); break; case L_TK_SPACING: gtk_box_set_spacing(GTK_BOX(w->widget), luaL_checknumber(L, 3)); break; case L_TK_BG: tmp = luaL_checklstring(L, 3, &len); if (!gdk_rgba_parse(&c, tmp)) luaL_argerror(L, 3, "unable to parse colour"); #if GTK_CHECK_VERSION(3,16,0) widget_set_css_properties(w, "background-color", tmp, NULL); #else gtk_widget_override_background_color(GTK_WIDGET(w->widget), GTK_STATE_FLAG_NORMAL, &c); #endif g_object_set_data_full(G_OBJECT(w->widget), "bg", g_strdup(tmp), g_free); break; default: return 0; } return luaH_object_property_signal(L, 1, token); }