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 rg_set_font(VALUE self, VALUE desc_or_name) { if (rb_obj_is_kind_of(desc_or_name, rb_cString)) { vte_terminal_set_font_from_string(_SELF(self), RVAL2CSTR(desc_or_name)); } else { vte_terminal_set_font(_SELF(self), RVAL2PANGOFONTDESCRIPTION(desc_or_name)); } return self; }
GtkWidget* build_term(void) { if(!popupmenu) build_popupmenu(); GtkWidget* term = vte_terminal_new(); term_fork_command(VTE_TERMINAL(term), conf_get_shell()); if (conf_get_bg_image() != NULL) vte_terminal_set_background_image_file(VTE_TERMINAL(term), conf_get_bg_image()); GdkColor fore, back; fore = conf_get_fg(); back = conf_get_bg(); GdkColor *palette = conf_get_color_palette(); if(palette == NULL) vte_terminal_set_colors(VTE_TERMINAL(term), &fore, &back, NULL, 0); else vte_terminal_set_colors(VTE_TERMINAL(term), &fore, &back, palette, 16); #if VTE_CHECK_VERSION(0,25,0) vte_pty_set_term(vte_terminal_get_pty_object(VTE_TERMINAL(term)), conf_get_emulation()); #endif vte_terminal_set_background_tint_color(VTE_TERMINAL(term), &back); vte_terminal_set_allow_bold(VTE_TERMINAL(term), conf_get_allow_bold()); vte_terminal_set_scroll_on_output(VTE_TERMINAL(term), conf_get_scroll_on_output()); vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(term), TRUE); vte_terminal_set_font_from_string(VTE_TERMINAL(term), conf_get_font()); vte_terminal_set_scrollback_lines(VTE_TERMINAL(term), conf_get_lines()); vte_terminal_set_backspace_binding(VTE_TERMINAL(term), VTE_ERASE_ASCII_DELETE); vte_terminal_set_word_chars(VTE_TERMINAL(term), "-A-Za-z0-9_$.+!*(),;:@&=?/~#%"); GdkColor cursor = conf_get_cursor_color(); vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(term), conf_get_cursor_blink() ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF); vte_terminal_set_cursor_shape(VTE_TERMINAL(term), conf_get_cursor_shape()); vte_terminal_set_color_cursor(VTE_TERMINAL(term), &cursor); term_connect_signals(term); return term; }
void on_vte_realize(VteTerminal *vte, G_GNUC_UNUSED gpointer gdata) { vte_terminal_set_emulation(vte, pref_vte_emulation); vte_terminal_set_font_from_string(vte, pref_vte_font); vte_terminal_set_scrollback_lines(vte, pref_vte_scrollback); vte_terminal_set_scroll_on_output(vte, TRUE); vte_terminal_set_color_foreground(vte, &pref_vte_colour_fore); vte_terminal_set_color_background(vte, &pref_vte_colour_back); #if VTE_CHECK_VERSION(0, 17, 1) vte_terminal_set_cursor_blink_mode(vte, pref_vte_blinken ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF); #else vte_terminal_set_cursor_blinks(vte, pref_vte_blinken); #endif }
GtkWidget* build_term(void) { if (!popupmenu) build_popupmenu(); GtkWidget* term = vte_terminal_new(); vte_terminal_fork_command(VTE_TERMINAL(term), conf_get_shell(), NULL, NULL, "", TRUE, TRUE, TRUE); if (conf_get_bg_image() != NULL) vte_terminal_set_background_image_file(VTE_TERMINAL(term), conf_get_bg_image()); GdkColor fore, back; fore = conf_get_fg(); back = conf_get_bg(); GdkColor *palette = conf_get_color_palette(); if (palette == NULL) vte_terminal_set_colors(VTE_TERMINAL(term), &fore, &back, NULL, 0); else vte_terminal_set_colors(VTE_TERMINAL(term), &fore, &back, palette, 16); vte_terminal_set_background_tint_color(VTE_TERMINAL(term), &back); vte_terminal_set_allow_bold(VTE_TERMINAL(term), conf_get_allow_bold()); vte_terminal_set_scroll_on_output(VTE_TERMINAL(term), conf_get_scroll_on_output()); vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(term), TRUE); vte_terminal_set_font_from_string(VTE_TERMINAL(term), conf_get_font()); vte_terminal_set_scrollback_lines(VTE_TERMINAL(term), conf_get_lines()); vte_terminal_set_backspace_binding(VTE_TERMINAL(term), VTE_ERASE_ASCII_DELETE); vte_terminal_set_audible_bell (VTE_TERMINAL(term), conf_get_bell()); vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(term), conf_get_cursor_blink()); vte_terminal_set_cursor_shape(VTE_TERMINAL(term), conf_get_cursor_shape()); term_connect_signals(term); return term; }
/* * init debug related GUI (watch tree view) * arguments: */ void debug_init() { /* create watch page */ wtree = wtree_init(on_watch_expanded_callback, on_watch_dragged_callback, on_watch_key_pressed_callback, on_watch_changed, on_watch_button_pressed_callback); wmodel = gtk_tree_view_get_model(GTK_TREE_VIEW(wtree)); wstore = GTK_TREE_STORE(wmodel); tab_watch = gtk_scrolled_window_new( gtk_tree_view_get_hadjustment(GTK_TREE_VIEW(wtree)), gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(wtree)) ); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tab_watch), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(tab_watch), wtree); /* create autos page */ atree = atree_init(on_watch_expanded_callback, on_watch_button_pressed_callback); tab_autos = gtk_scrolled_window_new( gtk_tree_view_get_hadjustment(GTK_TREE_VIEW(atree)), gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(atree)) ); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tab_autos), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(tab_autos), atree); /* create stack trace page */ stree = stree_init(editor_open_position, on_select_frame); tab_call_stack = gtk_scrolled_window_new( gtk_tree_view_get_hadjustment(GTK_TREE_VIEW(stree )), gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(stree )) ); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tab_call_stack), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(tab_call_stack), stree); /* create debug terminal page */ terminal = vte_terminal_new(); /* create PTY */ openpty(&pty_master, &pty_slave, NULL, NULL, NULL); grantpt(pty_master); unlockpt(pty_master); vte_terminal_set_pty(VTE_TERMINAL(terminal), pty_master); GtkWidget *scrollbar = gtk_vscrollbar_new(GTK_ADJUSTMENT(VTE_TERMINAL(terminal)->adjustment)); GTK_WIDGET_UNSET_FLAGS(scrollbar, GTK_CAN_FOCUS); tab_terminal = gtk_frame_new(NULL); gtk_frame_set_shadow_type (GTK_FRAME(tab_terminal), GTK_SHADOW_NONE); GtkWidget *hbox = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(tab_terminal), hbox); gtk_box_pack_start(GTK_BOX(hbox), terminal, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), scrollbar, FALSE, FALSE, 0); /* set the default widget size first to prevent VTE expanding too much, * sometimes causing the hscrollbar to be too big or out of view. */ gtk_widget_set_size_request(GTK_WIDGET(terminal), 10, 10); vte_terminal_set_size(VTE_TERMINAL(terminal), 30, 1); /* set terminal font. */ GKeyFile *config = g_key_file_new(); gchar *configfile = g_strconcat(geany_data->app->configdir, G_DIR_SEPARATOR_S, "geany.conf", NULL); g_key_file_load_from_file(config, configfile, G_KEY_FILE_NONE, NULL); gchar *font = utils_get_setting_string(config, "VTE", "font", "Monospace 10"); vte_terminal_set_font_from_string (VTE_TERMINAL(terminal), font); /* debug messages page */ tab_messages = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tab_messages), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); hadj = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(tab_messages)); vadj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(tab_messages)); debugger_messages_textview = gtk_text_view_new(); gtk_text_view_set_editable (GTK_TEXT_VIEW (debugger_messages_textview), FALSE); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(tab_messages), debugger_messages_textview); /* create tex tags */ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(debugger_messages_textview)); gtk_text_buffer_create_tag(buffer, "black", "foreground", "#000000", NULL); gtk_text_buffer_create_tag(buffer, "grey", "foreground", "#AAAAAA", NULL); gtk_text_buffer_create_tag(buffer, "red", "foreground", "#FF0000", NULL); gtk_text_buffer_create_tag(buffer, "green", "foreground", "#00FF00", NULL); gtk_text_buffer_create_tag(buffer, "blue", "foreground", "#0000FF", NULL); gtk_text_buffer_create_tag(buffer, "yellow", "foreground", "#FFFF00", NULL); gtk_text_buffer_create_tag(buffer, "brown", "foreground", "#BB8915", NULL); gtk_text_buffer_create_tag(buffer, "rose", "foreground", "#BA92B7", NULL); }
/* create a new tab */ static void tab_new(struct window *w) { term *t; int tmp; char **args = 0; const gchar *shell = g_getenv("SHELL"); if (!shell) { shell = "sh"; } g_shell_parse_argv(shell, 0, &args, 0); t = g_new0(term, 1); t->label = gtk_label_new(""); t->w = w; t->vte = vte_terminal_new(); int index = gtk_notebook_append_page(GTK_NOTEBOOK(w->notebook), t->vte, t->label); gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(w->notebook), t->vte, TRUE); if (index == 0) { gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w->notebook), FALSE); vte_terminal_fork_command_full(VTE_TERMINAL(t->vte), VTE_PTY_DEFAULT, NULL, args, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, t->pid, NULL); tab_geometry_hints(t); } else { struct term *previous = get_nth_term(w, gtk_notebook_get_current_page(GTK_NOTEBOOK(w->notebook))); vte_terminal_fork_command_full(VTE_TERMINAL(t->vte), VTE_PTY_DEFAULT, tab_get_cwd(previous), args, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, t->pid, NULL); gtk_notebook_set_show_tabs(GTK_NOTEBOOK(w->notebook), TRUE); } g_object_set_qdata_full(G_OBJECT(gtk_notebook_get_nth_page( (GtkNotebook*)w->notebook, index)), term_data_id, t, NULL); g_signal_connect(G_OBJECT(t->vte), "child-exited", G_CALLBACK(tab_close), w); g_signal_connect(G_OBJECT(t->vte), "window-title-changed", G_CALLBACK(tab_title), t); g_signal_connect(G_OBJECT(t->vte), "button-press-event", G_CALLBACK(event_button), NULL); vte_terminal_set_allow_bold(VTE_TERMINAL(t->vte), config->allow_bold); vte_terminal_set_audible_bell(VTE_TERMINAL(t->vte), config->audible_bell); vte_terminal_set_background_transparent(VTE_TERMINAL(t->vte), config->bg_transparent); vte_terminal_set_background_saturation(VTE_TERMINAL(t->vte), config->bg_saturation); vte_terminal_set_background_image_file(VTE_TERMINAL(t->vte), config->bg_image); vte_terminal_set_font_from_string(VTE_TERMINAL(t->vte), config->font); vte_terminal_set_mouse_autohide(VTE_TERMINAL(t->vte), config->autohide_mouse); vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(t->vte), config->scroll_on_keystroke); vte_terminal_set_scroll_on_output(VTE_TERMINAL(t->vte), config->scroll_on_output); vte_terminal_set_scrollback_lines(VTE_TERMINAL(t->vte), config->num_scrollback_lines); vte_terminal_set_visible_bell(VTE_TERMINAL(t->vte), config->visible_bell); vte_terminal_set_word_chars(VTE_TERMINAL(t->vte), config->word_chars); vte_terminal_set_colors(VTE_TERMINAL(t->vte), &config->foreground, &config->background, config->colour_palette, DEFAULT_PALETTE_SIZE); tmp = vte_terminal_match_add_gregex( VTE_TERMINAL(t->vte), g_regex_new(config->url_regex, G_REGEX_CASELESS, G_REGEX_MATCH_NOTEMPTY, NULL), 0); vte_terminal_match_set_cursor_type(VTE_TERMINAL(t->vte), tmp, GDK_HAND2); gtk_widget_show_all(w->notebook); gtk_notebook_set_current_page(GTK_NOTEBOOK(w->notebook), index); gtk_widget_grab_focus(t->vte); }
static void terminal_set_preferences (VteTerminal *term, GSettings* settings, TerminalPlugin *term_plugin) { char *text; int value; gboolean setting; GdkColor color[2]; GdkColor* foreground; GdkColor* background; gchar *profile; g_return_if_fail (settings != NULL); #if 0 /* Update the currently available list of terminal profiles */ setting = g_settings_get_boolean (settings, PREFS_TERMINAL_PROFILE_USE_DEFAULT); if (setting) { // TODO: Get from GSettings instead of GConf /* Use the currently selected profile in gnome-terminal */ text = gconf_client_get_string (client, GCONF_DEFAULT_PROFILE, NULL); } else { /* Otherwise use the user selected profile */ text = g_settings_get_string (settings, PREFS_TERMINAL_PROFILE); } if (!text || (*text == '\0')) text = g_strdup ("Default"); profile = text; vte_terminal_set_mouse_autohide (term, TRUE); /* Set terminal font either using the desktop wide font or g-t one. */ setting = g_settings_get_boolean (GCONF_USE_SYSTEM_FONT); if (setting) { text = gconf_client_get_string (client, GCONF_MONOSPACE_FONT, NULL); if (!text) text = GET_PROFILE_STRING (GCONF_VTE_TERMINAL_FONT); } else { text = GET_PROFILE_STRING (GCONF_VTE_TERMINAL_FONT); } if (text) vte_terminal_set_font_from_string (term, text); g_free (text); setting = GET_PROFILE_BOOL (GCONF_CURSOR_BLINK); vte_terminal_set_cursor_blink_mode ((term), setting ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF); setting = GET_PROFILE_BOOL (GCONF_SILENT_BELL); vte_terminal_set_audible_bell (term, !setting); value = GET_PROFILE_INT (GCONF_SCROLLBACK_LINES); vte_terminal_set_scrollback_lines (term, (value == 0) ? 500 : value); setting = GET_PROFILE_BOOL (GCONF_SCROLL_ON_KEYSTROKE); vte_terminal_set_scroll_on_keystroke (term, setting); setting = GET_PROFILE_BOOL (GCONF_SCROLL_ON_OUTPUT); vte_terminal_set_scroll_on_output (term, TRUE); text = GET_PROFILE_STRING (GCONF_WORD_CHARS); if (text) vte_terminal_set_word_chars (term, text); g_free (text); text = GET_PROFILE_STRING (GCONF_BACKSPACE_BINDING); if (text) { if (!strcmp (text, "ascii-del")) vte_terminal_set_backspace_binding (term, VTE_ERASE_ASCII_DELETE); else if (!strcmp (text, "escape-sequence")) vte_terminal_set_backspace_binding (term, VTE_ERASE_DELETE_SEQUENCE); else if (!strcmp (text, "control-h")) vte_terminal_set_backspace_binding (term, VTE_ERASE_ASCII_BACKSPACE); else vte_terminal_set_backspace_binding (term, VTE_ERASE_AUTO); g_free (text); } text = GET_PROFILE_STRING (GCONF_DELETE_BINDING); if (text) { if (!strcmp (text, "ascii-del")) vte_terminal_set_delete_binding (term, VTE_ERASE_ASCII_DELETE); else if (!strcmp (text, "escape-sequence")) vte_terminal_set_delete_binding (term, VTE_ERASE_DELETE_SEQUENCE); else if (!strcmp (text, "control-h")) vte_terminal_set_delete_binding (term, VTE_ERASE_ASCII_BACKSPACE); else vte_terminal_set_delete_binding (term, VTE_ERASE_AUTO); g_free (text); } /* Set fore- and background colors. */ text = GET_PROFILE_STRING (GCONF_BACKGROUND_COLOR); if (text) { gdk_color_parse (text, &color[0]); g_free (text); } background = text ? &color[0] : NULL; text = GET_PROFILE_STRING (GCONF_FOREGROUND_COLOR); if (text) { gdk_color_parse (text, &color[1]); g_free (text); } foreground = text ? &color[1] : NULL; /* vte_terminal_set_colors works even if the terminal widget is not realized * which is not the case with vte_terminal_set_color_foreground and * vte_terminal_set_color_background */ vte_terminal_set_colors (term, foreground, background, NULL, 0); /* vte_terminal is not working depending on update_records setting at least * on FreeBSD */ term_plugin->lastlog = GET_PROFILE_BOOL (GCONF_LOGIN_SHELL); term_plugin->update_records = GET_PROFILE_BOOL_DEFAULT (GCONF_UPDATE_RECORDS, TRUE); g_free (profile); g_object_unref (client); #endif }