diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 49d8ff1..1a58911 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -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;iinstall_tags_box)); for (guint i=0;iAdditionsPackageBox),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;ifirst,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;imodule_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;jmodule_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;imodule_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;jmodule_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); } diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index c4c786c..e006606 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -47,18 +47,18 @@ #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_updated_command(target) yon_char_append("pacman -Qqu ",target) -#define unload_command(target) yon_char_append("ubmunload ",target) #define pacman_update_command "pacman -Sy" #define install_command(target) yon_char_append("pacman -Sy --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 check_pactree_exist_command "which pactree > /dev/null 2>&1" #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_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 ",!yon_char_is_empty(filename)?"-n ":"",filename," -k ",target, " ",(debug_bool)?"--addon ":"",(drivers_bool)?"-H":"",NULL) +#define build_command_basic(target,kernel, only) yon_char_unite("ubmkuird -l",!yon_char_is_empty(target)?" -n ":"",!yon_char_is_empty(target)?target:"",!yon_char_is_empty(kernel)?" -k ":"",!yon_char_is_empty(kernel)?kernel:"", only? " -H ":"",NULL) +#define build_command_debug(target,kernel) yon_char_unite("ubmkuird -l --addon",!yon_char_is_empty(target)?" -n ":"",!yon_char_is_empty(target)?target:"",!yon_char_is_empty(kernel)?" -k ":"",!yon_char_is_empty(kernel)?kernel:"",NULL) +#define build_command_universal(target,kernel) yon_char_unite("ubmkuird -l --kmod",!yon_char_is_empty(target)?" -n ":"",!yon_char_is_empty(target)?target:"",!yon_char_is_empty(kernel)?" -k ":"",!yon_char_is_empty(kernel)?kernel:"",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" @@ -75,6 +75,13 @@ string version_application; char *local; +enum ACTION_TYPE{ + ACTION_LOAD, + ACTION_SAVE, + ACTION_TERMINAL_EXECUTE_SUCCESS, + ACTION_TERMINAL_EXECUTE_FAIL +}; + typedef struct { template_config_fields GMutex mutex; @@ -85,6 +92,10 @@ typedef struct { int progress_active; config_str launch_arguments; int launch_size; + enum ACTION_TYPE action; + + char *local_load_success_localised; + char *global_load_success_localised; int update_active; GMutex update_mutex; @@ -139,8 +150,13 @@ typedef struct { GtkWidget *KernelVersionCombo; GtkWidget *FilenameEntry; - GtkWidget *DebugCheck; - GtkWidget *DriversCheck; + GtkWidget *BasicSwitch; + GtkWidget *BasicCurrentSwitch; + GtkWidget *DebugSwitch; + GtkWidget *UniversalSwitch; + GtkWidget *BackgroundFrame; + GtkWidget *ShowRevealer; + GtkWidget *ArrowButton; }install_window; typedef struct { @@ -276,6 +292,8 @@ void on_info_clicked(GtkWidget *, char *, kernels_tab *tab); void on_changelog_clicked(GtkWidget *, kernels_tab *tab); +void on_build_selection_changed(GtkWidget *,int,install_window *window); + void on_build_execute(GtkWidget *, dictionary *dict); void on_building_clicked(GtkWidget *, main_window *widgets); @@ -284,5 +302,7 @@ void on_boot_toggled(GtkWidget *, char *path, main_window *widgets); void on_terminal_revealer_open(GtkWidget *, main_window *widgets); +void on_basic_toggled(GtkSwitch *self,int state, install_window *window); + info_window *yon_info_window_new(); install_window *yon_install_window_new(); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index acf1461..8f31399 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -24,7 +24,11 @@ #define KERNEL_VERSION_LABEL _("Kernel version:") #define IMAGE_FILE_LABEL _("Image file:") #define ADD_DEBUG_LABEL _("Add debug components") -#define ADD_DRIVERS_LABEL _("Add drivers for current hardware components only") +#define BUILD_BASIC_LABEL _("Build basic image") +#define BUILD_BASIC_CURRENT_LABEL _("Build basic image with drivers for current hardware components only") +#define BUILD_UNIVERSAL_LABEL _("Build universal drivers for hardware components") +#define BUILD_SUCCESS_STATUS_LABEL _("Building has succeeded") +#define BUILD_FAILED_STATUS_LABEL _("Building has failed") #define INSTALL_MODULE_LABEL _("Install module") #define REMOVE_MODULE_LABEL _("Remove module") @@ -90,6 +94,4 @@ #define REMOVE_ADDITION_PACKAGE_TITLE_LABEL _("Remove addition package") #define UPDATE_ADDITION_MODULE_TITLE_LABEL _("Update addition module") #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!") \ No newline at end of file diff --git a/ubl-settings-kernel-dialog.glade b/ubl-settings-kernel-dialog.glade index bf2774c..7dea458 100644 --- a/ubl-settings-kernel-dialog.glade +++ b/ubl-settings-kernel-dialog.glade @@ -5,12 +5,16 @@ - + - + - + + + + + @@ -103,6 +107,7 @@ True True liststore1 + both none @@ -113,6 +118,7 @@ + 4 0 @@ -122,7 +128,10 @@ Module - + + word + 200 + 1 @@ -133,7 +142,9 @@ Description - + + 100 + 2 @@ -155,7 +166,7 @@ - False + True True 1 diff --git a/ubl-settings-kernel-install.glade b/ubl-settings-kernel-install.glade index be7d339..cd2ae24 100644 --- a/ubl-settings-kernel-install.glade +++ b/ubl-settings-kernel-install.glade @@ -1,7 +1,8 @@ - + + 400 200 @@ -114,36 +115,245 @@ - - Add debug components + True - True - False - True + False + 0 + none + + + True + False + 5 + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + 5 + + + True + False + Build basic image + + + False + True + 0 + + + + + True + True + False + True + + + + + + + False + True + end + 1 + + + + + True + True + True + + + False + True + end + 2 + + + + + False + True + 0 + + + + + True + False + vertical + + + True + False + True + + + True + False + 5 + + + True + False + Build basic image with drivers for current hardware components only + True + + + False + True + 0 + + + + + True + True + + + False + True + end + 1 + + + + + + + False + True + 1 + + + + + False + True + 1 + + + + + + + + + + False True - 2 + 4 - - Add drivers for current hardware components only + True - True - False - True + False + vertical + 5 + + + True + False + 5 + + + True + False + Add debug components + + + False + True + 0 + + + + + True + True + + + False + True + end + 1 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Build universal drivers for hardware components + + + False + True + 0 + + + + + True + True + + + False + True + end + 1 + + + + + False + True + 1 + + False True - 3 + 5 - False + True True 1 diff --git a/ubl-settings-kernel.css b/ubl-settings-kernel.css index ef67a0e..371e121 100644 --- a/ubl-settings-kernel.css +++ b/ubl-settings-kernel.css @@ -55,6 +55,13 @@ background:transparent; .workingbg { background:@theme_base_color; } +.bggrey{ + border-radius:5px; + border-color:@theme_text_color; + border-style:solid; + border-width:0.3px; + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.15); +} .menuitembottom{ margin-top:0px; margin-bottom:3px; diff --git a/ubl-settings-kernel.pot b/ubl-settings-kernel.pot index e9ddf1b..8353c85 100644 --- a/ubl-settings-kernel.pot +++ b/ubl-settings-kernel.pot @@ -247,7 +247,7 @@ msgstr "" msgid "Are you sure want to install module with addition package" msgstr "" -source/ubl-strings.h:72 +#: source/ubl-strings.h:72 msgid "Are you sure want to install addition package" msgstr "" @@ -335,15 +335,28 @@ msgid "Update addition package" msgstr "" #: source/ubl-strings.h:93 -msgid "Building has succeeded" +msgid "Build basic image" msgstr "" #: source/ubl-strings.h:94 -msgid "Building has failed" +msgid "Build basic image with drivers for current hardware components only" msgstr "" #: source/ubl-strings.h:95 +msgid "Build universal drivers for hardware components" +msgstr "" + +#: source/ubl-strings.h:96 +msgid "Building has succeeded" +msgstr "" + +#: source/ubl-strings.h:97 +msgid "Building has failed" +msgstr "" + +#: source/ubl-strings.h:98 msgid "" "Attention! If you work in sandbox mode, you must install the package with " "the module!" msgstr "" + diff --git a/ubl-settings-kernel_ru.po b/ubl-settings-kernel_ru.po index dda5b43..dd85158 100644 --- a/ubl-settings-kernel_ru.po +++ b/ubl-settings-kernel_ru.po @@ -346,15 +346,29 @@ msgid "Update addition package" msgstr "Обновить пакет с дополнением" #: source/ubl-strings.h:93 +msgid "Build basic image" +msgstr "Собрать базовый образ" + +#: source/ubl-strings.h:94 +msgid "Build basic image with drivers for current hardware components only" +msgstr "Собрать базовый образ только с текущими драйверами аппаратных компонентов" + +#: source/ubl-strings.h:95 +msgid "Build universal drivers for hardware components" +msgstr "Собрать универсальные драйвера аппаратных компонентов" + +#: source/ubl-strings.h:96 msgid "Building has succeeded" msgstr "Сборка прошла успешно" -#: source/ubl-strings.h:94 +#: source/ubl-strings.h:97 msgid "Building has failed" msgstr "Ошибка сборки ядра" -#: source/ubl-strings.h:95 +#: source/ubl-strings.h:98 msgid "" "Attention! If you work in sandbox mode, you must install the package with " "the module!" -msgstr "Внимание! Если вы работаете в режиме песочницы, необходимо установить пакет с модулем!" +msgstr "" +"Внимание! Если вы работаете в режиме песочницы, необходимо установить пакет " +"с модулем!"