diff --git a/gresource.xml b/gresource.xml
index ad86631..19bc681 100644
--- a/gresource.xml
+++ b/gresource.xml
@@ -3,6 +3,7 @@
ubl-settings-video.glade
ubl-settings-video-monitor.glade
+ ubl-settings-video-terminal.glade
ubl-settings-video-configuration.glade
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 9d47284..165cf28 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -37,6 +37,7 @@ add_custom_target(GLADE ubl-settings-video.glade)
set(DEPENDFILES
../ubl-settings-video.glade
+ ../ubl-settings-video-terminal.glade
../ubl-settings-video-monitor.glade
../ubl-settings-video-configuration.glade
../gresource.xml
diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c
index 098e2a8..2ce4df0 100644
--- a/source/ubl-settings-video.c
+++ b/source/ubl-settings-video.c
@@ -35,11 +35,19 @@ void on_terminal_destroy(GtkWidget *, main_window *widgets){
yon_ubl_status_box_render(PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
-static void child_ready(VteTerminal *terminal, GPid pid, GError *, gpointer user_data)
-{
- if (!terminal) return;
- if (pid == -1) printf("Error\n\n\n");
- else vte_terminal_feed_child(VTE_TERMINAL(terminal),(char*)user_data,strlen((char*)user_data));
+
+gboolean on_command_execute_success(GtkWidget *,gint status,main_window *){
+
+ g_mutex_lock(&main_config.progress_mutex);
+ main_config.progress_active=0;
+ g_mutex_unlock(&main_config.progress_mutex);
+ if (!status){
+ yon_ubl_status_box_render(yon_char_get_localised_from_lib(SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
+ } else {
+ yon_ubl_status_box_render(yon_char_get_localised_from_lib(FAIL_LABEL),BACKGROUND_IMAGE_FAIL_TYPE);
+
+ }
+ return G_SOURCE_REMOVE;
}
gboolean on_terminal_check_progress(main_window *widgets){
@@ -72,7 +80,7 @@ gboolean on_terminal_check_progress(main_window *widgets){
g_match_info_unref(match);
g_mutex_lock(&main_config.progress_mutex);
- if (!main_config.progress_active){
+ if (percentage==100){
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),0);
g_mutex_unlock(&main_config.progress_mutex);
return G_SOURCE_REMOVE;
@@ -90,7 +98,7 @@ void yon_terminal_start(main_window *widgets, char *usr_command){
env[0]="";
env[1]=NULL;
- GtkBuilder *builder=gtk_builder_new_from_resource(glade_path);
+ GtkBuilder *builder=gtk_builder_new_from_resource(glade_terminal_path);
widgets->TerminalBox = yon_gtk_builder_get_widget(builder, "TerminalBox");
widgets->TerminalRevealer = yon_gtk_builder_get_widget(builder, "TerminalRevealer");
widgets->TerminalMoreRevieler = yon_gtk_builder_get_widget(builder, "TerminalMoreRevieler");
@@ -99,48 +107,28 @@ void yon_terminal_start(main_window *widgets, char *usr_command){
widgets->TerminalInfoLabel = yon_gtk_builder_get_widget(builder, "TerminalInfoLabel");
widgets->terminal = yon_gtk_builder_get_widget(builder, "TerminalTerminal");
+ g_signal_connect(G_OBJECT(widgets->terminal),"child-exited",G_CALLBACK(on_command_execute_success),widgets);
+
gtk_button_set_label(GTK_BUTTON(widgets->TerminalMoreButton),MORE_LABEL);
vte_terminal_set_size(VTE_TERMINAL(widgets->terminal),10,15);
gtk_widget_set_app_paintable(widgets->terminal,1);
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->terminal),"opacited");
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->terminal),"workingbg");
gtk_overlay_add_overlay(GTK_OVERLAY(widgets->TerminalOverlay),widgets->TerminalRevealer);
- g_signal_connect(G_OBJECT(widgets->terminal), "child-exited", G_CALLBACK(on_terminal_done), widgets);
+ // g_signal_connect(G_OBJECT(widgets->terminal), "child-exited", G_CALLBACK(on_terminal_done), widgets);
// g_signal_connect(G_OBJECT(widgets->terminal), "contents-changed", G_CALLBACK(on_terminal_check_progress), widgets);
g_signal_connect(G_OBJECT(widgets->TerminalMoreButton), "clicked", G_CALLBACK(on_terminal_more), widgets);
g_signal_connect(G_OBJECT(widgets->terminal), "destroy", G_CALLBACK(on_terminal_destroy), widgets);
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),1);
- VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
- vte_terminal_set_pty(VTE_TERMINAL(widgets->terminal),pty);
- char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",usr_command," ; sleep 5;exit 0","\n",NULL);
- vte_terminal_spawn_async(VTE_TERMINAL(widgets->terminal),
- VTE_PTY_DEFAULT,
- NULL,
- command,
- NULL,
- 0,
- NULL, NULL,
- NULL,
- -1,
- NULL,
- child_ready,
- install_command);
- vte_pty_spawn_async(pty,
- NULL,
- command,
- NULL,
- 0,
- NULL, NULL,
- NULL,
- -1,
- NULL,
- NULL,
- NULL);
+ vte_terminal_reset(VTE_TERMINAL(widgets->terminal),0,1);
+ yon_terminal_integrated_start_shell(widgets->terminal,usr_command,on_terminal_done,widgets);
vte_terminal_set_scrollback_lines(VTE_TERMINAL(widgets->terminal), 100);
vte_terminal_set_scroll_on_output(VTE_TERMINAL(widgets->terminal), TRUE);
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(widgets->terminal), TRUE);
gtk_widget_show_all(widgets->TerminalRevealer);
+ g_mutex_lock(&main_config.progress_mutex);
main_config.progress_active=1;
+ g_mutex_unlock(&main_config.progress_mutex);
g_idle_add((GSourceFunc)on_terminal_check_progress,widgets);
}
@@ -1374,7 +1362,7 @@ template_main_window *yon_main_window_complete(main_window *widgets){
}
g_signal_connect(G_OBJECT(widgets->InfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets);
g_signal_connect(G_OBJECT(widgets->DriversTree), "cursor-changed", G_CALLBACK(on_driver_pack_selection_change), widgets);
-
+
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets);
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets);
g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets);
diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h
index 7f1c19c..a080180 100644
--- a/source/ubl-settings-video.h
+++ b/source/ubl-settings-video.h
@@ -30,6 +30,7 @@
#define banner_path "/com/ublinux/images/ubl-settings-video-banner.png"
#define glade_path "/com/ublinux/ui/ubl-settings-video.glade"
+#define glade_terminal_path "/com/ublinux/ui/ubl-settings-video-terminal.glade"
#define glade_path_monitor "/com/ublinux/ui/ubl-settings-video-monitor.glade"
#define glade_path_configuration "/com/ublinux/ui/ubl-settings-video-configuration.glade"
@@ -387,4 +388,5 @@ void *yon_proprietary_local_get(main_window *widgets);
gboolean yon_proprietary_append_kernels(struct proprietary_kernel_append_struct *append);
gboolean yon_proprietary_append(struct proprietary_struct *target);
gboolean yon_proprietary_clear(main_window *widgets);
+gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets);
#endif
\ No newline at end of file
diff --git a/source/ubl-strings.h b/source/ubl-strings.h
index 824341d..a600ed2 100644
--- a/source/ubl-strings.h
+++ b/source/ubl-strings.h
@@ -199,6 +199,7 @@
#define KERNELS_SUPPORTED_UNFOUND_LABEL _("Warning: Couldn't find any supported kernel version")
#define ALL_INSTALLED_KERNELS_LABEL _("Default (All installed)")
+#define FAIL_LABEL _("Driver installation has failed")
#define INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install driver "),"",target,"?",NULL)
#define REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove driver "),"",target,"?",NULL)
diff --git a/ubl-settings-video-terminal.glade b/ubl-settings-video-terminal.glade
new file mode 100644
index 0000000..d76c8b6
--- /dev/null
+++ b/ubl-settings-video-terminal.glade
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+
+ 300
+ 1
+ 10
+
+
diff --git a/ubl-settings-video.glade b/ubl-settings-video.glade
index b36ee71..8e8026d 100644
--- a/ubl-settings-video.glade
+++ b/ubl-settings-video.glade
@@ -2,7 +2,6 @@
-
True
@@ -110,166 +109,6 @@
-
- 300
- 0.7299999937415127
- 1
- 10
-
-
- True
- True
- False
- end
- True
-
-
- True
- False
- 0
- in
-
-
- True
- False
-
-
- True
- False
- 5
- 5
- 5
- 5
- vertical
-
-
- True
- False
- 5
- 5
- 5
- 5
- 5
- 5
-
-
- True
- True
- False
- center
-
-
- True
- True
- 0
-
-
-
-
- More
- True
- True
- True
- True
-
-
- False
- True
- 1
-
-
-
-
- False
- True
- 0
-
-
-
-
- True
- False
-
-
- True
- False
-
-
- True
- False
- vertical
-
-
- True
- False
- True
- natural
- adjustment1
- natural
- UTF-8
- True
- False
-
-
- True
- True
- 0
-
-
-
-
- True
- True
- 0
-
-
-
-
- True
- False
- vertical
- adjustment1
- True
- False
- 1
- 2
-
-
- False
- True
- 1
-
-
-
-
-
-
- False
- True
- 1
-
-
-
-
-
-
-
-
- True
- False
-
-
-
-
-
-
-
True
False