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_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);
}

@ -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();

@ -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!")

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

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
<interface domain="ubl-settings-kernel">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-kernel.css -->
<object class="GtkApplicationWindow" id="MainWindow">
<property name="width-request">400</property>
<property name="height-request">200</property>
@ -114,36 +115,245 @@
</packing>
</child>
<child>
<object class="GtkCheckButton" id="DebugCheck">
<property name="label" translatable="yes">Add debug components</property>
<object class="GtkFrame" id="BackgroundFrame">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0</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>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="DriversCheck">
<property name="label" translatable="yes">Add drivers for current hardware components only</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">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">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>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
<property name="position">5</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>

@ -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;

@ -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 ""

@ -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 ""
"Внимание! Если вы работаете в режиме песочницы, необходимо установить пакет "
"с модулем!"

Loading…
Cancel
Save