static void gb_terminal_view_init (GbTerminalView *self) { GtkStyleContext *style_context; g_autoptr(GSettings) settings = NULL; gtk_widget_init_template (GTK_WIDGET (self)); gb_terminal_view_connect_terminal (self, self->terminal_top); gb_terminal_view_actions_init (self); settings = g_settings_new ("org.gnome.builder.terminal"); g_settings_bind (settings, "font-name", self, "font-name", G_SETTINGS_BIND_GET); style_context = gtk_widget_get_style_context (GTK_WIDGET (self)); gtk_style_context_add_class (style_context, "terminal"); g_signal_connect_object (style_context, "changed", G_CALLBACK (style_context_changed), self, 0); style_context_changed (style_context, self); gtk_widget_set_can_focus (GTK_WIDGET (self->terminal_top), TRUE); }
static void gb_terminal_view_init (GbTerminalView *self) { GtkStyleContext *style_context; g_autoptr(GSettings) settings = NULL; gtk_widget_init_template (GTK_WIDGET (self)); gb_terminal_view_connect_terminal (self, self->terminal_top); gb_terminal_view_actions_init (self); /* * FIXME: Should we allow setting the terminal font independently from editor? */ settings = g_settings_new ("org.gnome.builder.editor"); g_settings_bind (settings, "font-name", self, "font-name", G_SETTINGS_BIND_GET); style_context = gtk_widget_get_style_context (GTK_WIDGET (self)); g_signal_connect_object (style_context, "changed", G_CALLBACK (style_context_changed), self, 0); style_context_changed (style_context, self); }
static void gb_terminal_set_split_view (IdeLayoutView *view, gboolean split_view) { GbTerminalView *self = (GbTerminalView *)view; GtkStyleContext *style_context; g_assert (GB_IS_TERMINAL_VIEW (self)); g_return_if_fail (GB_IS_TERMINAL_VIEW (self)); if (split_view && (self->terminal_bottom != NULL)) return; if (!split_view && (self->terminal_bottom == NULL)) return; if (split_view) { style_context = gtk_widget_get_style_context (GTK_WIDGET (view)); self->terminal_bottom = g_object_new (GB_TYPE_TERMINAL, "audible-bell", FALSE, "scrollback-lines", G_MAXUINT, "expand", TRUE, "visible", TRUE, NULL); gtk_container_add_with_properties (GTK_CONTAINER (self->bottom_container), GTK_WIDGET (self->terminal_bottom), "position", 0, NULL); gtk_widget_show (self->bottom_container); gb_terminal_view_connect_terminal (self, self->terminal_bottom); style_context_changed (style_context, GB_TERMINAL_VIEW (view)); gtk_widget_grab_focus (GTK_WIDGET (self->terminal_bottom)); if (!self->bottom_has_spawned) { self->bottom_has_spawned = TRUE; gb_terminal_respawn (self, self->terminal_bottom); } } else { gtk_container_remove (GTK_CONTAINER (self->bottom_container), GTK_WIDGET (self->terminal_bottom)); gtk_widget_hide (self->bottom_container); self->terminal_bottom = NULL; self->bottom_has_focus = FALSE; self->bottom_has_spawned = FALSE; self->bottom_has_needs_attention = FALSE; g_clear_object (&self->save_as_file_bottom); gtk_widget_grab_focus (GTK_WIDGET (self->terminal_top)); } }
static void ide_terminal_page_init (IdeTerminalPage *self) { GtkStyleContext *style_context; self->close_on_exit = TRUE; self->respawn_on_exit = TRUE; self->manage_spawn = TRUE; self->tsearch = g_object_new (IDE_TYPE_TERMINAL_SEARCH, "visible", TRUE, NULL); self->search_revealer_top = ide_terminal_search_get_revealer (self->tsearch); gtk_widget_init_template (GTK_WIDGET (self)); g_signal_connect_object (self->terminal_top, "text-inserted", G_CALLBACK (ide_terminal_page_on_text_inserted_cb), self, G_CONNECT_SWAPPED); ide_page_set_icon_name (IDE_PAGE (self), "utilities-terminal-symbolic"); ide_page_set_can_split (IDE_PAGE (self), TRUE); ide_page_set_menu_id (IDE_PAGE (self), "ide-terminal-page-document-menu"); gtk_overlay_add_overlay (self->terminal_overlay_top, GTK_WIDGET (self->tsearch)); ide_terminal_page_connect_terminal (self, VTE_TERMINAL (self->terminal_top)); ide_terminal_search_set_terminal (self->tsearch, VTE_TERMINAL (self->terminal_top)); ide_terminal_page_actions_init (self); style_context = gtk_widget_get_style_context (GTK_WIDGET (self->terminal_top)); gtk_style_context_add_class (style_context, "terminal"); g_signal_connect_object (style_context, "changed", G_CALLBACK (style_context_changed), self, 0); style_context_changed (style_context, self); gtk_widget_set_can_focus (GTK_WIDGET (self->terminal_top), TRUE); ide_widget_set_context_handler (self, ide_terminal_page_context_set); }
static void ide_terminal_init (IdeTerminal *self) { IdeTerminalPrivate *priv = ide_terminal_get_instance_private (self); GtkStyleContext *style_context; dzl_widget_action_group_attach (self, "terminal"); for (guint i = 0; i < G_N_ELEMENTS (url_regexes); i++) { g_autoptr(VteRegex) regex = NULL; const gchar *pattern = url_regexes[i]; gint tag; regex = vte_regex_new_for_match (pattern, DZL_LITERAL_LENGTH (pattern), VTE_REGEX_FLAGS_DEFAULT | BUILDER_PCRE2_MULTILINE, NULL); tag = vte_terminal_match_add_regex (VTE_TERMINAL (self), regex, 0); vte_terminal_match_set_cursor_type (VTE_TERMINAL (self), tag, GDK_HAND2); } priv->settings = g_settings_new ("org.gnome.builder.terminal"); g_signal_connect_object (priv->settings, "changed::font-name", G_CALLBACK (ide_terminal_font_changed), self, G_CONNECT_SWAPPED); ide_terminal_font_changed (self, NULL, priv->settings); style_context = gtk_widget_get_style_context (GTK_WIDGET (self)); gtk_style_context_add_class (style_context, "terminal"); g_signal_connect_object (style_context, "changed", G_CALLBACK (style_context_changed), self, G_CONNECT_SWAPPED); style_context_changed (self, style_context); gtk_widget_set_can_focus (GTK_WIDGET (self), TRUE); }