#include "view_add.h" #include "ubl-utils.h" add_window *add_widgets = NULL; add_config obj_add_config; add_config* get_add_config() { return &obj_add_config; } add_window *add_setup_window(char* glade_path) { if (add_widgets == NULL) { add_widgets = malloc(sizeof(add_window)); GtkBuilder *builder = gtk_builder_new_from_file(glade_path); add_widgets->Window = yon_gtk_builder_get_widget(builder,"wndQuotasAdding"); add_widgets->btnSaveAddSave = yon_gtk_builder_get_widget(builder,"btnSaveAddSave"); add_widgets->btnAddCancel = yon_gtk_builder_get_widget(builder,"btnAddCancel"); add_widgets->entryAddCmd = yon_gtk_builder_get_widget(builder,"entryAddCmd"); add_widgets->cbxAddQuotaObj = yon_gtk_builder_get_widget(builder,"cbxAddQuotaObj"); add_widgets->cbxAddQuotaLevel2 = yon_gtk_builder_get_widget(builder,"cbxAddQuotaLevel2"); add_widgets->cbtAddDevice = yon_gtk_builder_get_widget(builder,"cbtAddDevice"); add_widgets->lblCPULimitAdd = yon_gtk_builder_get_widget(builder,"lblCPULimitAdd"); add_widgets->spinCPULimitAdd = yon_gtk_builder_get_widget(builder,"spinCPULimitAdd"); add_widgets->chkCPULimitAdd = yon_gtk_builder_get_widget(builder,"chkCPULimitAdd"); add_widgets->chkPaddingFLAdd = yon_gtk_builder_get_widget(builder,"chkPaddingFLAdd"); add_widgets->spinPaddingFLAdd = yon_gtk_builder_get_widget(builder,"spinPaddingFLAdd"); add_widgets->cmbPaddingFLAdd = yon_gtk_builder_get_widget(builder,"cmbPaddingFLAdd"); add_widgets->chkSevereRestrictionAdd = yon_gtk_builder_get_widget(builder,"chkSevereRestrictionAdd"); add_widgets->spinSevereRestrictionAdd = yon_gtk_builder_get_widget(builder,"spinSevereRestrictionAdd"); add_widgets->cmbSevereRestrictionAdd = yon_gtk_builder_get_widget(builder,"cmbSevereRestrictionAdd"); add_widgets->chkSoftRestrictionAdd = yon_gtk_builder_get_widget(builder,"chkSoftRestrictionAdd"); add_widgets->spiSevereRestrictionAdd = yon_gtk_builder_get_widget(builder,"spiSevereRestrictionAdd"); add_widgets->cmSevereRestrictionAdd = yon_gtk_builder_get_widget(builder,"cmSevereRestrictionAdd"); add_widgets->chbAddRead = yon_gtk_builder_get_widget(builder,"chbAddRead"); add_widgets->spinAddRead = yon_gtk_builder_get_widget(builder,"spinAddRead"); add_widgets->cbtAddRead = yon_gtk_builder_get_widget(builder,"cbtAddRead"); add_widgets->spinAddWrite = yon_gtk_builder_get_widget(builder,"spinAddWrite"); add_widgets->chbAddWrite = yon_gtk_builder_get_widget(builder,"chbAddWrite"); add_widgets->cbtAddWrite = yon_gtk_builder_get_widget(builder,"cbtAddWrite"); add_widgets->boxBlockGui = yon_gtk_builder_get_widget(builder,"boxBlockGui"); device_fill_disk(add_widgets->cbtAddDevice); add_event(add_widgets); add_init_windows(); add_localization(add_widgets); add_config_init(); } return add_widgets; } // flag_check_array = 0 READ // flag_check_array = 1 WRITE void update_device_to_entry(GtkWidget *combo_box, GtkWidget *combo_box_size, GtkWidget *check_button, GtkWidget *spin, int flag_check_array) { int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box)); char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); disk = yon_char_divide_search(disk, " ", -1); if (disk_id != -1) { int index_find = -1; for (int index = 0; index < obj_add_config.size; index++) { char* disk_cfg = obj_add_config.disk[index]; if (strstr(disk_cfg, disk) != NULL) { index_find = index; break; } } if (index_find != -1) { if (flag_check_array==0) { if (strstr(obj_add_config.i_o_limit_read[index_find],"-")) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), atoll(obj_add_config.i_o_limit_read[index_find])); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), obj_add_config.i_o_limit_read_size[index_find]); } } else if (flag_check_array==1) { if (strstr(obj_add_config.i_o_limit_write[index_find],"-")) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), atoll(obj_add_config.i_o_limit_write[index_find])); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), obj_add_config.i_o_limit_write_size[index_find]); } } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); } } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); } } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); } } void add_config_init() { if (obj_add_config.size != 0) { philos_free_string_array(&obj_add_config.disk, obj_add_config.size); philos_free_string_array(&obj_add_config.i_o_limit_read, obj_add_config.size); philos_free_int_array(&obj_add_config.i_o_limit_read_size, obj_add_config.size); philos_free_string_array(&obj_add_config.i_o_limit_write, obj_add_config.size); philos_free_int_array(&obj_add_config.i_o_limit_write_size, obj_add_config.size); } obj_add_config.disk = NULL; obj_add_config.i_o_limit_read = NULL; obj_add_config.i_o_limit_write = NULL; obj_add_config.i_o_limit_read_size = NULL; obj_add_config.i_o_limit_write_size = NULL; obj_add_config.size = 0; } void add_init_windows() { if (gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaLevel2)) != -1) { gtk_widget_set_sensitive(add_widgets->boxBlockGui, 1); gtk_widget_set_sensitive(add_widgets->btnSaveAddSave, 1); philos_set_active_widgets(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, add_widgets->cmSevereRestrictionAdd, 0 , CMD_RAW); philos_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd,0 , CMD_RAW); philos_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd,0 , CMD_SWAP); philos_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd,1 , CMD_CPU); philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); add_generate_cmd(); } else { gtk_widget_set_sensitive(add_widgets->boxBlockGui, 0); gtk_widget_set_sensitive(add_widgets->btnSaveAddSave, 0); add_generate_cmd(); } } int check_activ_disk() { char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); disk = yon_char_divide_search(disk," ", -1); int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)); int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite)); if (disk == NULL || obj_add_config.size == 0) { return 0; } return 1; } void add_del_disk() { char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); disk = yon_char_divide_search(disk, " ", -1); int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)); int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite)); if (check_activ_disk() == 0) { return; } if (obj_add_config.disk && obj_add_config.size) { int index_find = -1; printf("%d\n", obj_add_config.size); for (int index = 0; index < obj_add_config.size; index++) { char* disk_cfg = obj_add_config.disk[index]; if (strstr(disk_cfg, disk) != NULL) { index_find = index; break; } } if ((bool_read == 0 && bool_write == 0 && index_find != -1)) { obj_add_config.disk = yon_char_parsed_shrink(obj_add_config.disk,&obj_add_config.size, index_find); obj_add_config.size++; obj_add_config.i_o_limit_read_size = remove_element_int_array(obj_add_config.i_o_limit_read_size,&obj_add_config.size, index_find); obj_add_config.size++; obj_add_config.i_o_limit_write_size = remove_element_int_array(obj_add_config.i_o_limit_write_size,&obj_add_config.size, index_find); obj_add_config.size++; obj_add_config.i_o_limit_read = yon_char_parsed_shrink(obj_add_config.i_o_limit_read,&obj_add_config.size, index_find); obj_add_config.size++; obj_add_config.i_o_limit_write = yon_char_parsed_shrink(obj_add_config.i_o_limit_write,&obj_add_config.size, index_find); } } } char* pard_array_add_cmd(char* cmd, char* key, char** array_io, int* array_io_pow_size) { char* split_simvol = g_malloc0(sizeof(char)*2); int flag_format = 0; char* cmd_old = yon_char_new(cmd); if (obj_add_config.disk && obj_add_config.size && array_io && array_io_pow_size) { int index_find = 0; printf("\n%i\n", obj_add_config.size); for (int index = 0; index < obj_add_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) { cmd = yon_char_unite(cmd, split_simvol, obj_add_config.disk[index], philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]), NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; flag_format = 1; } } } free(split_simvol); if (flag_format) { return cmd; } else { return cmd_old; } } void add_disk_all(){ char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); disk = yon_char_divide_search(disk, " ", -1); int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice)); int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)); int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite)); if (disk_id >= 0 && obj_add_config.size !=0) { int index_find = -1; for (int index = 0; index < obj_add_config.size; index++) { char* disk_cfg = obj_add_config.disk[index]; if (strstr(disk_cfg, disk) != NULL) { index_find = index; break; } } if (index_find == -1) { // Добавление obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.size--; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); obj_add_config.size--; } else { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,-1); obj_add_config.size--; obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,"-"); obj_add_config.size--; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); obj_add_config.size--; obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); obj_add_config.size--; } else { obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,-1); obj_add_config.size--; obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,"-"); obj_add_config.size--; } obj_add_config.size++; } else { // Редактирование //obj_add_config.disk[index_find] = yon_char_new(disk); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)); obj_add_config.i_o_limit_read[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); } else { obj_add_config.i_o_limit_read_size[index_find] = -1; obj_add_config.i_o_limit_read[index_find] = "-"; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { obj_add_config.i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite)); obj_add_config.i_o_limit_write[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite))); } else { obj_add_config.i_o_limit_write_size[index_find] = -1; obj_add_config.i_o_limit_write[index_find] = "-"; } } } else { if (bool_read == 1 || bool_write == 1) { obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.size--; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); obj_add_config.size--; } else { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,-1); obj_add_config.size--; obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,"-"); obj_add_config.size--; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); obj_add_config.size--; obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); obj_add_config.size--; } else { obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,-1); obj_add_config.size--; obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,"-"); obj_add_config.size--; } obj_add_config.size++; } else { } } } void event_check_io_device() { philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); add_disk_all(); add_del_disk(); add_init_windows(); } void combo_box_device() { update_device_to_entry(add_widgets->cbtAddDevice,add_widgets->cbtAddRead, add_widgets->chbAddRead, add_widgets->spinAddRead, 0); update_device_to_entry(add_widgets->cbtAddDevice,add_widgets->cbtAddWrite, add_widgets->chbAddWrite, add_widgets->spinAddWrite, 1); } void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->btnAddCancel),"clicked",G_CALLBACK(add_on_destroy_subwindow),NULL); g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(add_destroy), NULL); g_signal_connect(G_OBJECT(widgets->chkSoftRestrictionAdd), "toggled", G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chkSevereRestrictionAdd), "toggled", G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chkPaddingFLAdd), "toggled", G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chkCPULimitAdd), "toggled", G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chbAddRead), "toggled", G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->chbAddWrite), "toggled", G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->cbxAddQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL); g_signal_connect(G_OBJECT(widgets->cbxAddQuotaLevel2),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->spinPaddingFLAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->spinCPULimitAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->spinAddRead),"changed",G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->spinAddWrite),"changed",G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->cmbPaddingFLAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->cbtAddRead),"changed",G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->cbtAddWrite),"changed",G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->cbtAddDevice),"changed",G_CALLBACK(combo_box_device), NULL); } void add_get_cmd_group(char* cmd_get_group) { CMD_GET_GROUP = cmd_get_group; } void add_get_systemd_cgls(char* cmd_systemd_cgls) { CMD_GET_SLICE_SERVICE = cmd_systemd_cgls; } void add_destroy(GtkWidget *self) { add_widgets = NULL; } void add_localization(add_window *widgets) { } void add_on_destroy_subwindow(GtkWidget *self) { gtk_widget_destroy(gtk_widget_get_toplevel(self)); add_widgets = NULL; } add_window *get_widget_add() { return add_widgets; } void add_show(GtkWidget *self, char* glade_path) { if (add_widgets != NULL) { add_update_combo_box(); gtk_widget_show_all(add_widgets->Window); add_init_windows(); } else { add_setup_window(glade_path); add_update_combo_box(); gtk_widget_show_all(add_widgets->Window); add_init_windows(); } } char* add_get_select_device_to_level_2() { char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbxAddQuotaLevel2)); if (text != NULL) { return text; } else { char* str = (char*)malloc(sizeof(char*)*2); str[0] = '-'; str[1] = '\0'; return str; } } char*** add_get_read_device() { obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size, NULL); obj_add_config.size--; return &obj_add_config.i_o_limit_read; } int** add_get_read_device_size_pow() { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size, -2); obj_add_config.size--; return &obj_add_config.i_o_limit_read_size; } char*** add_get_write_device() { obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write, &obj_add_config.size, NULL); obj_add_config.size--; return &obj_add_config.i_o_limit_write; } int** add_get_write_device_size_pow() { obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size, -2); obj_add_config.size--; return &obj_add_config.i_o_limit_write_size; } char*** add_get_select_device() { obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, NULL); obj_add_config.size--; return &obj_add_config.disk; } int add_get_soft_size() { return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cmSevereRestrictionAdd)); } int add_get_hard_size() { return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cmbSevereRestrictionAdd)); } int add_get_limit_cpu_size() { return -1; } int add_get_limit_swap_size() { return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cmbPaddingFLAdd)); } int add_get_quota_object_size() { return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaObj)); } char* add_get_soft() { return philos_get_size_bite(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, add_widgets->cmSevereRestrictionAdd); } char* add_get_hard() { return philos_get_size_bite(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd); } char* add_get_limit_cpu() { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkCPULimitAdd))) { int size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinCPULimitAdd)); return yon_char_from_int(size_bite); } else { char* str = (char*)malloc(sizeof(char*)*2); str[0] = '-'; str[1] = '\0'; return str; } } char* add_get_limit_swap() { return philos_get_size_bite(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd); } char* add_get_quota_object() { return gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbxAddQuotaObj)); } void add_update_combo_box() { int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaObj)); char* cmd = NULL; config_str fill_cmb_2 = NULL; int size = 0; if (menu_id == 0) { fill_cmb_2 = philos_list_user(&size); } else if (menu_id == 1) { fill_cmb_2 = yon_config_load(CMD_GET_GROUP, &size); philos_array_string_remove_char(&fill_cmb_2, "\n", size); } else if (menu_id == 2) { fill_cmb_2 = philos_pars_terminal_systemd_cgls(CMD_GET_SLICE_SERVICE, ".service", &size); philos_array_string_remove_char(&fill_cmb_2, "\n", size); } else if (menu_id == 3) { fill_cmb_2 = philos_pars_terminal_systemd_cgls(CMD_GET_SLICE_SERVICE, ".slice", &size); philos_array_string_remove_char(&fill_cmb_2, "\n", size); } if (menu_id >= 0) { gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(add_widgets->cbxAddQuotaLevel2)); philos_fill_combo_box_text(add_widgets->cbxAddQuotaLevel2, fill_cmb_2, size); // yon_terminal_integrated_launch(widgets->vteProcesses, cmd, NULL, NULL); } } void add_generate_cmd() { char* str_cmd = ""; char* split_simvol = g_malloc0(sizeof(char)*2); int size_bite = 0; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkSoftRestrictionAdd))) { size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spiSevereRestrictionAdd)); str_cmd = yon_char_unite(str_cmd, "MemoryHigh=", yon_char_from_int(size_bite), philos_str_size_pow_byte(add_widgets->cmSevereRestrictionAdd), NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkSevereRestrictionAdd))) { size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinSevereRestrictionAdd)); str_cmd = yon_char_unite(str_cmd, split_simvol, "MemoryMax=", yon_char_from_int(size_bite), philos_str_size_pow_byte(add_widgets->cmbSevereRestrictionAdd), NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkPaddingFLAdd))) { size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinPaddingFLAdd)); str_cmd = yon_char_unite(str_cmd, split_simvol, "MemorySwapMax=", yon_char_from_int(size_bite), philos_str_size_pow_byte(add_widgets->cmbPaddingFLAdd), NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkCPULimitAdd))) { size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinCPULimitAdd)); str_cmd = yon_char_unite(str_cmd, split_simvol, "CPUQuota=", yon_char_from_int(size_bite), "%", NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } if (gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice))!=-1) { if (obj_add_config.size!=0) { str_cmd = pard_array_add_cmd(str_cmd, "IOReadBandwidthMax=", obj_add_config.i_o_limit_read, obj_add_config.i_o_limit_read_size); str_cmd = pard_array_add_cmd(str_cmd, "IOWriteBandwidthMax=", obj_add_config.i_o_limit_write, obj_add_config.i_o_limit_write_size); } } gtk_entry_set_text(GTK_ENTRY(add_widgets->entryAddCmd), str_cmd); free(split_simvol); }