Merge pull request 'master' (#60) from YanTheKaller/ubinstall-gtk:master into master

Reviewed-on: #60
master
Dmitry Razumov 1 year ago
commit e6f2d1e75b

@ -95,7 +95,7 @@ add_definitions(-DVTE_INCLUDE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
-O2 -pipe -fno-plt -fexceptions \
-Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection")
-fstack-clash-protection -fcf-protection -fsanitize=address -fno-omit-frame-pointer")
string(FIND "${CMAKE_CXX_FLAGS}" "-D_FORTIFY_SOURCE" FORTIFY_FOUND)

@ -329,32 +329,42 @@ void yon_interface_update(main_window *widgets){
char *system_locale = config(locale_parameter);
if (!yon_char_is_empty(system_locale)){
char *chosen_langs = "";
for_iter(widgets->LanguagesList,&iter){
char *cur=NULL, *render = NULL;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguagesList),&iter,1,&render,2,&cur,-1);
if (strstr(system_locale,cur)){
gtk_list_store_set((widgets->LanguagesList),&iter,0,1,-1);
chosen_langs = yon_char_unite(chosen_langs,!yon_char_is_empty(chosen_langs)?";":"",render,NULL);
for_iter(widgets->LanguagesList,&iter){
char *cur=NULL, *render = NULL;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguagesList),&iter,1,&render,2,&cur,-1);
if (strstr(system_locale,cur)){
gtk_list_store_set((widgets->LanguagesList),&iter,0,1,-1);
chosen_langs = yon_char_unite(chosen_langs,!yon_char_is_empty(chosen_langs)?";":"",render,NULL);
} else {
gtk_list_store_set((widgets->LanguagesList),&iter,0,0,-1);
}
}
if (!yon_char_is_empty(chosen_langs)){
gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),chosen_langs);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck),1);
free(chosen_langs);
} else {
gtk_list_store_set((widgets->LanguagesList),&iter,0,0,-1);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck),0);
gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),"");
}
}
if (!yon_char_is_empty(chosen_langs)){
gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),chosen_langs);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck),1);
free(chosen_langs);
} else {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck),0);
gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),"");
}
// gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter));
} else {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck),0);
gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),"");
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LanguagesSensitiveCheck),0);
int langsize;
config_str lang = default_langs(&langsize);
for_iter(widgets->LanguagesList,&iter){
gtk_list_store_set((widgets->LanguagesList),&iter,0,0,-1);
char *cur=NULL;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguagesList),&iter,2,&cur,-1);
if (lang&&yon_char_parsed_check_exist(lang,langsize,cur)>-1){
gtk_list_store_set(widgets->LanguagesList,&iter,0,1,-1);
} else {
gtk_list_store_set(widgets->LanguagesList,&iter,0,0,-1);
}
if (cur) free(cur);
}
if (langsize) yon_char_parsed_free(lang,langsize);
// gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter));
}
@ -748,7 +758,7 @@ void on_language_window_accept(GtkWidget *,dictionary *dict){
gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),"");
GtkTreeIter iter;
int size;
config_str lang_parsed = yon_char_parsed_new(&size,"en_US.UTF-8","ru_RU.UTF-8",NULL);
config_str lang_parsed = default_langs(&size);
char *final = "";
for_iter(widgets->LanguagesList,&iter){
@ -828,6 +838,25 @@ void on_language_clicked(GtkWidget *, main_window *widgets){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultCheck),1);
}
int size;
int found=0;
int statusfound=0;
config_str langs = default_langs(&size);
GtkTreeIter iter;
for_iter(widgets->LanguagesList,&iter){
char *cur;
int status;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->LanguagesList),&iter,0,&status,2,&cur,-1);
if (status){
statusfound++;
if (yon_char_parsed_check_exist(langs,size,cur)>-1)
found++;
}
}
if ((found==size)&&statusfound==size){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DefaultCheck),1);
}
dictionary *dict=NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
@ -894,7 +923,7 @@ int yon_image_resize_from_container(GtkImage *target, GdkPixbuf *pixbuf_unscaled
GdkPixbuf *scaledPixBuf = gdk_pixbuf_scale_simple(pixbuf_unscaled, newImageWidth, newImgHeight, GDK_INTERP_BILINEAR);
gtk_image_set_from_pixbuf(target, scaledPixBuf);
g_object_unref(scaledPixBuf); // Освобождаем память, занятую скалированным изображением
g_object_unref(scaledPixBuf);
return 1;
}
@ -965,24 +994,32 @@ void *on_config_save(void *data){
fclose(file);
char *command = save_config_command(yon_char_parsed_to_string(parameters,size," "));
yon_char_parsed_free(parameters,size);
yon_debug_output("%s\n","Entered installation");
if (system(yon_debug_output("%s\n",command))){
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALL_ERROR);
yon_debug_output("%s\n","Entered installation failed");
g_thread_new("success func",(GThreadFunc)on_install_error,widgets);
free(command);
main_config.config_save_thread=NULL;
main_config.install_thread=0;
main_config.install_complete=1;
yon_debug_output("%s\n","Exit installation");
pthread_exit(NULL);
return 0;
};
yon_debug_output("%s\n","Entered installation success");
free(command);
main_config.install_thread=0;
main_config.install_complete=1;
yon_debug_output("Install set to: %s\n",yon_char_from_int(main_config.install_complete));
yon_debug_output("Save state: %s\n",yon_char_from_int(main_config.save_done));
if (main_config.save_done){
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETION);
yon_debug_output("%s\n","Entered installation page change");
g_thread_new("success func",(GThreadFunc)on_install_success,widgets);
}
main_config.config_save_thread=NULL;
yon_debug_output("%s\n","Exit installation");
pthread_exit(NULL);
}
@ -1021,10 +1058,10 @@ gboolean yon_installation_progress_update(void *data) {
yon_char_parsed_free(parsed, size);
}
yon_char_parsed_free(text, size);
free(current_copy);
free(percentage);
}
yon_char_parsed_free(text, size);
}
if (main_config.install_thread) {
@ -1115,6 +1152,7 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){
} break;
case YON_PAGE_COMPLETION:{
yon_debug_output("%s\n","Enter completion");
yon_switch_page_render(widgets,7);
gtk_widget_set_sensitive(widgets->BackButton,0);
gtk_widget_hide(gtk_widget_get_parent(widgets->PackageInstallationProgress));
@ -1122,13 +1160,16 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){
gtk_widget_hide(widgets->PackageInstallationLabel);
gtk_widget_set_sensitive(widgets->NextButton,1);
gtk_widget_set_sensitive(widgets->CancelInstallButton,1);
yon_debug_output("%s\n","Done widgets");
main_config.install_complete=0;
main_config.save_done=0;
yon_debug_output("%s\n","Done variables");
textdomain(LocaleName);
gtk_button_set_label(GTK_BUTTON(widgets->NextButton),RESTART_LABEL);
gtk_button_set_label(GTK_BUTTON(widgets->CancelInstallButton),EXIT_LABEL);
gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->NextButton))),
"com.ublinux.ubinstall-gtk.sync-symbolic",GTK_ICON_SIZE_BUTTON);
// gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->NextButton))),
// "com.ublinux.ubinstall-gtk.sync-symbolic",GTK_ICON_SIZE_BUTTON);
yon_debug_output("%s\n","Done labels and button icon");
}
break;
@ -1178,8 +1219,16 @@ void *on_install_success(main_window *widgets){
return NULL;
}
void *on_install_error(main_window *widgets){
gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel),"");
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALL_ERROR);
return NULL;
}
void *on_setup_system_configuration(void *data);
void *on_setup_system_configuration(void * data){
yon_debug_output("%s\n","Entered thread");
main_window *widgets = (main_window*)data;
if (widgets){};
int size;
@ -1201,7 +1250,7 @@ void *on_setup_system_configuration(void * data){
if (all_parameters){
char *parameter_string = yon_char_parsed_to_string(all_parameters,size," ");
char *command = set_user_config_command(parameter_string);
if (system(yon_debug_output("$s\n",command))){};
if (system(yon_debug_output("%s\n",command))){};
yon_char_parsed_free(all_parameters,size);
free(command);
if (parameter_string) free(parameter_string);
@ -1730,14 +1779,17 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
}
if (!main_config.configure_mode){
yon_debug_output("%s\n","Entered saving");
if (!main_config.install_complete){
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION);
}
if (gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress))>0.9){
yon_debug_output("%s\n","Entered saving before installation done");
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION);
gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel),CONFIGURATION_LABEL);
pthread_t tid;
pthread_create(&tid,NULL,on_setup_system_configuration,widgets);
yon_debug_output("%s\n","installation ending configuration startup");
pthread_create(&tid,NULL,on_setup_system_configuration,widgets);
} else {
pthread_t tid;
pthread_create(&tid,NULL,on_save_system_configuration,widgets);
@ -1749,7 +1801,6 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
yon_debug_output("Install state: %s\n",yon_char_from_int(main_config.install_complete));
if (!main_config.install_complete){
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION);
printf("still deactivated\n");
gtk_widget_set_sensitive(widgets->CancelInstallButton,0);
gtk_widget_set_sensitive(widgets->NextButton,0);
gtk_widget_set_sensitive(widgets->BackButton,0);
@ -1960,8 +2011,10 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){
for (int i=0;i<size;i++){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->ZoneCombo),parsed[i],_(parsed[i]));
}
if (size) yon_char_parsed_free(parsed,size);
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0);
}
free(active);
}
void on_locale_changed(GtkWidget *,main_window *);
@ -2052,14 +2105,33 @@ void on_separate_installation_changed(GtkWidget *self, main_window *widgets){
json_object_object_get_ex(device, "fstype", &fstype);
json_object_object_get_ex(device, "fsused", &fsused);
float free_space=0;
double free_space=0;
char *free_space_string="";
if (size&&fsused){
free_space = atof(json_object_get_string(size))-atof(json_object_get_string(fsused));
free_space_string = yon_char_append(yon_char_from_float(free_space)," ");
free_space_string[strlen(free_space_string)-1]=json_object_get_string(size)[strlen(json_object_get_string(size))-1];
char *fsused_str = (char*)json_object_get_string(fsused);
double fsused_kbytes = atof(fsused_str);
for (int i=0;i<yon_get_size_get_from_letter(fsused_str[strlen(fsused_str)-1]);i++){
fsused_kbytes*=1024;
}
char *size_str = (char*)json_object_get_string(size);
double size_kbytes = atof(size_str);
for (int i=0;i<yon_get_size_get_from_letter(size_str[strlen(size_str)-1]);i++){
size_kbytes*=1024;
}
int sz=0;
free_space = size_kbytes-fsused_kbytes;
for (sz=0;free_space>1024;sz=sz+1){
free_space=free_space/1024;
}
if (sz==-1) {
sz=0;
free_space=free_space/1024;
}
free_space_string = yon_char_append(yon_char_from_double(free_space)," ");
free_space_string[strlen(free_space_string)-1]=*(yon_size_get_mod(sz));
}
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->InstallationNearSizeSpin),0.0);
gtk_adjustment_set_upper(gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(widgets->InstallationNearSizeSpin)),0.0);
gtk_list_store_append(widgets->PartitionsList,&iter);
gtk_list_store_set(widgets->PartitionsList,&iter,0,json_object_get_string(path),1,json_object_get_string(size),2,free_space_string,3,json_object_get_string(fstype),-1);
@ -2099,12 +2171,32 @@ void on_near_installation_device_changed(GtkWidget *self, main_window *widgets){
json_object_object_get_ex(device, "fstype", &fstype);
json_object_object_get_ex(device, "fsused", &fsused);
float free_space=0;
double free_space=0;
char *free_space_string="";
if (size&&fsused){
free_space = atof(json_object_get_string(size))-atof(json_object_get_string(fsused));
free_space_string = yon_char_append(yon_char_from_float(free_space)," ");
free_space_string[strlen(free_space_string)-1]=json_object_get_string(size)[strlen(json_object_get_string(size))-1];
char *fsused_str = (char*)json_object_get_string(fsused);
double fsused_kbytes = atof(fsused_str);
for (int i=0;i<yon_get_size_get_from_letter(fsused_str[strlen(fsused_str)-1]);i++){
fsused_kbytes*=1024;
}
char *size_str = (char*)json_object_get_string(size);
double size_kbytes = atof(size_str);
for (int i=0;i<yon_get_size_get_from_letter(size_str[strlen(size_str)-1]);i++){
size_kbytes*=1024;
}
int sz=0;
free_space = size_kbytes-fsused_kbytes;
for (sz=0;free_space>1024;sz=sz+1){
free_space=free_space/1024;
}
if (sz==-1) {
sz=0;
free_space=free_space/1024;
}
free_space_string = yon_char_append(yon_char_from_double(free_space)," ");
free_space_string[strlen(free_space_string)-1]=*(yon_size_get_mod(sz));
}
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->InstallationNearSizeSpin),0.0);
gtk_adjustment_set_upper(gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(widgets->InstallationNearSizeSpin)),0.0);
@ -2159,36 +2251,48 @@ void on_gparted_open(){
yon_launch_app_with_arguments(open_gparted_command,NULL);
}
// gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets);
// void on_exit_accepted(GtkWidget *,main_window *widgets);
// void on_exit_accepted(GtkWidget *,main_window *widgets){
// if (main_config.install_thread){
// pthread_cancel((pthread_t)main_config.install_thread);
// }
// main_config.exit_accepted=1;
// g_signal_emit_by_name(G_OBJECT(widgets->MainWindow),"destroy",widgets->MainWindow,NULL);
// }
// gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){
// if (!main_config.exit_accepted){
// if (widgets){};
// confirmation_window *window = malloc(sizeof(confirmation_window));
// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_confirmation);
// window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
// window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
// window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
// g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_exit_accepted),widgets);
// g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
// gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow));
// gtk_window_set_title(GTK_WINDOW(window->Window),TITLE_LABEL);
// gtk_window_set_icon_name(GTK_WINDOW(window->Window),icon_path);
// gtk_widget_show(window->Window);
// return 1;
// }
// return 0;
// }
gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets);
void on_exit_accepted(GtkWidget *,dictionary *dict);
void on_exit_accepted(GtkWidget *,dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
confirmation_window *window = yon_dictionary_get_data(dict->first->next,confirmation_window*);
if (main_config.install_thread){
pthread_cancel((pthread_t)main_config.install_thread);
}
main_config.exit_accepted=1;
g_signal_emit_by_name(G_OBJECT(widgets->MainWindow),"delete-event",widgets->MainWindow,NULL);
free(window);
yon_dictionary_free_all(dict,NULL);
free(dict);
gtk_widget_destroy(widgets->MainWindow);
}
gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){
if (!main_config.exit_accepted){
if (widgets){};
confirmation_window *window = malloc(sizeof(confirmation_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_confirmation);
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_exit_accepted),dict);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow));
gtk_window_set_title(GTK_WINDOW(window->Window),TITLE_LABEL);
gtk_window_set_icon_name(GTK_WINDOW(window->Window),icon_path);
gtk_widget_show(window->Window);
return 1;
}
return 0;
}
/**yon_main_window_complete(main_window *widgets)
* [EN]
@ -2363,7 +2467,7 @@ main_window *yon_main_window_complete(){
widgets->SameFSTypeSensitiveCheck = yon_gtk_builder_get_widget(builder,"SameFSTypeSensitiveCheck");
widgets->SameLabelSensitiveCheck = yon_gtk_builder_get_widget(builder,"SameLabelSensitiveCheck");
// g_signal_connect(G_OBJECT(widgets->MainWindow),"delete-event",G_CALLBACK(on_yon_exit),widgets);
g_signal_connect(G_OBJECT(widgets->MainWindow),"delete-event",G_CALLBACK(on_yon_exit),widgets);
GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menu2");
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddle");
gtk_style_context_remove_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemtop");
@ -2463,9 +2567,18 @@ main_window *yon_main_window_complete(){
int width = gdk_pixbuf_get_width(widgets->regions_original);
int height = gdk_pixbuf_get_height(widgets->regions_original);
widgets->region_height_mult = (float)height/width;
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->RegionImage),gdk_pixbuf_scale_simple(widgets->regions_original,600,400,GDK_INTERP_BILINEAR));
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->KeyboardImage),gdk_pixbuf_scale_simple(widgets->keyboard_original,600,400,GDK_INTERP_BILINEAR));
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->SlidesImage),gdk_pixbuf_scale_simple(widgets->slides_original[0],600,400,GDK_INTERP_BILINEAR));
GdkPixbuf *pix = gdk_pixbuf_scale_simple(widgets->regions_original,600,400,GDK_INTERP_BILINEAR);
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->RegionImage),pix);
g_object_unref(pix);
pix = gdk_pixbuf_scale_simple(widgets->keyboard_original,600,400,GDK_INTERP_BILINEAR);
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->KeyboardImage),pix);
g_object_unref(pix);
pix = gdk_pixbuf_scale_simple(widgets->slides_original[0],600,400,GDK_INTERP_BILINEAR);
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->SlidesImage),pix);
g_object_unref(pix);
int langsize;
config_str lang = default_langs(&langsize);
GtkTreeIter iter;
gtk_list_store_clear(widgets->LanguagesList);
@ -2481,6 +2594,8 @@ main_window *yon_main_window_complete(){
yon_char_parsed_free(cur,cur_size);
}
yon_char_parsed_free(parsed,size);
if (lang)
yon_char_parsed_free(lang,langsize);
parsed = yon_dir_get_contents(zone_path,&size);
for (int i=0;i<size;i++){
@ -2505,11 +2620,14 @@ main_window *yon_main_window_complete(){
gtk_tree_store_append(widgets->LayoutList,&iter,NULL);
gtk_tree_store_set(widgets->LayoutList,&iter,0,layout[0],1,_(layout[1]),2,1,-1);
yon_char_parsed_free(layout,layout_size);
layout = yon_config_load(get_layouts_local_command(layout_id),&layout_size);
char *command = get_layouts_local_command(layout_id);
config_str layout_local = yon_config_load(command,&layout_size);
free(command);
free(layout_id);
for (int j=0;j<layout_size;j++){
yon_char_remove_last_symbol(layout[j],'\n');
yon_char_remove_last_symbol(layout_local[j],'\n');
int parsed_size;
config_str layouts_parsed = yon_char_parse(layout[j],&parsed_size,"|");
config_str layouts_parsed = yon_char_parse(layout_local[j],&parsed_size,"|");
if (parsed_size){
gtk_tree_store_append(widgets->LayoutList,&itar,&iter);
gtk_tree_store_set(widgets->LayoutList,&itar,0,layouts_parsed[0],1,_(layouts_parsed[1]),2,1,3,0,-1);
@ -2519,7 +2637,7 @@ main_window *yon_main_window_complete(){
if (layout_size==-1) {
gtk_tree_store_set(widgets->LayoutList,&iter,2,1,-1);
}
yon_char_parsed_free(layout,layout_size);
yon_char_parsed_free(layout_local,layout_size);
}
}
yon_char_parsed_free(parsed,size);
@ -2529,6 +2647,7 @@ main_window *yon_main_window_complete(){
struct json_object *root;
struct json_object *blockdevices;
root = json_tokener_parse(string);
free(string);
json_object_object_get_ex(root, "blockdevices", &blockdevices);
for (long unsigned int i = 0; i < json_object_array_length(blockdevices); i++) {
struct json_object *device = json_object_array_get_idx(blockdevices, i);
@ -2542,6 +2661,7 @@ main_window *yon_main_window_complete(){
gtk_list_store_append(widgets->DevicesList,&iter);
gtk_list_store_set(widgets->DevicesList,&iter,0,json_object_get_string(path),1,json_object_get_string(model),2,json_object_get_string(serial),3,json_object_get_string(size),4,json_object_get_string(vendor),-1);
}
yon_char_parsed_free(parsed,size);
}
@ -2553,8 +2673,10 @@ main_window *yon_main_window_complete(){
if (module_size){
gtk_list_store_append(widgets->AdditionalSoftwareList,&iter);
gtk_list_store_set(widgets->AdditionalSoftwareList,&iter,0,1,1,module_parsed[0],3,module_parsed[1],-1); //2,module_parsed[2]
yon_char_parsed_free(module_parsed,module_size);
}
}
if (size) yon_char_parsed_free(parsed,size);
config_str models = yon_config_load(get_models_command,&size);
for (int i=0;i<size;i+=2){
@ -2562,6 +2684,7 @@ main_window *yon_main_window_complete(){
models[i+1] = yon_char_divide_search(models[i+1],"\n",-1);
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->KeyboardModelCombo),models[i],_(models[i+1]));
}
if (size) yon_char_parsed_free(models,size);
gtk_builder_connect_signals(builder,NULL);
yon_load_proceed(YON_CONFIG_DEFAULT);
yon_interface_update(widgets);
@ -2650,12 +2773,14 @@ int main(int argc, char *argv[]){
main_window *widgets = NULL;
widgets = yon_main_window_complete();
yon_window_config_setup(GTK_WINDOW(widgets->MainWindow));
yon_window_config_load(config_path);
char *window_config_path = config_path;
yon_window_config_load(window_config_path);
free(window_config_path);
GtkCssProvider *css=gtk_css_provider_new();
gtk_css_provider_load_from_resource(css,CssPath);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
GTK_STYLE_PROVIDER(css),
-1);
gtk_main();
free(widgets);
}

@ -147,6 +147,8 @@ NULL
#define ubconfig_file_create(target) yon_char_unite("ubconfig --target \"",target,"\" create",NULL)
#define default_langs(size) yon_char_parsed_new(size,"en_US.UTF-8","ru_RU.UTF-8",NULL);
typedef char* string;
string version_application;
@ -465,4 +467,6 @@ void on_autohostname_sensitiveness_check(GtkWidget *, main_window *widgets);
void on_autohostname_check(GtkWidget *, main_window *widgets);
void on_hostname_entry_changed (GtkWidget *, main_window *widgets);
void *on_install_success(main_window *widgets);
void *on_install_success(main_window *widgets);
void *on_install_error(main_window *widgets);

@ -181,4 +181,8 @@
#define ADD_LAYOUT_LABEL _("Add layouts")
#define REMOVE_LAYOUT_LABEL _("Remove layout")
#define CONFIGURATION_LABEL _("System configuration...")
#define CONFIGURATION_LABEL _("System configuration...")
#define WARNING_TITLE_LABEL _("Warning")
#define WARNING_TEXT_LABEL _("Are you sure want to exit and\ninterrupt installation process?")

@ -1,13 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
<interface domain="ubinstall-gtk">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubinstall-gtk.css -->
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.cancel-symbolic</property>
</object>
<object class="GtkImage" id="image9">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.accept-symbolic</property>
</object>
<object class="GtkApplicationWindow" id="MainWindow">
<property name="width-request">450</property>
<property name="height-request">250</property>
<property name="width-request">350</property>
<property name="height-request">150</property>
<property name="can-focus">False</property>
<property name="resizable">False</property>
<property name="default-width">450</property>
<property name="modal">True</property>
<property name="default-width">300</property>
<property name="icon-name">dialog-question-symbolic</property>
<child>
<object class="GtkBox">
@ -52,8 +64,10 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">center</property>
<property name="margin-end">15</property>
<property name="label" translatable="yes">Are you sure want to exit and
interrupt installation process?</property>
<property name="xalign">0</property>
<style>
<class name="fgnb"/>
</style>
@ -133,14 +147,4 @@ interrupt installation process?</property>
</object>
</child>
</object>
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.cancel-symbolic</property>
</object>
<object class="GtkImage" id="image9">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.accept-symbolic</property>
</object>
</interface>

@ -1897,7 +1897,7 @@ and help you install UBLinux on your computer</property>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
@ -2623,7 +2623,7 @@ and help you install UBLinux on your computer</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="placeholder-text" translatable="yes">ublinux-install </property>
<property name="placeholder-text" translatable="yes">auto </property>
</object>
<packing>
<property name="expand">True</property>
@ -2686,7 +2686,7 @@ and help you install UBLinux on your computer</property>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Completion</property>
<property name="label" translatable="yes">Installation completion</property>
<attributes>
<attribute name="weight" value="bold"/>
<attribute name="scale" value="1"/>

@ -628,6 +628,15 @@ msgstr ""
msgid "Remove layout"
msgstr ""
msgid "Warning"
msgstr ""
msgid "Accept"
msgstr ""
msgid "Are you sure want to exit and\ninterrupt installation process?"
msgstr ""
msgid "English, U.S.A.; Russian, Russia"
msgstr ""

@ -641,6 +641,15 @@ msgstr "Добавить раскладки"
msgid "Remove layout"
msgstr "Удалить раскладку"
msgid "Warning"
msgstr "Внимание"
msgid "Accept"
msgstr "Принять"
msgid "Are you sure want to exit and\ninterrupt installation process?"
msgstr "Вы уверены, что хотите закрыть программу и\nпрервать процесс установки?"
#: source/ubl-strings.h:140
msgid "Read installation log"
msgstr "Открыть лог установки"

Loading…
Cancel
Save