diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 5b1ff81..9427d8a 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -73,6 +73,27 @@ int yon_kernel_addon_save(main_window *widgets){ return 1; } +void on_os_components_uncheck_all(GtkWidget *,main_window *widgets){ + int active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->OSSoftwareUncheckAllCheck)); + switch(active){ + case 1:{ + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); + GList *iter; + for(iter = list;iter;iter=iter->next){ + os_row *row = g_object_get_data(iter->data,"kernel_row"); + int sensitive = gtk_widget_get_sensitive(row->InstallCheck); + if (sensitive){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); + } + } + } break; + } + gtk_widget_hide(widgets->OSSoftwareUncheckAllCheck); + g_signal_handlers_block_by_func(G_OBJECT(widgets->OSSoftwareUncheckAllCheck),on_os_components_uncheck_all,widgets); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->OSSoftwareUncheckAllCheck),0); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->OSSoftwareUncheckAllCheck),on_os_components_uncheck_all,widgets); +} + int yon_os_components_check_packages_size(GtkWidget *, main_window *widgets){ long pacman_size = 0; { @@ -83,6 +104,9 @@ int yon_os_components_check_packages_size(GtkWidget *, main_window *widgets){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){ long cur_size = yon_packages_get_installed_size(YON_PACKAGES_ALL,row->name); pacman_size += cur_size; + if (gtk_widget_get_sensitive(row->InstallCheck)){ + gtk_widget_show(widgets->OSSoftwareUncheckAllCheck); + } } } } diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 059f475..69f7d9b 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -446,6 +446,7 @@ void yon_main_window_create(main_window *widgets){ widgets->OSFormatEncryptionEntry = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionEntry"); widgets->OSFormatEncryptionButton = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionButton"); widgets->OSComponentsOverallSizeLabel = yon_gtk_builder_get_widget(builder,"OSComponentsOverallSizeLabel"); + widgets->OSSoftwareUncheckAllCheck = yon_gtk_builder_get_widget(builder,"OSSoftwareUncheckAllCheck"); widgets->UserdataDevicesTree = yon_gtk_builder_get_widget(builder,"UserdataDevicesTree"); widgets->UserdataSysSectionTree = yon_gtk_builder_get_widget(builder,"UserdataSysSectionTree"); @@ -703,6 +704,7 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->SamePlaceDeviceTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->UserdataDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->OSSoftwareUncheckAllCheck),"toggled",G_CALLBACK(on_os_components_uncheck_all),widgets); g_signal_connect(G_OBJECT(widgets->AdditionalComponentsUncheckAllCheck),"toggled",G_CALLBACK(on_software_uncheck_all),widgets); g_signal_connect(G_OBJECT(widgets->NextInstallationSizeSpin),"value-changed",G_CALLBACK(yon_size_changed),widgets); g_signal_connect(G_OBJECT(widgets->UserdataFormatSizeSpin),"value-changed",G_CALLBACK(yon_size_changed),widgets); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index bd1b0b9..f9dc4ee 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -665,6 +665,7 @@ typedef struct GtkWidget *OSSpinner; GtkWidget *OSOverlay; GtkWidget *OSComponentsOverallSizeLabel; + GtkWidget *OSSoftwareUncheckAllCheck; GtkWidget *UserdataGpartedButton; GtkWidget *UserdataUpdateGpartedButton; @@ -1591,4 +1592,5 @@ void on_bootloader_user_remove(GtkWidget *, main_window *widgets); void on_software_uncheck_all(GtkWidget *, main_window *widgets); gboolean on_kernel_enabled_toggled(GtkWidget *self, GdkEventButton *, kernel_row *row); void on_status_update(GtkWidget *,main_window *widgets); -gboolean on_kernel_addon_menu_block(GObject *self, GdkEventButton *event); \ No newline at end of file +gboolean on_kernel_addon_menu_block(GObject *self, GdkEventButton *event); +void on_os_components_uncheck_all(GtkWidget *,main_window *widgets); \ No newline at end of file diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 4265cf8..f8a9ff0 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -2091,7 +2091,6 @@ agreement none - True False No modules were found. Select a different installation source. @@ -2136,6 +2135,19 @@ Select a different installation source. 5 5 5 + + + Uncheck all + True + False + True + + + False + True + 0 + + True