From 22a5defbcdb0aea385009caf7d2a11245ee61ed9 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 16 Jun 2023 10:21:47 +0600 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D1=83=20?= =?UTF-8?q?=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B2=20=D0=BE=D0=BA?= =?UTF-8?q?=D0=BD=D0=BE=20"=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 34 +++++++++--------- source/ubl-settings-resourcequota.h | 3 +- source/ubl-utils.c | 11 ++++-- source/view_edit.c | 53 +++++++++++++++++++++-------- source/view_edit.h | 6 ++-- 5 files changed, 68 insertions(+), 39 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index e7b8a0f..0610711 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -281,8 +281,7 @@ void clear_array() { philos_free_string_array(&main_config.cpu_limit, main_config.size_tree_view); philos_free_string_array_n3(&main_config.i_o_limit_read, main_config.size_tree_view); philos_free_string_array_n3(&main_config.i_o_limit_write, main_config.size_tree_view); - philos_free_string_array_n3(&main_config.disk_read, main_config.size_tree_view); - philos_free_string_array_n3(&main_config.disk_write, main_config.size_tree_view); + philos_free_string_array_n3(&main_config.disk, main_config.size_tree_view); philos_free_string_array(&main_config.array_del_line, main_config.size_array_del_line); main_config.size_array_del_line = 0; @@ -300,8 +299,7 @@ void clear_array() { main_config.i_o_limit_read_size = NULL; main_config.i_o_limit_write = NULL; main_config.i_o_limit_write_size = NULL; - main_config.disk_read = NULL; - main_config.disk_write = NULL; + main_config.disk = NULL; main_config.size_tree_view = 0; } @@ -505,18 +503,18 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ if (strstr(key_find, "IOReadBandwidthMax")!=NULL) { main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (index_n1 + 1) * sizeof(char**)); main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (index_n1 + 1) * sizeof(int*)); - main_config.disk_read = yon_remalloc(main_config.disk_read, (index_n1 + 1) * sizeof(char**)); + main_config.disk = yon_remalloc(main_config.disk, (index_n1 + 1) * sizeof(char**)); yon_char_parsed_copy(&main_config.i_o_limit_read[index_n1], &array_limit); philos_array_int_copy(&main_config.i_o_limit_read_size[index_n1], &array_limit_size); - yon_char_parsed_copy(&main_config.disk_read[index_n1], &array_disk); + yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); } else { main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (index_n1 + 1) * sizeof(char**)); main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (index_n1 + 1) * sizeof(int*)); - main_config.disk_write = yon_remalloc(main_config.disk_write, (index_n1 + 1) * sizeof(char**)); + main_config.disk = yon_remalloc(main_config.disk, (index_n1 + 1) * sizeof(char**)); yon_char_parsed_copy(&main_config.i_o_limit_write[index_n1], &array_limit); philos_array_int_copy(&main_config.i_o_limit_write_size[index_n1], &array_limit_size); - yon_char_parsed_copy(&main_config.disk_write[index_n1], &array_disk); + yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); } philos_free_string_array(&array_limit, index_n2); philos_free_string_array(&array_disk, index_n2); @@ -670,8 +668,8 @@ void fill_tree_view(int start, int size, int flag_gui_add) { for (int index = start; index < size; index++) { GtkTreeIter iter; gtk_list_store_append(main_config.list,&iter); - char* str_io_read = format_io_limit_in_tree_view(main_config.disk_read, 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_write, main_config.i_o_limit_write, main_config.i_o_limit_write_size, index); + 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], @@ -845,17 +843,17 @@ void wrapper_edit_show() { char* str_iter = gtk_tree_model_get_string_from_iter(model, &iter); int index = atoi(str_iter); edit_show(NULL, glade_path); - //edit_set_select_device(main_config.disk[index]); + edit_set_select_device(&main_config.disk[index]); + edit_set_read_device(&main_config.i_o_limit_read[index], &main_config.i_o_limit_read_size[index]); edit_set_hard(main_config.hard_raw_limit[index], main_config.hard_raw_limit_size[index]); edit_set_limit_cpu(main_config.cpu_limit[index], main_config.cpu_limit_size[index]); edit_set_soft(main_config.soft_raw_limit[index], main_config.soft_raw_limit_size[index]); - //edit_set_write_device(main_config.i_o_limit_write[index], main_config.i_o_limit_write_size[index]); - //edit_set_read_device(main_config.i_o_limit_read[index], main_config.i_o_limit_read_size[index]); + edit_set_write_device(&main_config.i_o_limit_write[index], &main_config.i_o_limit_write_size[index]); edit_init_windows(); edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]); edit_event(get_widget_edit()); - // edit_set_select_device(main_config.cpu_limit[index]); g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveEditSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL); + edit_init_windows(); } } @@ -992,8 +990,8 @@ char* save_format_value(int index) { split_simvol[0] = ','; split_simvol[1] = '\0'; } - value = add_io_str_format_ubconfig(value, "IOReadBandwidthMax", main_config.i_o_limit_read, main_config.disk_read, index); - value = add_io_str_format_ubconfig(value, "IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.disk_write, 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] = ','; @@ -1004,7 +1002,7 @@ char* save_format_value(int index) { //} return value; } -char* add_io_str_format_ubconfig(char* cmd_io, char* key, char*** i_o_limit, char*** disk_read, int index) { +char* add_io_str_format_ubconfig(char* cmd_io, char* key, char*** i_o_limit, char*** disk, int index) { char split_simvol[2] = {0}; if (i_o_limit != NULL) { if (i_o_limit[index] != NULL) { @@ -1014,7 +1012,7 @@ char* add_io_str_format_ubconfig(char* cmd_io, char* key, char*** i_o_limit, ch cmd_io = yon_char_unite(cmd_io, ",", key, "="); } char* read_limit = i_o_limit[index][i]; - char* read_limit_disk = disk_read[index][i]; + char* read_limit_disk = disk[index][i]; cmd_io = yon_char_unite(cmd_io, split_simvol, read_limit_disk, " ", read_limit); split_simvol[0] = ','; split_simvol[1] = '\0'; diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 4b54ab0..d5e7258 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -81,8 +81,7 @@ typedef struct config_str cpu_limit; config_str* i_o_limit_read; config_str* i_o_limit_write; - config_str* disk_read; - config_str* disk_write; + config_str* disk; config_str array_del_line; int size_array_del_line; diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 9c5ba84..9064cf9 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -1271,6 +1271,7 @@ 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; } @@ -1508,7 +1509,10 @@ void philos_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *com gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); gtk_widget_set_sensitive(spin, active); gtk_widget_set_sensitive(combo, active); - if (active == 0) { + if (gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin))>0) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); + } + else if (active == 0) { gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } if (flag_cpu == 0) { @@ -1547,7 +1551,10 @@ void philos_set_active_widgets_device_io(GtkWidget* combo_to_l2,GtkWidget *check gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); gtk_widget_set_sensitive(spin, active); gtk_widget_set_sensitive(combo, active); - if (active == 0) { + if (gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin))>0) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); + } + else if (active == 0) { gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } } diff --git a/source/view_edit.c b/source/view_edit.c index fa38a05..3f841b0 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -39,10 +39,10 @@ edit_window *edit_setup_window(char* glade_path){ edit_widgets->chbEditWrite = yon_gtk_builder_get_widget(builder,"chbEditWrite"); edit_widgets->cbtEditWrite = yon_gtk_builder_get_widget(builder,"cbtEditWrite"); edit_widgets->entryEditCmd = yon_gtk_builder_get_widget(builder,"entryEditCmd"); + edit_config_init(); device_fill_disk(edit_widgets->cbtEditDevice); // edit_event(edit_widgets); edit_localization(edit_widgets); - edit_config_init(); } return edit_widgets; } @@ -194,20 +194,45 @@ char* edit_get_limit_swap() { } // ================================================================= -void edit_set_select_device(char** str_value) { +void edit_set_select_device(char*** str_value) { + if ((*str_value) == NULL) { + return; + } + if ((*str_value)[0] == NULL) { + return; + } + int index = yon_gtk_combo_box_text_find(edit_widgets->cbtEditDevice, (*str_value)[0]); + gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice), index); + - //int index = yon_gtk_combo_box_text_find(edit_widgets->cbtEditDevice,str_value); - //gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice), index); -} -void edit_set_read_device(char** str_value, int* pow_mem) { - //edit_temp_set(str_value,pow_mem, edit_widgets->chbEditRead, - // edit_widgets->spinEditRead, - // edit_widgets->cbtEditRead); -} -void edit_set_write_device(char** str_value, int* pow_mem) { - // edit_temp_set(str_value,pow_mem, edit_widgets->chbEditWrite, - // edit_widgets->spinEditWrite, - // edit_widgets->cbtEditWrite); + +} +void edit_set_read_device(char*** str_value, int** pow_mem) { + if ((*str_value) == NULL || (*pow_mem) == NULL) { + return; + } + if ((*str_value)[0] == NULL || (*pow_mem)[0] == -2) { + return; + } + edit_temp_set((*str_value)[0],(*pow_mem)[0], edit_widgets->chbEditRead, + edit_widgets->spinEditRead, + edit_widgets->cbtEditRead); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditRead), 1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditWrite), 1); +} +void edit_set_write_device(char*** str_value, int** pow_mem) { + if ((*str_value) == NULL || (*pow_mem) == NULL) { + return; + } + if ((*str_value)[0] == NULL || (*pow_mem)[0] == -2) { + return; + } + else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditWrite), 1); + } + edit_temp_set((*str_value)[0],(*pow_mem)[0], edit_widgets->chbEditWrite, + edit_widgets->spinEditWrite, + edit_widgets->cbtEditWrite); } void edit_set_soft(char* str_value, int pow_mem) { edit_temp_set(str_value,pow_mem, edit_widgets->chkSoftRestrictionEdit, diff --git a/source/view_edit.h b/source/view_edit.h index 245df04..6aa9f10 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -77,9 +77,9 @@ char* edit_get_limit_cpu(); char* edit_get_limit_swap(); void edit_generate_cmd(); void wrapper_edit_show(); -void edit_set_select_device(char** str_value); -void edit_set_read_device(char** str_value, int* pow_mem); -void edit_set_write_device(char** str_value, int* pow_mem); +void edit_set_select_device(char*** str_value); +void edit_set_read_device(char*** str_value, int** pow_mem); +void edit_set_write_device(char*** str_value, int** pow_mem); void edit_set_soft(char* str_value, int pow_mem); void edit_set_hard(char* str_value, int pow_mem); void edit_set_limit_cpu(char* str_value, int pow_mem);