|
|
|
@ -508,6 +508,62 @@ void on_package_install_accept(GtkWidget *, dictionary *dict){
|
|
|
|
on_subwindow_close(window->Window);
|
|
|
|
on_subwindow_close(window->Window);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_module_remove_accept(GtkWidget *, dictionary *dict){
|
|
|
|
|
|
|
|
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
|
|
|
|
|
|
|
|
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*);
|
|
|
|
|
|
|
|
free(dict->first->next->next);
|
|
|
|
|
|
|
|
dict->first->next->next = NULL;
|
|
|
|
|
|
|
|
char *module_formated = yon_package_string_set(tab->module);
|
|
|
|
|
|
|
|
char *modules_to_install = module_formated;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (gtk_widget_get_visible(window->DependencesFrame)){
|
|
|
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
|
|
|
for_iter (GTK_TREE_MODEL(window->liststore1),&iter){
|
|
|
|
|
|
|
|
int status;
|
|
|
|
|
|
|
|
char *package;
|
|
|
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&status,1,&package,-1);
|
|
|
|
|
|
|
|
if (status){
|
|
|
|
|
|
|
|
char *temp = yon_char_unite(modules_to_install," ", package, NULL);
|
|
|
|
|
|
|
|
if (strcmp(modules_to_install,module_formated)) free(modules_to_install);
|
|
|
|
|
|
|
|
modules_to_install = temp;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
char *command = remove_command(modules_to_install);
|
|
|
|
|
|
|
|
yon_command_execute_async(command,widgets);
|
|
|
|
|
|
|
|
tab->module_installed=0;
|
|
|
|
|
|
|
|
on_subwindow_close(window->Window);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_package_remove_accept(GtkWidget *, dictionary *dict){
|
|
|
|
|
|
|
|
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
|
|
|
|
|
|
|
|
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*);
|
|
|
|
|
|
|
|
free(dict->first->next->next);
|
|
|
|
|
|
|
|
dict->first->next->next = NULL;
|
|
|
|
|
|
|
|
char *module_formated = yon_package_string_set(tab->package);
|
|
|
|
|
|
|
|
char *modules_to_install = module_formated;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (gtk_widget_get_visible(window->DependencesFrame)){
|
|
|
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
|
|
|
for_iter (GTK_TREE_MODEL(window->liststore1),&iter){
|
|
|
|
|
|
|
|
int status;
|
|
|
|
|
|
|
|
char *package;
|
|
|
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&status,1,&package,-1);
|
|
|
|
|
|
|
|
if (status){
|
|
|
|
|
|
|
|
char *temp = yon_char_unite(modules_to_install," ", package, NULL);
|
|
|
|
|
|
|
|
if (strcmp(modules_to_install,module_formated)) free(modules_to_install);
|
|
|
|
|
|
|
|
modules_to_install = temp;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
char *command = remove_command(modules_to_install);
|
|
|
|
|
|
|
|
yon_command_execute_async(command,widgets);
|
|
|
|
|
|
|
|
tab->package_installed=0;
|
|
|
|
|
|
|
|
on_subwindow_close(window->Window);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
dialog_window *yon_dialog_window_new(){
|
|
|
|
dialog_window *yon_dialog_window_new(){
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_dialog_path);
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_dialog_path);
|
|
|
|
dialog_window *window = malloc(sizeof(dialog_window));
|
|
|
|
dialog_window *window = malloc(sizeof(dialog_window));
|
|
|
|
@ -517,6 +573,7 @@ dialog_window *yon_dialog_window_new(){
|
|
|
|
window->DependencesTree = yon_gtk_builder_get_widget(builder,"DependencesTree");
|
|
|
|
window->DependencesTree = yon_gtk_builder_get_widget(builder,"DependencesTree");
|
|
|
|
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
|
|
|
|
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
|
|
|
|
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
|
|
|
|
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
|
|
|
|
|
|
|
|
window->DependencesFrame = yon_gtk_builder_get_widget(builder,"DependencesFrame");
|
|
|
|
window->ChooseCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ChooseCell"));
|
|
|
|
window->ChooseCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ChooseCell"));
|
|
|
|
window->liststore1 = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
|
|
|
|
window->liststore1 = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
@ -528,18 +585,37 @@ void on_module_install_clicked(GtkWidget *self,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*);
|
|
|
|
char *action_text = NULL;
|
|
|
|
char *action_text = NULL;
|
|
|
|
if (self == tab->update_module_button)
|
|
|
|
|
|
|
|
action_text = KERNEL_MODULE_UPDATE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
action_text = KERNEL_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (self == tab->update_module_button){
|
|
|
|
|
|
|
|
if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
|
|
|
|
|
|
|
|
action_text = KERNEL_MODULE_UPDATE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_MODULE_TITLE_LABEL);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
action_text = ADDITION_MODULE_UPDATE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_ADDITION_MODULE_TITLE_LABEL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
|
|
|
|
|
|
|
|
action_text = KERNEL_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_MODULE_TITLE_LABEL);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
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->TopicLabel),action_text);
|
|
|
|
gtk_label_set_text(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))){
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
} 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);
|
|
|
|
GtkTreeIter iter;
|
|
|
|
GtkTreeIter iter;
|
|
|
|
@ -555,21 +631,6 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->module_requirements[i],-1);
|
|
|
|
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);
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
|
|
|
|
|
|
|
|
if (self == tab->update_module_button)
|
|
|
|
|
|
|
|
data->action_text = ADDITION_MODULE_UPDATE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
data->action_text = ADDITION_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
data->function = NULL;
|
|
|
|
|
|
|
|
data->data = NULL;
|
|
|
|
|
|
|
|
if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){
|
|
|
|
|
|
|
|
char *target = yon_package_string_set(tab->module);
|
|
|
|
|
|
|
|
char *command = install_command(target);
|
|
|
|
|
|
|
|
yon_command_execute_async(command,widgets);
|
|
|
|
|
|
|
|
tab->module_installed=1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -577,18 +638,36 @@ void on_package_install_clicked(GtkWidget *self,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*);
|
|
|
|
char *action_text = NULL;
|
|
|
|
char *action_text = NULL;
|
|
|
|
if (self == tab->update_module_button)
|
|
|
|
|
|
|
|
action_text = KERNEL_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
action_text = KERNEL_PACKAGE_INSTALL_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
|
|
|
|
|
|
|
|
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 (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
|
|
|
|
|
|
|
|
action_text = KERNEL_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_PACKAGE_TITLE_LABEL);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
action_text = ADDITION_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_ADDITION_PACKAGE_TITLE_LABEL);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
|
|
|
|
|
|
|
|
action_text = KERNEL_PACKAGE_INSTALL_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_PACKAGE_TITLE_LABEL);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
action_text = ADDITION_PACKAGE_INSTALL_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_ADDITION_PACKAGE_TITLE_LABEL);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->TopicLabel),action_text);
|
|
|
|
gtk_label_set_text(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))){
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
} 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);
|
|
|
|
GtkTreeIter iter;
|
|
|
|
GtkTreeIter iter;
|
|
|
|
@ -604,21 +683,7 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->package_requirements[i],-1);
|
|
|
|
gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->package_requirements[i],-1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
yon_char_parsed_free(additions,size);
|
|
|
|
yon_char_parsed_free(additions,size);
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
|
|
|
|
|
|
|
|
if (self == tab->update_package_button)
|
|
|
|
|
|
|
|
data->action_text = ADDITION_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
data->action_text = ADDITION_PACKAGE_INSTALL_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
data->function = NULL;
|
|
|
|
|
|
|
|
data->data = NULL;
|
|
|
|
|
|
|
|
if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){
|
|
|
|
|
|
|
|
char *target = yon_package_string_set(tab->package);
|
|
|
|
|
|
|
|
char *command = install_command(target);
|
|
|
|
|
|
|
|
yon_command_execute_async(command,widgets);
|
|
|
|
|
|
|
|
tab->package_installed=1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -654,23 +719,46 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
} break;
|
|
|
|
} break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
|
|
|
|
char *action_text = NULL;
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_module_remove_accept),dict);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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))){
|
|
|
|
|
|
|
|
action_text = KERNEL_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
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_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_ADDITION_MODULE_TITLE_LABEL);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_MODULE_TITLE_LABEL);
|
|
|
|
|
|
|
|
action_text = ADDITION_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
if (installed_kernels>1){
|
|
|
|
if (installed_kernels>1){
|
|
|
|
data->action_text = KERNEL_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
action_text = KERNEL_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
} else if (installed_kernels==1){
|
|
|
|
} else if (installed_kernels==1){
|
|
|
|
data->action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(tab->name);
|
|
|
|
action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(tab->name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
data->function = NULL;
|
|
|
|
int size;
|
|
|
|
data->data = NULL;
|
|
|
|
config_str additions = yon_resource_open_file(kernels_addon_path,&size);
|
|
|
|
if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){
|
|
|
|
GtkTreeIter iter;
|
|
|
|
char *target = yon_package_string_set(tab->module);
|
|
|
|
for (int i=0;i<tab->module_requirements_size;i++){
|
|
|
|
char *command = remove_command(target);
|
|
|
|
if (system(get_package_is_installed_command(tab->module))){
|
|
|
|
char *command_unload = unload_command(target);
|
|
|
|
gtk_list_store_append(window->liststore1,&iter);
|
|
|
|
if (system(yon_debug_output("%s\n",command_unload))){};
|
|
|
|
for (int j=1;j<size;j++){
|
|
|
|
g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_module_remove_done),tab);
|
|
|
|
int cur_size;
|
|
|
|
yon_command_execute_async(command,widgets);
|
|
|
|
config_str parsed = yon_char_parse(additions[j],&cur_size,";");
|
|
|
|
tab->module_installed=0;
|
|
|
|
if (!strcmp(parsed[1],tab->module_requirements[i]))
|
|
|
|
|
|
|
|
gtk_list_store_set(window->liststore1,&iter,2,parsed[3],-1);
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->TopicLabel),action_text);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -698,21 +786,47 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
} break;
|
|
|
|
} break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_package_remove_accept),dict);
|
|
|
|
|
|
|
|
char *action_text = "";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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))){
|
|
|
|
|
|
|
|
action_text = KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_ADDITION_PACKAGE_TITLE_LABEL);
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
if (installed_kernels>1){
|
|
|
|
if (installed_kernels>1){
|
|
|
|
data->action_text = KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
action_text = ADDITION_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
} else if (installed_kernels==1){
|
|
|
|
} else if (installed_kernels==1){
|
|
|
|
data->action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(tab->name);
|
|
|
|
action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(tab->name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
data->function = NULL;
|
|
|
|
|
|
|
|
data->data = NULL;
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGE_TITLE_LABEL);
|
|
|
|
int resp = yon_confirmation_dialog_call(self,data);
|
|
|
|
int size;
|
|
|
|
if (resp == GTK_RESPONSE_ACCEPT){
|
|
|
|
config_str additions = yon_resource_open_file(kernels_addon_path,&size);
|
|
|
|
char *target = yon_package_string_set(tab->package);
|
|
|
|
GtkTreeIter iter;
|
|
|
|
char *command = remove_command(target);
|
|
|
|
for (int i=0;i<tab->module_requirements_size;i++){
|
|
|
|
yon_command_execute_async(command,widgets);
|
|
|
|
if (system(get_package_is_installed_command(tab->package))){
|
|
|
|
tab->package_installed=0;
|
|
|
|
gtk_list_store_append(window->liststore1,&iter);
|
|
|
|
|
|
|
|
for (int j=1;j<size;j++){
|
|
|
|
|
|
|
|
int cur_size;
|
|
|
|
|
|
|
|
config_str parsed = yon_char_parse(additions[j],&cur_size,";");
|
|
|
|
|
|
|
|
if (!strcmp(parsed[1],tab->module_requirements[i]))
|
|
|
|
|
|
|
|
gtk_list_store_set(window->liststore1,&iter,2,parsed[3],-1);
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->TopicLabel),action_text);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|