diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c
index 51f324d..5a2b5a7 100644
--- a/source/ubinstall-gtk.c
+++ b/source/ubinstall-gtk.c
@@ -555,18 +555,18 @@ if (window->Window){
return 0;
}
-void on_process_log_view(GtkWidget *,main_window *widgets);
-void on_process_log_view(GtkWidget *,main_window *widgets){
+void on_process_log_view(GtkWidget *);
+void on_process_log_view(GtkWidget *){
log_window *window = yon_log_window_new();
- yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),LOG_VIEW_LABEL,icon_path,"log_viewer");
+ yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,LOG_VIEW_LABEL,icon_path,"log_viewer");
window->command = yon_char_new(short_log_path);
gdk_threads_add_timeout(500,(GSourceFunc)yon_read_log,window);
}
-void on_summary_log_view(GtkWidget *,main_window *widgets);
-void on_summary_log_view(GtkWidget *,main_window *widgets){
+void on_summary_log_view(GtkWidget *);
+void on_summary_log_view(GtkWidget *){
log_window *window = yon_log_window_new();
- yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),LOG_VIEW_LABEL,icon_path,"log_viewer");
+ yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,LOG_VIEW_LABEL,icon_path,"log_viewer");
window->command = yon_char_new(full_log_path);
gdk_threads_add_timeout(500,(GSourceFunc)yon_read_log,window);
@@ -1025,11 +1025,41 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
}break;
case YON_PAGE_OPTIONS_SEPARATE:{
- yon_install_options_save(widgets->SeparateDevicesTree,widgets->SeparateSysSectionTree,"system_only",widgets);
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SeparateSysSectionTree)),&model,&iter)){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->SeparateSysSectionTree));
+ return;
+ }
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_OPTIONS_SEPARATE_USRDATA);
}break;
case YON_PAGE_OPTIONS_SEPARATE_USRDATA:{
- yon_install_options_save(widgets->SeparateUserDevicesTree,widgets->SeparateUserSysSectionTree,"system_only",widgets);
+ GtkTreeIter iter,itar;
+ GtkTreeModel *model,*model2;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SeparateDevicesTree)),&model,&iter)){
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SeparateSysSectionTree)),&model2,&itar)){
+ char *cur_device, *system_section, *user_section;
+ gtk_tree_model_get(model,&iter,0,&cur_device,-1);
+ gtk_tree_model_get(model2,&itar,0,&system_section,-1);
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SeparateUserSysSectionTree)),&model2,&itar)){
+ gtk_tree_model_get(model2,&itar,0,&user_section,-1);
+ yon_config_register(AUTOINSTALL_DEVICE,AUTOINSTALL_DEVICE_command,cur_device);
+ yon_config_register(part_parameter,part_parameter_command,yon_char_unite(system_section,",",user_section,NULL));
+ yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL_command,"custom");
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION_BEGIN);
+ return;
+ } else {
+
+ }
+ } else {
+
+ }
+ } else {
+
+ }
+
} break;
case YON_PAGE_OPTIONS_OS_ONLY:{
@@ -1161,6 +1191,56 @@ void on_partition_changed(GtkWidget *self, main_window *widgets){
}
+void on_separate_installation_changed(GtkWidget *self, main_window *widgets);
+void on_separate_installation_changed(GtkWidget *self, main_window *widgets){
+
+ gtk_list_store_clear(widgets->PartitionsList);
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(self)),&model,&iter)){
+ gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SeparateUserDevicesTree)),&iter);
+ char *disk_path="";
+ gtk_tree_model_get(model,&iter,0,&disk_path,-1);
+ int size;
+ config_str parsed;
+ parsed = yon_config_load(get_parts_and_devices_command,&size);
+ char *string = yon_char_parsed_to_string(parsed,size,"");
+ struct json_object *root;
+ struct json_object *blockdevices;
+ root = json_tokener_parse(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);
+ struct json_object *type, *path, *size, *model, *fstype, *fsused;
+
+ json_object_object_get_ex(device, "type", &type);
+ if (strcmp("part",json_object_get_string(type)))
+ continue;
+ json_object_object_get_ex(device, "path", &path);
+ if (!strstr(json_object_get_string(path),disk_path)){
+ continue;
+ }
+ json_object_object_get_ex(device, "size", &size);
+ json_object_object_get_ex(device, "model", &model);
+ json_object_object_get_ex(device, "fstype", &fstype);
+ json_object_object_get_ex(device, "fsused", &fsused);
+
+ float 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];
+ }
+ // 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);
+ }
+ yon_char_parsed_free(parsed,size);
+ }
+}
+
void on_near_installation_device_changed(GtkWidget *self, main_window *widgets);
void on_near_installation_device_changed(GtkWidget *self, main_window *widgets){
gtk_list_store_clear(widgets->PartitionsList);
@@ -1376,7 +1456,7 @@ main_window *yon_main_window_complete(){
widgets->SeparateSysSectionTree = yon_gtk_builder_get_widget(builder,"SeparateSysSectionTree");
widgets->GpartedSeparateUserButton = yon_gtk_builder_get_widget(builder,"GpartedSeparateUserButton");
widgets->SeparateUserDevicesTree = yon_gtk_builder_get_widget(builder,"SeparateUserDevicesTree");
- widgets->SeparateUserSysSectionTree = yon_gtk_builder_get_widget(builder,"SeparateUse-rSysSectionTree");
+ widgets->SeparateUserSysSectionTree = yon_gtk_builder_get_widget(builder,"SeparateUserSysSectionTree");
widgets->GpartedOSButton = yon_gtk_builder_get_widget(builder,"GpartedOSButton");
widgets->OSDevicesTree = yon_gtk_builder_get_widget(builder,"OSDevicesTree");
@@ -1393,8 +1473,8 @@ main_window *yon_main_window_complete(){
widgets->AdditionalSoftwareList = GTK_LIST_STORE(gtk_builder_get_object(builder,"AdditionalSoftwareList"));
widgets->PartitionsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"PartitionsList"));
- g_signal_connect(G_OBJECT(widgets->ReadFullLogButton),"clicked",G_CALLBACK(on_summary_log_view),widgets);
- g_signal_connect(G_OBJECT(widgets->ReadShortLogButton),"clicked",G_CALLBACK(on_process_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);
@@ -1419,6 +1499,9 @@ main_window *yon_main_window_complete(){
g_signal_connect(G_OBJECT(widgets->CompletionToggle),"toggled",G_CALLBACK(on_toggle_block),NULL);
g_signal_connect(G_OBJECT(widgets->InstallationNearSysDevicesTree),"cursor-changed",G_CALLBACK(on_near_installation_device_changed),widgets);
g_signal_connect(G_OBJECT(widgets->SamePlaceDeviceTree),"cursor-changed",G_CALLBACK(on_near_installation_device_changed),widgets);
+ g_signal_connect(G_OBJECT(widgets->UserdataDevicesTree),"cursor-changed",G_CALLBACK(on_near_installation_device_changed),widgets);
+ g_signal_connect(G_OBJECT(widgets->OSDevicesTree),"cursor-changed",G_CALLBACK(on_near_installation_device_changed),widgets);
+ g_signal_connect(G_OBJECT(widgets->SeparateDevicesTree),"cursor-changed",G_CALLBACK(on_separate_installation_changed),widgets);
g_signal_connect(G_OBJECT(widgets->ConfigurationModeMenuItem),"toggled",G_CALLBACK(on_configuration_mode_switch),widgets);
g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),widgets);
diff --git a/source/ubl-strings.h b/source/ubl-strings.h
index acf0d95..c53c39f 100644
--- a/source/ubl-strings.h
+++ b/source/ubl-strings.h
@@ -70,7 +70,7 @@
#define ADVANCED_INSTALLATION_HEAD_LABEL _("Advanced installation mode")
#define ADVANCED_INSTALLATION_LABEL _("Installing OS files, user data on different partitions, creating RAID, etc.")
-#define ADVANCED_INSTALLATION_ATTENTION_LABEL _("Attention! The selected OC UBLinux components will be installed\nseparately into the selected partition.")
+#define ADVANCED_INSTALLATION_ATTENTION_LABEL _("Attention! The selected OS UBLinux components will be installed\nseparately into the selected partition.")
#define GRUB_INSTALL_HEAD_LABEL _("GRUB install")
#define GRUB_INSTALL_LABEL _("Install the GRUB bootloader")
#define GRUB_UPDATE_HEAD_LABEL _("GRUB update")
@@ -137,4 +137,4 @@
#define ERROR_HEAD_LABEL _("Error")
#define ERROR_LABEL _("Error has occured while installation process")
-#define LOG_VIEW_LABEL _("Log exploration")
\ No newline at end of file
+#define LOG_VIEW_LABEL _("Log exploration")
diff --git a/ubinstall-gtk-log-view.glade b/ubinstall-gtk-log-view.glade
index 3ae0a8e..88255a9 100644
--- a/ubinstall-gtk-log-view.glade
+++ b/ubinstall-gtk-log-view.glade
@@ -7,7 +7,6 @@
200
400
False
- True
800
com.ublinux.ubinstall-gtk
diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade
index e70d5dd..5ced464 100644
--- a/ubinstall-gtk.glade
+++ b/ubinstall-gtk.glade
@@ -203,8 +203,11 @@