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