|
|
|
|
@ -157,9 +157,52 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){
|
|
|
|
|
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);
|
|
|
|
|
yon_terminal_integrated_start_shell(terminal,command,NULL,NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char *yon_package_dependent_get(char *target){
|
|
|
|
|
int command_check = 0;
|
|
|
|
|
command_check = system(check_pactree_exist_command);
|
|
|
|
|
if (command_check) return target;
|
|
|
|
|
int size=0;
|
|
|
|
|
config_str parsed = NULL;
|
|
|
|
|
if (strstr(target,",")){
|
|
|
|
|
int final_size=0;
|
|
|
|
|
int targets_size=0;
|
|
|
|
|
config_str targets = yon_char_parse(target,&targets_size,",");
|
|
|
|
|
for (int i=0;i<targets_size;i++){
|
|
|
|
|
int deps_size = 0;
|
|
|
|
|
config_str deps = yon_config_load(get_dependent_command(targets[i]),&deps_size);
|
|
|
|
|
for(int j=0;j<deps_size;j++){
|
|
|
|
|
yon_char_remove_last_symbol(deps[j],'\n');
|
|
|
|
|
}
|
|
|
|
|
config_str tmp = yon_char_parsed_merge(parsed,size,deps,deps_size,&final_size);
|
|
|
|
|
if (parsed) yon_char_parsed_free(parsed,size);
|
|
|
|
|
parsed=tmp;
|
|
|
|
|
size=final_size;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
parsed = yon_config_load(get_dependent_command(target),&size);
|
|
|
|
|
}
|
|
|
|
|
int recurs_size=0;
|
|
|
|
|
config_str recurs = NULL;
|
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
|
yon_char_remove_last_symbol(parsed[i],'\n');
|
|
|
|
|
if (strcmp(parsed[i],target)){
|
|
|
|
|
yon_char_parsed_add_or_create_if_exists(recurs,&recurs_size,yon_package_dependent_get(parsed[i]));
|
|
|
|
|
} else {
|
|
|
|
|
yon_char_parsed_add_or_create_if_exists(recurs,&recurs_size,parsed[i]);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (recurs_size){
|
|
|
|
|
yon_char_parsed_free(parsed,size);
|
|
|
|
|
parsed = recurs;
|
|
|
|
|
size = recurs_size;
|
|
|
|
|
}
|
|
|
|
|
return yon_char_parsed_to_string(parsed,size," ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean yon_tab_create_tags(kernels_tab *tab){
|
|
|
|
|
GList *list = gtk_container_get_children(GTK_CONTAINER(tab->install_tags_box));
|
|
|
|
|
for (guint i=0;i<g_list_length(list);i++){
|
|
|
|
|
@ -348,19 +391,28 @@ void *yon_interface_update(main_window *widgets){
|
|
|
|
|
kernels = yon_resource_open_file(kernels_addon_path, &kernels_size);
|
|
|
|
|
for (int i=1;i<kernels_size;i++){
|
|
|
|
|
additions_kernels_tab *tab = yon_additions_tab_row_new(GTK_LIST_BOX(widgets->AdditionsPackageBox),kernels[i],widgets);
|
|
|
|
|
g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab);
|
|
|
|
|
GThread *thr = g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab);
|
|
|
|
|
if (i+1==kernels_size) {
|
|
|
|
|
g_thread_join(thr);
|
|
|
|
|
char *status_text = NULL;
|
|
|
|
|
switch (main_config.action){
|
|
|
|
|
case ACTION_LOAD:
|
|
|
|
|
status_text = main_config.load_mode==1?main_config.local_load_success_localised:main_config.global_load_success_localised;
|
|
|
|
|
break;
|
|
|
|
|
case ACTION_SAVE:
|
|
|
|
|
status_text = "";
|
|
|
|
|
break;
|
|
|
|
|
case ACTION_TERMINAL_EXECUTE_SUCCESS:
|
|
|
|
|
status_text = OPERATION_SUCCESS_LABEL;
|
|
|
|
|
break;
|
|
|
|
|
case ACTION_TERMINAL_EXECUTE_FAIL:
|
|
|
|
|
status_text = OPERATION_ERROR_LABEL;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
yon_ubl_status_box_render(status_text,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
}
|
|
|
|
|
gtk_widget_set_can_focus(gtk_widget_get_parent(tab->main_box),0);
|
|
|
|
|
}
|
|
|
|
|
textdomain(template_ui_LocaleName);
|
|
|
|
|
switch (main_config.load_mode){
|
|
|
|
|
case 0: yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
case 1: yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
case 3: yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
textdomain(LocaleName);
|
|
|
|
|
}
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
@ -377,6 +429,12 @@ info_window *yon_info_window_new(){
|
|
|
|
|
return window;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_basic_toggled(GtkSwitch *,int state, install_window *window){
|
|
|
|
|
gtk_menu_button_set_direction(GTK_MENU_BUTTON(window->ArrowButton),state?GTK_ARROW_UP:GTK_ARROW_DOWN);
|
|
|
|
|
gtk_revealer_set_transition_type(GTK_REVEALER(window->ShowRevealer),state?GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN:GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP);
|
|
|
|
|
gtk_revealer_set_reveal_child(GTK_REVEALER(window->ShowRevealer), state);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
install_window *yon_install_window_new(){
|
|
|
|
|
install_window *window = malloc(sizeof(install_window));
|
|
|
|
|
|
|
|
|
|
@ -391,10 +449,21 @@ install_window *yon_install_window_new(){
|
|
|
|
|
|
|
|
|
|
window->KernelVersionCombo = yon_gtk_builder_get_widget(builder,"KernelVersionCombo");
|
|
|
|
|
window->FilenameEntry = yon_gtk_builder_get_widget(builder,"FilenameEntry");
|
|
|
|
|
window->DebugCheck = yon_gtk_builder_get_widget(builder,"DebugCheck");
|
|
|
|
|
window->DriversCheck = yon_gtk_builder_get_widget(builder,"DriversCheck");
|
|
|
|
|
window->BasicSwitch = yon_gtk_builder_get_widget(builder,"BasicSwitch");
|
|
|
|
|
window->BasicCurrentSwitch = yon_gtk_builder_get_widget(builder,"BasicCurrentSwitch");
|
|
|
|
|
window->DebugSwitch = yon_gtk_builder_get_widget(builder,"DebugSwitch");
|
|
|
|
|
window->UniversalSwitch = yon_gtk_builder_get_widget(builder,"UniversalSwitch");
|
|
|
|
|
window->BackgroundFrame = yon_gtk_builder_get_widget(builder,"BackgroundFrame");
|
|
|
|
|
window->ArrowButton = yon_gtk_builder_get_widget(builder,"ArrowButton");
|
|
|
|
|
window->ShowRevealer = yon_gtk_builder_get_widget(builder,"ShowRevealer");
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->BasicSwitch),"state-set",G_CALLBACK(on_basic_toggled),window);
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->BasicSwitch),"state-set",G_CALLBACK(on_build_selection_changed),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->BasicCurrentSwitch),"state-set",G_CALLBACK(on_build_selection_changed),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->DebugSwitch),"state-set",G_CALLBACK(on_build_selection_changed),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->UniversalSwitch),"state-set",G_CALLBACK(on_build_selection_changed),window);
|
|
|
|
|
return window;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -422,15 +491,15 @@ int yon_tag_add(GtkBox *target,char *tag_label, char *tag_style, char *icon_name
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets){
|
|
|
|
|
// gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->MainRevealer),0);
|
|
|
|
|
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(OPERATION_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
on_update_clicked(NULL,widgets);
|
|
|
|
|
|
|
|
|
|
main_config.action=ACTION_TERMINAL_EXECUTE_SUCCESS;
|
|
|
|
|
} else {
|
|
|
|
|
yon_ubl_status_box_render(OPERATION_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
main_config.action=ACTION_TERMINAL_EXECUTE_FAIL;
|
|
|
|
|
}
|
|
|
|
|
gtk_widget_set_sensitive(widgets->UpdateButton,1);
|
|
|
|
|
dictionary *dict = NULL;
|
|
|
|
|
@ -450,6 +519,24 @@ gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets
|
|
|
|
|
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_module_button,1);
|
|
|
|
|
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,1);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->MoreButton),MORE_LABEL);
|
|
|
|
|
|
|
|
|
|
int pos = gtk_paned_get_position(GTK_PANED(widgets->TerminalPaned));
|
|
|
|
|
yon_window_config_add_instant_parameter("paned_pos","settings",&pos,YON_TYPE_INT);
|
|
|
|
|
|
|
|
|
|
GValue val = G_VALUE_INIT;
|
|
|
|
|
g_object_get_property(G_OBJECT(widgets->TerminalPaned),"max-position",&val);
|
|
|
|
|
gtk_paned_set_position(GTK_PANED(widgets->TerminalPaned),g_value_get_int(&val));
|
|
|
|
|
g_value_unset(&val);
|
|
|
|
|
|
|
|
|
|
g_object_ref(widgets->MainNotebook);
|
|
|
|
|
gtk_container_remove(GTK_CONTAINER(widgets->TerminalPaned),widgets->MainNotebook);
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(gtk_widget_get_parent(widgets->TerminalPaned)),widgets->MainNotebook,1,1,0);
|
|
|
|
|
|
|
|
|
|
gtk_box_reorder_child(GTK_BOX(gtk_widget_get_parent(widgets->MainNotebook)),widgets->MainNotebook,0);
|
|
|
|
|
gtk_widget_hide(widgets->TerminalPaned);
|
|
|
|
|
}
|
|
|
|
|
return G_SOURCE_REMOVE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -528,6 +615,7 @@ void *yon_command_execute_async(char *command,main_window *widgets){
|
|
|
|
|
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
on_terminal_revealer_open(NULL,widgets);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -539,7 +627,7 @@ void on_module_install_accept(GtkWidget *, dictionary *dict){
|
|
|
|
|
dict->first->next->next = NULL;
|
|
|
|
|
char *module_formated = yon_package_string_set(tab->module);
|
|
|
|
|
char *modules_to_install = NULL;
|
|
|
|
|
if (!tab->module_updated) modules_to_install = yon_char_unite(module_formated, " ", yon_package_string_set(tab->package), NULL);
|
|
|
|
|
if (!tab->module_updated) modules_to_install = module_formated;
|
|
|
|
|
else modules_to_install = module_formated;
|
|
|
|
|
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
@ -627,6 +715,14 @@ void on_module_remove_accept(GtkWidget *, dictionary *dict){
|
|
|
|
|
modules_to_install = temp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
int size;
|
|
|
|
|
config_str tmp = yon_config_load(get_dependent_command(modules_to_install),&size);
|
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
|
yon_char_remove_last_symbol(tmp[i],'\n');
|
|
|
|
|
}
|
|
|
|
|
modules_to_install = yon_char_parsed_to_string(tmp,size," ");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
char *command = remove_command(modules_to_install);
|
|
|
|
|
yon_command_execute_async(command,widgets);
|
|
|
|
|
@ -656,6 +752,14 @@ void on_package_remove_accept(GtkWidget *, dictionary *dict){
|
|
|
|
|
modules_to_install = temp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
int size;
|
|
|
|
|
config_str tmp = yon_config_load(get_dependent_command(modules_to_install),&size);
|
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
|
yon_char_remove_last_symbol(tmp[i],'\n');
|
|
|
|
|
}
|
|
|
|
|
modules_to_install = yon_char_parsed_to_string(tmp,size," ");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
char *command = remove_command(modules_to_install);
|
|
|
|
|
yon_command_execute_async(command,widgets);
|
|
|
|
|
@ -681,11 +785,11 @@ dialog_window *yon_dialog_window_new(){
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_module_install_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
main_config.action=ACTION_TERMINAL_EXECUTE_SUCCESS;
|
|
|
|
|
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
|
|
|
|
|
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
|
|
|
|
|
char *action_text = NULL;
|
|
|
|
|
dialog_window *window = yon_dialog_window_new();
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
if (self == tab->update_module_button){
|
|
|
|
|
@ -714,7 +818,7 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
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);
|
|
|
|
|
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;
|
|
|
|
|
config_str additions = yon_resource_open_file(kernels_addon_path,&size);
|
|
|
|
|
@ -725,7 +829,7 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
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,1,yon_char_unite(parsed[1],",",parsed[2],NULL),2,parsed[3],-1);
|
|
|
|
|
gtk_list_store_set(window->liststore1,&iter,1,parsed[1],2,parsed[3],4,1,-1);
|
|
|
|
|
yon_char_parsed_free(parsed,cur_size);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -734,6 +838,7 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_package_install_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
main_config.action=ACTION_TERMINAL_EXECUTE_SUCCESS;
|
|
|
|
|
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
|
|
|
|
|
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
|
|
|
|
|
char *action_text = NULL;
|
|
|
|
|
@ -742,11 +847,9 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
|
|
|
|
|
if (self == tab->update_module_button){
|
|
|
|
|
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);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_PACKAGE_TITLE_LABEL);
|
|
|
|
|
} 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);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_ADDITION_PACKAGE_TITLE_LABEL);
|
|
|
|
|
}
|
|
|
|
|
@ -765,9 +868,11 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
|
|
|
|
|
|
|
|
|
|
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,"additions_dialog");
|
|
|
|
|
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 {
|
|
|
|
|
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");
|
|
|
|
|
int size;
|
|
|
|
|
config_str additions = yon_resource_open_file(kernels_addon_path,&size);
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
@ -780,7 +885,7 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
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->package_requirements[i],-1);
|
|
|
|
|
gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->package_requirements[i],4,1,-1);
|
|
|
|
|
}
|
|
|
|
|
yon_char_parsed_free(additions,size);
|
|
|
|
|
|
|
|
|
|
@ -796,6 +901,7 @@ void on_module_remove_done(GtkWidget *self, int state, kernels_tab *tab){
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
main_config.action=ACTION_TERMINAL_EXECUTE_SUCCESS;
|
|
|
|
|
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
|
|
|
|
|
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
|
|
|
|
|
int size;
|
|
|
|
|
@ -835,7 +941,7 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
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_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),REMOVE_ADDITION_MODULE_TITLE_LABEL);
|
|
|
|
|
} 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");
|
|
|
|
|
@ -848,18 +954,35 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
}
|
|
|
|
|
int size;
|
|
|
|
|
config_str additions = yon_resource_open_file(kernels_addon_path,&size);
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
GtkTreeIter itar;
|
|
|
|
|
char *target_depends = yon_package_dependent_get(tab->module);
|
|
|
|
|
if (target_depends&&strcmp(target_depends,tab->package)&&strstr(target_depends," ")){
|
|
|
|
|
free(yon_char_divide_search(target_depends," ",-1));
|
|
|
|
|
gtk_list_store_append(window->liststore1,&itar);
|
|
|
|
|
gtk_list_store_set(window->liststore1,&itar,0,1,1,target_depends,-1);
|
|
|
|
|
}
|
|
|
|
|
for (int i=0;i<tab->module_requirements_size;i++){
|
|
|
|
|
if (!system(get_package_is_installed_command(tab->module_requirements[i]))){
|
|
|
|
|
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,1,yon_char_unite(parsed[1],",",parsed[2],NULL),2,parsed[3],-1);
|
|
|
|
|
if (!strcmp(parsed[1],tab->module_requirements[i])){
|
|
|
|
|
char *target = parsed[1];
|
|
|
|
|
char *depends = yon_package_dependent_get(target);
|
|
|
|
|
if (strcmp(depends,target)){
|
|
|
|
|
gtk_list_store_append(window->liststore1,&itar);
|
|
|
|
|
gtk_list_store_set(window->liststore1,&itar,0,1,1,depends,2, parsed[3],-1);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
gtk_list_store_append(window->liststore1,&itar);
|
|
|
|
|
gtk_list_store_set(window->liststore1,&itar,0,1,1,target,2, parsed[3],-1);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_char_parsed_free(parsed,cur_size);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
yon_char_parsed_free(additions,size);
|
|
|
|
|
}
|
|
|
|
|
@ -868,6 +991,7 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_package_remove_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
main_config.action=ACTION_TERMINAL_EXECUTE_SUCCESS;
|
|
|
|
|
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
|
|
|
|
|
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
|
|
|
|
|
int size;
|
|
|
|
|
@ -909,7 +1033,7 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
action_text = ADDITION_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);
|
|
|
|
|
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){
|
|
|
|
|
action_text = KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name);
|
|
|
|
|
@ -920,19 +1044,34 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){
|
|
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGE_TITLE_LABEL);
|
|
|
|
|
int size;
|
|
|
|
|
GtkTreeIter itar;
|
|
|
|
|
char *target_depends = yon_package_dependent_get(tab->package);
|
|
|
|
|
if (target_depends&&strcmp(target_depends,tab->package)){
|
|
|
|
|
free(yon_char_divide_search(target_depends," ",-1));
|
|
|
|
|
gtk_list_store_append(window->liststore1,&itar);
|
|
|
|
|
gtk_list_store_set(window->liststore1,&itar,0,1,1,target_depends,-1);
|
|
|
|
|
}
|
|
|
|
|
config_str additions = yon_resource_open_file(kernels_addon_path,&size);
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
for (int i=0;i<tab->module_requirements_size;i++){
|
|
|
|
|
if (!system(get_package_is_installed_command(tab->package_requirements[i]))){
|
|
|
|
|
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);
|
|
|
|
|
if (!strcmp(parsed[1],tab->module_requirements[i])){
|
|
|
|
|
char *target = parsed[2];
|
|
|
|
|
char *depends = yon_package_dependent_get(target);
|
|
|
|
|
if (strcmp(depends,target)){
|
|
|
|
|
gtk_list_store_append(window->liststore1,&itar);
|
|
|
|
|
gtk_list_store_set(window->liststore1,&itar,0,1,1,depends,2, parsed[3],-1);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
gtk_list_store_append(window->liststore1,&itar);
|
|
|
|
|
gtk_list_store_set(window->liststore1,&itar,0,1,1,target,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);
|
|
|
|
|
@ -1157,9 +1296,16 @@ void config_init(){
|
|
|
|
|
main_config.addition_tabs=NULL;
|
|
|
|
|
main_config.progress_active=0;
|
|
|
|
|
main_config.update_active=0;
|
|
|
|
|
main_config.action = ACTION_LOAD;
|
|
|
|
|
textdomain(template_ui_LocaleName);
|
|
|
|
|
main_config.local_load_success_localised = LOCAL_LOAD_SUCCESS_LABEL;
|
|
|
|
|
main_config.global_load_success_localised = GLOBAL_LOAD_SUCCESS_LABEL;
|
|
|
|
|
textdomain(LocaleName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_update_clicked(GtkWidget *, main_window *widgets){
|
|
|
|
|
void on_update_clicked(GtkWidget *self, main_window *widgets){
|
|
|
|
|
if (self)
|
|
|
|
|
main_config.action=ACTION_LOAD;
|
|
|
|
|
int lock=0;
|
|
|
|
|
g_mutex_lock(&main_config.update_mutex);
|
|
|
|
|
lock = main_config.update_active;
|
|
|
|
|
@ -1219,16 +1365,43 @@ void on_changelog_clicked(GtkWidget *, kernels_tab *tab){
|
|
|
|
|
gtk_widget_show(window->window);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_build_selection_changed(GtkWidget *,int,install_window *window){
|
|
|
|
|
int base = gtk_switch_get_active(GTK_SWITCH(window->BasicSwitch));
|
|
|
|
|
int base_current = gtk_switch_get_active(GTK_SWITCH(window->BasicCurrentSwitch));
|
|
|
|
|
int debug = gtk_switch_get_active(GTK_SWITCH(window->DebugSwitch));
|
|
|
|
|
int universal = gtk_switch_get_active(GTK_SWITCH(window->UniversalSwitch));
|
|
|
|
|
if (base||base_current||debug||universal) gtk_widget_set_sensitive(window->ExecuteButton,1);
|
|
|
|
|
else gtk_widget_set_sensitive(window->ExecuteButton,0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_build_execute(GtkWidget *, dictionary *dict){
|
|
|
|
|
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
|
|
|
|
|
install_window *window = yon_dictionary_get_data(dict->first->next,install_window*);
|
|
|
|
|
int debug = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DebugCheck));
|
|
|
|
|
int drivers = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DriversCheck));
|
|
|
|
|
int basic = gtk_switch_get_active(GTK_SWITCH(window->BasicSwitch));
|
|
|
|
|
int drivers = gtk_switch_get_active(GTK_SWITCH(window->BasicCurrentSwitch));
|
|
|
|
|
int debug = gtk_switch_get_active(GTK_SWITCH(window->DebugSwitch));
|
|
|
|
|
int universal = gtk_switch_get_active(GTK_SWITCH(window->UniversalSwitch));
|
|
|
|
|
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 *command = build_command(target,filename,debug,drivers);
|
|
|
|
|
yon_terminal_window_start(GTK_WINDOW(widgets->Window),yon_debug_output("%s\n",command));
|
|
|
|
|
gtk_widget_destroy(window->window);
|
|
|
|
|
if (yon_char_is_empty(target)){
|
|
|
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
yon_ubl_status_highlight_incorrect(window->KernelVersionCombo);
|
|
|
|
|
}
|
|
|
|
|
int size=0;
|
|
|
|
|
config_str commands = NULL;
|
|
|
|
|
if (basic) yon_char_parsed_add_or_create_if_exists(commands,&size,build_command_basic(filename,target,drivers));
|
|
|
|
|
if (debug) yon_char_parsed_add_or_create_if_exists(commands,&size,build_command_debug(filename,target));
|
|
|
|
|
if (universal) yon_char_parsed_add_or_create_if_exists(commands,&size, build_command_universal(filename,target));
|
|
|
|
|
if (size){
|
|
|
|
|
char *command = yon_char_parsed_to_string(commands,size,"; ");
|
|
|
|
|
yon_terminal_window_start(GTK_WINDOW(widgets->Window),yon_debug_output("%s\n",command));
|
|
|
|
|
gtk_widget_destroy(window->window);
|
|
|
|
|
} else {
|
|
|
|
|
textdomain(template_ui_LocaleName);
|
|
|
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
textdomain(LocaleName);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_building_clicked(GtkWidget *, main_window *widgets){
|
|
|
|
|
@ -1376,6 +1549,7 @@ void yon_main_window_complete(main_window *widgets){
|
|
|
|
|
yon_save_window_set_postsave_function(on_save_done,widgets);
|
|
|
|
|
|
|
|
|
|
yon_terminal_integrated_start(widgets->InstallTerminal,pacman_update_command);
|
|
|
|
|
on_terminal_revealer_open(NULL,widgets);
|
|
|
|
|
}
|
|
|
|
|
yon_load_proceed(YON_CONFIG_LOCAL);
|
|
|
|
|
}
|
|
|
|
|
|