Test size checking

pull/228/head
parent edb0ba299d
commit b3c5ca709d

@ -1027,7 +1027,7 @@ msgstr "Группа"
#: source/ubl-strings.h:292 #: source/ubl-strings.h:292
msgid "Chosen size:" msgid "Chosen size:"
msgstr "Размер выбора:" msgstr "Выбрано:"
#: source/ubl-strings.h:292 #: source/ubl-strings.h:292
msgid "Overall size:" msgid "Overall size:"

@ -49,7 +49,44 @@ int yon_kernel_addon_save(main_window *widgets){
return 1; return 1;
} }
int yon_os_components_check_packages_size(GtkWidget *, main_window *widgets){
long pacman_size = 0;
{
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
GList *listiter;
for (listiter=list;listiter;listiter=listiter->next){
os_row *row = g_object_get_data(G_OBJECT(listiter->data),"kernel_row");
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;
}
}
}
{
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->PacmanSoftwareChosenList);
for_iter(model, &iter){
char *name;
gtk_tree_model_get(model,&iter,1,&name,-1);
long size = yon_packages_get_installed_size(YON_PACKAGES_ALL,name);
pacman_size+=size;
}
char *overall_str = NULL;
if (pacman_size){
overall_str = yon_size_long_convert_automatic_to_string(pacman_size);
} else {
overall_str = yon_char_unite("0 ",yon_size_get_name_from_letter('K'),NULL);
}
gtk_label_set_text(GTK_LABEL(widgets->OSComponentsOverallSizeLabel),overall_str);
if (!yon_char_is_empty(overall_str)) free(overall_str);
}
return 1;
}
int yon_os_components_save(main_window *widgets){ int yon_os_components_save(main_window *widgets){
if (!yon_installation_check_packages_size(widgets)) return 0;
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
GList *iter; GList *iter;
int size=0; int size=0;
@ -151,6 +188,7 @@ gboolean yon_os_component_insert(struct row_data *row_input){
os_row *row = yon_os_row_new(); os_row *row = yon_os_row_new();
main_window *widgets = row_input->widgets; main_window *widgets = row_input->widgets;
g_signal_connect(G_OBJECT(row->InstallCheck),"toggled",G_CALLBACK(yon_os_components_check_packages_size),widgets);
gtk_list_box_insert(GTK_LIST_BOX(widgets->OSSoftwareListBox),row->row,-1); gtk_list_box_insert(GTK_LIST_BOX(widgets->OSSoftwareListBox),row->row,-1);
yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,_(row_input->description), row_input->source, row_input->size); yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,_(row_input->description), row_input->source, row_input->size);
char *modules = config(modules_parameter); char *modules = config(modules_parameter);

@ -1,17 +1,36 @@
#include "ubinstall-gtk.h" #include "ubinstall-gtk.h"
config_str yon_os_components_get_modules(int *size){
(*size) = 0;
int modules_size = main_config.devices_size;
config_str modules_list = main_config.devices;
config_str module_names = NULL;
for (int i=1;i<modules_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(modules_list[i],&parsed_size,";");
yon_char_parsed_add_or_create_if_exists(module_names,size,parsed[1]);
yon_char_parsed_free(parsed,parsed_size);
}
return module_names;
}
int yon_installation_check_packages_size(main_window *widgets){ int yon_installation_check_packages_size(main_window *widgets){
char *packages = config(packages_parameter); char *packages = config(packages_parameter);
char *modules = config(modules_parameter); char *modules = config(modules_parameter);
char *install_mode = config(AUTOINSTALL_TYPE_INSTALL); char *install_mode = config(AUTOINSTALL_TYPE_INSTALL);
long part_size = 0; long part_size = 0;
if (yon_char_is_empty(modules)||!strcmp(modules,"auto")){
int modules_size;
config_str module_names = yon_os_components_get_modules(&modules_size);
modules = yon_char_parsed_to_string(module_names,modules_size,",");
}
if (strcmp(install_mode,"fast")){ if (strcmp(install_mode,"fast")){
char *part = config(part_parameter); char *part = config(part_parameter);
for (int i=0;i<main_config.part_size;i++){ for (int i=0;i<main_config.part_size;i++){
int parsed_size; int parsed_size;
config_str parsed = yon_char_parse(main_config.partitions[i],&parsed_size,";"); config_str parsed = yon_char_parse(main_config.partitions[i],&parsed_size,";");
if (!strcmp(parsed[0],part)&&parsed_size>3&&!yon_char_is_empty(parsed[3])){ if (!strcmp(parsed[2],part)&&parsed_size>3&&!yon_char_is_empty(parsed[3])){
part_size = atol(parsed[3]); part_size = atol(parsed[3]);
yon_char_parsed_free(parsed,parsed_size); yon_char_parsed_free(parsed,parsed_size);
@ -44,7 +63,7 @@ int yon_installation_check_packages_size(main_window *widgets){
} }
if (!yon_char_is_empty(modules)){ if (!yon_char_is_empty(modules)){
int parsed_size; int parsed_size;
config_str parsed = yon_char_parse(packages,&parsed_size,","); config_str parsed = yon_char_parse(modules,&parsed_size,",");
for (int i=0;i<parsed_size;i++){ for (int i=0;i<parsed_size;i++){
modules_size += yon_packages_get_installed_size(YON_PACKAGES_ALL,parsed[i]); modules_size += yon_packages_get_installed_size(YON_PACKAGES_ALL,parsed[i]);
} }
@ -52,7 +71,7 @@ int yon_installation_check_packages_size(main_window *widgets){
} }
long overall_size = packages_size + modules_size; long overall_size = packages_size + modules_size;
if (overall_size>part_size){ if (overall_size>part_size){
yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NOT_ENOUGH_SPACE_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),PACKAGE_NOT_ENOUGH_SPACE_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
return 0; return 0;
} }
return 1; return 1;

@ -6,6 +6,7 @@ int yon_installation_start(main_window *widgets){
} }
void yon_quick_install(GtkWidget *self, main_window *widgets){ void yon_quick_install(GtkWidget *self, main_window *widgets){
if (!yon_installation_check_packages_size(widgets)) return;
main_config.save_configured=1; main_config.save_configured=1;
gtk_widget_hide(self); gtk_widget_hide(self);
gtk_widget_show(gtk_widget_get_parent(widgets->InstallationProgress)); gtk_widget_show(gtk_widget_get_parent(widgets->InstallationProgress));

@ -354,13 +354,13 @@ void on_device_selection_changed(GtkWidget *self, main_window *widgets){
void yon_devices_setup(main_window *widgets){ void yon_devices_setup(main_window *widgets){
GtkTreeIter iter; GtkTreeIter iter;
gtk_list_store_clear(widgets->DevicesList); gtk_list_store_clear(widgets->DevicesList);
int size; // int size;
config_str parameters = NULL; // config_str parameters = NULL;
parameters = yon_config_load(yon_debug_output("%s\n",get_devices_command),&size); // parameters = yon_config_load(yon_debug_output("%s\n",get_devices_command),&size);
for (int i=1;i<size;i++){ for (int i=1;i<main_config.devices_size;i++){
yon_char_remove_last_symbol(parameters[i],'\n'); yon_char_remove_last_symbol(main_config.devices[i],'\n');
int parsed_size; int parsed_size;
config_str parsed = yon_char_parse(parameters[i],&parsed_size,";"); config_str parsed = yon_char_parse(main_config.devices[i],&parsed_size,";");
char sizemod; char sizemod;
double size_converted = yon_size_long_convert_automatic(atol(parsed[1]),&sizemod); double size_converted = yon_size_long_convert_automatic(atol(parsed[1]),&sizemod);
char *size_string = yon_char_unite(yon_char_from_double(size_converted)," ", yon_size_get_name_from_letter(sizemod),NULL); char *size_string = yon_char_unite(yon_char_from_double(size_converted)," ", yon_size_get_name_from_letter(sizemod),NULL);
@ -379,7 +379,6 @@ void yon_devices_setup(main_window *widgets){
yon_char_parsed_free(parsed,parsed_size); yon_char_parsed_free(parsed,parsed_size);
} }
yon_char_parsed_free(parameters,size);
} }
void yon_os_password_open(GtkWidget *, main_window *widgets){ void yon_os_password_open(GtkWidget *, main_window *widgets){

@ -205,6 +205,7 @@ void config_init(){
main_config.slides = NULL; main_config.slides = NULL;
main_config.chosen_slide = NULL; main_config.chosen_slide = NULL;
main_config.os_name = NULL; main_config.os_name = NULL;
main_config.devices = yon_config_load(get_devices_command,&main_config.devices_size);
{ {
int size; int size;
config_str ret = yon_config_load(os_name_get_command,&size); config_str ret = yon_config_load(os_name_get_command,&size);
@ -451,6 +452,7 @@ void yon_main_window_create(main_window *widgets){
widgets->OSFormatEncryptionCombo = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionCombo"); widgets->OSFormatEncryptionCombo = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionCombo");
widgets->OSFormatEncryptionEntry = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionEntry"); widgets->OSFormatEncryptionEntry = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionEntry");
widgets->OSFormatEncryptionButton = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionButton"); widgets->OSFormatEncryptionButton = yon_gtk_builder_get_widget(builder,"OSFormatEncryptionButton");
widgets->OSComponentsOverallSizeLabel = yon_gtk_builder_get_widget(builder,"OSComponentsOverallSizeLabel");
widgets->UserdataDevicesTree = yon_gtk_builder_get_widget(builder,"UserdataDevicesTree"); widgets->UserdataDevicesTree = yon_gtk_builder_get_widget(builder,"UserdataDevicesTree");
widgets->UserdataSysSectionTree = yon_gtk_builder_get_widget(builder,"UserdataSysSectionTree"); widgets->UserdataSysSectionTree = yon_gtk_builder_get_widget(builder,"UserdataSysSectionTree");

@ -464,6 +464,9 @@ typedef struct
config_str partitions; config_str partitions;
int part_size; int part_size;
config_str devices;
int devices_size;
char *part_size_default; char *part_size_default;
} config; } config;
@ -643,6 +646,7 @@ typedef struct
GtkWidget *OSFormatEncryptionButton; GtkWidget *OSFormatEncryptionButton;
GtkWidget *OSSpinner; GtkWidget *OSSpinner;
GtkWidget *OSOverlay; GtkWidget *OSOverlay;
GtkWidget *OSComponentsOverallSizeLabel;
GtkWidget *UserdataGpartedButton; GtkWidget *UserdataGpartedButton;
GtkWidget *UserdataUpdateGpartedButton; GtkWidget *UserdataUpdateGpartedButton;
@ -1513,4 +1517,6 @@ void *yon_partitions_list_load(main_window *widgets);
void *yon_modules_list_load(main_window *widgets); void *yon_modules_list_load(main_window *widgets);
void yon_size_changed(GtkSpinButton *self, main_window *widgets); void yon_size_changed(GtkSpinButton *self, main_window *widgets);
void yon_pacman_software_update_overall_size(main_window *widgets); void yon_pacman_software_update_overall_size(main_window *widgets);
int yon_installation_check_packages_size(main_window *widgets); int yon_installation_check_packages_size(main_window *widgets);
config_str yon_os_components_get_modules(int *size);
int yon_os_components_check_packages_size(GtkWidget *, main_window *widgets);

@ -293,6 +293,8 @@ NULL)
#define MAP_INFO_LABEL(tz_location) yon_char_unite(_("Geasfa"),tz_location,NULL) #define MAP_INFO_LABEL(tz_location) yon_char_unite(_("Geasfa"),tz_location,NULL)
#define NOT_ENOUGH_FREE_SPACE_LABEL _("The size of the new partition exceeds the free space of the selected partition") //Размер нового раздела превышает свободное место выбранного раздела #define NOT_ENOUGH_FREE_SPACE_LABEL _("The size of the new partition exceeds the free space of the selected partition") //Размер нового раздела превышает свободное место выбранного раздела
#define NOT_ENOUGH_SPACE_LABEL _("The size of the new disk partition is larger than the size of the selected partition") //Размер нового раздела диска превышает размер выбранного раздела #define NOT_ENOUGH_SPACE_LABEL _("The size of the new disk partition is larger than the size of the selected partition") //Размер нового раздела диска превышает размер выбранного раздела
#define MODULE_NOT_ENOUGH_SPACE_LABEL _("There is not enough space to install modules")
#define PACKAGE_NOT_ENOUGH_SPACE_LABEL _("There is not enough space to install packages")
// #define _LABEL _("Chosen size:") // #define _LABEL _("Chosen size:")
// #define _LABEL _("Overall size:") // #define _LABEL _("Overall size:")

@ -172,6 +172,7 @@
<object class="GtkLabel" id="VersionLabel"> <object class="GtkLabel" id="VersionLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property>
<property name="use-markup">True</property> <property name="use-markup">True</property>
<property name="width-chars">15</property> <property name="width-chars">15</property>
<property name="track-visited-links">False</property> <property name="track-visited-links">False</property>

@ -41,6 +41,8 @@
<column type="gboolean"/> <column type="gboolean"/>
<!-- column-name Activatable --> <!-- column-name Activatable -->
<column type="gboolean"/> <column type="gboolean"/>
<!-- column-name SizeLong -->
<column type="glong"/>
</columns> </columns>
</object> </object>
<object class="GtkListStore" id="HubHardwareList"> <object class="GtkListStore" id="HubHardwareList">
@ -2101,6 +2103,62 @@ agreement</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="OSComponentsOverallSizeLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label21">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Overall size:</property>
<property name="xalign">1</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="position">3</property> <property name="position">3</property>
@ -3668,8 +3726,6 @@ agreement</property>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="halign">end</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">

Loading…
Cancel
Save