From ac7139ae7b0b356880885ea828dcb0c6785bc128 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 13 Jun 2024 18:01:40 +0600 Subject: [PATCH] Added new function for spawning terminal window --- source/libublsettings-gtk3.c | 35 +++++++++++++++++++++++++++++++++++ source/libublsettings-gtk3.h | 4 ++++ 2 files changed, 39 insertions(+) diff --git a/source/libublsettings-gtk3.c b/source/libublsettings-gtk3.c index 55546aa..a84f1e0 100644 --- a/source/libublsettings-gtk3.c +++ b/source/libublsettings-gtk3.c @@ -87,6 +87,41 @@ void yon_terminal_integrated_start_shell(GtkWidget *terminal, char* command, voi gtk_widget_show_all(terminal); } + + void __on_yon_terminal_done(GtkWidget *self, void *, GtkWidget *status_box){ + yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(status_box),"terminal_done","",BACKGROUND_IMAGE_SUCCESS_TYPE); + } + + void yon_terminal_window_launch(GtkWindow *parent_window, char *command){ + GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + GtkWidget *header = gtk_header_bar_new(); + GtkWidget *terminal = vte_terminal_new(); + GtkWidget *status_box = gtk_box_new(GTK_ORIENTATION_VERTICAL,5); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL,5); + GtkWidget *terminal_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); + GtkWidget *scroll = gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL,gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(terminal))); + + gtk_window_set_titlebar(GTK_WINDOW(window),header); + gtk_container_add(GTK_CONTAINER(window),box); + gtk_box_pack_start(GTK_BOX(box),status_box,0,0,0); + gtk_box_pack_start(GTK_BOX(box),terminal_box,1,1,0); + gtk_box_pack_start(GTK_BOX(terminal_box),terminal,1,1,0); + gtk_box_pack_start(GTK_BOX(terminal_box),scroll,0,0,0); + gtk_widget_set_margin_bottom(terminal_box,5); + gtk_widget_set_margin_start(terminal_box,5); + gtk_widget_set_margin_end(terminal_box,5); + gtk_widget_show_all(window); + + vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal),-1); + + gtk_window_set_modal(GTK_WINDOW(window),1); + gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(header),1); + gtk_window_set_title(GTK_WINDOW(window),gtk_window_get_title(parent_window)); + gtk_window_set_icon_name(GTK_WINDOW(window),gtk_window_get_icon_name(parent_window)); + g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(__on_yon_terminal_done), status_box); + yon_terminal_integrated_start(terminal,command); + } + void yon_gtk_set_scroll(GtkWidget* self,GdkEventScroll *event, GtkAdjustment *adjustment){ if (self){}; gdouble val = gtk_adjustment_get_value(adjustment); diff --git a/source/libublsettings-gtk3.h b/source/libublsettings-gtk3.h index 632a8f3..012b911 100644 --- a/source/libublsettings-gtk3.h +++ b/source/libublsettings-gtk3.h @@ -42,6 +42,8 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command); */ void yon_terminal_integrated_start_shell(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument); +void yon_terminal_window_launch(GtkWindow *parent_window, char *command); + #endif #define for_iter(model,iter) for(int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model),iter);valid;valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model),iter)) @@ -215,6 +217,8 @@ int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find); */ void yon_gtk_tree_view_minimal_fixed_size_set_full(GtkTreeView *tree); +void yon_gtk_tree_view_set_(GtkTreeView *top,GtkTreeView *resizing, ...); + /**yon_dictionary_gtk_pack_start_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...) * [EN] *