Merge pull request 'master' (#48) from YanTheKaller/ubl-settings-kernel:master into master

Reviewed-on: #48
pull/79/head v2.5
Dmitry Razumov 1 year ago
commit 16accea3e6

@ -125,6 +125,41 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){
} }
void on_terminal_done(GtkWidget *, int state, GtkWidget *status_box){
if (!state) yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(status_box),"terminal_done",BUILD_SUCCESS_STATUS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
else yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(status_box),"terminal_done",BUILD_FAILED_STATUS_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
void yon_terminal_window_start(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_terminal_done), status_box);
yon_terminal_integrated_start(terminal,command);
}
gboolean yon_tab_create_tags(kernels_tab *tab){ gboolean yon_tab_create_tags(kernels_tab *tab){
GList *list = gtk_container_get_children(GTK_CONTAINER(tab->install_tags_box)); GList *list = gtk_container_get_children(GTK_CONTAINER(tab->install_tags_box));
for (guint i=0;i<g_list_length(list);i++){ for (guint i=0;i<g_list_length(list);i++){
@ -473,21 +508,25 @@ void *yon_command_execute_async(char *command,main_window *widgets){
gdk_threads_add_timeout(500,(GSourceFunc)yon_terminal_get_progress,widgets); gdk_threads_add_timeout(500,(GSourceFunc)yon_terminal_get_progress,widgets);
gtk_widget_set_sensitive(widgets->UpdateButton,0); gtk_widget_set_sensitive(widgets->UpdateButton,0);
dictionary *dict = NULL; dictionary *dict = NULL;
for_dictionaries(dict,main_config.kernel_tabs){ if (main_config.kernel_tabs){
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_module_button,0); for_dictionaries(dict,main_config.kernel_tabs){
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_package_button,0); gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_module_button,0);
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_module_button,0); gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_package_button,0);
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_package_button,0); gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_module_button,0);
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_module_button,0); gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_package_button,0);
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,0); gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_module_button,0);
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,0);
}
} }
for_dictionaries(dict,main_config.addition_tabs){ if (main_config.addition_tabs){
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_module_button,0); for_dictionaries(dict,main_config.addition_tabs){
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_package_button,0); gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_module_button,0);
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_module_button,0); gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_package_button,0);
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_package_button,0); gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_module_button,0);
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_module_button,0); gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_package_button,0);
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,0); gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_module_button,0);
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,0);
}
} }
return NULL; return NULL;
} }
@ -499,7 +538,9 @@ void on_module_install_accept(GtkWidget *, dictionary *dict){
free(dict->first->next->next); free(dict->first->next->next);
dict->first->next->next = NULL; dict->first->next->next = NULL;
char *module_formated = yon_package_string_set(tab->module); char *module_formated = yon_package_string_set(tab->module);
char *modules_to_install = module_formated; char *modules_to_install = NULL;
if (!tab->module_updated) modules_to_install = yon_char_unite(module_formated, " ", yon_package_string_set(tab->package), NULL);
else modules_to_install = module_formated;
GtkTreeIter iter; GtkTreeIter iter;
for_iter (GTK_TREE_MODEL(window->liststore1),&iter){ for_iter (GTK_TREE_MODEL(window->liststore1),&iter){
@ -507,6 +548,16 @@ void on_module_install_accept(GtkWidget *, dictionary *dict){
char *package; char *package;
gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&status,1,&package,-1); gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&status,1,&package,-1);
if (status){ if (status){
if (strstr(package,",")){
int parsed_size;
config_str parsed = yon_char_parse(package,&parsed_size,",");
package = "";
for (int i=0;i<parsed_size;i++){
char *temp = yon_char_unite(package," ",parsed[i],NULL);
if (!yon_char_is_empty(package)) free(package);
package = temp;
}
}
char *temp = yon_char_unite(modules_to_install," ", package, NULL); char *temp = yon_char_unite(modules_to_install," ", package, NULL);
if (strcmp(modules_to_install,module_formated)) free(modules_to_install); if (strcmp(modules_to_install,module_formated)) free(modules_to_install);
modules_to_install = temp; modules_to_install = temp;
@ -548,6 +599,7 @@ void on_module_remove_accept(GtkWidget *, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
dialog_window *window = yon_dictionary_get_data(dict->first->next->next,dialog_window*); dialog_window *window = yon_dictionary_get_data(dict->first->next->next,dialog_window*);
dict=dict->first;
free(dict->first->next->next); free(dict->first->next->next);
dict->first->next->next = NULL; dict->first->next->next = NULL;
char *module_formated = yon_package_string_set(tab->module); char *module_formated = yon_package_string_set(tab->module);
@ -560,6 +612,16 @@ void on_module_remove_accept(GtkWidget *, dictionary *dict){
char *package; char *package;
gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&status,1,&package,-1); gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&status,1,&package,-1);
if (status){ if (status){
if (strstr(package,",")){
int parsed_size;
config_str parsed = yon_char_parse(package,&parsed_size,",");
package = "";
for (int i=0;i<parsed_size;i++){
char *temp = yon_char_unite(package," ",parsed[i],NULL);
if (!yon_char_is_empty(package)) free(package);
package = temp;
}
}
char *temp = yon_char_unite(modules_to_install," ", package, NULL); char *temp = yon_char_unite(modules_to_install," ", package, NULL);
if (strcmp(modules_to_install,module_formated)) free(modules_to_install); if (strcmp(modules_to_install,module_formated)) free(modules_to_install);
modules_to_install = temp; modules_to_install = temp;
@ -576,6 +638,7 @@ void on_package_remove_accept(GtkWidget *, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
dialog_window *window = yon_dictionary_get_data(dict->first->next->next,dialog_window*); dialog_window *window = yon_dictionary_get_data(dict->first->next->next,dialog_window*);
dict=dict->first;
free(dict->first->next->next); free(dict->first->next->next);
dict->first->next->next = NULL; dict->first->next->next = NULL;
char *module_formated = yon_package_string_set(tab->package); char *module_formated = yon_package_string_set(tab->package);
@ -622,7 +685,6 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
char *action_text = NULL; char *action_text = NULL;
dialog_window *window = yon_dialog_window_new(); dialog_window *window = yon_dialog_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"dialog");
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_module_install_accept),dict); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_module_install_accept),dict);
@ -637,9 +699,11 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
} }
} else { } else {
if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"dialog");
action_text = KERNEL_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); action_text = KERNEL_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name);
gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_MODULE_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_MODULE_TITLE_LABEL);
} else { } else {
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"additions_dialog");
action_text = ADDITION_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); action_text = ADDITION_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name);
gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_ADDITION_MODULE_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_ADDITION_MODULE_TITLE_LABEL);
} }
@ -650,7 +714,7 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
gtk_widget_hide(window->DependencesFrame); gtk_widget_hide(window->DependencesFrame);
gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); // gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START);
} else { } else {
int size; int size;
config_str additions = yon_resource_open_file(kernels_addon_path,&size); config_str additions = yon_resource_open_file(kernels_addon_path,&size);
@ -661,10 +725,9 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
int cur_size; int cur_size;
config_str parsed = yon_char_parse(additions[j],&cur_size,";"); config_str parsed = yon_char_parse(additions[j],&cur_size,";");
if (!strcmp(parsed[1],tab->module_requirements[i])) if (!strcmp(parsed[1],tab->module_requirements[i]))
gtk_list_store_set(window->liststore1,&iter,2,parsed[3],-1); gtk_list_store_set(window->liststore1,&iter,1,yon_char_unite(parsed[1],",",parsed[2],NULL),2,parsed[3],-1);
yon_char_parsed_free(parsed,cur_size); yon_char_parsed_free(parsed,cur_size);
} }
gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->module_requirements[i],-1);
} }
yon_char_parsed_free(additions,size); yon_char_parsed_free(additions,size);
} }
@ -675,14 +738,15 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
char *action_text = NULL; char *action_text = NULL;
dialog_window *window = yon_dialog_window_new(); dialog_window *window = yon_dialog_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_PACKAGE_TITLE_LABEL:INSTALL_PACKAGE_TITLE_LABEL,icon_path,"dialog");
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_package_install_accept),dict); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_package_install_accept),dict);
if (self == tab->update_module_button){ if (self == tab->update_module_button){
if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_PACKAGE_TITLE_LABEL:INSTALL_PACKAGE_TITLE_LABEL,icon_path,"dialog");
action_text = KERNEL_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name); action_text = KERNEL_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name);
gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_PACKAGE_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_PACKAGE_TITLE_LABEL);
} else { } else {
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_PACKAGE_TITLE_LABEL:INSTALL_PACKAGE_TITLE_LABEL,icon_path,"additions_dialog");
action_text = ADDITION_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name); action_text = ADDITION_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name);
gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_ADDITION_PACKAGE_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_ADDITION_PACKAGE_TITLE_LABEL);
} }
@ -696,13 +760,13 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){
} }
} }
gtk_label_set_text(GTK_LABEL(window->TopicLabel),action_text); gtk_label_set_markup(GTK_LABEL(window->TopicLabel),action_text);
gtk_widget_show(window->Window); gtk_widget_show(window->Window);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
gtk_widget_hide(window->DependencesFrame); gtk_widget_hide(window->DependencesFrame);
gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); // gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START);
} else { } else {
int size; int size;
config_str additions = yon_resource_open_file(kernels_addon_path,&size); config_str additions = yon_resource_open_file(kernels_addon_path,&size);
@ -757,18 +821,24 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
} }
char *action_text = NULL; char *action_text = NULL;
dialog_window *window = yon_dialog_window_new(); dialog_window *window = yon_dialog_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"dialog"); if (dict->first->next->next){
dict=dict->first;
free(dict->first->next->next);
dict->first->next->next=NULL;
}
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
dict=dict->first;
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_module_remove_accept),dict); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_module_remove_accept),dict);
gtk_widget_show(window->Window); gtk_widget_show(window->Window);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
action_text = KERNEL_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name); yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"additions_dialog");
action_text = ADDITION_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name);
gtk_widget_hide(window->DependencesFrame); gtk_widget_hide(window->DependencesFrame);
gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); // gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START);
gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_ADDITION_MODULE_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_ADDITION_MODULE_TITLE_LABEL);
} else { } else {
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"dialog");
gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_MODULE_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_MODULE_TITLE_LABEL);
action_text = ADDITION_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name); action_text = ADDITION_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name);
if (installed_kernels>1){ if (installed_kernels>1){
@ -780,16 +850,15 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
config_str additions = yon_resource_open_file(kernels_addon_path,&size); config_str additions = yon_resource_open_file(kernels_addon_path,&size);
GtkTreeIter iter; GtkTreeIter iter;
for (int i=0;i<tab->module_requirements_size;i++){ for (int i=0;i<tab->module_requirements_size;i++){
if (!system(get_package_is_installed_command(tab->module))){ if (!system(get_package_is_installed_command(tab->module_requirements[i]))){
gtk_list_store_append(window->liststore1,&iter); gtk_list_store_append(window->liststore1,&iter);
for (int j=1;j<size;j++){ for (int j=1;j<size;j++){
int cur_size; int cur_size;
config_str parsed = yon_char_parse(additions[j],&cur_size,";"); config_str parsed = yon_char_parse(additions[j],&cur_size,";");
if (!strcmp(parsed[1],tab->module_requirements[i])) if (!strcmp(parsed[1],tab->module_requirements[i]))
gtk_list_store_set(window->liststore1,&iter,2,parsed[3],-1); gtk_list_store_set(window->liststore1,&iter,1,yon_char_unite(parsed[1],",",parsed[2],NULL),2,parsed[3],-1);
yon_char_parsed_free(parsed,cur_size); yon_char_parsed_free(parsed,cur_size);
} }
gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->module_requirements[i],-1);
} }
} }
yon_char_parsed_free(additions,size); yon_char_parsed_free(additions,size);
@ -824,31 +893,37 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){
} }
dialog_window *window = yon_dialog_window_new(); dialog_window *window = yon_dialog_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"dialog"); if (dict->first->next->next){
dict=dict->first;
free(dict->first->next->next);
dict->first->next->next=NULL;
}
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
dict=dict->first;
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_package_remove_accept),dict); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_package_remove_accept),dict);
char *action_text = ""; char *action_text = "";
gtk_widget_show(window->Window); gtk_widget_show(window->Window);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
action_text = KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name); yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"additions_dialog");
action_text = ADDITION_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name);
gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_ADDITION_PACKAGE_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_ADDITION_PACKAGE_TITLE_LABEL);
gtk_widget_hide(window->DependencesFrame); gtk_widget_hide(window->DependencesFrame);
gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); // gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START);
} else { } else {
if (installed_kernels>1){ if (installed_kernels>1){
action_text = ADDITION_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name); action_text = KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name);
} else if (installed_kernels==1){ } else if (installed_kernels==1){
action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(tab->name); action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(tab->name);
} }
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"dialog");
gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGE_TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGE_TITLE_LABEL);
int size; int size;
config_str additions = yon_resource_open_file(kernels_addon_path,&size); config_str additions = yon_resource_open_file(kernels_addon_path,&size);
GtkTreeIter iter; GtkTreeIter iter;
for (int i=0;i<tab->module_requirements_size;i++){ for (int i=0;i<tab->module_requirements_size;i++){
if (!system(get_package_is_installed_command(tab->package))){ if (!system(get_package_is_installed_command(tab->package_requirements[i]))){
gtk_list_store_append(window->liststore1,&iter); gtk_list_store_append(window->liststore1,&iter);
for (int j=1;j<size;j++){ for (int j=1;j<size;j++){
int cur_size; int cur_size;
@ -910,6 +985,8 @@ kernels_tab *yon_tab_row_new(GtkListBox *target, char *target_string, main_windo
tab->install_package_button = yon_gtk_builder_get_widget(builder,"InstallPackageButton"); tab->install_package_button = yon_gtk_builder_get_widget(builder,"InstallPackageButton");
tab->changelog_button = yon_gtk_builder_get_widget(builder,"ChangelogButton"); tab->changelog_button = yon_gtk_builder_get_widget(builder,"ChangelogButton");
tab->launch_button = yon_gtk_builder_get_widget(builder,"LaunchButton"); tab->launch_button = yon_gtk_builder_get_widget(builder,"LaunchButton");
tab->module_updated=0;
tab->package_updated=0;
dictionary *dict = NULL; dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
@ -1017,6 +1094,8 @@ additions_kernels_tab *yon_additions_tab_row_new(GtkListBox *target, char *targe
tab->launch_button = NULL; tab->launch_button = NULL;
tab->run_tags_box = NULL; tab->run_tags_box = NULL;
tab->tags_box = NULL; tab->tags_box = NULL;
tab->module_updated=0;
tab->package_updated=0;
dictionary *dict = NULL; dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
@ -1148,7 +1227,7 @@ void on_build_execute(GtkWidget *, dictionary *dict){
char *target = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->KernelVersionCombo)); char *target = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->KernelVersionCombo));
char *filename = (char*)gtk_entry_get_text(GTK_ENTRY(window->FilenameEntry)); char *filename = (char*)gtk_entry_get_text(GTK_ENTRY(window->FilenameEntry));
char *command = build_command(target,filename,debug,drivers); char *command = build_command(target,filename,debug,drivers);
yon_terminal_window_launch(GTK_WINDOW(widgets->Window),yon_debug_output("%s\n",command)); yon_terminal_window_start(GTK_WINDOW(widgets->Window),yon_debug_output("%s\n",command));
gtk_widget_destroy(window->window); gtk_widget_destroy(window->window);
} }
@ -1296,7 +1375,7 @@ void yon_main_window_complete(main_window *widgets){
on_update_clicked(NULL,widgets); on_update_clicked(NULL,widgets);
yon_save_window_set_postsave_function(on_save_done,widgets); yon_save_window_set_postsave_function(on_save_done,widgets);
yon_command_execute_async(pacman_update_command,widgets); yon_terminal_integrated_start(widgets->InstallTerminal,pacman_update_command);
} }
yon_load_proceed(YON_CONFIG_LOCAL); yon_load_proceed(YON_CONFIG_LOCAL);
} }

@ -46,18 +46,19 @@
#define get_kernel_changelog_command(target) yon_char_unite("find /usr/lib/modules/ -maxdepth 2 -type f -iname \"pkgbase\" -exec grep -il \"",target,"\" {} + | xargs dirname | xargs -I {} cat \"{}/changelog\"", NULL) #define get_kernel_changelog_command(target) yon_char_unite("find /usr/lib/modules/ -maxdepth 2 -type f -iname \"pkgbase\" -exec grep -il \"",target,"\" {} + | xargs dirname | xargs -I {} cat \"{}/changelog\"", NULL)
#define get_package_info_command(target) yon_char_append("pacman -Si ",target) #define get_package_info_command(target) yon_char_append("pacman -Si ",target)
#define get_package_is_installed_command(target) yon_char_append("pacman -Qq ",target) #define get_package_is_installed_command(target) yon_char_append("pacman -Qq ",target)
#define get_package_is_updated_command(target) yon_char_append("pacman -Qu ",target) #define get_package_is_updated_command(target) yon_char_append("pacman -Qqu ",target)
#define unload_command(target) yon_char_append("ubmunload ",target) #define unload_command(target) yon_char_append("ubmunload ",target)
#define pacman_update_command "pacman -Sy" #define pacman_update_command "pacman -Sy"
#define install_command(target) yon_char_append("pacman -Sy --noconfirm ",target) #define install_command(target) yon_char_append("pacman -Sy --noconfirm ",target)
#define remove_command(target) yon_char_append("pacman -R --noconfirm ",target) #define remove_command(target) yon_char_append("pacman -R --noconfirm ",target)
#define get_dependent_command(target) yon_char_append("pactree -rl ",target)
#define get_active_kernel_command "cat /usr/lib/modules/$(uname -r)/pkgbase" #define get_active_kernel_command "cat /usr/lib/modules/$(uname -r)/pkgbase"
#define get_installed_kernel_packages_command "cat /usr/lib/modules/*/pkgbase" #define get_installed_kernel_packages_command "cat /usr/lib/modules/*/pkgbase"
#define get_installed_kernel_modules_command "cat /memory/data/from/0/ublinux-data/module/*linux*" #define get_installed_kernel_modules_command "cat /memory/data/from/0/ublinux-data/module/*linux*"
#define build_command(target,filename,debug_bool,drivers_bool) yon_char_unite("ubmkuird -l -n ",filename," -k ",target, " ",(debug_bool)?"--addon ":"",(drivers_bool)?"-H":"",NULL) #define build_command(target,filename,debug_bool,drivers_bool) yon_char_unite("ubmkuird -l ",!yon_char_is_empty(filename)?"-n ":"",filename," -k ",target, " ",(debug_bool)?"--addon ":"",(drivers_bool)?"-H":"",NULL)
#define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get boot KERNEL_BOOT",NULL) #define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get boot KERNEL_BOOT",NULL)
#define config_get_local_command "ubconfig --source system get boot KERNEL_BOOT" #define config_get_local_command "ubconfig --source system get boot KERNEL_BOOT"
@ -236,6 +237,11 @@ void on_config_local_load(GtkWidget *, main_window *widgets);
void on_config_global_load(GtkWidget *, main_window *widgets); void on_config_global_load(GtkWidget *, main_window *widgets);
void on_config_custom_load(GtkWidget *,main_window *widgets); void on_config_custom_load(GtkWidget *,main_window *widgets);
char *yon_package_dependent_get(char *target);
void on_terminal_done(GtkWidget *, int state, GtkWidget *status_box);
void yon_terminal_window_start(GtkWindow *parent_window, char *command);
void config_init(); void config_init();
void yon_main_window_complete(main_window *widgets); void yon_main_window_complete(main_window *widgets);

@ -62,14 +62,14 @@
#define PACKAGE_REMOVED_BUT_NOT_DISABLED_LABEL _("The package with the module has been removed, but the module is not disabled from the system, as it is used by other system programs. After rebooting, the module will be disabled and removed.") #define PACKAGE_REMOVED_BUT_NOT_DISABLED_LABEL _("The package with the module has been removed, but the module is not disabled from the system, as it is used by other system programs. After rebooting, the module will be disabled and removed.")
#define KERNEL_MODULE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install kernel module")," ",target,"?",NULL) #define KERNEL_MODULE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install kernel module")," ",target,"?",NULL)
#define KERNEL_PACKAGE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install kernel package")," ",target,"?",NULL) #define KERNEL_PACKAGE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install kernel package")," ",target,"?\n<i>",KERNEL_PACKAGE_INSTALL_ATTENTION_LABEL,"</i>",NULL)
#define KERNEL_MODULE_UPDATE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to update kernel module")," ",target,"?",NULL) #define KERNEL_MODULE_UPDATE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to update kernel module")," ",target,"?",NULL)
#define KERNEL_PACKAGE_UPDATE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to update kernel package")," ",target,"?",NULL) #define KERNEL_PACKAGE_UPDATE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to update kernel package")," ",target,"?",NULL)
#define KERNEL_MODULE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove kernel module")," ",target,"?",NULL) #define KERNEL_MODULE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove kernel module")," ",target,"?",NULL)
#define KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(target) yon_char_unite(_("The kernel is the only one in the system. If you remove it, it will become impossible to boot. Do you really want to remove")," ",target,"?",NULL) #define KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(target) yon_char_unite(_("The kernel is the only one in the system. If you remove it, it will become impossible to boot. Do you really want to remove")," ",target,"?",NULL)
#define KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove kernel package")," ",target,"?",NULL) #define KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove kernel package")," ",target,"?",NULL)
#define ADDITION_MODULE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install kernel addition package")," ",target,"?",NULL) #define ADDITION_MODULE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install module with addition package")," ",target,"?",NULL)
#define ADDITION_PACKAGE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install kernel addition package")," ",target,"?",NULL) #define ADDITION_PACKAGE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install addition package")," ",target,"?",NULL)
#define ADDITION_MODULE_UPDATE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to update kernel addition module")," ",target,"?",NULL) #define ADDITION_MODULE_UPDATE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to update kernel addition module")," ",target,"?",NULL)
#define ADDITION_PACKAGE_UPDATE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to update kernel addition package")," ",target,"?",NULL) #define ADDITION_PACKAGE_UPDATE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to update kernel addition package")," ",target,"?",NULL)
#define ADDITION_MODULE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove kernel addition module")," ",target,"?",NULL) #define ADDITION_MODULE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove kernel addition module")," ",target,"?",NULL)
@ -90,3 +90,6 @@
#define REMOVE_ADDITION_PACKAGE_TITLE_LABEL _("Remove addition package") #define REMOVE_ADDITION_PACKAGE_TITLE_LABEL _("Remove addition package")
#define UPDATE_ADDITION_MODULE_TITLE_LABEL _("Update addition module") #define UPDATE_ADDITION_MODULE_TITLE_LABEL _("Update addition module")
#define UPDATE_ADDITION_PACKAGE_TITLE_LABEL _("Update addition package") #define UPDATE_ADDITION_PACKAGE_TITLE_LABEL _("Update addition package")
#define BUILD_SUCCESS_STATUS_LABEL _("Building has succeeded")
#define BUILD_FAILED_STATUS_LABEL _("Building has failed")
#define KERNEL_PACKAGE_INSTALL_ATTENTION_LABEL _("Attention! If you work in sandbox mode, you must install the package with the module!")

@ -14,9 +14,9 @@
</columns> </columns>
</object> </object>
<object class="GtkApplicationWindow" id="MainWindow"> <object class="GtkApplicationWindow" id="MainWindow">
<property name="width-request">400</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="modal">True</property> <property name="modal">True</property>
<property name="default-height">1</property>
<property name="icon-name">com.ublinux.ubl-settings-repomanager</property> <property name="icon-name">com.ublinux.ubl-settings-repomanager</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
@ -155,7 +155,7 @@
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>

@ -243,8 +243,12 @@ msgstr ""
msgid "Are you sure want to remove kernel package" msgid "Are you sure want to remove kernel package"
msgstr "" msgstr ""
#: source/ubl-strings.h:71 source/ubl-strings.h:72 #: source/ubl-strings.h:71
msgid "Are you sure want to install kernel addition package" msgid "Are you sure want to install module with addition package"
msgstr ""
source/ubl-strings.h:72
msgid "Are you sure want to install addition package"
msgstr "" msgstr ""
#: source/ubl-strings.h:73 #: source/ubl-strings.h:73
@ -329,3 +333,17 @@ msgstr ""
#: source/ubl-strings.h:92 #: source/ubl-strings.h:92
msgid "Update addition package" msgid "Update addition package"
msgstr "" msgstr ""
#: source/ubl-strings.h:93
msgid "Building has succeeded"
msgstr ""
#: source/ubl-strings.h:94
msgid "Building has failed"
msgstr ""
#: source/ubl-strings.h:95
msgid ""
"Attention! If you work in sandbox mode, you must install the package with "
"the module!"
msgstr ""

@ -249,10 +249,14 @@ msgstr ""
msgid "Are you sure want to remove kernel package" msgid "Are you sure want to remove kernel package"
msgstr "Вы действительно хотите удалить из системы пакет с ядром" msgstr "Вы действительно хотите удалить из системы пакет с ядром"
#: source/ubl-strings.h:71 source/ubl-strings.h:72 #: source/ubl-strings.h:71
msgid "Are you sure want to install kernel addition package" msgid "Are you sure want to install module with addition package"
msgstr "Вы хотите установить в систему пакет с модулем дополнения" msgstr "Вы хотите установить в систему пакет с модулем дополнения"
#: source/ubl-strings.h:72
msgid "Are you sure want to install addition package"
msgstr "Вы хотите установить в систему пакет с дополнением"
#: source/ubl-strings.h:73 #: source/ubl-strings.h:73
msgid "Are you sure want to update kernel addition module" msgid "Are you sure want to update kernel addition module"
msgstr "Вы хотите обновить пакет с модулем дополнения" msgstr "Вы хотите обновить пакет с модулем дополнения"
@ -340,3 +344,17 @@ msgstr "Обновить модуль с дополнением"
#, fuzzy #, fuzzy
msgid "Update addition package" msgid "Update addition package"
msgstr "Обновить пакет с дополнением" msgstr "Обновить пакет с дополнением"
#: source/ubl-strings.h:93
msgid "Building has succeeded"
msgstr "Сборка прошла успешно"
#: source/ubl-strings.h:94
msgid "Building has failed"
msgstr "Ошибка сборки ядра"
#: source/ubl-strings.h:95
msgid ""
"Attention! If you work in sandbox mode, you must install the package with "
"the module!"
msgstr "Внимание! Если вы работаете в режиме песочницы, необходимо установить пакет с модулем!"

Loading…
Cancel
Save