Начал писать функцию добавления дисков в массив в окне добавить

pull/4/head
Igor Belitskiy 2 years ago
parent 795256d890
commit 2bf8a2949e

@ -1188,6 +1188,7 @@ int main(int argc, char *argv[]){
exit(0);
}
}
get_add_config()->size = 0;
add_get_cmd_group(CMD_GET_GROUP);
add_get_systemd_cgls(CMD_GET_SLICE_SERVICE);
gtk_init(&argc,&argv);

@ -1,7 +1,11 @@
#include "view_add.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) {
@ -43,11 +47,28 @@ add_window *add_setup_window(char* glade_path) {
add_event(add_widgets);
add_init_windows();
add_localization(add_widgets);
add_config_init();
}
return add_widgets;
}
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_string_array(&obj_add_config.i_o_limit_write, obj_add_config.size);
philos_free_int_array(&obj_add_config.i_o_limit_read_size, 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);
@ -67,6 +88,90 @@ void add_init_windows() {
}
}
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));
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 != NULL && obj_add_config.size != 0) {
int index_find = 0;
for (int index = 0; index < obj_add_config.size; index++) {
char* disk_cfg = yon_char_new(obj_add_config.disk[index]);
if (strstr(disk_cfg, disk) != NULL) {
index_find = index;
break;
}
}
if ((bool_read == 0 && bool_write == 0 && index_find != 0)) {
yon_char_parsed_shrink(obj_add_config.disk,&obj_add_config.size, index_find);
obj_add_config.size++;
remove_element_int_array(obj_add_config.i_o_limit_read_size,&obj_add_config.size, index_find);
obj_add_config.size++;
remove_element_int_array(obj_add_config.i_o_limit_write_size,&obj_add_config.size, index_find);
obj_add_config.size++;
yon_char_parsed_shrink(obj_add_config.i_o_limit_read,&obj_add_config.size, index_find);
obj_add_config.size++;
yon_char_parsed_shrink(obj_add_config.i_o_limit_write,&obj_add_config.size, index_find);
}
}
}
void add_disk_all(){
char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice));
if (check_activ_disk() == 0) {
return;
}
if (obj_add_config.disk != NULL && obj_add_config.size !=0) {
int index_find = 0;
for (int index = 0; index < obj_add_config.size; index++) {
char* disk_cfg = yon_char_new(obj_add_config.disk[index]);
if (strstr(disk_cfg, disk) != NULL) {
index_find = index;
break;
}
}
if (index_find == 0) {
yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk);
obj_add_config.size--;
philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,add_get_read_device_size());
obj_add_config.size--;
philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,add_get_write_device_size());
obj_add_config.size--;
yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,add_get_read_device());
obj_add_config.size--;
yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,add_get_write_device());
}
}
else {
yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk);
obj_add_config.size--;
philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,add_get_read_device_size());
obj_add_config.size--;
philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,add_get_write_device_size());
obj_add_config.size--;
yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,add_get_read_device());
obj_add_config.size--;
yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,add_get_write_device());
}
}
void event_check_io_device() {
add_del_disk();
add_disk_all();
add_init_windows();
}
void add_event(add_window *widgets) {
g_signal_connect(G_OBJECT(widgets->btnAddCancel),"clicked",G_CALLBACK(add_on_destroy_subwindow),NULL);
@ -75,8 +180,8 @@ void add_event(add_window *widgets) {
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(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->chbAddWrite), "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);

@ -20,6 +20,15 @@
static char* CMD_GET_GROUP;
static char* CMD_GET_SLICE_SERVICE;
typedef struct {
config_str disk;
config_str i_o_limit_read;
config_str i_o_limit_write;
int* i_o_limit_read_size;
int* i_o_limit_write_size;
int size;
} add_config;
// Переменные
typedef struct {
@ -84,7 +93,9 @@ int add_get_hard_size();
int add_get_limit_cpu_size();
int add_get_limit_swap_size();
int add_get_quota_object_size();
add_config* get_add_config();
void add_config_init();
void add_disk_all();
void add_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo);
void add_get_cmd_group(char* cmd_get_group);
char* add_get_select_device_to_level_2();

Loading…
Cancel
Save