Integrated info menu implementation

pull/9/head^2
parent c787feb47e
commit a30135ef12

@ -48,3 +48,6 @@
#define GLOBAL_LOCAL_SAVE_SUCCESS _("Local and global configuration saving succseeded.") #define GLOBAL_LOCAL_SAVE_SUCCESS _("Local and global configuration saving succseeded.")
#define GLOBAL_SAVE_SUCCESS _("Global configuration saving succseeded.") #define GLOBAL_SAVE_SUCCESS _("Global configuration saving succseeded.")
#define LOCAL_SAVE_SUCCESS _("Local configuration saving succseeded.") #define LOCAL_SAVE_SUCCESS _("Local configuration saving succseeded.")
#define YES_LABEL _("Yes")
#define NO_LABEL _("No")

@ -72,10 +72,101 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){
on_subwindow_close(self); on_subwindow_close(self);
} }
void on_terminal_done(GtkWidget *terminal, int size, widgets_dict *widgets){
char *text=vte_terminal_get_text_range(VTE_TERMINAL(terminal),0,0,0,10,NULL,NULL,NULL);
printf("\"%s\"\n",text);
gtk_widget_destroy(terminal);
// vte_terminal_reset(VTE_TERMINAL(terminal),0,1);
// gtk_widget_destroy(terminal);
// gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalBox),0);
}
void on_terminal_more(GtkWidget *self, widgets_dict *widgets){
int active = gtk_revealer_get_child_revealed(GTK_REVEALER(widgets->TerminalMoreRevieler));
if (active ==1) active = 0;
else active=1;
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalMoreRevieler),active);
}
void on_terminal_destroy(GtkWidget *self, widgets_dict *widgets){
gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),0);
gtk_widget_destroy(widgets->TerminalRevealer);
}
static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data) static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data)
{ {
if (!terminal) return; if (!terminal) return;
if (pid == -1) printf("Error\n\n\n"); if (pid == -1) printf("Error\n\n\n");
else vte_terminal_feed_child(VTE_TERMINAL(terminal),(char*)user_data,strlen((char*)user_data));
}
void on_terminal_check_progress(VteTerminal *terminal, widgets_dict *widgets){
char *text = vte_terminal_get_text(terminal,NULL,NULL,NULL);
// printf("%d - %s\n",rows, text);
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),(double)yon_char_find_count(text,"::")/4);
}
void yon_terminal_start(widgets_dict *widgets, char *usr_command){
char **command=new_arr(char*,2);
gchar **envp = g_get_environ();
command[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL"));
command[1]=NULL;
char **env=new_arr(char*,2);
env[0]="";
env[1]=NULL;
GtkBuilder *builder=gtk_builder_new_from_file(glade_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");
widgets->TerminalMoreButton = yon_gtk_builder_get_widget(builder, "TerminalMoreButton");
widgets->TerminalScroll = yon_gtk_builder_get_widget(builder, "TerminalScroll");
widgets->TerminalInfoLabel = yon_gtk_builder_get_widget(builder, "TerminalInfoLabel");
GtkWidget *terminal = yon_gtk_builder_get_widget(builder, "TerminalTerminal");
// gtk_size_group_add_widget(GTK_SIZE_GROUP(gtk_builder_get_object(builder,"sgroup")),yon_gtk_builder_get_widget(builder,"TerminalFrame"));
// gtk_size_group_add_widget(GTK_SIZE_GROUP(gtk_builder_get_object(builder,"sgroup")),widgets->TerminalOverlay);
vte_terminal_set_size(VTE_TERMINAL(terminal),10,15);
gtk_widget_set_app_paintable(terminal,1);
gtk_style_context_add_class(gtk_widget_get_style_context(terminal),"opacited");
gtk_style_context_add_class(gtk_widget_get_style_context(terminal),"workingbg");
gtk_overlay_add_overlay(GTK_OVERLAY(widgets->TerminalOverlay),widgets->TerminalRevealer);
g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(on_terminal_done), widgets);
g_signal_connect(G_OBJECT(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(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(terminal),pty);
char *install_command=yon_char_unite(usr_command," ;exit 0","\n",NULL);
vte_terminal_spawn_async(VTE_TERMINAL(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_set_scrollback_lines(VTE_TERMINAL(terminal), 100);
vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), TRUE);
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
gtk_widget_show_all(widgets->TerminalRevealer);
} }
void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
@ -85,6 +176,19 @@ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView)); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter); gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1); gtk_tree_model_get(list_s,&iter,1,&name,-1);
yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,"virtualbox"));
}
void on_driver_install(GtkWidget *self,widgets_dict *widgets){
GtkTreeIter iter;
char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1);
pthread_t tid; pthread_t tid;
char **command=new_arr(char*,2); char **command=new_arr(char*,2);
gchar **envp = g_get_environ(); gchar **envp = g_get_environ();
@ -95,11 +199,11 @@ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
env[1]=NULL; env[1]=NULL;
GtkWidget *terminal = vte_terminal_new(); GtkWidget *terminal = vte_terminal_new();
// vte_terminal_set_size(VTE_TERMINAL(terminal),50,100);
gtk_box_pack_start(GTK_BOX(widgets->TerminalBox),terminal,1,1,0); gtk_box_pack_start(GTK_BOX(widgets->TerminalBox),terminal,1,1,0);
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL); VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
// VtePty *pty = vte_terminal_pty_new_sync(VTE_TERMINAL(terminal),VTE_PTY_DEFAULT,NULL,NULL); // VtePty *pty = vte_terminal_pty_new_sync(VTE_TERMINAL(terminal),VTE_PTY_DEFAULT,NULL,NULL);
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty); vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
char *install_command=yon_char_unite(install_proprietary_command,name,"\n",NULL);
vte_terminal_spawn_async(VTE_TERMINAL(terminal), vte_terminal_spawn_async(VTE_TERMINAL(terminal),
VTE_PTY_DEFAULT, VTE_PTY_DEFAULT,
NULL, /* working directory */ NULL, /* working directory */
@ -111,7 +215,7 @@ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
-1, /* timeout */ -1, /* timeout */
NULL, /* cancellable */ NULL, /* cancellable */
child_ready, /* callback */ child_ready, /* callback */
NULL); /* user_data */ install_command); /* user_data */
vte_pty_spawn_async(pty, vte_pty_spawn_async(pty,
NULL, /* working directory */ NULL, /* working directory */
command, /* command */ command, /* command */
@ -123,25 +227,10 @@ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
NULL, /* cancellable */ NULL, /* cancellable */
NULL, /* callback */ NULL, /* callback */
NULL); /* user_data */ NULL); /* user_data */
char *install_command=yon_char_unite(install_proprietary_command,name,"\n",NULL);
vte_terminal_feed_child(VTE_TERMINAL(terminal),install_command,strlen(install_command));
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 0);
vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), FALSE); vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), FALSE);
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE); vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), FALSE);
gtk_widget_show_all(widgets->TerminalWindow); vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal),100);
// pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(install_proprietary_command,name)); gtk_widget_show_all(widgets->TerminalRevealer);
}
void on_driver_install(GtkWidget *self,widgets_dict *widgets){
GtkTreeIter iter;
char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1);
pthread_t tid;
// pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(install_proprietary_command,name)); // pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(install_proprietary_command,name));
} }
@ -155,6 +244,48 @@ void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){
gtk_tree_selection_get_selected(selection,&list_s,&iter); gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1); gtk_tree_model_get(list_s,&iter,1,&name,-1);
pthread_t tid; pthread_t tid;
char **command=new_arr(char*,2);
gchar **envp = g_get_environ();
command[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL"));
command[1]=NULL;
char **env=new_arr(char*,2);
env[0]="";
env[1]=NULL;
GtkWidget *terminal = vte_terminal_new();
// vte_terminal_set_size(VTE_TERMINAL(terminal),50,100);
gtk_box_pack_start(GTK_BOX(widgets->TerminalBox),terminal,1,1,0);
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
// VtePty *pty = vte_terminal_pty_new_sync(VTE_TERMINAL(terminal),VTE_PTY_DEFAULT,NULL,NULL);
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
char *install_command=yon_char_unite(delete_proprietary_command,name,"\n",NULL);
vte_terminal_spawn_async(VTE_TERMINAL(terminal),
VTE_PTY_DEFAULT,
NULL, /* working directory */
command, /* command */
NULL, /* environment */
0, /* spawn flags */
NULL, NULL, /* child setup */
NULL, /* child pid */
-1, /* timeout */
NULL, /* cancellable */
child_ready, /* callback */
install_command); /* user_data */
vte_pty_spawn_async(pty,
NULL, /* working directory */
command, /* command */
NULL, /* environment */
0, /* spawn flags */
NULL, NULL, /* child setup */
NULL, /* child pid */
-1, /* timeout */
NULL, /* cancellable */
NULL, /* callback */
NULL); /* user_data */
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 0);
vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), FALSE);
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
gtk_widget_show_all(widgets->TerminalRevealer);
// pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(delete_proprietary_command,name)); // pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(delete_proprietary_command,name));
} }
@ -168,6 +299,48 @@ void on_driver_delete(GtkWidget *self,widgets_dict *widgets){
gtk_tree_selection_get_selected(selection,&list_s,&iter); gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1); gtk_tree_model_get(list_s,&iter,1,&name,-1);
pthread_t tid; pthread_t tid;
char **command=new_arr(char*,2);
gchar **envp = g_get_environ();
command[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL"));
command[1]=NULL;
char **env=new_arr(char*,2);
env[0]="";
env[1]=NULL;
GtkWidget *terminal = vte_terminal_new();
// vte_terminal_set_size(VTE_TERMINAL(terminal),50,100);
gtk_box_pack_start(GTK_BOX(widgets->TerminalBox),terminal,1,1,0);
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
// VtePty *pty = vte_terminal_pty_new_sync(VTE_TERMINAL(terminal),VTE_PTY_DEFAULT,NULL,NULL);
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
char *install_command=yon_char_unite(delete_proprietary_command,name,"\n",NULL);
vte_terminal_spawn_async(VTE_TERMINAL(terminal),
VTE_PTY_DEFAULT,
NULL, /* working directory */
command, /* command */
NULL, /* environment */
0, /* spawn flags */
NULL, NULL, /* child setup */
NULL, /* child pid */
-1, /* timeout */
NULL, /* cancellable */
child_ready, /* callback */
install_command); /* user_data */
vte_pty_spawn_async(pty,
NULL, /* working directory */
command, /* command */
NULL, /* environment */
0, /* spawn flags */
NULL, NULL, /* child setup */
NULL, /* child pid */
-1, /* timeout */
NULL, /* cancellable */
NULL, /* callback */
NULL); /* user_data */
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 0);
vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), FALSE);
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
gtk_widget_show_all(widgets->TerminalRevealer);
// pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(delete_proprietary_command,name)); // pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(delete_proprietary_command,name));
} }
@ -349,7 +522,7 @@ void on_configuration_save_local(GtkWidget *self, widgets_dict *widgets)
yon_config_save(delstr); yon_config_save(delstr);
} }
if (str){ if (str){
printf(str); // printf(str);
yon_config_save(str); yon_config_save(str);
videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS; videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS;
@ -384,7 +557,7 @@ void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets)
str = yon_char_get_augumented(str, yon_char_get_augumented(" ", videoconfig.optirun)); str = yon_char_get_augumented(str, yon_char_get_augumented(" ", videoconfig.optirun));
if (videoconfig.primusrun) if (videoconfig.primusrun)
str = yon_char_get_augumented(str, yon_char_get_augumented(" ", videoconfig.primusrun)); str = yon_char_get_augumented(str, yon_char_get_augumented(" ", videoconfig.primusrun));
printf(str); // printf(str);
yon_config_save(str); yon_config_save(str);
} }
@ -1277,9 +1450,7 @@ void yon_setup_widgets(widgets_dict *widgets)
widgets->driversInfoButton = yon_gtk_builder_get_widget(widgets->builder, "driversInfoButton"); widgets->driversInfoButton = yon_gtk_builder_get_widget(widgets->builder, "driversInfoButton");
widgets->driversDeleteButton = yon_gtk_builder_get_widget(widgets->builder, "driversDeleteButton"); widgets->driversDeleteButton = yon_gtk_builder_get_widget(widgets->builder, "driversDeleteButton");
widgets->driversInstallButton = yon_gtk_builder_get_widget(widgets->builder, "driversInstallButton"); widgets->driversInstallButton = yon_gtk_builder_get_widget(widgets->builder, "driversInstallButton");
widgets->TerminalWindow = yon_gtk_builder_get_widget(widgets->builder, "TerminalWindow"); widgets->TerminalOverlay = yon_gtk_builder_get_widget(widgets->builder, "TerminalOverlay");
widgets->TerminalBox = yon_gtk_builder_get_widget(widgets->builder, "TerminalBox");
widgets->TerminalHeaderTitleLabel = yon_gtk_builder_get_widget(widgets->builder, "TerminalHeaderTitleLabel");
widgets->driversTreeSelection = GTK_TREE_SELECTION(gtk_builder_get_object(widgets->builder, "driversTreeSelection")); widgets->driversTreeSelection = GTK_TREE_SELECTION(gtk_builder_get_object(widgets->builder, "driversTreeSelection"));
widgets->proprietartInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "proprietartInstalledColumn")); widgets->proprietartInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "proprietartInstalledColumn"));

@ -53,7 +53,7 @@
#define remove_drivers_local_command "/usr/bin/ubconfig --target global remove video " #define remove_drivers_local_command "/usr/bin/ubconfig --target global remove video "
#define install_proprietary_command "pkexec pacman -Sy " #define install_proprietary_command "tput cup 0 0 && tput ed; pkexec pacman -Sy "
#define delete_proprietary_command "pkexec pacman -R --noconfirm " #define delete_proprietary_command "pkexec pacman -R --noconfirm "
@ -233,9 +233,13 @@ typedef struct
GtkTreeViewColumn *driverDescriptionColumn; GtkTreeViewColumn *driverDescriptionColumn;
GtkTreeViewColumn *driverSupportedColumn; GtkTreeViewColumn *driverSupportedColumn;
GtkWidget *TerminalWindow; GtkWidget *TerminalOverlay;
GtkWidget *TerminalBox; GtkWidget *TerminalBox;
GtkWidget *TerminalHeaderTitleLabel; GtkWidget *TerminalRevealer;
GtkWidget *TerminalInfoLabel;
GtkWidget *TerminalMoreButton;
GtkWidget *TerminalScroll;
GtkWidget *TerminalMoreRevieler;
} widgets_dict; } widgets_dict;
typedef struct typedef struct

@ -401,6 +401,20 @@ char *yon_char_divide(char *source, int dividepos)
return cut; return cut;
} }
int yon_char_find_count(char *source, char *find){
char *working_string=yon_char_new(source);
int i=0;
int size=0;
int pos=0;
config_str rtn = yon_char_parse(working_string,&size,"\n");
for (int j=0;j<size;j++){
if(strstr(rtn[j],find))
i++;
}
printf("%d\n",i);
return i;
}
/**[EN] /**[EN]
* char *yon_char_divide_search(char *source, char *dividepos, int delete_divider) * char *yon_char_divide_search(char *source, char *dividepos, int delete_divider)
* searches string [dividepos] in [source] string and divides it, * searches string [dividepos] in [source] string and divides it,
@ -474,7 +488,7 @@ char **yon_char_parse(char *parameters, int *size, char *divider){
string=realloc(string,sizeof(char*)*i); string=realloc(string,sizeof(char*)*i);
string[i-1]=yon_char_new(paramline); string[i-1]=yon_char_new(paramline);
i++; i++;
printf("%d\n",i); // printf("%d\n",i);
*size=i-1; *size=i-1;
return string; return string;
@ -642,7 +656,7 @@ config_str yon_config_load(char *command, int *str_len)
if (strcmp(str, "") != 0) if (strcmp(str, "") != 0)
{ {
output_strings = realloc(output_strings, sizeof(char *) * (i + 1)); output_strings = realloc(output_strings, sizeof(char *) * (i + 1));
printf("%s\n", str); // printf("%s\n", str);
output_strings[i] = NULL; output_strings[i] = NULL;
output_strings[i] = yon_char_new(str); output_strings[i] = yon_char_new(str);
memset(str, 0, 1000); memset(str, 0, 1000);

@ -116,6 +116,8 @@ char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete)
int yon_char_parsed_check_exist(char **parameters, int size, char *param); int yon_char_parsed_check_exist(char **parameters, int size, char *param);
int yon_char_find_count(char *source, char *find);
// parsing functions // parsing functions

@ -5,7 +5,14 @@
margin:0px; margin:0px;
padding:0px; padding:0px;
} }
.opacited {
opacity:0.98;
}
.borders {
border-radius: 2px;
border-width: 1px;
border-color: @theme_text_color;
}
.workingbg { .workingbg {
background:@theme_base_color; background:@theme_base_color;
} }

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save