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

Reviewed-on: #51
pull/79/head v2.6
Dmitry Razumov 1 year ago
commit e395b8e417

@ -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_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)); 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); 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){ 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++){
@ -348,19 +391,28 @@ void *yon_interface_update(main_window *widgets){
kernels = yon_resource_open_file(kernels_addon_path, &kernels_size); kernels = yon_resource_open_file(kernels_addon_path, &kernels_size);
for (int i=1;i<kernels_size;i++){ 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); 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); 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; return NULL;
} }
@ -377,6 +429,12 @@ info_window *yon_info_window_new(){
return window; 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 *yon_install_window_new(){
install_window *window = malloc(sizeof(install_window)); 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->KernelVersionCombo = yon_gtk_builder_get_widget(builder,"KernelVersionCombo");
window->FilenameEntry = yon_gtk_builder_get_widget(builder,"FilenameEntry"); window->FilenameEntry = yon_gtk_builder_get_widget(builder,"FilenameEntry");
window->DebugCheck = yon_gtk_builder_get_widget(builder,"DebugCheck"); window->BasicSwitch = yon_gtk_builder_get_widget(builder,"BasicSwitch");
window->DriversCheck = yon_gtk_builder_get_widget(builder,"DriversCheck"); 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->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; 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){ 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); g_mutex_lock(&main_config.progress_mutex);
main_config.progress_active=0; main_config.progress_active=0;
g_mutex_unlock(&main_config.progress_mutex); g_mutex_unlock(&main_config.progress_mutex);
if (!status){ if (!status){
yon_ubl_status_box_render(OPERATION_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
on_update_clicked(NULL,widgets); on_update_clicked(NULL,widgets);
main_config.action=ACTION_TERMINAL_EXECUTE_SUCCESS;
} else { } 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); gtk_widget_set_sensitive(widgets->UpdateButton,1);
dictionary *dict = NULL; 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_module_button,1);
gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_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; 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); gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,0);
} }
} }
on_terminal_revealer_open(NULL,widgets);
return NULL; return NULL;
} }
@ -539,7 +627,7 @@ void on_module_install_accept(GtkWidget *, dictionary *dict){
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 = NULL; 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; else modules_to_install = module_formated;
GtkTreeIter iter; GtkTreeIter iter;
@ -627,6 +715,14 @@ void on_module_remove_accept(GtkWidget *, dictionary *dict){
modules_to_install = temp; 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); char *command = remove_command(modules_to_install);
yon_command_execute_async(command,widgets); yon_command_execute_async(command,widgets);
@ -656,6 +752,14 @@ void on_package_remove_accept(GtkWidget *, dictionary *dict){
modules_to_install = temp; 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); char *command = remove_command(modules_to_install);
yon_command_execute_async(command,widgets); 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){ 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*); 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;
dialog_window *window = yon_dialog_window_new(); 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); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_module_install_accept),dict);
if (self == tab->update_module_button){ 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); 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);
@ -725,7 +829,7 @@ 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,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); 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){ 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*); 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;
@ -742,11 +847,9 @@ void on_package_install_clicked(GtkWidget *self,dictionary *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);
} }
@ -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); 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))){
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_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 {
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; 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;
@ -780,7 +885,7 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){
gtk_list_store_set(window->liststore1,&iter,2,parsed[3],-1); gtk_list_store_set(window->liststore1,&iter,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->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); 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){ 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*); 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*);
int size; 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"); 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); 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),REMOVE_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"); 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; 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 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++){ for (int i=0;i<tab->module_requirements_size;i++){
if (!system(get_package_is_installed_command(tab->module_requirements[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++){ 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,1,yon_char_unite(parsed[1],",",parsed[2],NULL),2,parsed[3],-1); 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(parsed,cur_size);
} }
} }
} }
yon_char_parsed_free(additions,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){ 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*); 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*);
int size; int size;
@ -909,7 +1033,7 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){
action_text = ADDITION_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name); 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 = KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name); 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); gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGE_TITLE_LABEL);
int size; 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); config_str additions = yon_resource_open_file(kernels_addon_path,&size);
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_requirements[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++){ 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); 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); 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);
@ -1157,9 +1296,16 @@ void config_init(){
main_config.addition_tabs=NULL; main_config.addition_tabs=NULL;
main_config.progress_active=0; main_config.progress_active=0;
main_config.update_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; int lock=0;
g_mutex_lock(&main_config.update_mutex); g_mutex_lock(&main_config.update_mutex);
lock = main_config.update_active; lock = main_config.update_active;
@ -1219,16 +1365,43 @@ void on_changelog_clicked(GtkWidget *, kernels_tab *tab){
gtk_widget_show(window->window); 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){ void on_build_execute(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*);
install_window *window = yon_dictionary_get_data(dict->first->next,install_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 basic = gtk_switch_get_active(GTK_SWITCH(window->BasicSwitch));
int drivers = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DriversCheck)); 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 *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); if (yon_char_is_empty(target)){
yon_terminal_window_start(GTK_WINDOW(widgets->Window),yon_debug_output("%s\n",command)); yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
gtk_widget_destroy(window->window); 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){ 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_save_window_set_postsave_function(on_save_done,widgets);
yon_terminal_integrated_start(widgets->InstallTerminal,pacman_update_command); yon_terminal_integrated_start(widgets->InstallTerminal,pacman_update_command);
on_terminal_revealer_open(NULL,widgets);
} }
yon_load_proceed(YON_CONFIG_LOCAL); yon_load_proceed(YON_CONFIG_LOCAL);
} }

@ -47,18 +47,18 @@
#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 -Qqu ",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 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_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_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 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"
@ -75,6 +75,13 @@ string version_application;
char *local; char *local;
enum ACTION_TYPE{
ACTION_LOAD,
ACTION_SAVE,
ACTION_TERMINAL_EXECUTE_SUCCESS,
ACTION_TERMINAL_EXECUTE_FAIL
};
typedef struct { typedef struct {
template_config_fields template_config_fields
GMutex mutex; GMutex mutex;
@ -85,6 +92,10 @@ typedef struct {
int progress_active; int progress_active;
config_str launch_arguments; config_str launch_arguments;
int launch_size; int launch_size;
enum ACTION_TYPE action;
char *local_load_success_localised;
char *global_load_success_localised;
int update_active; int update_active;
GMutex update_mutex; GMutex update_mutex;
@ -139,8 +150,13 @@ typedef struct {
GtkWidget *KernelVersionCombo; GtkWidget *KernelVersionCombo;
GtkWidget *FilenameEntry; GtkWidget *FilenameEntry;
GtkWidget *DebugCheck; GtkWidget *BasicSwitch;
GtkWidget *DriversCheck; GtkWidget *BasicCurrentSwitch;
GtkWidget *DebugSwitch;
GtkWidget *UniversalSwitch;
GtkWidget *BackgroundFrame;
GtkWidget *ShowRevealer;
GtkWidget *ArrowButton;
}install_window; }install_window;
typedef struct { 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_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_build_execute(GtkWidget *, dictionary *dict);
void on_building_clicked(GtkWidget *, main_window *widgets); 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_terminal_revealer_open(GtkWidget *, main_window *widgets);
void on_basic_toggled(GtkSwitch *self,int state, install_window *window);
info_window *yon_info_window_new(); info_window *yon_info_window_new();
install_window *yon_install_window_new(); install_window *yon_install_window_new();

@ -24,7 +24,11 @@
#define KERNEL_VERSION_LABEL _("Kernel version:") #define KERNEL_VERSION_LABEL _("Kernel version:")
#define IMAGE_FILE_LABEL _("Image file:") #define IMAGE_FILE_LABEL _("Image file:")
#define ADD_DEBUG_LABEL _("Add debug components") #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 INSTALL_MODULE_LABEL _("Install module")
#define REMOVE_MODULE_LABEL _("Remove module") #define REMOVE_MODULE_LABEL _("Remove module")
@ -90,6 +94,4 @@
#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!") #define KERNEL_PACKAGE_INSTALL_ATTENTION_LABEL _("Attention! If you work in sandbox mode, you must install the package with the module!")

@ -5,12 +5,16 @@
<!-- interface-css-provider-path ubl-settings-kernel.css --> <!-- interface-css-provider-path ubl-settings-kernel.css -->
<object class="GtkListStore" id="liststore1"> <object class="GtkListStore" id="liststore1">
<columns> <columns>
<!-- column-name gboolean1 --> <!-- column-name Active -->
<column type="gboolean"/> <column type="gboolean"/>
<!-- column-name gchararray1 --> <!-- column-name Module -->
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name gchararray2 --> <!-- column-name Description -->
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name DependsPath -->
<column type="gchararray"/>
<!-- column-name Sensitive -->
<column type="gboolean"/>
</columns> </columns>
</object> </object>
<object class="GtkApplicationWindow" id="MainWindow"> <object class="GtkApplicationWindow" id="MainWindow">
@ -103,6 +107,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="model">liststore1</property> <property name="model">liststore1</property>
<property name="enable-grid-lines">both</property>
<child internal-child="selection"> <child internal-child="selection">
<object class="GtkTreeSelection"> <object class="GtkTreeSelection">
<property name="mode">none</property> <property name="mode">none</property>
@ -113,6 +118,7 @@
<child> <child>
<object class="GtkCellRendererToggle" id="ChooseCell"/> <object class="GtkCellRendererToggle" id="ChooseCell"/>
<attributes> <attributes>
<attribute name="sensitive">4</attribute>
<attribute name="active">0</attribute> <attribute name="active">0</attribute>
</attributes> </attributes>
</child> </child>
@ -122,7 +128,10 @@
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Module</property> <property name="title" translatable="yes">Module</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
<property name="wrap-width">200</property>
</object>
<attributes> <attributes>
<attribute name="markup">1</attribute> <attribute name="markup">1</attribute>
</attributes> </attributes>
@ -133,7 +142,9 @@
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Description</property> <property name="title" translatable="yes">Description</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText">
<property name="wrap-width">100</property>
</object>
<attributes> <attributes>
<attribute name="markup">2</attribute> <attribute name="markup">2</attribute>
</attributes> </attributes>
@ -155,7 +166,7 @@
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 --> <!-- Generated with glade 3.38.2 -->
<interface> <interface domain="ubl-settings-kernel">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-kernel.css -->
<object class="GtkApplicationWindow" id="MainWindow"> <object class="GtkApplicationWindow" id="MainWindow">
<property name="width-request">400</property> <property name="width-request">400</property>
<property name="height-request">200</property> <property name="height-request">200</property>
@ -114,36 +115,245 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkCheckButton" id="DebugCheck"> <object class="GtkFrame" id="BackgroundFrame">
<property name="label" translatable="yes">Add debug components</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="receives-default">False</property> <property name="label-xalign">0</property>
<property name="draw-indicator">True</property> <property name="shadow-type">none</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="top-padding">5</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Build basic image</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkMenuButton" id="ArrowButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="focus-on-click">False</property>
<property name="receives-default">True</property>
<child>
<placeholder/>
</child>
<style>
<class name="thin"/>
<class name="nobackground"/>
<class name="noborder"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="BasicSwitch">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="active">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkRevealer" id="ShowRevealer">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="reveal-child">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Build basic image with drivers for current hardware components only</property>
<property name="wrap">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="BasicCurrentSwitch">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
<style>
<class name="bggrey"/>
</style>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">4</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkCheckButton" id="DriversCheck"> <object class="GtkBox">
<property name="label" translatable="yes">Add drivers for current hardware components only</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
<property name="receives-default">False</property> <property name="orientation">vertical</property>
<property name="draw-indicator">True</property> <property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Add debug components</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="DebugSwitch">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Build universal drivers for hardware components</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="UniversalSwitch">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">3</property> <property name="position">5</property>
</packing> </packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>

@ -55,6 +55,13 @@ background:transparent;
.workingbg { .workingbg {
background:@theme_base_color; 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{ .menuitembottom{
margin-top:0px; margin-top:0px;
margin-bottom:3px; margin-bottom:3px;

@ -247,7 +247,7 @@ msgstr ""
msgid "Are you sure want to install module with addition package" msgid "Are you sure want to install module with addition package"
msgstr "" msgstr ""
source/ubl-strings.h:72 #: source/ubl-strings.h:72
msgid "Are you sure want to install addition package" msgid "Are you sure want to install addition package"
msgstr "" msgstr ""
@ -335,15 +335,28 @@ msgid "Update addition package"
msgstr "" msgstr ""
#: source/ubl-strings.h:93 #: source/ubl-strings.h:93
msgid "Building has succeeded" msgid "Build basic image"
msgstr "" msgstr ""
#: source/ubl-strings.h:94 #: source/ubl-strings.h:94
msgid "Building has failed" msgid "Build basic image with drivers for current hardware components only"
msgstr "" msgstr ""
#: source/ubl-strings.h:95 #: 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 "" msgid ""
"Attention! If you work in sandbox mode, you must install the package with " "Attention! If you work in sandbox mode, you must install the package with "
"the module!" "the module!"
msgstr "" msgstr ""

@ -346,15 +346,29 @@ msgid "Update addition package"
msgstr "Обновить пакет с дополнением" msgstr "Обновить пакет с дополнением"
#: source/ubl-strings.h:93 #: 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" msgid "Building has succeeded"
msgstr "Сборка прошла успешно" msgstr "Сборка прошла успешно"
#: source/ubl-strings.h:94 #: source/ubl-strings.h:97
msgid "Building has failed" msgid "Building has failed"
msgstr "Ошибка сборки ядра" msgstr "Ошибка сборки ядра"
#: source/ubl-strings.h:95 #: source/ubl-strings.h:98
msgid "" msgid ""
"Attention! If you work in sandbox mode, you must install the package with " "Attention! If you work in sandbox mode, you must install the package with "
"the module!" "the module!"
msgstr "Внимание! Если вы работаете в режиме песочницы, необходимо установить пакет с модулем!" msgstr ""
"Внимание! Если вы работаете в режиме песочницы, необходимо установить пакет "
"с модулем!"

Loading…
Cancel
Save