diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 0610711..92d285f 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -733,23 +733,36 @@ int tree_view_edit() { main_config.hard_raw_limit[index] = edit_get_hard(); main_config.swap[index] = edit_get_limit_swap(); main_config.cpu_limit[index] = edit_get_limit_cpu(); - //main_config.i_o_limit_read[index] = edit_get_read_device(); - //main_config.i_o_limit_write[index] = edit_get_write_device(); + // philos_free_string_array(&main_config.i_o_limit_read[index], index); + // philos_free_int_array(&main_config.i_o_limit_read_size[index], index); + // philos_free_string_array(&main_config.i_o_limit_write[index], index); + // philos_free_int_array(&main_config.i_o_limit_write_size[index], index); + // philos_free_string_array(&main_config.disk[index], index); + + yon_char_parsed_copy(&main_config.i_o_limit_read[index], edit_get_read_device()); + philos_array_int_copy(&main_config.i_o_limit_read_size[index], edit_get_read_device_size_pow()); + yon_char_parsed_copy(&main_config.disk[index], edit_get_select_device()); + + yon_char_parsed_copy(&main_config.i_o_limit_write[index], edit_get_write_device()); + philos_array_int_copy(&main_config.i_o_limit_write_size[index], edit_get_write_device_size_pow()); + yon_char_parsed_copy(&main_config.disk[index], edit_get_select_device()); + main_config.soft_raw_limit_size[index] = edit_get_soft_size(); main_config.hard_raw_limit_size[index] = edit_get_hard_size(); main_config.swap_size[index] = edit_get_limit_swap_size(); main_config.cpu_limit_size[index] = edit_get_limit_cpu_size(); - //main_config.i_o_limit_read_size[index] = edit_get_read_device_size(); - //main_config.i_o_limit_write_size[index] = edit_get_write_device_size(); + + char* str_io_read = format_io_limit_in_tree_view(main_config.disk, main_config.i_o_limit_read, main_config.i_o_limit_read_size, index); + char* str_io_write = format_io_limit_in_tree_view(main_config.disk, main_config.i_o_limit_write, main_config.i_o_limit_write_size, index); gtk_list_store_set(main_config.list,&iter,0,main_config.type_quota[index], 1,main_config.quota_volume[index], 2,main_config.soft_raw_limit[index], 3,main_config.hard_raw_limit[index], 4,main_config.swap[index], - 5,main_config.cpu_limit[index] - /*6,main_config.i_o_limit_read[index], - 7,main_config.i_o_limit_write[index],-1*/); + 5,main_config.cpu_limit[index], + 6,str_io_read, + 7,str_io_write,-1); return 1; } else { @@ -892,11 +905,17 @@ void tree_view_del_line() { main_config.size_tree_view++; main_config.cpu_limit = yon_char_parsed_shrink(main_config.cpu_limit, &main_config.size_tree_view,index); main_config.size_tree_view++; - //main_config.i_o_limit_read = yon_char_parsed_shrink(main_config.i_o_limit_read, &main_config.size_tree_view,index); - //main_config.size_tree_view++; - //main_config.i_o_limit_write = yon_char_parsed_shrink(main_config.i_o_limit_write, &main_config.size_tree_view,index); - //main_config.size_tree_view++; - + main_config.i_o_limit_read = yon_char_parsed_shrink_n3(main_config.i_o_limit_read, &main_config.size_tree_view,index); + main_config.size_tree_view++; + main_config.i_o_limit_write = yon_char_parsed_shrink_n3(main_config.i_o_limit_write, &main_config.size_tree_view,index); + main_config.size_tree_view++; + main_config.i_o_limit_write = yon_char_parsed_shrink_n3(main_config.disk, &main_config.size_tree_view,index); + main_config.size_tree_view++; + + main_config.i_o_limit_read_size = remove_element_int_array_n3(main_config.i_o_limit_read_size, &main_config.size_tree_view,index); + main_config.size_tree_view++; + main_config.i_o_limit_write_size = remove_element_int_array_n3(main_config.i_o_limit_write_size, &main_config.size_tree_view,index); + main_config.size_tree_view++; main_config.type_quota_size = remove_element_int_array(main_config.type_quota_size, &main_config.size_tree_view,index); main_config.size_tree_view++; main_config.quota_volume_size = remove_element_int_array(main_config.quota_volume_size, &main_config.size_tree_view,index); @@ -908,10 +927,7 @@ void tree_view_del_line() { main_config.swap_size = remove_element_int_array(main_config.swap_size, &main_config.size_tree_view,index); main_config.size_tree_view++; main_config.cpu_limit_size = remove_element_int_array(main_config.cpu_limit_size, &main_config.size_tree_view,index); - //main_config.size_tree_view++; - //main_config.i_o_limit_read_size = remove_element_int_array(main_config.i_o_limit_read_size, &main_config.size_tree_view,index); - //main_config.size_tree_view++; - //main_config.i_o_limit_write_size = remove_element_int_array(main_config.i_o_limit_write_size, &main_config.size_tree_view,index); + main_fill_tree_view_after_remove(); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), model); free(str_iter); @@ -992,14 +1008,6 @@ char* save_format_value(int index) { } value = add_io_str_format_ubconfig(value, "IOReadBandwidthMax", main_config.i_o_limit_read, main_config.disk, index); value = add_io_str_format_ubconfig(value, "IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.disk, index); - //if (strstr(main_config.i_o_limit_read[index], "-") == NULL) { - //value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("IOReadBandwidthMax", main_config.i_o_limit_read[index],main_config.i_o_limit_read_size[index]), NULL); - // split_simvol[0] = ','; - // split_simvol[1] = '\0'; - //} - //if (strstr(main_config.i_o_limit_write[index], "-") == NULL) { - //value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("IOWriteBandwidthMax", main_config.i_o_limit_write[index],main_config.i_o_limit_write_size[index]), NULL); - //} return value; } char* add_io_str_format_ubconfig(char* cmd_io, char* key, char*** i_o_limit, char*** disk, int index) { @@ -1113,14 +1121,16 @@ void main_fill_tree_view_after_remove() { for (int index= 0; index < main_config.size_tree_view; index++) { GtkTreeIter iter; gtk_list_store_append(main_config.list,&iter); + char* str_io_read = format_io_limit_in_tree_view(main_config.disk, main_config.i_o_limit_read, main_config.i_o_limit_read_size, index); + char* str_io_write = format_io_limit_in_tree_view(main_config.disk, main_config.i_o_limit_write, main_config.i_o_limit_write_size, index); gtk_list_store_set(main_config.list,&iter,0,main_config.type_quota[index], 1,main_config.quota_volume[index], 2,main_config.soft_raw_limit[index], 3,main_config.hard_raw_limit[index], 4,main_config.swap[index], - 5,main_config.cpu_limit[index] - /*6,main_config.i_o_limit_read[index], - 7,main_config.i_o_limit_write[index],-1*/); + 5,main_config.cpu_limit[index], + 6,str_io_read, + 7,str_io_write,-1); } } @@ -1236,8 +1246,8 @@ int main(int argc, char *argv[]){ gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css), -1); - //load_global_cfg(); - //load_system_cfg(); + load_global_cfg(); + load_system_cfg(); gtk_main(); } diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 9064cf9..f6c6ee7 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -756,6 +756,25 @@ char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete) return new_char_parsed; } +char*** yon_char_parsed_shrink_n3(char ***char_string, int *size, int item_to_delete){ + char ***new_char_parsed=NULL; + new_char_parsed=malloc(sizeof(char**)*((*size)-1)); + int flag = 0; + for (int i=0;i < (*size);i++){ + if (i==item_to_delete) { + flag = 1; + } + if (flag == 0) { + yon_char_parsed_copy(&char_string[i], &new_char_parsed[i]); + } + else if (flag == 1 && i!=item_to_delete) { + yon_char_parsed_copy(&char_string[i], &new_char_parsed[i-1]); + } + } + (*size)=(*size)-1; + return new_char_parsed; +} + /**[EN] * * Checks if [parameters] string array of length [size] @@ -1162,6 +1181,25 @@ int* remove_element_int_array(int* array, int* size, int item_to_delete) { (*size)=(*size)-1; return new_int_parsed; } + +int** remove_element_int_array_n3(int** array, int* size, int item_to_delete) { + int **new_int_parsed=NULL; + new_int_parsed=malloc(sizeof(int*)*((*size)-1)); + int flag = 0; + for (int i=0;i < (*size);i++){ + if (i==item_to_delete) { + flag = 1; + } + if (flag == 0) { + philos_array_int_copy(&array[i],&new_int_parsed[i]); + } + else if (flag == 1 && i!=item_to_delete) { + philos_array_int_copy(&array[i],&new_int_parsed[i-1]); + } + } + (*size)=(*size)-1; + return new_int_parsed; +} // Gtk functions @@ -1271,7 +1309,6 @@ int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find){ for (int i=0;strcmp(str,"")!=0;i++){ gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box),i); str=gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo_box)); - puts(str); if (!str) return -1; if (strstr(str,text_to_find)) return i; } diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 95573fd..8fa037e 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -162,6 +162,8 @@ void philos_array_string_remove_char(char*** array, char* str_remove, int size) char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete); +char*** yon_char_parsed_shrink_n3(char ***char_string, int *size, int item_to_delete); + int yon_char_parsed_check_exist(char **parameters, int size, char *param); int yon_char_find_count(char *source, char *find); @@ -212,6 +214,8 @@ int yon_launch(thread_output *thread); int* philos_int_append(int* array, int* size, int value); int* remove_element_int_array(int* array, int* size, int item_to_delete); + +int** remove_element_int_array_n3(int** array, int* size, int item_to_delete); // Gtk functions #ifdef __GTK_H__ diff --git a/source/view_edit.c b/source/view_edit.c index 3f841b0..c046487 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -129,24 +129,6 @@ void edit_init_windows() { edit_generate_cmd(); } -char* edit_get_select_device() { - char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(edit_widgets->cbtEditDevice)); - if (text != NULL) { - return text; - } - else { - char* str = (char*)malloc(sizeof(char*)*2); - str[0] = '-'; - str[1] = '\0'; - return str; - } -} -int edit_get_read_device_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbtEditRead)); -} -int edit_get_write_device_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbtEditWrite)); -} int edit_get_soft_size() { return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cmSevereRestrictionEdit)); } @@ -160,13 +142,20 @@ int edit_get_limit_swap_size() { return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cmbPaddingFLEdit)); } -char* edit_get_read_device() { - return philos_get_size_bite(edit_widgets->chbEditRead, edit_widgets->spinEditRead, - edit_widgets->cbtEditRead); +char*** edit_get_read_device() { + return &obj_edit_config.i_o_limit_read; +} +int** edit_get_read_device_size_pow() { + return &obj_edit_config.i_o_limit_read_size; +} +char*** edit_get_write_device() { + return &obj_edit_config.i_o_limit_write; +} +int** edit_get_write_device_size_pow() { + return &obj_edit_config.i_o_limit_write_size; } -char* edit_get_write_device() { - return philos_get_size_bite(edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, - edit_widgets->cbtEditWrite); +char*** edit_get_select_device() { + return &obj_edit_config.disk; } char* edit_get_soft() { return philos_get_size_bite(edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, diff --git a/source/view_edit.h b/source/view_edit.h index 6aa9f10..3a9e066 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -68,9 +68,9 @@ void edit_destroy(GtkWidget *self); void edit_init_windows(); void wrapper_edit_init_windows_size_memory(GtkWidget *spin); void edit_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); -char* edit_get_select_device(); -char* edit_get_read_device(); -char* edit_get_write_device(); +char*** edit_get_select_device(); +char*** edit_get_read_device(); +char*** edit_get_write_device(); char* edit_get_soft(); char* edit_get_hard(); char* edit_get_limit_cpu(); @@ -85,9 +85,9 @@ void edit_set_hard(char* str_value, int pow_mem); void edit_set_limit_cpu(char* str_value, int pow_mem); void edit_set_limit_swap(char* str_value, int pow_mem); void edit_temp_set(char* str_value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, GtkWidget* combo_box_text); +int** edit_get_read_device_size_pow(); +int** edit_get_write_device_size_pow(); -int edit_get_read_device_size(); -int edit_get_write_device_size(); int edit_get_soft_size(); int edit_get_hard_size(); int edit_get_limit_cpu_size();