|
|
|
|
@ -2,8 +2,8 @@
|
|
|
|
|
|
|
|
|
|
config main_config;
|
|
|
|
|
|
|
|
|
|
void on_terminal_done(GtkWidget *terminal, int , main_window *){
|
|
|
|
|
gtk_widget_destroy(terminal);
|
|
|
|
|
void on_terminal_done(GtkWidget *, int , main_window *widgets){
|
|
|
|
|
gtk_widget_destroy(widgets->TerminalRevealer);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_terminal_more(GtkWidget *, main_window *widgets){
|
|
|
|
|
@ -32,22 +32,22 @@ void on_terminal_destroy(GtkWidget *, main_window *widgets){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_proprietary_get_thread(NULL,widgets);
|
|
|
|
|
yon_ubl_status_box_render(PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
yon_ubl_status_box_render(yon_char_unite(PROPRIETARY_OPETAION_DONE_LABEL,". ",PROPRIETARY_LOADING_LABEL,NULL),BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gboolean on_command_execute_success(GtkWidget *self,gint status,main_window *){
|
|
|
|
|
gboolean on_command_execute_success(GtkWidget *self,gint status,main_window *widgets){
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
yon_ubl_status_box_render(yon_char_unite(yon_char_get_localised_from_lib(SUCCESS_LABEL),". ",PROPRIETARY_LOADING_LABEL,NULL),BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
} else {
|
|
|
|
|
yon_ubl_status_box_render(yon_char_get_localised_from_lib(FAIL_LABEL),BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
on_terminal_done(self,0,NULL);
|
|
|
|
|
on_terminal_done(self,0,widgets);
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -71,17 +71,17 @@ gboolean on_terminal_check_progress(main_window *widgets){
|
|
|
|
|
|
|
|
|
|
if (last_match) {
|
|
|
|
|
yon_char_remove_last_symbol(last_match,'%');
|
|
|
|
|
percentage = atof(last_match);
|
|
|
|
|
percentage = g_ascii_strtod(last_match,NULL);
|
|
|
|
|
yon_debug_output("%s\n", text);
|
|
|
|
|
yon_debug_output("%s\n", last_match);
|
|
|
|
|
g_free(text);
|
|
|
|
|
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel), percentage / 100);
|
|
|
|
|
g_free(last_match);
|
|
|
|
|
}
|
|
|
|
|
g_free(text);
|
|
|
|
|
g_match_info_unref(match);
|
|
|
|
|
|
|
|
|
|
g_mutex_lock(&main_config.progress_mutex);
|
|
|
|
|
if (percentage==100||!main_config.progress_active){
|
|
|
|
|
if (percentage>99||!main_config.progress_active){
|
|
|
|
|
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),0);
|
|
|
|
|
g_mutex_unlock(&main_config.progress_mutex);
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
@ -125,6 +125,7 @@ void yon_terminal_start(main_window *widgets, char *usr_command){
|
|
|
|
|
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);
|
|
|
|
|
gtk_widget_realize(widgets->terminal);
|
|
|
|
|
g_mutex_lock(&main_config.progress_mutex);
|
|
|
|
|
main_config.progress_active=1;
|
|
|
|
|
g_mutex_unlock(&main_config.progress_mutex);
|
|
|
|
|
@ -146,23 +147,32 @@ void on_driver_pack_selection_change(GtkWidget *, main_window *widgets){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gpointer yon_driver_info_launch(void *command){
|
|
|
|
|
if (!system((char*)command)){
|
|
|
|
|
yon_ubl_status_box_render_thread(yon_char_get_localised_from_lib(SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
} else {
|
|
|
|
|
yon_ubl_status_box_render_thread(yon_char_get_localised_from_lib(FAIL_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
}
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_driver_pack_info(GtkWidget *, main_window *widgets){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
char *module, *package;
|
|
|
|
|
GtkTreeModel *list_s=GTK_TREE_MODEL(main_config.list);
|
|
|
|
|
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->DriversTree));
|
|
|
|
|
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
|
|
|
|
|
yon_ubl_status_box_render(yon_char_get_localised_from_lib(INFO_PROCESS_LABEL),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
|
gtk_tree_model_get(list_s,&iter,7,&module,8,&package,-1);
|
|
|
|
|
char *command = get_info_proprietary_command(yon_char_is_empty(module)?package:module);
|
|
|
|
|
yon_launch_app_with_arguments(command,"");
|
|
|
|
|
yon_ubl_status_box_render(yon_char_get_localised_from_lib(SUCCESS_LABEL),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
|
g_thread_new("info_thread",yon_driver_info_launch,(void*)command);
|
|
|
|
|
// yon_launch_app_with_arguments(command,"");
|
|
|
|
|
} else {
|
|
|
|
|
yon_ubl_status_box_render(PROPRIETARY_NOTHING_SELECTED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_pack_install_activate(GtkCellRendererToggle* ,gchar* path,main_window *widgets){
|
|
|
|
|
|
|
|
|
|
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->DriversTree));
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
if (!GTK_IS_TREE_MODEL_FILTER(model)){
|
|
|
|
|
@ -184,6 +194,7 @@ void on_pack_install_activate(GtkCellRendererToggle* ,gchar* path,main_window *w
|
|
|
|
|
if (!yon_char_is_empty(package)){
|
|
|
|
|
char *command = install_proprietary_command(package);
|
|
|
|
|
yon_terminal_start(widgets,command);
|
|
|
|
|
yon_ubl_status_box_render(PACKAGE_INSTALL_PROCESS_LABEL(package),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
free(data);
|
|
|
|
|
@ -194,6 +205,7 @@ void on_pack_install_activate(GtkCellRendererToggle* ,gchar* path,main_window *w
|
|
|
|
|
if (!yon_char_is_empty(package)){
|
|
|
|
|
char *command = delete_proprietary_command(package);
|
|
|
|
|
yon_terminal_start(widgets,command);
|
|
|
|
|
yon_ubl_status_box_render(PACKAGE_REMOVE_PROCESS_LABEL(package),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
free(data);
|
|
|
|
|
@ -220,6 +232,7 @@ void on_module_install_activate(GtkCellRendererToggle* ,gchar* path,main_window
|
|
|
|
|
if (!yon_char_is_empty(package)){
|
|
|
|
|
char *command = install_proprietary_command(package);
|
|
|
|
|
yon_terminal_start(widgets,command);
|
|
|
|
|
yon_ubl_status_box_render(MODULE_INSTALL_PROCESS_LABEL(package),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
free(data);
|
|
|
|
|
@ -230,6 +243,7 @@ void on_module_install_activate(GtkCellRendererToggle* ,gchar* path,main_window
|
|
|
|
|
if (!yon_char_is_empty(package)){
|
|
|
|
|
char *command = delete_proprietary_command(package);
|
|
|
|
|
yon_terminal_start(widgets,command);
|
|
|
|
|
yon_ubl_status_box_render(MODULE_REMOVE_PROCESS_LABEL(package),BACKGROUND_IMAGE_INFO_TYPE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
free(data);
|
|
|
|
|
@ -1001,8 +1015,11 @@ void yon_monitor_view_update(){
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean yon_proprietary_clear(main_window *widgets){
|
|
|
|
|
gtk_widget_set_sensitive(widgets->LoadDriversButton,0);
|
|
|
|
|
gtk_list_store_clear(main_config.list);
|
|
|
|
|
gtk_list_store_clear(main_config.list2);
|
|
|
|
|
gtk_spinner_start(GTK_SPINNER(widgets->DriversLoadingSpinner));
|
|
|
|
|
gtk_widget_show(widgets->DriversLoadingSpinner);
|
|
|
|
|
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo));
|
|
|
|
|
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->KernelsCombo),ALL_INSTALLED_KERNELS_LABEL);
|
|
|
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KernelsCombo),0);
|
|
|
|
|
@ -1033,11 +1050,12 @@ gboolean yon_proprietary_disconnect(main_window *widgets){
|
|
|
|
|
|
|
|
|
|
gboolean yon_proprietary_connect(main_window *widgets){
|
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->DriversTree),GTK_TREE_MODEL(main_config.list));
|
|
|
|
|
gtk_spinner_stop(GTK_SPINNER(widgets->DriversLoadingSpinner));
|
|
|
|
|
gtk_widget_hide(widgets->DriversLoadingSpinner);
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void *yon_proprietary_local_get(main_window *widgets){
|
|
|
|
|
gtk_widget_set_sensitive(widgets->LoadDriversButton,0);
|
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_clear,widgets);
|
|
|
|
|
int kernels_size;
|
|
|
|
|
config_str kernels_installed=yon_config_load(yon_debug_output("%s\n",yon_get_kernels_installed),&kernels_size);
|
|
|
|
|
@ -1079,8 +1097,13 @@ void *yon_proprietary_local_get(main_window *widgets){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_debug_output("%s\n","Driver end");
|
|
|
|
|
if (dr_desc==size-1) {
|
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_connect,widgets);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!size){
|
|
|
|
|
g_idle_add((GSourceFunc)yon_proprietary_connect,widgets);
|
|
|
|
|
}
|
|
|
|
|
char *status_text = yon_char_unite(yon_char_get_localised_from_lib(SUCCESS_LABEL),". ", !getuid()? main_config.load_mode==1?yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL):yon_char_get_localised_from_lib(GLOBAL_LOAD_SUCCESS_LABEL):yon_char_get_localised_from_lib(ROOT_WARNING_LABEL),NULL);
|
|
|
|
|
yon_ubl_status_box_render_thread(status_text,!getuid()?BACKGROUND_IMAGE_SUCCESS_TYPE:BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
free(status_text);
|
|
|
|
|
@ -1178,15 +1201,24 @@ void yon_monitor_set_resolutions(){
|
|
|
|
|
|
|
|
|
|
void on_app_chooser_open(GtkWidget *self, main_window *widgets){
|
|
|
|
|
yon_app_chooser_window *window = yon_app_chooser_window_new(1);
|
|
|
|
|
const char *prev_selection = gtk_entry_get_text(GTK_ENTRY(self==widgets->OptirunButton?widgets->OptirunEntry:widgets->PrimusrunEntry));
|
|
|
|
|
if (!yon_char_is_empty(prev_selection)){
|
|
|
|
|
int size;
|
|
|
|
|
config_str parsed = yon_char_parse((char*)prev_selection,&size,",");
|
|
|
|
|
yon_app_chooser_window_select(window,parsed,size);
|
|
|
|
|
yon_char_parsed_free(parsed,size);
|
|
|
|
|
}
|
|
|
|
|
int size;
|
|
|
|
|
config_str parsed = yon_app_chooser_window_run(window,&size);
|
|
|
|
|
|
|
|
|
|
if (parsed&&size){
|
|
|
|
|
char *string = yon_char_parsed_to_string(parsed,size,",");
|
|
|
|
|
if (self==widgets->OptirunButton){
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(widgets->OptirunEntry),string);
|
|
|
|
|
} else if (self == widgets->PrimusrunButton){
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(widgets->PrimusrunEntry),string);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void yon_adapter_window_setup(main_window *widgets){
|
|
|
|
|
@ -1398,6 +1430,8 @@ template_main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
|
widgets->InformationCompanyLogoImage2 = GTK_WIDGET(gtk_builder_get_object(builder, "InformationCompanyLogoImage2"));
|
|
|
|
|
widgets->InformationLabel = GTK_WIDGET(gtk_builder_get_object(builder, "InformationLabel"));
|
|
|
|
|
widgets->InformationLabel2 = GTK_WIDGET(gtk_builder_get_object(builder, "InformationLabel2"));
|
|
|
|
|
widgets->DriversLoadingOverlay = GTK_WIDGET(gtk_builder_get_object(builder, "DriversLoadingOverlay"));
|
|
|
|
|
widgets->DriversLoadingSpinner = GTK_WIDGET(gtk_builder_get_object(builder, "DriversLoadingSpinner"));
|
|
|
|
|
|
|
|
|
|
widgets->PackageRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "PackageRenderer"));
|
|
|
|
|
widgets->ModuleRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "ModuleRenderer"));
|
|
|
|
|
@ -1405,6 +1439,8 @@ template_main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
|
main_config.list = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore6"));
|
|
|
|
|
main_config.list2 = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore1"));
|
|
|
|
|
|
|
|
|
|
gtk_overlay_add_overlay(GTK_OVERLAY(widgets->DriversLoadingOverlay),widgets->DriversLoadingSpinner);
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadDriversButton), "clicked", G_CALLBACK(yon_proprietary_get_thread), widgets);
|
|
|
|
|
|
|
|
|
|
if (!getuid()){
|
|
|
|
|
@ -1423,7 +1459,9 @@ template_main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->OptirunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->OptirunEntry);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->OptirunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->OptirunButton);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->PrimusrunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->PrimusrunEntry);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->PrimusrunCombo),"changed",G_CALLBACK(yon_set_sensitive_from_combo_box),widgets->PrimusrunButton);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->KernelsCombo),"changed",G_CALLBACK(on_kernel_filter_changed),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->FrameGapCombo),"changed",G_CALLBACK(on_gapfix_changed),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->OptirunButton),"clicked",G_CALLBACK(on_app_chooser_open),widgets);
|
|
|
|
|
|