static VALUE term_get_text(int argc, VALUE *argv, VALUE self) { VALUE get_attrs, include_trailing_spaces, proc, rb_text; GArray *attrs = NULL; char *text; rb_scan_args(argc, argv, "02&", &get_attrs, &include_trailing_spaces, &proc); if (get_attrs != Qfalse) attrs = g_array_new(FALSE, TRUE, sizeof(VteCharAttributes)); if (RVAL2CBOOL(include_trailing_spaces)) { text = vte_terminal_get_text_include_trailing_spaces( RVAL2TERM(self), term_is_selected_cb, (gpointer)proc, attrs); } else { text = vte_terminal_get_text(RVAL2TERM(self), term_is_selected_cb, (gpointer)proc, attrs); } rb_text = CSTR2RVAL(text); free(text); if (attrs) { VALUE rb_attrs; rb_attrs = attrary2rval(attrs); g_array_free(attrs, TRUE); return rb_ary_new3(2, rb_text, rb_attrs); } else { return rb_text; } }
static VALUE term_set_background_image(VALUE self, VALUE image_or_path) { if (RVAL2CBOOL(rb_obj_is_kind_of(image_or_path, rb_cString))) { vte_terminal_set_background_image_file(RVAL2TERM(self), RVAL2CSTR(image_or_path)); } else { vte_terminal_set_background_image(RVAL2TERM(self), RVAL2GOBJ(image_or_path)); } return Qnil; }
static VALUE term_set_cursor_blinks(VALUE self, VALUE blink) { #if VTE_CHECK_VERSION(0, 18, 0) VteTerminalCursorBlinkMode mode; mode = RVAL2CBOOL(blink) ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF; vte_terminal_set_cursor_blink_mode(RVAL2TERM(self), mode); #else vte_terminal_set_cursor_blinks(RVAL2TERM(self), RVAL2CBOOL(blink)); #endif return Qnil; }
static VALUE rg_match_set_cursor(VALUE self, VALUE tag, VALUE cursor) { if (NIL_P(cursor) || RVAL2GTYPE(cursor) == GDK_TYPE_CURSOR) { vte_terminal_match_set_cursor(RVAL2TERM(self), NUM2INT(tag), RVAL2GOBJ(cursor)); } else if (RVAL2GTYPE(cursor) == GDK_TYPE_CURSOR_TYPE) { vte_terminal_match_set_cursor_type(RVAL2TERM(self), NUM2INT(tag), RVAL2CT(cursor)); #if VTE_CHECK_VERSION(0, 17, 1) } else { vte_terminal_match_set_cursor_name(_SELF(self), NUM2INT(tag), RVAL2CSTR(cursor)); #endif } return self; }
static VALUE term_set_background_saturation(VALUE self, VALUE saturation) { vte_terminal_set_background_saturation(RVAL2TERM(self), NUM2DBL(saturation)); return Qnil; }
static VALUE term_set_colors(VALUE self, VALUE foreground, VALUE background, VALUE rb_palette) { glong i, len; GdkColor *palette; len = RARRAY_LEN(rb_palette); if (!(len == 0 || len == 8 || len == 16 || len == 24)) { char *inspect; inspect = RVAL2CSTR(rb_palette); rb_raise(rb_eArgError, "palette size must be 0, 8, 16 or 24: %s", inspect); } palette = ALLOCA_N(GdkColor, len); for (i = 0; i < len; i++) { GdkColor *color; color = RVAL2COLOR(RARRAY_PTR(rb_palette)[i]); palette[i] = *color; } vte_terminal_set_colors(RVAL2TERM(self), RVAL2COLOR(foreground), RVAL2COLOR(background), palette, len); return Qnil; }
static VALUE term_set_color_cursor(VALUE self, VALUE cursor) { vte_terminal_set_color_cursor(RVAL2TERM(self), NIL_P(cursor) ? NULL : RVAL2COLOR(cursor)); return Qnil; }
static VALUE term_match_set_cursor_type(VALUE self, VALUE tag, VALUE cursor_type) { vte_terminal_match_set_cursor_type(RVAL2TERM(self), NUM2INT(tag), RVAL2CT(cursor_type)); return Qnil; }
static VALUE term_fork_command(int argc, VALUE *argv, VALUE self) { VALUE rb_command, rb_command_argv, rb_envv, rb_directory; VALUE lastlog, utmp, wtmp; char *command; char **command_argv; char **envv; char *directory; pid_t pid; rb_scan_args(argc, argv, "07", &rb_command, &rb_command_argv, &rb_envv, &rb_directory, &lastlog, &utmp, &wtmp); command = NIL_P(rb_command) ? NULL : RVAL2CSTR(rb_command); command_argv = rval2cstrary(rb_command_argv); envv = rval2cstrary(rb_envv); directory = NIL_P(rb_directory) ? NULL : RVAL2CSTR(rb_directory); pid = vte_terminal_fork_command(RVAL2TERM(self), command, command_argv, envv, directory, NIL_P(lastlog) ? TRUE : RVAL2CBOOL(lastlog), NIL_P(utmp) ? TRUE : RVAL2CBOOL(utmp), NIL_P(wtmp) ? TRUE : RVAL2CBOOL(wtmp)); free_cstrary(command_argv); free_cstrary(envv); return INT2NUM(pid); }
static VALUE term_set_background_transparent(VALUE self, VALUE transparent) { vte_terminal_set_background_transparent(RVAL2TERM(self), RVAL2CBOOL(transparent)); return Qnil; }
static VALUE term_reset(VALUE self, VALUE full, VALUE clear_history) { vte_terminal_reset(RVAL2TERM(self), RVAL2CBOOL(full), RVAL2CBOOL(clear_history)); return Qnil; }
static VALUE term_set_font(int argc, VALUE *argv, VALUE self) { VALUE font_desc_or_name, rb_antialias; VteTerminalAntiAlias antialias = VTE_ANTI_ALIAS_USE_DEFAULT; VteTerminal *term; rb_scan_args(argc, argv, "11", &font_desc_or_name, &rb_antialias); term = RVAL2TERM(self); if (!NIL_P(rb_antialias)) antialias = RVAL2AA(rb_antialias); if (rb_obj_is_kind_of(font_desc_or_name, rb_cString)) { char *name; name = RVAL2CSTR(font_desc_or_name); if (NIL_P(rb_antialias)) vte_terminal_set_font_from_string(term, name); else vte_terminal_set_font_from_string_full(term, name, antialias); } else { PangoFontDescription *font_desc; font_desc = RVAL2PFD(font_desc_or_name); if (NIL_P(rb_antialias)) vte_terminal_set_font(term, font_desc); else vte_terminal_set_font_full(term, font_desc, antialias); } return Qnil; }
static VALUE term_get_font(VALUE self) { PangoFontDescription *font_desc; font_desc = (PangoFontDescription *)vte_terminal_get_font(RVAL2TERM(self)); return PFD2RVAL(font_desc); }
static VALUE term_get_text_range(int argc, VALUE *argv, VALUE self) { VALUE start_row, start_col, end_row, end_col, get_attrs, proc, rb_text; GArray *attrs = NULL; char *text; rb_scan_args(argc, argv, "41&", &start_row, &start_col, &end_row, &end_col, &get_attrs, &proc); if (get_attrs != Qfalse) attrs = g_array_new(FALSE, TRUE, sizeof(VteCharAttributes)); text = vte_terminal_get_text_range(RVAL2TERM(self), NUM2LONG(start_row), NUM2LONG(start_col), NUM2LONG(end_row), NUM2LONG(end_col), term_is_selected_cb, (gpointer)proc, attrs); rb_text = CSTR2RVAL(text); free(text); if (attrs) { VALUE rb_attrs; rb_attrs = attrary2rval(attrs); g_array_free(attrs, TRUE); return rb_ary_new3(2, rb_text, rb_attrs); } else { return rb_text; } }
static VALUE term_get_cursor_position(VALUE self) { glong column, row; vte_terminal_get_cursor_position(RVAL2TERM(self), &column, &row); return rb_ary_new3(2, LONG2NUM(column), LONG2NUM(row)); }
static VALUE term_get_padding(VALUE self) { int xpad, ypad; vte_terminal_get_padding(RVAL2TERM(self), &xpad, &ypad); return rb_ary_new3(2, INT2NUM(xpad), INT2NUM(ypad)); }
static VALUE term_match_set_cursor(VALUE self, VALUE tag, VALUE cursor) { vte_terminal_match_set_cursor(RVAL2TERM(self), NUM2INT(tag), RVAL2GOBJ(cursor)); return Qnil; }
static VALUE term_get_cursor_blink_mode(VALUE self) { VteTerminalCursorBlinkMode mode; mode = vte_terminal_get_cursor_blink_mode(RVAL2TERM(self)); return GENUM2RVAL(mode, VTE_TYPE_TERMINAL_CURSOR_BLINK_MODE); }
static VALUE term_set_word_chars(VALUE self, VALUE word_chars) { vte_terminal_set_word_chars(RVAL2TERM(self), NIL_P(word_chars) ? NULL : RVAL2CSTR(word_chars)); return Qnil; }
static VALUE term_set_color_highlight(VALUE self, VALUE highlight) { vte_terminal_set_color_highlight(RVAL2TERM(self), NIL_P(highlight) ? NULL : RVAL2COLOR(highlight)); return Qnil; }
static VALUE term_get_cursor_shape(VALUE self) { VteTerminalCursorShape shape; shape = vte_terminal_get_cursor_shape(RVAL2TERM(self)); return GENUM2RVAL(shape, VTE_TYPE_TERMINAL_CURSOR_SHAPE); }
static VALUE term_set_cursor_shape(VALUE self, VALUE rb_shape) { VteTerminalCursorShape shape; shape = RVAL2GENUM(rb_shape, VTE_TYPE_TERMINAL_CURSOR_SHAPE); vte_terminal_set_cursor_shape(RVAL2TERM(self), shape); return Qnil; }
static VALUE term_set_cursor_blink_mode(VALUE self, VALUE rb_mode) { VteTerminalCursorBlinkMode mode; mode = RVAL2GENUM(rb_mode, VTE_TYPE_TERMINAL_CURSOR_BLINK_MODE); vte_terminal_set_cursor_blink_mode(RVAL2TERM(self), mode); return Qnil; }
static VALUE term_feed_child(VALUE self, VALUE data) { glong length; length = RSTRING_LEN(data); if (length > 0) { vte_terminal_feed_child(RVAL2TERM(self), RSTRING_PTR(data), length); } return Qnil; }
static VALUE rg_feed_child_binary(VALUE self, VALUE data) { glong length; length = RSTRING_LEN(data); if (length > 0) { vte_terminal_feed_child_binary(RVAL2TERM(self), RSTRING_PTR(data), length); } return self; }
static VALUE term_match_check(VALUE self, VALUE column, VALUE row) { char *string; int tag; string = vte_terminal_match_check(RVAL2TERM(self), NUM2LONG(column), NUM2LONG(row), &tag); if (string) { VALUE rb_string; rb_string = CSTR2RVAL(string); free(string); return rb_ary_new3(2, rb_string, INT2NUM(tag)); } else { return Qnil; } }
static VALUE rg_fork_command(int argc, VALUE *argv, VALUE self) { VALUE rb_command, rb_command_argv, rb_envv, rb_directory; VALUE lastlog, utmp, wtmp; char *command; char **command_argv; char **envv; char *directory; pid_t pid; rb_scan_args(argc, argv, "07", &rb_command, &rb_command_argv, &rb_envv, &rb_directory, &lastlog, &utmp, &wtmp); #if VTE_CHECK_VERSION(0, 26, 0) if (argc == 0 || TYPE(rb_command) == T_HASH) return fork_command_full(1, &rb_command, self); rb_warn("'fork_commad(command, argv, envv, directory, lastlog, utmp, wtmp)' style" " has been deprecated since version 0.26." " Use 'fork_commad(options = {})' style."); #endif command = NIL_P(rb_command) ? NULL : RVAL2CSTR(rb_command); command_argv = rval2cstrary(rb_command_argv); envv = rval2cstrary(rb_envv); directory = NIL_P(rb_directory) ? NULL : RVAL2CSTR(rb_directory); pid = vte_terminal_fork_command(RVAL2TERM(self), command, command_argv, envv, directory, NIL_P(lastlog) ? TRUE : RVAL2CBOOL(lastlog), NIL_P(utmp) ? TRUE : RVAL2CBOOL(utmp), NIL_P(wtmp) ? TRUE : RVAL2CBOOL(wtmp)); free_cstrary(command_argv); free_cstrary(envv); return INT2NUM(pid); }
static VALUE term_get_column_count(VALUE self) { return LONG2NUM(vte_terminal_get_column_count(RVAL2TERM(self))); }
static VALUE term_get_icon_title(VALUE self) { return CSTR2RVAL(vte_terminal_get_icon_title(RVAL2TERM(self))); }
static VALUE term_get_char_ascent(VALUE self) { return LONG2NUM(vte_terminal_get_char_ascent(RVAL2TERM(self))); }