示例#1
0
static int
button_pressed(GtkWidget *widget, GdkEventButton *event, gpointer data)
{
	VteTerminal *terminal;
	char *match;
	int tag;
        GtkBorder *inner_border;
        int char_width, char_height;

	switch (event->button) {
	case 3:
		terminal = VTE_TERMINAL(widget);

                gtk_widget_style_get (widget, "inner-border", &inner_border, NULL);
                char_width = vte_terminal_get_char_width (terminal);
                char_height = vte_terminal_get_char_height (terminal);
		match = vte_terminal_match_check(terminal,
						 (event->x - (inner_border ? inner_border->left : 0)) / char_width,
						 (event->y - (inner_border ? inner_border->top : 0)) / char_height,
						 &tag);
                gtk_border_free (inner_border);
		if (match != NULL) {
			g_print("Matched `%s' (%d).\n", match, tag);
			g_free(match);
			if (GPOINTER_TO_INT(data) != 0) {
				vte_terminal_match_remove(terminal, tag);
			}
		}
		break;
	case 1:
	case 2:
	default:
		break;
	}
	return FALSE;
}
示例#2
0
static VALUE
term_match_remove(VALUE self, VALUE tag)
{
    vte_terminal_match_remove(RVAL2TERM(self), NUM2INT(tag));
    return Qnil;
}
示例#3
0
static VALUE
rg_match_remove(VALUE self, VALUE tag)
{
    vte_terminal_match_remove(_SELF(self), NUM2INT(tag));
    return self;
}
示例#4
0
文件: vteapp.c 项目: ari3s/vte
static int
button_pressed(GtkWidget *widget, GdkEventButton *event, gpointer data)
{
	VteTerminal *terminal;
	char *match;
	int tag;
	GtkBorder padding;
        gboolean has_extra_match;
        char *extra_match = NULL;

	switch (event->button) {
	case 3:
		terminal = VTE_TERMINAL(widget);

                gtk_style_context_get_padding(gtk_widget_get_style_context(widget),
                                              gtk_widget_get_state_flags(widget),
                                              &padding);
		match = vte_terminal_match_check_event(terminal,
                                                       (GdkEvent*)event,
                                                       &tag);
		if (match != NULL) {
			g_print("Matched `%s' (%d).\n", match, tag);
			g_free(match);
			if (GPOINTER_TO_INT(data) != 0) {
				vte_terminal_match_remove(terminal, tag);
			}
		}
#ifdef WITH_PCRE2
                if (!use_gregex) {
                        VteRegex *regex = vte_regex_new("\\d+", -1, PCRE2_UTF, NULL);
                        has_extra_match = vte_terminal_event_check_regex_simple(terminal,
                                                                                (GdkEvent*)event,
                                                                                &regex, 1,
                                                                                0,
                                                                                &extra_match);
                        vte_regex_unref(regex);
                } else
#endif
                {
                        GRegex *regex = g_regex_new("\\d+", 0, 0, NULL);
                        has_extra_match = vte_terminal_event_check_gregex_simple(terminal,
                                                                                 (GdkEvent*)event,
                                                                                 &regex, 1,
                                                                                 0,
                                                                                 &extra_match);
                        g_regex_unref(regex);
                }

                if (has_extra_match)
                        g_print("Extra regex match: %s\n", extra_match);
                else
                        g_print("Extra regex didn't match\n");
                g_free(extra_match);
		break;
	case 1:
	case 2:
	default:
		break;
	}
	return FALSE;
}