diff --git a/source/libublsettings-gtk3-vte.c b/source/libublsettings-gtk3-vte.c index 66b6e93..6b88a9b 100644 --- a/source/libublsettings-gtk3-vte.c +++ b/source/libublsettings-gtk3-vte.c @@ -79,13 +79,7 @@ void yon_terminal_integrated_start_shell(GtkWidget *terminal, char* command, voi gtk_widget_show_all(terminal); } - struct terminal_window_struct{ - GtkWidget *StatusBox; - char *success_label; - char *fail_label; - }; - - void __on_yon_terminal_done(GtkWidget *, int state, struct terminal_window_struct *data){ + void __on_yon_terminal_done(GtkWidget *, int state, terminal_window_struct *data){ if (!state) yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(data->StatusBox),"terminal_done",data->success_label,BACKGROUND_IMAGE_SUCCESS_TYPE); else yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(data->StatusBox),"terminal_done",data->fail_label,BACKGROUND_IMAGE_FAIL_TYPE); } @@ -101,46 +95,46 @@ void yon_terminal_integrated_start_shell(GtkWidget *terminal, char* command, voi char *command; }; - void yon_terminal_window_launch(GtkWindow *parent_window, char *command, char *success_label,char *fail_label){ - - struct terminal_window_struct *data = malloc(sizeof(struct terminal_window_struct)); - 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_widget_set_size_request(window,450,300); - - 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); + terminal_window_struct *yon_terminal_window_launch(GtkWindow *parent_window, char *command, char *success_label,char *fail_label){ + + terminal_window_struct *data = malloc(sizeof(terminal_window_struct)); + data->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + data->header = gtk_header_bar_new(); + data->terminal = vte_terminal_new(); + data->StatusBox = gtk_box_new(GTK_ORIENTATION_VERTICAL,5); + data->box = gtk_box_new(GTK_ORIENTATION_VERTICAL,5); + data->terminal_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); + data->scroll = gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL,gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(data->terminal))); + gtk_widget_set_size_request(data->window,450,300); + + gtk_window_set_titlebar(GTK_WINDOW(data->window),data->header); + gtk_container_add(GTK_CONTAINER(data->window),data->box); + gtk_box_pack_start(GTK_BOX(data->box),data->StatusBox,0,0,0); + gtk_box_pack_start(GTK_BOX(data->box),data->terminal_box,1,1,0); + gtk_box_pack_start(GTK_BOX(data->terminal_box),data->terminal,1,1,0); + gtk_box_pack_start(GTK_BOX(data->terminal_box),data->scroll,0,0,0); + gtk_widget_set_margin_bottom(data->terminal_box,5); + gtk_widget_set_margin_start(data->terminal_box,5); + gtk_widget_set_margin_end(data->terminal_box,5); + gtk_widget_show_all(data->window); + + vte_terminal_set_scrollback_lines(VTE_TERMINAL(data->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)); + gtk_window_set_modal(GTK_WINDOW(data->window),1); + gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(data->header),1); + gtk_window_set_title(GTK_WINDOW(data->window),gtk_window_get_title(parent_window)); + gtk_window_set_icon_name(GTK_WINDOW(data->window),gtk_window_get_icon_name(parent_window)); - data->StatusBox=status_box; data->success_label=success_label; data->fail_label=fail_label; - g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(__on_yon_terminal_done), data); - yon_terminal_integrated_start(terminal,command); + g_signal_connect(G_OBJECT(data->terminal), "child-exited", G_CALLBACK(__on_yon_terminal_done), data); + yon_terminal_integrated_start(data->terminal,command); + return data; } void yon_terminal_window_launch_shell(GtkWindow *parent_window, char *command, char *success_label,char *fail_label){ - struct terminal_window_struct *data = malloc(sizeof(struct terminal_window_struct)); + terminal_window_struct *data = malloc(sizeof(terminal_window_struct)); GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); GtkWidget *header = gtk_header_bar_new(); GtkWidget *terminal = vte_terminal_new(); @@ -181,7 +175,7 @@ void yon_terminal_integrated_start_shell(GtkWidget *terminal, char* command, voi } void yon_terminal_window_update_button_launch(GtkWindow *parent_window, char *command, char *success_label,char *fail_label){ - struct terminal_window_struct *data = malloc(sizeof(struct terminal_window_struct)); + terminal_window_struct *data = malloc(sizeof(terminal_window_struct)); struct terminal_window *window = malloc(sizeof(struct terminal_window)); window->command=command; window->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); diff --git a/source/libublsettings-gtk3.h b/source/libublsettings-gtk3.h index df5fda9..117a90f 100644 --- a/source/libublsettings-gtk3.h +++ b/source/libublsettings-gtk3.h @@ -42,7 +42,19 @@ 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, char *success_label,char *fail_label); + typedef struct{ + GtkWidget *window; + GtkWidget *header; + GtkWidget *terminal; + GtkWidget *StatusBox; + GtkWidget *box; + GtkWidget *terminal_box; + GtkWidget *scroll; + char *success_label; + char *fail_label; + } terminal_window_struct; + +terminal_window_struct *yon_terminal_window_launch(GtkWindow *parent_window, char *command, char *success_label,char *fail_label); void yon_terminal_window_launch_shell(GtkWindow *parent_window, char *command, char *success_label,char *fail_label); void yon_terminal_window_update_button_launch(GtkWindow *parent_window, char *command, char *success_label,char *fail_label);