Пример #1
0
static gint
luaH_notebook_get_title(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    widget_t *child = luaH_checkudata(L, 2, &widget_class);
    lua_pushstring(L, gtk_notebook_get_tab_label_text(
        GTK_NOTEBOOK(w->widget), child->widget));
    return 1;
}
Пример #2
0
static gint
luaH_notebook_set_title(lua_State *L)
{
    size_t len;
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    widget_t *child = luaH_checkudata(L, 2, &widget_class);
    const gchar *title = luaL_checklstring(L, 3, &len);
    gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(w->widget),
        child->widget, title);
    return 0;
}
Пример #3
0
static gint
luaH_notebook_indexof(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    widget_t *child = luaH_checkudata(L, 2, &widget_class);

    gint i = gtk_notebook_page_num(GTK_NOTEBOOK(w->widget), child->widget);

    /* return index or nil */
    if (!++i) return 0;
    lua_pushnumber(L, i);
    return 1;
}
Пример #4
0
static gint
luaH_notebook_remove(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    widget_t *child = luaH_checkudata(L, 2, &widget_class);
    gint i = gtk_notebook_page_num(GTK_NOTEBOOK(w->widget), child->widget);

    if (i != -1)
        return 0;

    GtkWidget *widget = gtk_notebook_get_nth_page(GTK_NOTEBOOK(w->widget), i);
    g_object_ref(G_OBJECT(widget));
    gtk_notebook_remove_page(GTK_NOTEBOOK(w->widget), i);
    return 0;
}
Пример #5
0
static gint
luaH_webview_get_hscroll(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    GtkAdjustment *adjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(w->widget));
    return push_adjustment_values(L, adjustment);
}
Пример #6
0
/* The __newindex method for the webview object */
static gint
luaH_webview_newindex(lua_State *L, luakit_token_t token)
{
    size_t len;
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    GtkWidget *view = g_object_get_data(G_OBJECT(w->widget), "webview");
    gchar *uri;

    switch(token)
    {
      case L_TK_URI:
        uri = (gchar*) luaL_checklstring(L, 3, &len);
        uri = g_strrstr(uri, "://") ? g_strdup(uri) :
            g_strdup_printf("http://%s", uri);
        webkit_web_view_load_uri(WEBKIT_WEB_VIEW(view), uri);
        g_object_set_data_full(G_OBJECT(view), "uri", uri, g_free);
        break;

      case L_TK_SHOW_SCROLLBARS:
        show_scrollbars(w, luaH_checkboolean(L, 3));
        return 0;

      default:
        warn("unknown property: %s", luaL_checkstring(L, 2));
        return 0;
    }

    return luaH_object_emit_property_signal(L, 1);
}
Пример #7
0
static gint
luaH_entry_get_position(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    lua_pushnumber(L, gtk_editable_get_position(GTK_EDITABLE(w->widget)));
    return 1;
}
Пример #8
0
/* Return the number of widgets in the notebook */
static gint
luaH_notebook_count(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    lua_pushnumber(L, gtk_notebook_get_n_pages(GTK_NOTEBOOK(w->widget)));
    return 1;
}
Пример #9
0
static gint
luaH_webview_get_prop(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    const gchar *prop = luaL_checkstring(L, 2);
    GtkWidget *view = GTK_WIDGET(g_object_get_data(G_OBJECT(w->widget), "webview"));
    GObject *ws;
    property_tmp_values tmp;
    SoupURI *u;

    for (guint i = 0; i < LENGTH(properties); i++) {
        if (g_strcmp0(properties[i].name, prop))
            continue;

        ws = get_settings_object(view, properties[i].scope);

        switch(properties[i].type) {
          case BOOL:
            g_object_get(ws, prop, &tmp.b, NULL);
            lua_pushboolean(L, tmp.b);
            return 1;

          case CHAR:
            g_object_get(ws, prop, &tmp.c, NULL);
            lua_pushstring(L, tmp.c);
            g_free(tmp.c);
            return 1;

          case INT:
            g_object_get(ws, prop, &tmp.i, NULL);
            lua_pushnumber(L, tmp.i);
            return 1;

          case FLOAT:
            g_object_get(ws, prop, &tmp.f, NULL);
            lua_pushnumber(L, tmp.f);
            return 1;

          case DOUBLE:
            g_object_get(ws, prop, &tmp.d, NULL);
            lua_pushnumber(L, tmp.d);
            return 1;

          case URI:
            g_object_get(ws, prop, &u, NULL);
            tmp.c = soup_uri_to_string(u, 0);
            lua_pushstring(L, tmp.c);
            soup_uri_free(u);
            g_free(tmp.c);
            return 1;

          default:
            warn("unknown property type for: %s", properties[i].name);
            break;
        }
    }
    warn("unknown property: %s", prop);
    return 0;
}
Пример #10
0
/* Inserts a widget into the notebook widget at an index */
static gint
luaH_notebook_insert(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    widget_t *child = luaH_checkudata(L, 3, &widget_class);
    gint i = luaL_checknumber(L, 2);
    /* correct index */
    if (i != -1) i--;

    i = gtk_notebook_insert_page(GTK_NOTEBOOK(w->widget),
        child->widget, NULL, i);

    /* return new index or nil */
    if (!++i) return 0;
    lua_pushnumber(L, i);
    return 1;
}
Пример #11
0
static gint
luaH_webview_clear_search(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    WebKitWebView *view = WEBKIT_WEB_VIEW(GTK_WIDGET(g_object_get_data(G_OBJECT(w->widget), "webview")));
    webkit_web_view_unmark_text_matches(view);
    return 0;
}
Пример #12
0
static gint
luaH_webview_go_forward(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    gint steps = (gint) luaL_checknumber(L, 2);
    GtkWidget *view = GTK_WIDGET(g_object_get_data(G_OBJECT(w->widget), "webview"));
    webkit_web_view_go_back_or_forward(WEBKIT_WEB_VIEW(view), steps);
    return 0;
}
Пример #13
0
static int
luaH_timer_new(lua_State *L)
{
    luaH_class_new(L, &timer_class);
    ltimer_t *timer = luaH_checkudata(L, -1, &timer_class);
    timer->ref = NULL;
    timer->timer_id = TIMER_STOPPED;
    return 1;
}
Пример #14
0
static gint
luaH_webview_set_scroll_horiz(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    gdouble value = (gdouble) luaL_checknumber(L, 2);
    GtkAdjustment *adjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(w->widget));
    set_adjustment(adjustment, value);
    return 0;
}
Пример #15
0
static int
luaH_timer_stop(lua_State *L)
{
    ltimer_t *timer = luaH_checkudata(L, 1, &timer_class);
    if (timer->timer_id == TIMER_STOPPED) {
        luaH_warn(L, "timer already stopped. Cannot stop a timer twice");
    } else {
        luaH_timer_destroy(L, timer);
    }
    return 0;
}
Пример #16
0
static gint
luaH_notebook_switch(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    gint i = luaL_checknumber(L, 2);
    /* correct index */
    if (i != -1) i--;
    gtk_notebook_set_current_page(GTK_NOTEBOOK(w->widget), i);
    lua_pushnumber(L, gtk_notebook_get_current_page(GTK_NOTEBOOK(w->widget)));
    return 1;
}
Пример #17
0
static gint
luaH_notebook_current(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    gint n = gtk_notebook_get_n_pages(GTK_NOTEBOOK(w->widget));
    if (n == 1)
        lua_pushnumber(L, 1);
    else
        lua_pushnumber(L, gtk_notebook_get_current_page(
            GTK_NOTEBOOK(w->widget)) + 1);
    return 1;
}
Пример #18
0
static gint
luaH_entry_set_position(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    gint pos = luaL_checknumber(L, 2);
    /* lua table indexes start at 1 */
    if (pos > 0) pos--;

    gtk_editable_set_position(GTK_EDITABLE(w->widget), pos);
    lua_pushnumber(L, gtk_editable_get_position(GTK_EDITABLE(w->widget)));
    return 1;
}
Пример #19
0
static gint
luaH_webview_eval_js(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    WebKitWebView *view = WEBKIT_WEB_VIEW(g_object_get_data(G_OBJECT(w->widget), "webview"));
    const gchar *script = luaL_checkstring(L, 2);
    const gchar *filename = luaL_checkstring(L, 3);

    /* evaluate javascript script and push return result onto lua stack */
    const gchar *result = webview_eval_js(view, script, filename);
    lua_pushstring(L, result);
    return 1;
}
Пример #20
0
static gint
luaH_entry_append(lua_State *L)
{
    size_t len;
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    const gchar *text = luaL_checklstring(L, 2, &len);
    gint pos = -1;

    gtk_editable_insert_text(GTK_EDITABLE(w->widget),
        text, g_utf8_strlen(text, len), &pos);

    return pos + 1;
}
Пример #21
0
static gint
luaH_entry_newindex(lua_State *L, luakit_token_t token)
{
    size_t len;
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    const gchar *tmp;
    GdkColor c;
    PangoFontDescription *font;

    switch(token)
    {
      case L_TK_TEXT:
        gtk_entry_set_text(GTK_ENTRY(w->widget),
            luaL_checklstring(L, 3, &len));
        break;

      case L_TK_FG:
      case L_TK_BG:
        tmp = luaL_checklstring(L, 3, &len);
        if (!gdk_color_parse(tmp, &c)) {
            warn("invalid color: %s", tmp);
            return 0;
        }

        if (token == L_TK_FG) {
            gtk_widget_modify_text(GTK_WIDGET(w->widget), GTK_STATE_NORMAL, &c);
            g_object_set_data_full(G_OBJECT(w->widget), "fg", g_strdup(tmp), g_free);
        } else {
            gtk_widget_modify_base(GTK_WIDGET(w->widget), GTK_STATE_NORMAL, &c);
            g_object_set_data_full(G_OBJECT(w->widget), "bg", g_strdup(tmp), g_free);
        }
        break;

      case L_TK_SHOW_FRAME:
        gtk_entry_set_has_frame(GTK_ENTRY(w->widget), luaH_checkboolean(L, 3));
        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);
        g_object_set_data_full(G_OBJECT(w->widget), "font", g_strdup(tmp), g_free);
        break;

      default:
        warn("unknown property: %s", luaL_checkstring(L, 2));
        return 0;
    }

    return luaH_object_emit_property_signal(L, 1);
}
Пример #22
0
static int
luaH_timer_start(lua_State *L)
{
    ltimer_t *timer = luaH_checkudata(L, 1, &timer_class);
    // get interval
    lua_getfield(L, -1, TIMER_INTERVAL_FIELD);
    int millis = luaL_checkinteger(L, -1);
    timer->ref = luaH_object_ref(L, 1); // ensure that timers don't get collected while running
    if (timer->timer_id == TIMER_STOPPED) {
        timer->timer_id = g_timeout_add(millis, timer_handle_timeout, timer);
    } else {
        luaH_warn(L, "timer already started. Cannot start a timer twice");
    }
    return 0;
}
Пример #23
0
static gint
luaH_entry_insert(lua_State *L)
{
    size_t len;
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    gint pos = luaL_checknumber(L, 2);
    /* lua table indexes start at 1 */
    if (pos > 0) pos--;
    const gchar *text = luaL_checklstring(L, 3, &len);

    gtk_editable_insert_text(GTK_EDITABLE(w->widget),
        text, g_utf8_strlen(text, len), &pos);

    return pos + 1;
}
Пример #24
0
static gint
luaH_webview_search(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    WebKitWebView *view = WEBKIT_WEB_VIEW(GTK_WIDGET(g_object_get_data(G_OBJECT(w->widget), "webview")));
    const gchar *text = luaL_checkstring(L, 2);
    gboolean case_sensitive = luaH_checkboolean(L, 3);
    gboolean forward = luaH_checkboolean(L, 4);
    gboolean wrap = luaH_checkboolean(L, 5);

    webkit_web_view_unmark_text_matches(view);
    webkit_web_view_search_text(view, text, case_sensitive, forward, wrap);
    webkit_web_view_mark_text_matches(view, text, case_sensitive, 0);
    webkit_web_view_set_highlight_text_matches(view, TRUE);
    return 0;
}
Пример #25
0
static gint
luaH_notebook_atindex(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    gint i = luaL_checknumber(L, 2);
    /* correct index */
    if (i != -1) i--;

    GtkWidget *widget = gtk_notebook_get_nth_page(GTK_NOTEBOOK(w->widget), i);
    if (!widget)
        return 0;

    widget_t *child = g_object_get_data(G_OBJECT(widget), "widget");
    luaH_object_push(L, child->ref);
    return 1;
}
Пример #26
0
static gint
luaH_webview_loading(lua_State *L)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    GtkWidget *view = g_object_get_data(G_OBJECT(w->widget), "webview");
    WebKitLoadStatus s;
    g_object_get(G_OBJECT(view), "load-status", &s, NULL);
    switch (s) {
      case WEBKIT_LOAD_PROVISIONAL:
      case WEBKIT_LOAD_COMMITTED:
      case WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT:
        lua_pushboolean(L, TRUE);
        break;

      default:
        lua_pushboolean(L, FALSE);
        break;
    }
    return 1;
}
Пример #27
0
static gint
luaH_notebook_newindex(lua_State *L, luakit_token_t token)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);

    switch(token)
    {
      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_emit_property_signal(L, 1);
}
Пример #28
0
gint
luaH_object_tostring(lua_State *L) {
    lua_class_t *lua_class = luaH_class_get(L, 1);
    lua_pushfstring(L, "%s: %p", lua_class->name, luaH_checkudata(L, 1, lua_class));
    return 1;
}
Пример #29
0
static gint
luaH_webview_index(lua_State *L, luakit_token_t token)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);
    GtkWidget *view = g_object_get_data(G_OBJECT(w->widget), "webview");

    switch(token)
    {
      case L_TK_DESTROY:
        lua_pushcfunction(L, luaH_widget_destroy);
        return 1;

      case L_TK_GET_SCROLL_VERT:
        lua_pushcfunction(L, luaH_webview_get_vscroll);
        return 1;

      case L_TK_GET_SCROLL_HORIZ:
        lua_pushcfunction(L, luaH_webview_get_hscroll);
        return 1;

      case L_TK_SET_SCROLL_VERT:
        lua_pushcfunction(L, luaH_webview_set_scroll_vert);
        return 1;

      case L_TK_SET_SCROLL_HORIZ:
        lua_pushcfunction(L, luaH_webview_set_scroll_horiz);
        return 1;

      case L_TK_EVAL_JS:
        lua_pushcfunction(L, luaH_webview_eval_js);
        return 1;

      case L_TK_SEARCH:
        lua_pushcfunction(L, luaH_webview_search);
        return 1;

      case L_TK_CLEAR_SEARCH:
        lua_pushcfunction(L, luaH_webview_clear_search);
        return 1;

      case L_TK_SET_PROP:
        lua_pushcfunction(L, luaH_webview_set_prop);
        return 1;

      case L_TK_GET_PROP:
        lua_pushcfunction(L, luaH_webview_get_prop);
        return 1;

      case L_TK_HOVERED_URI:
        lua_pushstring(L, g_object_get_data(G_OBJECT(view), "hovered-uri"));
        return 1;

      case L_TK_URI:
        lua_pushstring(L, g_object_get_data(G_OBJECT(view), "uri"));
        return 1;

      case L_TK_SHOW:
        lua_pushcfunction(L, luaH_widget_show);
        return 1;

      case L_TK_HIDE:
        lua_pushcfunction(L, luaH_widget_hide);
        return 1;

      case L_TK_FOCUS:
        lua_pushcfunction(L, luaH_widget_focus);
        return 1;

      case L_TK_LOADING:
        lua_pushcfunction(L, luaH_webview_loading);
        return 1;

      case L_TK_GO_BACK:
        lua_pushcfunction(L, luaH_webview_go_back);
        return 1;

      case L_TK_GO_FORWARD:
        lua_pushcfunction(L, luaH_webview_go_forward);
        return 1;

      default:
        warn("unknown property: %s", luaL_checkstring(L, 2));
        break;
    }

    return 0;
}
Пример #30
0
static gint
luaH_notebook_index(lua_State *L, luakit_token_t token)
{
    widget_t *w = luaH_checkudata(L, 1, &widget_class);

    switch(token)
    {
      case L_TK_DESTROY:
        lua_pushcfunction(L, luaH_widget_destroy);
        return 1;

      case L_TK_COUNT:
        lua_pushcfunction(L, luaH_notebook_count);
        return 1;

      case L_TK_INSERT:
        lua_pushcfunction(L, luaH_notebook_insert);
        return 1;

      case L_TK_APPEND:
        lua_pushcfunction(L, luaH_notebook_append);
        return 1;

      case L_TK_CURRENT:
        lua_pushcfunction(L, luaH_notebook_current);
        return 1;

      case L_TK_REMOVE:
        lua_pushcfunction(L, luaH_notebook_remove);
        return 1;

      case L_TK_INDEXOF:
        lua_pushcfunction(L, luaH_notebook_indexof);
        return 1;

      case L_TK_ATINDEX:
        lua_pushcfunction(L, luaH_notebook_atindex);
        return 1;

      case L_TK_SWITCH:
        lua_pushcfunction(L, luaH_notebook_switch);
        return 1;

      case L_TK_SET_TITLE:
        lua_pushcfunction(L, luaH_notebook_set_title);
        return 1;

      case L_TK_GET_TITLE:
        lua_pushcfunction(L, luaH_notebook_get_title);
        return 1;

      case L_TK_SHOW_TABS:
        lua_pushboolean(L, gtk_notebook_get_show_tabs(
            GTK_NOTEBOOK(w->widget)));
        return 1;

      case L_TK_SHOW_BORDER:
        lua_pushboolean(L, gtk_notebook_get_show_border(
            GTK_NOTEBOOK(w->widget)));
        return 1;

      case L_TK_SHOW:
        lua_pushcfunction(L, luaH_widget_show);
        return 1;

      case L_TK_HIDE:
        lua_pushcfunction(L, luaH_widget_hide);
        return 1;

      case L_TK_FOCUS:
        lua_pushcfunction(L, luaH_widget_focus);
        return 1;

      default:
        break;
    }
    return 0;
}