|
|
|
@ -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);
|
|
|
|
|
|
|
|
|
|