diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 0890614..e637f86 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -16,6 +16,11 @@ int yon_kernel_save(main_window *widgets){ } } + if (yon_char_is_empty(enabled_module)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),ENABLED_KERNEL_MISSING_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + return 0; + } + if (!yon_char_is_empty(install_modules)){ yon_config_register(modules_extra_parameter,modules_extra_parameter_command,install_modules); } else { diff --git a/source/ubinstall-gtk-keyboard.c b/source/ubinstall-gtk-keyboard.c index b9c92d9..86f032a 100644 --- a/source/ubinstall-gtk-keyboard.c +++ b/source/ubinstall-gtk-keyboard.c @@ -246,41 +246,45 @@ void on_keyboard_clicked (GtkWidget *, main_window *widgets){ gtk_widget_show(window->MainWindow); } +void yon_layout_build(char *key, GHashTable *value, main_window *widgets){ + GtkTreeIter parent; + GtkTreeIter iter; + gtk_tree_store_append(widgets->LayoutList,&parent,NULL); + gtk_tree_store_set(widgets->LayoutList,&parent,0,key,1,_((char*)g_hash_table_lookup(value,"")),2,1,3,0,-1); + + GList *list = g_hash_table_get_keys(value); + GList *iterator = NULL; + for (iterator=list;iterator;iterator=iterator->next){ + if (!yon_char_is_empty((char*)iterator->data)){ + gtk_tree_store_append(widgets->LayoutList,&iter,&parent); + gtk_tree_store_set(widgets->LayoutList,&iter,0,(char*)iterator->data,1,_((char*)g_hash_table_lookup(value,iterator->data)),2,1,3,0,-1); + } + } +} + void yon_keyboard_init(main_window *widgets){ int size; config_str parsed = NULL; - GtkTreeIter iter; parsed = yon_config_load(yon_debug_output("%s\n",get_layouts_command),&size); - GtkTreeIter itar; + GHashTable *table = g_hash_table_new(g_str_hash,g_str_equal); for (int i=0;iLayoutList,&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); - char *command = get_layouts_local_command(layout_id); - config_str layout_local = yon_config_load(yon_debug_output("%s\n",command),&layout_size); - free(command); - free(layout_id); - for (int j=0;jLayoutList,&itar,&iter); - gtk_tree_store_set(widgets->LayoutList,&itar,0,layouts_parsed[0],1,_(layouts_parsed[1]),2,1,3,0,-1); - yon_char_parsed_free(layouts_parsed,parsed_size); - } + + if (g_hash_table_contains(table,layout[0])){ + GHashTable *child_table = g_hash_table_lookup(table,layout[0]); + g_hash_table_insert(child_table,yon_char_new(layout[1]),yon_char_new(layout[2])); + }else { + GHashTable *child_table = g_hash_table_new(g_str_hash,g_str_equal); + g_hash_table_insert(table,yon_char_new(layout[0]),child_table); + g_hash_table_insert(child_table,yon_char_new(layout[1]),yon_char_new(layout[2])); } - if (layout_size==-1) { - gtk_tree_store_set(widgets->LayoutList,&iter,2,1,-1); - } - yon_char_parsed_free(layout_local,layout_size); } } + + g_hash_table_foreach(table,(GHFunc)yon_layout_build,widgets); yon_char_parsed_free(parsed,size); config_str models = yon_config_load(yon_debug_output("%s\n",get_models_command),&size); for (int i=0;ifirst,main_window*); -// log_window *window = yon_dictionary_get_data(dict->first->next,log_window*); -// -// gtk_widget_set_sensitive(widgets->ReadFullLogButton,1); -// gtk_widget_set_sensitive(widgets->ReadShortLogButton,1); -// -// free(window->command); -// window->Window=NULL; -// } +void on_log_closed(GtkWidget *, log_window *window){ + main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets"); -// log_window *yon_log_window_new(){ -// log_window *window = malloc(sizeof(log_window)); -// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_log_view); -// window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); -// window->ScrollWindow = yon_gtk_builder_get_widget(builder,"ScrollWindow"); -// window->HeadLabel = yon_gtk_builder_get_widget(builder,"headerTopic"); -// window->LogLabel = yon_gtk_builder_get_widget(builder,"LogLabel"); -// window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); -// window->ScrollToEndCheck = yon_gtk_builder_get_widget(builder,"ScrollToEndCheck"); -// gtk_widget_show(window->Window); -// return window; -// } + gtk_widget_set_sensitive(widgets->ReadFullLogButton,1); + gtk_widget_set_sensitive(widgets->ReadShortLogButton,1); -// gboolean yon_read_log(void *data){ -// log_window *window = (log_window*)data; -// if (window->Window){ -// int size; -// g_mutex_lock(&main_config.progress_mutex); -// config_str parsed = yon_file_open(window->command,&size); -// g_mutex_unlock(&main_config.progress_mutex); -// if (size){ -// char *final = yon_char_parsed_to_string(parsed,size,""); -// gtk_label_set_text(GTK_LABEL(window->LogLabel),final); -// if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->ScrollToEndCheck))){ -// gtk_adjustment_set_value(gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(window->ScrollWindow)),gtk_adjustment_get_upper(gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(window->ScrollWindow)))); -// } -// free(final); -// yon_char_parsed_free(parsed,size); -// } -// g_mutex_lock(&main_config.install_mutex); -// if (!main_config.install_complete){ -// g_mutex_unlock(&main_config.install_mutex); -// return 1; -// } else { -// g_mutex_unlock(&main_config.install_mutex); -// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->ScrollToEndCheck),0); -// gtk_widget_set_sensitive(window->ScrollToEndCheck,0); -// } -// } -// return 0; -// } + free(window->command); + window->Window=NULL; +} -// void on_process_log_view(GtkWidget *,main_window *widgets){ -// log_window *window = yon_log_window_new(); -// 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->Window),"destroy",G_CALLBACK(on_log_closed),dict); -// gtk_widget_set_sensitive(widgets->ReadFullLogButton,0); -// gtk_widget_set_sensitive(widgets->ReadShortLogButton,0); -// yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,INSTALL_LOG_LABEL,icon_path,"log_viewer"); -// window->command = yon_char_new(short_log_path); -// gdk_threads_add_timeout(500,(GSourceFunc)yon_read_log,window); -// } +log_window *yon_log_window_new(){ + log_window *window = malloc(sizeof(log_window)); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_log_view); + window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); + window->ScrollWindow = yon_gtk_builder_get_widget(builder,"ScrollWindow"); + window->HeadLabel = yon_gtk_builder_get_widget(builder,"headerTopic"); + window->LogLabel = yon_gtk_builder_get_widget(builder,"LogLabel"); + window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); + window->ScrollToEndCheck = yon_gtk_builder_get_widget(builder,"ScrollToEndCheck"); + window->monitor = NULL; + gtk_widget_show(window->Window); + return window; +} -// void on_summary_log_view(GtkWidget *,main_window *widgets){ -// log_window *window = yon_log_window_new(); -// 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->Window),"destroy",G_CALLBACK(on_log_closed),dict); -// gtk_widget_set_sensitive(widgets->ReadFullLogButton,0); -// gtk_widget_set_sensitive(widgets->ReadShortLogButton,0); -// yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,PROGRESS_LOG_LABEL,icon_path,"log_viewer"); -// window->command = yon_char_new(full_log_path); -// gdk_threads_add_timeout(500,(GSourceFunc)yon_read_log,window); -// -// } +void yon_read_log(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,log_window *window){ + if (window->Window){ + int size; + g_mutex_lock(&main_config.progress_mutex); + config_str parsed = yon_file_open(window->command,&size); + g_mutex_unlock(&main_config.progress_mutex); + if (size){ + char *final = yon_char_parsed_to_string(parsed,size,""); + gtk_label_set_text(GTK_LABEL(window->LogLabel),final); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->ScrollToEndCheck))){ + gtk_adjustment_set_value(gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(window->ScrollWindow)),gtk_adjustment_get_upper(gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(window->ScrollWindow)))); + } + free(final); + yon_char_parsed_free(parsed,size); + } + g_mutex_lock(&main_config.install_mutex); + if (!main_config.install_complete){ + g_mutex_unlock(&main_config.install_mutex); + return; + } else { + g_mutex_unlock(&main_config.install_mutex); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->ScrollToEndCheck),0); + gtk_widget_set_sensitive(window->ScrollToEndCheck,0); + } + } + return ; +} -// gboolean yon_installation_progress_update(void *data) { -// main_window *widgets = (main_window*)data; -// int size; -// -// g_mutex_lock(&main_config.progress_mutex); -// config_str text = yon_file_open(progress_path, &size); -// g_mutex_unlock(&main_config.progress_mutex); -// -// if (size) { -// if (!yon_char_is_empty(text[size-1]) && text[size-1][0] == '(') { -// char *current_copy = yon_char_new(text[size-1]); -// char *percentage = yon_char_divide_search(current_copy, ")", -1); -// -// if (!strstr(percentage, "#pb")) { -// double fraction = atof(percentage+1); -// gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel), current_copy); -// gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress), fraction / 100); -// gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->PackageInstallationProgress), 0); -// gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel), ""); -// } else { -// gtk_widget_show(gtk_widget_get_parent(widgets->PackageInstallationProgress)); -// -// config_str parsed = yon_char_parse(current_copy, &size, " "); -// if (size >= 3) { -// double fraction = atof(parsed[2]) / 100; -// gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->PackageInstallationProgress), fraction); -// gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel), yon_char_parsed_to_string(parsed, size, " ")); -// } -// } -// -// } -// yon_char_parsed_free(text, size); -// } -// -// g_mutex_lock(&main_config.install_mutex); -// if (main_config.install_thread) { -// g_mutex_unlock(&main_config.install_mutex); -// return 1; -// } else { -// g_mutex_unlock(&main_config.install_mutex); -// gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel), ""); -// return 0; -// } -// } +void on_process_log_view(GtkWidget *,main_window *widgets){ + log_window *window = yon_log_window_new(); + g_object_set_data(G_OBJECT(window->Window),"widgets",widgets); + g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(on_log_closed),window); + gtk_widget_set_sensitive(widgets->ReadFullLogButton,0); + gtk_widget_set_sensitive(widgets->ReadShortLogButton,0); + yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,INSTALL_LOG_LABEL,icon_path,"log_viewer"); + window->command = yon_char_new(short_log_path); + GFile *file = g_file_new_for_path(window->command); + window->monitor = g_file_monitor_file(file,G_FILE_MONITOR_NONE,NULL,NULL); + g_signal_connect(G_OBJECT(window->monitor),"changed",G_CALLBACK(yon_read_log),window); + g_object_unref(file); + yon_read_log(NULL,NULL,NULL,NULL,window); +} + +void on_summary_log_view(GtkWidget *,main_window *widgets){ + log_window *window = yon_log_window_new(); + g_object_set_data(G_OBJECT(window->Window),"widgets",widgets); + g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(on_log_closed),window); + gtk_widget_set_sensitive(widgets->ReadFullLogButton,0); + gtk_widget_set_sensitive(widgets->ReadShortLogButton,0); + yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,PROGRESS_LOG_LABEL,icon_path,"log_viewer"); + window->command = yon_char_new(full_log_path); + GFile *file = g_file_new_for_path(window->command); + window->monitor = g_file_monitor_file(file,G_FILE_MONITOR_NONE,NULL,NULL); + g_signal_connect(G_OBJECT(window->monitor),"changed",G_CALLBACK(yon_read_log),window); + g_object_unref(file); + yon_read_log(NULL,NULL,NULL,NULL,window); +} + +void yon_installation_progress_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets) { + int size; + + g_mutex_lock(&main_config.progress_mutex); + config_str text = yon_file_open(progress_path, &size); + g_mutex_unlock(&main_config.progress_mutex); + + if (size) { + if (!yon_char_is_empty(text[size-1]) && text[size-1][0] == '(') { + char *current_copy = yon_char_new(text[size-1]); + char *percentage = yon_char_divide_search(current_copy, ")", -1); + + if (!strstr(percentage, "#pb")) { + double fraction = atof(percentage+1); + gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel), current_copy); + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress), fraction / 100); + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->PackageInstallationProgress), 0); + gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel), ""); + } else { + gtk_widget_show(gtk_widget_get_parent(widgets->PackageInstallationProgress)); + + config_str parsed = yon_char_parse(current_copy, &size, " "); + if (size >= 3) { + double fraction = atof(parsed[2]) / 100; + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->PackageInstallationProgress), fraction); + gtk_label_set_text(GTK_LABEL(widgets->PackageInstallationLabel), yon_char_parsed_to_string(parsed, size, " ")); + } + } + + } + yon_char_parsed_free(text, size); + } +} diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 2a441de..7914afc 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -334,7 +334,10 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){ case YON_PAGE_RECOVERY_OS_ONLY: case YON_PAGE_RECOVERY_USRDATA_ONLY: case YON_PAGE_INSTALLATION_BEGIN: - yon_install_init(widgets,page); + yon_install_init(widgets,page); + break; + case YON_PAGE_INSTALLATION: + main_config.save_configured=1; break; default: break; } diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c index 14e77a3..b032a1b 100644 --- a/source/ubinstall-gtk-saving.c +++ b/source/ubinstall-gtk-saving.c @@ -489,7 +489,7 @@ enum INSTALL_TYPE{ */ enum INSTALL_TYPE yon_ubl_get_install_mode(){ char *value = config(AUTOINSTALL_TYPE_INSTALL); - if (!strcmp(value,"common")){ + if (!strcmp(value,"fast")){ return INSTALL_COMMON; } else if (!strcmp(value,"part")){ return INSTALL_PART; @@ -539,12 +539,18 @@ void *on_config_save(void *data){ parameters = yon_config_get_selection_by_key_no_ignored(&size,install_userdata_only_parameters,NULL); break; default: - yon_ubl_status_box_render(ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); return 0; } FILE *file = fopen(progress_path,"w"); - if (file) + if (file){ fclose(file); + } + GFile *file_desc = g_file_new_for_path(progress_path); + widgets->install_info_monitor = g_file_monitor_file(file_desc,G_FILE_MONITOR_NONE,NULL,NULL); + g_signal_connect(G_OBJECT(widgets->install_info_monitor),"changed",G_CALLBACK(yon_installation_progress_update),widgets); + g_object_unref(file_desc); + gtk_widget_show(gtk_widget_get_parent(widgets->InstallationProgress)); char *command = yon_debug_output("%s\n",save_config_command(yon_char_parsed_to_string(parameters,size," "))); yon_char_parsed_free(parameters,size); yon_debug_output("%s\n","Entered installation"); @@ -561,9 +567,10 @@ void *on_config_save(void *data){ g_mutex_lock(&main_config.install_mutex); main_config.install_complete=1; g_mutex_unlock(&main_config.install_mutex); - if (!main_config.save_done&&main_config.save_configured){ - on_setup_system_configuration(widgets); - } + if ((!main_config.save_done)&&main_config.save_configured){ + on_setup_system_configuration(widgets); + on_page_next_clicked(NULL,widgets); + } return 0; } diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 1c69364..4088503 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -552,8 +552,8 @@ main_window *yon_main_window_complete(){ // g_signal_connect(G_OBJECT(widgets->SaveLocalConfigurationMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets); // g_signal_connect(G_OBJECT(widgets->SaveExternalConfigurationMenuItem),"activate",G_CALLBACK(on_config_custom_save),widgets); - // g_signal_connect(G_OBJECT(widgets->ReadFullLogButton),"clicked",G_CALLBACK(on_process_log_view),widgets); - // g_signal_connect(G_OBJECT(widgets->ReadShortLogButton),"clicked",G_CALLBACK(on_summary_log_view),widgets); + g_signal_connect(G_OBJECT(widgets->ReadFullLogButton),"clicked",G_CALLBACK(on_process_log_view),widgets); + g_signal_connect(G_OBJECT(widgets->ReadShortLogButton),"clicked",G_CALLBACK(on_summary_log_view),widgets); g_signal_connect(G_OBJECT(widgets->GpartedCommonButton),"clicked",G_CALLBACK(on_gparted_open),NULL); g_signal_connect(G_OBJECT(widgets->GpartedSameButton),"clicked",G_CALLBACK(on_gparted_open),NULL); @@ -566,8 +566,8 @@ main_window *yon_main_window_complete(){ g_signal_connect(G_OBJECT(widgets->AvailableLanguagesButton),"clicked",G_CALLBACK(on_language_clicked),widgets); g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),widgets); g_signal_connect(G_OBJECT(widgets->LayoutSensitiveCheck),"toggled",G_CALLBACK(on_layout_toggle_button_switch),widgets); - // g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_keyboard_clicked),widgets); - // g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_keyboard_removed),widgets); + g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_keyboard_clicked),widgets); + g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_keyboard_removed),widgets); g_signal_connect(G_OBJECT(widgets->GrubInstallDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->GrubUpdateDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); @@ -589,7 +589,7 @@ main_window *yon_main_window_complete(){ g_signal_connect(G_OBJECT(widgets->UserAddButton),"clicked",G_CALLBACK(on_user_add),widgets); g_signal_connect(G_OBJECT(widgets->UserRootPasswordButton),"clicked",G_CALLBACK(yon_password_root_new),widgets); g_signal_connect(G_OBJECT(widgets->BootloadDefaulOSButton),"clicked",G_CALLBACK(yon_menu_window_open),widgets); - // gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(widgets->LayoutsFilter),3); + gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(widgets->LayoutsFilter),3); // g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_locale_changed),widgets); g_signal_connect(G_OBJECT(widgets->AdditionalSoftwareCell),"toggled",G_CALLBACK(on_additional_software_toggled),widgets); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 9203665..344da05 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -94,7 +94,24 @@ NULL #define network_value(ip,mask,gateway, dns) g_strdup_printf("ipv4.method manual ipv4.addr %s/%s ipv4.gateway %s ipv4.dns %s",ip,mask,gateway,dns) #define network_value_auto "ipv4.method auto" -#define get_layouts_command "xkbcli list --load-exotic | awk \"layout && /description:/ {match(\\$0,/: *(.*)/,matches);description=matches[1];printf \\\"%s|%s\\n\\\",layout,description;layout=\\\"\\\"} /layout:/ {match(\\$0, /: *'([^']+)'/,matches);l=matches[1];if (layouts[l]) next;layout=layouts[l]=l}\" | sort -u" +#define get_layouts_command "xkbcli list --load-exotic | awk \"\ +layout && /description:/ {\ + match(\\$0, /: *(.*)/, matches);\ + description = matches[1];\ + printf \\\"%s|%s|%s\\\\n\\\", layout, variant, description;\ + layout = \\\"\\\"; variant = \\\"\\\";\ +}\ +/layout:/ {\ + match(\\$0, /: *'([^']+)'/, matches);\ + l = matches[1];\ + layout = layouts[l] = l;\ +}\ +/variant:/ {\ + match(\\$0, /: *'([^']+)'/, matches);\ + variant = matches[1];\ +}\ +\" | sort -u\ +" #define get_layouts_local_command(layout) yon_char_unite("xkbcli list --load-exotic | awk -v layout=\"",layout,"\" \"BEGIN {layout_pattern = sprintf(\\\"^ *- *layout: *'%s'\\\",layout);matched=0} matched && /variant:/ {match(\\$0, /: *'([^']+)'/, matches);variant = matches[1]} matched && /description:/ {match(\\$0, /: *(.+)/, matches);description = matches[1]} matched && /^ *-/{matched=0; if (variant) printf \\\"%s|%s\\n\\\",variant,description} \\$0 ~ layout_pattern {matched=1;variant=\\\"\\\";description=\\\"\\\";next}\" | sort -u",NULL) #define get_devices_command "lsblk --noheadings --nodeps -Jo PATH,SIZE,MODEL,VENDOR,SERIAL --exclude 7,253" #define get_parts_and_devices_command "lsblk --noheadings --bytes -o TYPE,PATH,SIZE,FSTYPE,LABEL,PARTLABEL,MOUNTPOINT,FSUSED,FSUSE% --exclude 7,253 |awk '{print ($1\";\"$2\";\"$3\";\"$4\";\"$5\";\"$6\";\"$7\";\"$8\";\"$9)}'" @@ -723,6 +740,8 @@ typedef struct { GtkWidget *HeadLabel; GtkWidget *LogLabel; GtkWidget *ScrollToEndCheck; + GFileMonitor *monitor; + char *command; } log_window; @@ -887,11 +906,11 @@ void on_region_changed(GtkComboBox *self, main_window *widgets); void on_page_navigation_clicked(GtkWidget *self, main_window *widgets); int yon_install_options_save(GtkWidget *device_tree, GtkWidget *part_tree,char *mode,main_window *widgets); void on_process_log_view(GtkWidget *,main_window *widgets); -gboolean yon_read_log(void *data); +void yon_read_log(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,log_window *window); log_window *yon_log_window_new(); -void on_log_closed(GtkWidget *, dictionary *dict); +void on_log_closed(GtkWidget *, log_window *window); void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets); -gboolean yon_installation_progress_update(void *data); +void yon_installation_progress_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets); void *on_config_save(void *data); void *on_setup_system_configuration(void * data); gboolean on_image_slide(void *data); @@ -1020,4 +1039,5 @@ void yon_advanced_set_part_sensitivity(main_window *widgets, gboolean state); void yon_advanced_set_device_sensitivity(main_window *widgets, gboolean state); void on_advanced_parts_removed(GtkWidget *,GtkWidget*,main_window *widgets); void on_advanced_parts_added(GtkWidget *,GtkWidget*,main_window *widgets); -void yon_advanced_partition_clear(main_window *widgets); \ No newline at end of file +void yon_advanced_partition_clear(main_window *widgets); +void yon_layout_build(char *key, GHashTable *value, main_window *widgets); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 24df689..65e5c25 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -204,4 +204,6 @@ #define BOOTLOADER_USER_EXIST_LABEL(target) yon_char_unite(_("User")," ", target," ", _("is already exists. Do you really want to save user")," ",target,"?",NULL) #define GRUB_PASSWORD(target) yon_char_unite("GRUB_PASSWORD[",target,"]",NULL) -#define WRONG_IP_LABEL _("Ip adress is incorrect") \ No newline at end of file +#define WRONG_IP_LABEL _("Ip adress is incorrect") + +#define ENABLED_KERNEL_MISSING_LABEL _("No kernel was enabled") \ No newline at end of file