Исправлен баг с генерацией команды при редактирование

pull/4/head
Igor Belitskiy 2 years ago
parent d2377257f3
commit 8618ca96f1

@ -270,7 +270,6 @@ char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_m
return yon_char_new("-");
}
char* str_value = yon_char_from_int(value);
str_value = yon_char_divide_search(str_value, " ", -1);
if (pow_size_memory==0) {
return yon_char_unite(str_key, str_value, "K" ,NULL);
}
@ -356,33 +355,36 @@ char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int*
char* split_simvol = g_malloc0(sizeof(char)*2);
int flag_format = 0;
char* cmd_old = yon_char_new(cmd);
char* cmd_new = "";
if (_config->disk && _config->size && array_io && array_io_pow_size) {
int index_find = 0;
for (int index = 0; index < _config->size; index++) {
if (index==0) {
if (strlen(cmd)>1) {
cmd = yon_char_unite(cmd, ",", key, NULL);
}
else {
cmd = yon_char_unite(cmd, key, NULL);
}
}
if (array_io_pow_size[index] != -1 && array_io[index]!=-2 && array_io[index]!=-1) {
char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]);
cmd = yon_char_unite(cmd,
if (!strstr(num_and_pow_size, "-")) {
cmd_new = yon_char_unite(cmd_new,
split_simvol,
_config->disk[index],
num_and_pow_size, NULL);
split_simvol[0] = ',';
split_simvol[1] = '\0';
flag_format = 1;
split_simvol[0] = ',';
split_simvol[1] = '\0';
flag_format = 1;
}
free(num_and_pow_size);
}
}
}
free(split_simvol);
if (flag_format) {
if (strlen(cmd_new)>2) {
if (strlen(cmd_old) > 3) {
cmd = yon_char_unite(cmd_old, ",", key, cmd_new, NULL);
}
else {
cmd = yon_char_unite(key, cmd_new, NULL);
}
}
return cmd;
}
else {
@ -459,15 +461,20 @@ void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config) {
if (philos_check_activ_disk(widgets, _config) == 0) {
return;
}
if (_config->disk && _config->size) {
if (_config->size) {
int index_find = -1;
for (int index = 0; index < _config->size; index++) {
char* disk_cfg = _config->disk[index];
if (strstr(disk_cfg, disk) != NULL) {
index_find = index;
break;
if (_config->disk) {
for (int index = 0; index < _config->size; index++) {
char* disk_cfg = _config->disk[index];
if (disk_cfg) {
if (strstr(disk_cfg, disk) != NULL) {
index_find = index;
break;
}
}
}
}
if ((bool_read == 0 && bool_write == 0 && index_find != -1)) {
_config->disk = yon_char_parsed_shrink(_config->disk,&_config->size, index_find);
_config->size++;
@ -505,13 +512,18 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi
disk = yon_char_divide_search(disk, " ", -1);
if (disk_id != -1) {
int index_find = -1;
for (int index = 0; index < _config->size; index++) {
if (_config->disk) {
for (int index = 0; index < _config->size; index++) {
char* disk_cfg = _config->disk[index];
if (strstr(disk_cfg, disk) != NULL) {
index_find = index;
break;
if (disk_cfg) {
if (strstr(disk_cfg, disk) != NULL) {
index_find = index;
break;
}
}
}
}
if (index_find != -1) {
if (flag_check_array==0) {
if (_config->i_o_limit_read[index_find]==-2 || _config->i_o_limit_read[index_find]==-1) {
@ -574,13 +586,18 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config) {
int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite));
if (disk_id >= 0 && _config->size !=0) {
int index_find = -1;
for (int index = 0; index < _config->size; index++) {
char* disk_cfg = _config->disk[index];
if (strstr(disk_cfg, disk) != NULL) {
index_find = index;
break;
if (_config->disk){
for (int index = 0; index < _config->size; index++) {
char* disk_cfg = _config->disk[index];
if (disk_cfg) {
if (strstr(disk_cfg, disk) != NULL) {
index_find = index;
break;
}
}
}
}
if (index_find == -1) {
// Добавление
_config->disk = yon_char_parsed_append(_config->disk,&_config->size, disk);

@ -262,13 +262,13 @@ void main_update_information() {
void load_system_cfg() {
main_config.flag_load = 0;
template_load_cfg(CMD_LOAD_SYSTEM, main_config.load_system_cfg);
template_load_cfg(CMD_LOAD_SYSTEM);
yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS, BACKGROUND_IMAGE_SUCCESS_TYPE);
}
void load_global_cfg() {
main_config.flag_load = 1;
template_load_cfg(CMD_LOAD_GLOBAL, main_config.load_global_cfg);
template_load_cfg(CMD_LOAD_GLOBAL);
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
@ -304,7 +304,7 @@ void clear_array() {
main_config.size_tree_view = 0;
}
void template_load_cfg(char* cmd, dictionary* load_cfg) {
void template_load_cfg(char* cmd) {
clear_array();
int size = 0;
char** cfg = yon_config_load(cmd, &size);
@ -318,7 +318,6 @@ void template_load_cfg(char* cmd, dictionary* load_cfg) {
size_t length = strlen(str_key_value);
str_key_value = yon_char_divide(str_key_value, length-1);
}
load_cfg = yon_dictionary_create_with_data_connected(load_cfg, str_key, str_key_value);
str_split_value(str_key_value, main_config.size_tree_view);
str_split_key(str_key, main_config.size_tree_view);
main_config.size_tree_view++;
@ -939,10 +938,10 @@ void tree_view_del_line() {
void wrapper_all_save() {
int flag_mess_save = 0;
if (main_config.flag_load == 0) {
flag_mess_save = template_format_str_save(main_config.load_system_cfg, CMD_ALL_SAVE, CMD_ALL_REMOVE);
flag_mess_save = template_format_str_save(CMD_ALL_SAVE, CMD_ALL_REMOVE);
}
else {
flag_mess_save = template_format_str_save(main_config.load_global_cfg, CMD_ALL_SAVE, CMD_ALL_REMOVE);
flag_mess_save = template_format_str_save(CMD_ALL_SAVE, CMD_ALL_REMOVE);
}
if (flag_mess_save) {
yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
@ -954,7 +953,7 @@ void wrapper_all_save() {
}
void wrapper_global_save() {
if (template_format_str_save(main_config.load_global_cfg, CMD_SAVE_GLOBAL, CMD_REMOVE_GLOBAL)) {
if (template_format_str_save(CMD_SAVE_GLOBAL, CMD_REMOVE_GLOBAL)) {
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
else {
@ -964,7 +963,7 @@ void wrapper_global_save() {
}
void wrapper_system_save() {
if (template_format_str_save(main_config.load_system_cfg, CMD_SAVE_SYSTEM, CMD_REMOVE_SYSTEM)) {
if (template_format_str_save(CMD_SAVE_SYSTEM, CMD_REMOVE_SYSTEM)) {
yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
else {
@ -1054,7 +1053,7 @@ char* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, int
}
int check_save(dictionary* load_cfg) {
int check_save() {
if (main_config.flag_set_data == 1) {
return 0;
}
@ -1063,9 +1062,9 @@ int check_save(dictionary* load_cfg) {
}
return 0;
}
int template_format_str_save(dictionary* load_cfg, char* source_set_cmd, char* source_remove_cmd) {
char* cmd_remove = template_format_str_remove_save(load_cfg, source_remove_cmd);
char* cmd_set = template_format_str_set_save(load_cfg, source_set_cmd);
int template_format_str_save(char* source_set_cmd, char* source_remove_cmd) {
char* cmd_remove = template_format_str_remove_save(source_remove_cmd);
char* cmd_set = template_format_str_set_save(source_set_cmd);
if (cmd_set != NULL && cmd_remove != NULL) {
philos_config_save(yon_char_unite(cmd_set, "; " , cmd_remove, NULL));
}
@ -1090,7 +1089,7 @@ int template_format_str_save(dictionary* load_cfg, char* source_set_cmd, char* s
return 1;
}
char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) {
char* template_format_str_set_save(char* source_set_cmd) {
char* cmd = yon_char_new(source_set_cmd);
int flag_save = 0;
for (size_t index = 0; index < main_config.size_tree_view; index++) {
@ -1110,7 +1109,7 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) {
}
}
if (flag_save && check_save(load_cfg)== 0) {
if (flag_save && check_save()== 0) {
puts(cmd);
return cmd;
}
@ -1119,7 +1118,7 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) {
}
char* template_format_str_remove_save(dictionary* load_cfg, char* source_remove_cmd) {
char* template_format_str_remove_save(char* source_remove_cmd) {
char* cmd = yon_char_new(source_remove_cmd);
int flag_save = 0;
if (main_config.size_array_del_line == 0) {
@ -1267,12 +1266,8 @@ int main(int argc, char *argv[]){
gtk_init(&argc,&argv);
device_disk_parsed();
main_window *widgets = setup_window();
main_config.load_global_cfg = yon_dictionary_create_empty();
main_config.load_system_cfg = yon_dictionary_create_empty();
main_update_information();
filters_init_flag();
filters_setup_window(glade_path);
add_setup_window(glade_path);
main_localization(widgets);
tree_view_select(NULL, widgets);

@ -201,7 +201,8 @@ void tree_view_del_line();
void main_fill_tree_view_after_remove();
void load_system_cfg();
void load_global_cfg();
void template_load_cfg(char *cmd, dictionary *load_cfg);
void template_load_cfg(char *cmd);
int template_format_str_save(char* source_set_cmd, char* source_remove_cmd);
void str_split_value(char *values, int index);
void set_size_memory_integer(char* str_find, int** array_data, int index);
void set_size_memory_integer_char(char* str_find, char*** array_data, int index);
@ -214,9 +215,8 @@ void wrapper_template_save(char *check_flag);
void wrapper_system_save();
void wrapper_global_save();
void wrapper_all_save();
int template_format_str_save(dictionary *load_cfg, char *source_cmd, char* source_remove_cmd);
char* template_format_str_remove_save(dictionary* load_cfg, char* source_remove_cmd);
char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd);
char* template_format_str_remove_save(char* source_remove_cmd);
char* template_format_str_set_save(char* source_set_cmd);
char* save_format_key(int index);
void get_param_io_limit(char** arr_values, int index_start, int size, int index_n1, char *key_find);
char* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, int** i_o_limit_size, char*** disk_read, int index);

@ -71,11 +71,10 @@ void add_init_windows() {
}
void event_check_io_device() {
philos_set_active_widgets_device_io(add_widgets->cbtTempDevice,add_widgets->chbTempWrite, add_widgets->spinTempWrite, add_widgets->cbtTempWrite);
philos_set_active_widgets_device_io(add_widgets->cbtTempDevice,add_widgets->chbTempRead, add_widgets->spinTempRead, add_widgets->cbtTempRead);
add_init_windows();
philos_temp_add_disk(add_widgets, &obj_add_config);
philos_temp_del_disk(add_widgets, &obj_add_config);
add_init_windows();
philos_temp_generate_cmd(add_widgets, &obj_add_config);
}
void combo_box_device() {
@ -108,10 +107,10 @@ void add_event(temp_set_window *widgets) {
g_signal_connect(G_OBJECT(widgets->cbxTempQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL);
g_signal_connect(G_OBJECT(widgets->cbxTempQuotaLevel2),"changed",G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionTemp),"changed",G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionTemp),"changed",G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinPaddingFLTemp),"changed",G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"changed",G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionTemp),"value-changed",G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionTemp),"value-changed",G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinPaddingFLTemp),"value-changed",G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"value-changed",G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionTemp),"changed",G_CALLBACK(add_init_windows), NULL);
@ -121,8 +120,8 @@ void add_event(temp_set_window *widgets) {
g_signal_connect(G_OBJECT(widgets->cbtTempDevice),"changed",G_CALLBACK(combo_box_device), NULL);
g_signal_connect(G_OBJECT(widgets->cbtTempRead),"changed",G_CALLBACK(event_check_io_device), NULL);
g_signal_connect(G_OBJECT(widgets->cbtTempWrite),"changed",G_CALLBACK(event_check_io_device), NULL);
g_signal_connect(G_OBJECT(widgets->spinTempRead),"changed",G_CALLBACK(event_check_io_device), NULL);
g_signal_connect(G_OBJECT(widgets->spinTempWrite),"changed",G_CALLBACK(event_check_io_device), NULL);
g_signal_connect(G_OBJECT(widgets->spinTempRead),"value-changed",G_CALLBACK(event_check_io_device), NULL);
g_signal_connect(G_OBJECT(widgets->spinTempWrite),"value-changed",G_CALLBACK(event_check_io_device), NULL);
g_signal_connect(G_OBJECT(widgets->chbTempRead), "toggled", G_CALLBACK(event_check_io_device), NULL);
g_signal_connect(G_OBJECT(widgets->chbTempWrite), "toggled", G_CALLBACK(event_check_io_device), NULL);
}

@ -57,12 +57,12 @@ void edit_event(temp_set_window *widgets) {
g_signal_connect(G_OBJECT(widgets->chbTempRead), "toggled", G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->chbTempWrite), "toggled", G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionTemp),"changed",G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionTemp),"changed",G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinPaddingFLTemp),"changed",G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"changed",G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinTempRead),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL);
g_signal_connect(G_OBJECT(widgets->spinTempWrite),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL);
g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinPaddingFLTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->spinTempRead),"value-changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL);
g_signal_connect(G_OBJECT(widgets->spinTempWrite),"value-changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL);
g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spiSevereRestrictionTemp);
g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinSevereRestrictionTemp);
g_signal_connect(G_OBJECT(widgets->cmbPaddingFLTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinPaddingFLTemp);
@ -98,16 +98,11 @@ void edit_show(GtkWidget *self, char* glade_path) {
}
}
void wrapper_edit_init_windows_size_memory(GtkWidget *spin) {
if (spin != NULL) {
// gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0);
}
philos_set_active_widgets_device_io(edit_widgets->cbtTempDevice,edit_widgets->chbTempWrite, edit_widgets->spinTempWrite, edit_widgets->cbtTempWrite);
philos_set_active_widgets_device_io(edit_widgets->cbtTempDevice,edit_widgets->chbTempRead, edit_widgets->spinTempRead, edit_widgets->cbtTempRead);
void wrapper_edit_init_windows_size_memory() {
philos_temp_add_disk(edit_widgets, &obj_edit_config);
philos_temp_del_disk(edit_widgets, &obj_edit_config);
edit_init_windows();
philos_temp_generate_cmd(edit_widgets, &obj_edit_config);
}
void edit_init_windows() {
@ -202,6 +197,10 @@ char*** edit_get_select_device() {
obj_edit_config.disk = yon_char_parsed_append(obj_edit_config.disk,&index, "-");
obj_edit_config.disk = yon_char_parsed_append(obj_edit_config.disk,&index, NULL);
}
if (index == 0) {
obj_edit_config.disk = yon_char_parsed_append(obj_edit_config.disk,&obj_edit_config.size, NULL);
obj_edit_config.size--;
}
return &obj_edit_config.disk;
}
int edit_get_soft() {
@ -230,9 +229,26 @@ void edit_set_select_device(char*** str_value) {
if ((*str_value)[0] == NULL) {
return;
}
yon_char_parsed_copy(&obj_edit_config.disk, str_value);
int index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, (*str_value)[0]);
gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index);
if (str_value) {
if ((*str_value)) {
if ((*str_value)[0] != NULL && strstr((*str_value)[0], "-") == NULL) {
yon_char_parsed_copy(&obj_edit_config.disk, str_value);
int index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, (*str_value)[0]);
gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index);
}
else {
obj_edit_config.size = 0;
}
}
else {
obj_edit_config.size = 0;
}
}
else {
obj_edit_config.size = 0;
}
@ -244,13 +260,17 @@ void edit_set_read_device(int* str_value, int* pow_mem) {
if (str_value[0] == -2 || pow_mem[0] == -2) {
return;
}
edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempRead,
if (str_value && pow_mem) {
if (str_value[0] != -2 && pow_mem[0] != -2 && pow_mem[0] != -3) {
philos_array_int_copy(&obj_edit_config.i_o_limit_read, &str_value);
philos_array_int_copy(&obj_edit_config.i_o_limit_read_size, &pow_mem);
edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempRead,
edit_widgets->spinTempRead,
edit_widgets->cbtTempRead);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempRead), 1);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1);
philos_array_int_copy(&obj_edit_config.i_o_limit_read, &str_value);
philos_array_int_copy(&obj_edit_config.i_o_limit_read_size, &pow_mem);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempRead), 1);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1);
}
}
}
void edit_set_write_device(int* str_value, int* pow_mem) {
if (str_value == NULL || pow_mem == NULL) {
@ -262,11 +282,15 @@ void edit_set_write_device(int* str_value, int* pow_mem) {
else {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1);
}
edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempWrite,
edit_widgets->spinTempWrite,
edit_widgets->cbtTempWrite);
philos_array_int_copy(&obj_edit_config.i_o_limit_write, &str_value);
philos_array_int_copy(&obj_edit_config.i_o_limit_write_size, &pow_mem);
if (str_value && pow_mem) {
if (str_value[0] != -2 && pow_mem[0] != -2 && pow_mem[0] != -3) {
edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempWrite,
edit_widgets->spinTempWrite,
edit_widgets->cbtTempWrite);
philos_array_int_copy(&obj_edit_config.i_o_limit_write, &str_value);
philos_array_int_copy(&obj_edit_config.i_o_limit_write_size, &pow_mem);
}
}
}
void edit_set_size_arrays(size_t size_array) {
obj_edit_config.size = size_array;

@ -28,7 +28,7 @@ void combo_box_device_edit();
void edit_show(GtkWidget *self, char* glade_path);
void edit_destroy(GtkWidget *self);
void edit_init_windows();
void wrapper_edit_init_windows_size_memory(GtkWidget *spin);
void wrapper_edit_init_windows_size_memory();
void edit_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd);
char*** edit_get_select_device();
int** edit_get_read_device();

Loading…
Cancel
Save