diff --git a/source/controler.c b/source/controler.c index 7d7c952..b39763c 100644 --- a/source/controler.c +++ b/source/controler.c @@ -3,7 +3,7 @@ main_window cfg_main_gui; custom_window cfg_custom_gui; config_settings_gui main_config; -config_all* all_config; +config_all all_config; int index_selected = 0; void wrapper_filters_user_show() { @@ -22,11 +22,11 @@ void wrapper_filters_project_show() { void wrapper_add_user_show() { char* activ_text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(cfg_custom_gui.user.comboBox)); - activ_text= yon_char_divide_search(activ_text, " ", -1); + activ_text = yon_char_divide_search(activ_text, " ", -1); set_disk(activ_text); set_temp_menu("usrquota", "add"); - set_all_config(all_config); - set_vector(&all_config->v_user); + set_all_config(&all_config); + set_vector(&all_config.v_user); temp_show(NULL, glade_path); int i = 0; g_signal_connect(G_OBJECT(get_widget_temp()->btnSaveTempSave),"clicked",G_CALLBACK(entry_user_disk),&i); @@ -39,10 +39,10 @@ void wrapper_edit_user_show() { set_disk(activ_text); set_temp_menu("usrquota", "edit"); temp_set_index(index); - set_all_config(all_config); + set_all_config(&all_config); temp_show(NULL, glade_path); - set_vector(&all_config->v_user); - set_edit_gui_data_base(all_config, index); + set_vector(&all_config.v_user); + set_edit_gui_data_base(&all_config, index); int i = 0; g_signal_connect(G_OBJECT(get_widget_temp()->btnSaveTempSave),"clicked",G_CALLBACK(entry_user_disk),&i); } @@ -52,8 +52,8 @@ void wrapper_add_group_show() { activ_text = yon_char_divide_search(activ_text, " ", -1); set_disk(activ_text); set_temp_menu("grpquota", "add"); - set_all_config(all_config); - set_vector(&all_config->v_group); + set_all_config(&all_config); + set_vector(&all_config.v_group); temp_show(NULL, glade_path); int i = 0; g_signal_connect(G_OBJECT(get_widget_temp()->btnSaveTempSave),"clicked",G_CALLBACK(entry_groups_disk),&i); @@ -65,17 +65,17 @@ void wrapper_edit_group_show() { set_disk(activ_text); set_temp_menu("grpquota", "edit"); temp_set_index(index); - set_all_config(all_config); - set_vector(&all_config->v_group); + set_all_config(&all_config); + set_vector(&all_config.v_group); temp_show(NULL, glade_path); - set_edit_gui_data_base(all_config, index); + set_edit_gui_data_base(&all_config, index); int i = 0; g_signal_connect(G_OBJECT(get_widget_temp()->btnSaveTempSave),"clicked",G_CALLBACK(entry_groups_disk),&i); } void wrapper_add_project_show() { set_temp_menu("prjquota", "add"); - set_all_config(all_config); - set_vector(&all_config->v_project); + set_all_config(&all_config); + set_vector(&all_config.v_project); temp_show(NULL, glade_path); int i = 0; g_signal_connect(G_OBJECT(get_widget_temp()->btnSaveTempSave),"clicked",G_CALLBACK(entry_project_disk),&i); @@ -84,10 +84,10 @@ void wrapper_edit_project_show() { int index = wrapper_select_tree_view(&cfg_custom_gui.project); set_temp_menu("prjquota", "edit"); temp_set_index(index); - set_all_config(all_config); + set_all_config(&all_config); temp_show(NULL, glade_path); - set_vector(&all_config->v_project); - set_edit_gui_data_base(all_config, index); + set_vector(&all_config.v_project); + set_edit_gui_data_base(&all_config, index); int i = 0; g_signal_connect(G_OBJECT(get_widget_temp()->btnSaveTempSave),"clicked",G_CALLBACK(entry_project_disk),&i); } @@ -124,14 +124,14 @@ void unlock_tree_view(hotebook* widgets,void (*f)()) { void entry_user_disk(GtkWidget *self,int* flag_update) { if (flag_update) { - all_config->flag_set_data = 1; - all_config->flag_save = 3; + all_config.flag_set_data = 1; + all_config.flag_save = 3; temp_on_destroy_subwindow(self); } get_status_disk(&cfg_custom_gui.user); char* activ_text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(cfg_custom_gui.user.comboBox)); activ_text= yon_char_divide_search(activ_text, " ", -1); - int find = fill_tree_view_user_group(all_config, activ_text, &cfg_custom_gui.user,"usrquota", 0); + int find = fill_tree_view_user_group(&all_config, activ_text, &cfg_custom_gui.user,"usrquota", 0); if (find == 0) { g_object_ref(cfg_custom_gui.user.liststore); gtk_list_store_clear(cfg_custom_gui.user.liststore); @@ -139,14 +139,14 @@ void entry_user_disk(GtkWidget *self,int* flag_update) { } void entry_groups_disk(GtkWidget *self,int* flag_update) { if (flag_update) { - all_config->flag_set_data = 1; - all_config->flag_save = 3; + all_config.flag_set_data = 1; + all_config.flag_save = 3; temp_on_destroy_subwindow(self); } get_status_disk(&cfg_custom_gui.group); char* activ_text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(cfg_custom_gui.group.comboBox)); activ_text= yon_char_divide_search(activ_text, " ", -1); - int find = fill_tree_view_user_group(all_config, activ_text, &cfg_custom_gui.group,"grpquota", 0); + int find = fill_tree_view_user_group(&all_config, activ_text, &cfg_custom_gui.group,"grpquota", 0); if (find == 0) { g_object_ref(cfg_custom_gui.group.liststore); gtk_list_store_clear(cfg_custom_gui.group.liststore); @@ -154,11 +154,11 @@ void entry_groups_disk(GtkWidget *self,int* flag_update) { } void entry_project_disk(GtkWidget *self,int* flag_update) { if (flag_update) { - all_config->flag_set_data = 1; - all_config->flag_save = 3; + all_config.flag_set_data = 1; + all_config.flag_save = 3; temp_on_destroy_subwindow(self); } - int find = fill_tree_view_project(all_config, &cfg_custom_gui.project,"prjquota", 0); + int find = fill_tree_view_project(&all_config, &cfg_custom_gui.project,"prjquota", 0); if (find == 0) { g_object_ref(cfg_custom_gui.project.liststore); gtk_list_store_clear(cfg_custom_gui.project.liststore); @@ -168,21 +168,21 @@ void entry_project_disk(GtkWidget *self,int* flag_update) { void tree_view_select_user(GtkWidget* self) { block_tree_view(&cfg_custom_gui.user,tree_view_select_user); block_spin_time(&cfg_custom_gui.user, wrapper_get_spin_time_gui_user); - tree_view_select(NULL,&all_config->v_user , &cfg_custom_gui.user); + tree_view_select(NULL,&all_config.v_user , &cfg_custom_gui.user); unlock_spin_time(&cfg_custom_gui.user, wrapper_get_spin_time_gui_user); unlock_tree_view(&cfg_custom_gui.user,tree_view_select_user); } void tree_view_select_group(GtkWidget* sel) { block_tree_view(&cfg_custom_gui.group,tree_view_select_group); block_spin_time(&cfg_custom_gui.group, wrapper_get_spin_time_gui_group); - tree_view_select(NULL,&all_config->v_group ,&cfg_custom_gui.group); + tree_view_select(NULL,&all_config.v_group ,&cfg_custom_gui.group); unlock_spin_time(&cfg_custom_gui.group, wrapper_get_spin_time_gui_group); unlock_tree_view(&cfg_custom_gui.group,tree_view_select_group); } void tree_view_select_project(GtkWidget* self) { block_tree_view(&cfg_custom_gui.project,tree_view_select_project); block_spin_time(&cfg_custom_gui.project, wrapper_get_spin_time_gui_project); - tree_view_select(NULL,&all_config->v_project , &cfg_custom_gui.project); + tree_view_select(NULL,&all_config.v_project , &cfg_custom_gui.project); unlock_spin_time(&cfg_custom_gui.project, wrapper_get_spin_time_gui_project); unlock_tree_view(&cfg_custom_gui.group, wrapper_get_spin_time_gui_project); } @@ -191,7 +191,7 @@ void tree_view_select_project(GtkWidget* self) { void tree_view_select(GtkWidget* self, vector* vec_temp, hotebook* widgets) { if (self) {} if (vec_temp->vectorList.total > 0) { - tree_view_edit(all_config, vec_temp, widgets); + tree_view_edit(&all_config, vec_temp, widgets); GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->tree_view)); @@ -211,17 +211,17 @@ void tree_view_select(GtkWidget* self, vector* vec_temp, hotebook* widgets) { } void wrapper_get_spin_time_gui_user() { - get_spin_time_gui(&all_config->v_user, &cfg_custom_gui.user); + get_spin_time_gui(&all_config.v_user, &cfg_custom_gui.user); entry_user_disk(0, 0); } void wrapper_get_spin_time_gui_group() { - get_spin_time_gui(&all_config->v_group, &cfg_custom_gui.group); + get_spin_time_gui(&all_config.v_group, &cfg_custom_gui.group); entry_groups_disk(0, 0); } void wrapper_get_spin_time_gui_project() { - get_spin_time_gui(&all_config->v_project, &cfg_custom_gui.project); + get_spin_time_gui(&all_config.v_project, &cfg_custom_gui.project); entry_project_disk(0, 0); } @@ -251,10 +251,10 @@ void template_remove(vector* vec_temp, hotebook* widgets) { if (index!=-1) { config_u_g_p* _config = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, index); char* load_key = yon_char_new(_config->loaded_keys); - all_config->v_remove.pfVectorAdd(&all_config->v_remove, load_key); + all_config.v_remove.pfVectorAdd(&all_config.v_remove, load_key); model_clear_cfg(_config); vec_temp->pfVectorDelete(vec_temp, index); - all_config->flag_save = 1; + all_config.flag_save = 1; } } @@ -265,7 +265,7 @@ void user_remove() { if(gtk_tree_selection_get_selected(selection, &model, &iter)) { gtk_list_store_remove(cfg_custom_gui.user.liststore, &iter); } - template_remove(&all_config->v_user, &cfg_custom_gui.user); + template_remove(&all_config.v_user, &cfg_custom_gui.user); } void group_remove() { @@ -275,7 +275,7 @@ void group_remove() { if(gtk_tree_selection_get_selected(selection, &model, &iter)) { gtk_list_store_remove(cfg_custom_gui.group.liststore, &iter); } - template_remove(&all_config->v_group ,&cfg_custom_gui.group); + template_remove(&all_config.v_group ,&cfg_custom_gui.group); } void project_remove() { @@ -285,7 +285,7 @@ void project_remove() { if(gtk_tree_selection_get_selected(selection, &model, &iter)) { gtk_list_store_remove(cfg_custom_gui.project.liststore, &iter); } - template_remove(&all_config->v_project , &cfg_custom_gui.project); + template_remove(&all_config.v_project , &cfg_custom_gui.project); } int tree_view_edit(config_all* _all_config, vector* vec_temp, hotebook* widgets) { int index = wrapper_select_tree_view(widgets); @@ -314,48 +314,48 @@ void wrapper_all_save() { int flag_mess_save = 0; - if (all_config->flag_load == 0) { - flag_mess_save = wrapper_template_save(all_config, CMD_ALL_SAVE, CMD_ALL_REMOVE); + if (all_config.flag_load == 0) { + flag_mess_save = wrapper_template_save(&all_config, CMD_ALL_SAVE, CMD_ALL_REMOVE); } else { - flag_mess_save = wrapper_template_save(all_config, CMD_ALL_SAVE, CMD_ALL_REMOVE); + flag_mess_save = wrapper_template_save(&all_config, CMD_ALL_SAVE, CMD_ALL_REMOVE); } if (flag_mess_save) { yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - all_config->flag_load=0; + all_config.flag_load=0; } else { yon_ubl_status_box_render(MESS_NOTHING_SAVE, BACKGROUND_IMAGE_SUCCESS_TYPE); } } void wrapper_global_save() { - if (wrapper_template_save(all_config, CMD_SAVE_GLOBAL, CMD_REMOVE_GLOBAL)) { + if (wrapper_template_save(&all_config, CMD_SAVE_GLOBAL, CMD_REMOVE_GLOBAL)) { yon_ubl_status_box_render(GLOBAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - all_config->flag_load-=1; + all_config.flag_load-=1; } else { yon_ubl_status_box_render(MESS_NOTHING_SAVE, BACKGROUND_IMAGE_SUCCESS_TYPE); } } void wrapper_system_save() { - if (wrapper_template_save(all_config, CMD_SAVE_SYSTEM, CMD_REMOVE_SYSTEM)) { + if (wrapper_template_save(&all_config, CMD_SAVE_SYSTEM, CMD_REMOVE_SYSTEM)) { yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - all_config->flag_load-=1; + all_config.flag_load-=1; } else { yon_ubl_status_box_render(MESS_NOTHING_SAVE, BACKGROUND_IMAGE_SUCCESS_TYPE); } } void load_system_cfg() { - all_config->flag_load = 0; - load_template_load_cfg(all_config, CMD_LOAD_SYSTEM); + all_config.flag_load = 0; + load_template_load_cfg(&all_config, CMD_LOAD_SYSTEM); yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL, BACKGROUND_IMAGE_SUCCESS_TYPE); entry_project_disk(0, 0); } void load_global_cfg() { - all_config->flag_load = 1; - load_template_load_cfg(all_config, CMD_LOAD_GLOBAL); + all_config.flag_load = 1; + load_template_load_cfg(&all_config, CMD_LOAD_GLOBAL); yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); entry_project_disk(0, 0); } @@ -422,7 +422,7 @@ void template_set_status_disk(GtkWidget* self,hotebook* widgets) { int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cmbSetStatusDisk)); char* activ_text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->comboBox)); activ_text = yon_char_divide_search(activ_text, " ", -1); - vector* v_disk_status = &all_config->v_disk_status; + vector* v_disk_status = &all_config.v_disk_status; int flag = 0; if (v_disk_status->vectorList.total> 0 && menu_id_disk >= 0 && menu_id >= 0) { for (int i = 0; i < v_disk_status->pfVectorTotal(v_disk_status); i++) { @@ -430,7 +430,7 @@ void template_set_status_disk(GtkWidget* self,hotebook* widgets) { if (strstr(_config->device, activ_text) && strstr(_config->device,widgets->name)) { flag = 1; _config->status = menu_id; - all_config->flag_set_data = 1; + all_config.flag_set_data = 1; } } } @@ -439,13 +439,13 @@ void template_set_status_disk(GtkWidget* self,hotebook* widgets) { disk_cfg->device = yon_char_unite("DISK_QUOTA[",widgets->name,":",activ_text, "]",NULL); disk_cfg->status = menu_id; v_disk_status->pfVectorAdd(v_disk_status, disk_cfg); - all_config->flag_set_data = 1; + all_config.flag_set_data = 1; } } void get_status_disk(hotebook* widgets) { int menu_id_disk = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->comboBox)); - vector* v_disk_status = &all_config->v_disk_status; + vector* v_disk_status = &all_config.v_disk_status; if (v_disk_status->vectorList.total> 0 && menu_id_disk>=0) { char* activ_text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->comboBox)); activ_text = yon_char_divide_search(activ_text, " ", -1); @@ -484,8 +484,12 @@ void main_visible_columns(GtkWidget *self) { int main(int argc, char *argv[]){ - all_config = malloc(sizeof(config_all)); - all_config->flag_not_data = 0; + all_config.flag_not_data = 0; + vector_init(&all_config.v_user); + vector_init(&all_config.v_group); + vector_init(&all_config.v_project); + vector_init(&all_config.v_disk_status); + vector_init(&all_config.v_remove); local=setlocale(LC_ALL, ""); bindtextdomain(LocaleName, yon_char_unite(LocalePath, "/", NULL)); //bind_textdomain_codeset(LocaleName, "UTF-8"); diff --git a/source/model/model.c b/source/model/model.c index 65209cc..30fdead 100644 --- a/source/model/model.c +++ b/source/model/model.c @@ -7,10 +7,19 @@ void model_clear_cfg(config_u_g_p* _config) { free(_config->device); free(_config->UNIX_file); free(_config->files); + model_free_vector_string(&_config->actors); vectorFree(&_config->actors); free(_config->loaded_keys); } +void model_free_vector_string(vector* vec_str) { + if (vec_str->vectorList.total> 0) { + for (int i = 0; i < vec_str->vectorList.total; i++) { + vectorDelete(vec_str, i); + } + } + +} void model_tree_view_add(config_u_g_p* _config) { model_null_str_writing(_config); @@ -61,6 +70,7 @@ char* format_actors(vector* vec_actors) { } + int fill_tree_view_project(config_all* all_config,hotebook* widget , char* str_fill, int flag_gui_add) { GtkTreeModel *model = GTK_TREE_MODEL(widget->liststore); if (flag_gui_add == 0) { diff --git a/source/model/model.h b/source/model/model.h index 76136b8..cfb09f5 100644 --- a/source/model/model.h +++ b/source/model/model.h @@ -61,6 +61,7 @@ void model_null_str_writing(config_u_g_p* _config); void model_clear_cfg(config_u_g_p* _config); void model_array_size_memory(); char* format_actors(vector* vec_actors); +void model_free_vector_string(vector* vec_str); int fill_tree_view_user_group(config_all* all_config, char* disk, hotebook* widget,char* str_fill , int flag_gui_add); int fill_tree_view_project(config_all* all_config, hotebook* widget, char* str_fill , int flag_gui_add); #endif \ No newline at end of file diff --git a/source/model/vector.c b/source/model/vector.c index d1acaad..8e5ac91 100644 --- a/source/model/vector.c +++ b/source/model/vector.c @@ -104,6 +104,12 @@ int vectorFree(vector *v) } return status; } +void vectorCopy(vector* v_to_copy, vector* v_from_copy) { + for (int i = 0; i < v_from_copy->vectorList.total; i++) { + vectorPushBack(v_to_copy, vectorGet(v_from_copy, i)); + } +} + void vector_init(vector *v) { //init function pointers @@ -114,6 +120,7 @@ void vector_init(vector *v) v->pfVectorGet = vectorGet; v->pfVectorFree = vectorFree; v->pfVectorDelete = vectorDelete; + v->pfVectorCopy = vectorCopy; //initialize the capacity and allocate the memory v->vectorList.capacity = VECTOR_INIT_CAPACITY; v->vectorList.total = 0; diff --git a/source/model/vector.h b/source/model/vector.h index c46696c..1682777 100644 --- a/source/model/vector.h +++ b/source/model/vector.h @@ -26,6 +26,8 @@ struct sVector void *(*pfVectorGet)(vector *, int); int (*pfVectorDelete)(vector *, int); int (*pfVectorFree)(vector *); + void (*pfVectorCopy)(vector *,vector *); + }; void vector_init(vector *v); int vectorFree(vector *v); @@ -34,4 +36,5 @@ void *vectorGet(vector *v, int index); int vectorSet(vector *v, int index, void *item); int vectorPushBack(vector *v, void *item); int vectorResize(vector *v, int capacity); -int vectorTotal(vector *v); \ No newline at end of file +int vectorTotal(vector *v); +void vectorCopy(vector* v_to_copy, vector* v_from_copy); \ No newline at end of file diff --git a/source/view_check_user_table.c b/source/view_check_user_table.c index b3bef96..cb3eee7 100644 --- a/source/view_check_user_table.c +++ b/source/view_check_user_table.c @@ -2,15 +2,26 @@ char* glade_path = NULL; char* flag_u_g = NULL; +char* table_u_g_set_add_edit; table_u_g* table_widgets; +vector* _actors; + +void table_u_g_get_actors(vector* actors) { + _actors = actors; +} + +table_u_g* get_widget_table_u_g() { + return table_widgets; +} + table_u_g *setup_table_u_g(){ /* Widgets getting | Получение виджетов */ table_widgets = malloc(sizeof(table_u_g)); device_disk_parsed(); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); table_widgets->Window = yon_gtk_builder_get_widget(builder,"tableUserGroupWindow"); - table_widgets->btnCancel = yon_gtk_builder_get_widget(builder,"quotegroupSaveButton1"); - table_widgets->btnSave = yon_gtk_builder_get_widget(builder,"quotegroupCancelButton1"); + table_widgets->btnCancel = yon_gtk_builder_get_widget(builder,"quotegroupCancelButton1"); + table_widgets->btnSave = yon_gtk_builder_get_widget(builder,"quotegroupSaveButton1"); table_widgets->treeViewCheckUsersGroups = yon_gtk_builder_get_widget(builder,"treeViewCheckUsersGroups"); table_widgets->checkColUserGroup = GTK_CELL_RENDERER_TOGGLE(gtk_builder_get_object(builder,"checkColUserGroup")); table_widgets->liststoreUsersGroups = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststoreUsersGroups")); @@ -23,6 +34,9 @@ table_u_g *setup_table_u_g(){ char** array_user = philos_list_user(&size); table_u_g_fill_tree_view(array_user, size); } + if (strcmp(table_u_g_set_add_edit, "edit")==0) { + set_actors(_actors); + } table_u_g_event(); } @@ -34,8 +48,9 @@ void table_u_g_get_data() { } -void table_u_g_set_flag(char* _flag_u_g) { +void table_u_g_set_flag(char* _flag_u_g, char* _table_u_g_set_add_edit) { flag_u_g = _flag_u_g; + table_u_g_set_add_edit = _table_u_g_set_add_edit; } @@ -68,15 +83,33 @@ void chk_toggled_user_group ( gchar* path, gpointer user_data ) { - GtkTreeIter* iter; + GtkTreeIter iter; GtkTreeModel *model = GTK_TREE_MODEL(table_widgets->liststoreUsersGroups); - gtk_tree_model_get_iter_from_string(model,iter,path); + gtk_tree_model_get_iter_from_string(model,&iter,path); + gboolean flag; + gtk_tree_model_get(model,&iter,0, &flag,-1); + gtk_list_store_set(table_widgets->liststoreUsersGroups,&iter, 0,!flag,-1); + gtk_tree_view_set_model(GTK_TREE_VIEW(table_widgets->treeViewCheckUsersGroups), model); } -void table_u_g_event() { - g_signal_connect(G_OBJECT(table_widgets->checkColUserGroup),"toggled",G_CALLBACK(chk_toggled_user_group),NULL); - g_signal_connect(G_OBJECT(table_widgets->btnCancel), "clicked",G_CALLBACK(table_u_g_on_hide_subwindow),NULL); - g_signal_connect(G_OBJECT(table_widgets->Window), "destroy", G_CALLBACK(table_u_g_destroy), NULL); + + +void get_actors_table(vector* actors) { + if (strcmp(table_u_g_set_add_edit, "edit")==0) { + model_free_vector_string(actors); + } + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(table_widgets->liststoreUsersGroups); + int valid = 1; + for(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(table_widgets->liststoreUsersGroups),&iter);valid==1;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(table_widgets->liststoreUsersGroups),&iter)){ + int is_active=0; + char* user_group; + gtk_tree_model_get(model,&iter,0,&is_active,-1); + gtk_tree_model_get(model,&iter,1,&user_group,-1); + if (is_active){ + actors->pfVectorAdd(actors, yon_char_new(user_group)); + } + } } void table_u_g_destroy(GtkWidget *self) { @@ -96,4 +129,23 @@ table_u_g *table_u_g_get_widget_filters() { return table_widgets; } - +void set_actors(vector* actors) { + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(table_widgets->liststoreUsersGroups); + int valid = 1; + for(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(table_widgets->liststoreUsersGroups),&iter);valid==1;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(table_widgets->liststoreUsersGroups),&iter)){ + int is_active=0; + char* user_group; + gtk_tree_model_get(model,&iter,0,&is_active,-1); + gtk_tree_model_get(model,&iter,1,&user_group,-1); + if (actors->vectorList.total> 0) { + for (int i = 0; i < actors->vectorList.total; i++) { + char* str_actors = (char*)actors->pfVectorGet(actors, i); + if (strcmp(str_actors, user_group)==0){ + gtk_list_store_set(table_widgets->liststoreUsersGroups,&iter, 0,1,-1); + } + } + } + } + gtk_tree_view_set_model(GTK_TREE_VIEW(table_widgets->treeViewCheckUsersGroups), model); +} \ No newline at end of file diff --git a/source/view_check_user_table.h b/source/view_check_user_table.h index c5feb69..98a381b 100644 --- a/source/view_check_user_table.h +++ b/source/view_check_user_table.h @@ -28,7 +28,16 @@ table_u_g *table_u_g_get_widget_filters(); void table_u_g_destroy(GtkWidget *self); void table_u_g_event(); void table_u_g_fill_tree_view(char** array, int size); -void table_u_g_set_flag(char* _flag_u_g); +void table_u_g_set_flag(char* _flag_u_g, char* _table_u_g_set_add_edit); void table_u_g_set_glade_path(char* _glade_path); void table_u_g_show(GtkWidget *self, char* glade_path); -void set_vector(vector* _vec_temp); \ No newline at end of file +void set_vector(vector* _vec_temp); +void get_actors_table(vector* actors); +void table_u_g_get_actors(vector* actors); +void set_actors(vector* actors); +table_u_g* get_widget_table_u_g(); +void chk_toggled_user_group ( + GtkCellRendererToggle* self, + gchar* path, + gpointer user_data +); \ No newline at end of file diff --git a/source/view_temp_u_g_p.c b/source/view_temp_u_g_p.c index 34c13ee..eea1066 100644 --- a/source/view_temp_u_g_p.c +++ b/source/view_temp_u_g_p.c @@ -8,6 +8,7 @@ vector* vec_temp = NULL; config_all* _all_config_temp = NULL; int table_index = 0; char* disk = NULL; +vector temp_vec_actors; void set_disk(char* _disk) { disk = yon_char_new(_disk); @@ -25,6 +26,8 @@ void set_vector(vector* _vec_temp) { vec_temp = _vec_temp; } + + void temp_set_index(int _index) { table_index = _index; } @@ -45,6 +48,7 @@ temp_set_window *temp_setup_window_base(char* __glade_path) { return temp_widgets; } temp_set_window *temp_setup_window_custom(temp_set_window* temp_widgets, GtkBuilder *builder) { + vector_init(&temp_vec_actors); temp_widgets->lblSetUGP = yon_gtk_builder_get_widget(builder, "lblSetUGP"); temp_widgets->btnOpenUserGroup = yon_gtk_builder_get_widget(builder, "btnOpenUserGroup"); temp_widgets->btnReviewProject = yon_gtk_builder_get_widget(builder, "btnReviewProject"); @@ -74,7 +78,7 @@ temp_set_window *temp_setup_window_custom(temp_set_window* temp_widgets, GtkBuil temp_widgets->lblCatalogProjectEdit = yon_gtk_builder_get_widget(builder, "lblCatalogProjectEdit"); temp_widgets->lblProjectIdValueEdit = yon_gtk_builder_get_widget(builder, "lblProjectIdValueEdit"); temp_widgets->boxTempDevice = yon_gtk_builder_get_widget(builder, "boxTempDevice"); - table_u_g_set_flag(flag_temp_u_g_p); + table_u_g_set_flag(flag_temp_u_g_p,set_add_edit); table_u_g_set_glade_path(_glade_path); if (strcmp(flag_temp_u_g_p,"prjquota")==0) { gtk_widget_hide(temp_widgets->lblSetUGP); @@ -180,6 +184,8 @@ void temp_on_destroy_subwindow(GtkWidget *self) { } gtk_widget_destroy(gtk_widget_get_toplevel(self)); temp_widgets = NULL; + model_free_vector_string(&temp_vec_actors); + vectorFree(&temp_vec_actors); } } void event_toggled_all() { @@ -238,6 +244,7 @@ void btn_ok_file_manager(GtkWidget *self) { void set_edit_gui_data_base(config_all* all_config, int index) { config_u_g_p* _config = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, index); + if (_config && index >= 0) { set_widget(temp_widgets->quotegroupSizeSoftLimitCheck, temp_widgets->quotegroupSizeSoftLimitSpin, @@ -279,8 +286,9 @@ void set_edit_gui_data_base(config_all* all_config, int index) { } else { gtk_label_set_label(GTK_LABEL(temp_widgets->lblSetNameDevice), disk); - if (strstr(set_add_edit, "add")) { - } + if (strcmp(set_add_edit, "add")==0) { + //table_u_g_get_actors(&temp_vec_actors); + } else { gtk_label_set_label(GTK_LABEL(temp_widgets->lblSetUGPData), format_actors(&_config->actors)); @@ -346,10 +354,30 @@ void get_add_gui_data_base(config_all* all_config) { config_u_g_p* _config = malloc(sizeof(config_u_g_p)); model_null_str_writing(_config); get_temp_gui_data_base(_config); + _config->actors.pfVectorCopy(&_config->actors, &temp_vec_actors); vec_temp->pfVectorAdd(vec_temp, _config); } +void save(GtkWidget *self) { + if (strcmp(set_add_edit, "add")==0) { + get_actors_table(&temp_vec_actors); + table_u_g_on_hide_subwindow(self); + } + else { + // get_actors_table(_actors); + table_u_g_on_hide_subwindow(self); + } + +} + +void table_u_g_event() { + g_signal_connect(G_OBJECT(get_widget_table_u_g()->checkColUserGroup),"toggled",G_CALLBACK(chk_toggled_user_group),NULL); + g_signal_connect(G_OBJECT(get_widget_table_u_g()->btnCancel), "clicked",G_CALLBACK(table_u_g_on_hide_subwindow),NULL); + g_signal_connect(G_OBJECT(get_widget_table_u_g()->btnSave), "clicked",G_CALLBACK(save),NULL); + g_signal_connect(G_OBJECT(get_widget_table_u_g()->Window), "destroy", G_CALLBACK(table_u_g_destroy), NULL); +} + config_u_g_p* get_temp_gui_data_base(config_u_g_p* _config) { set_widget_config(temp_widgets->quotegroupSizeSoftLimitCheck, temp_widgets->quotegroupSizeSoftLimitSpin, @@ -400,6 +428,9 @@ config_u_g_p* get_temp_gui_data_base(config_u_g_p* _config) { } else { _config->UNIX_file = yon_char_new(disk); + if (strcmp(set_add_edit, "add")==0) { + table_u_g_get_actors(&_config->actors); + } } return _config; } @@ -451,4 +482,5 @@ void set_activ_project_id() { gtk_widget_set_sensitive(temp_widgets->entryProjectId, !active); gtk_widget_set_sensitive(temp_widgets->btnGenerateProject, !active); -} \ No newline at end of file +} + diff --git a/ubl-settings-diskquota.glade b/ubl-settings-diskquota.glade index ce19063..dee5a4c 100644 --- a/ubl-settings-diskquota.glade +++ b/ubl-settings-diskquota.glade @@ -1725,7 +1725,7 @@ translated and supported by community. - 0 + 0