master #24
Merged
asmeron
merged 145 commits from Igor1/ubl-settings-diskquota:master
into master
2 years ago
@ -1,3 +1,9 @@
|
||||
.vscode/
|
||||
ubl-settings-diskquota.glade~
|
||||
ubl-settings-diskquota_ru.po~
|
||||
ubl-settings-diskquota
|
||||
*~
|
||||
build/
|
||||
compile/
|
||||
*#
|
||||
terminal-commands/
|
||||
source/ubl-cmake.h
|
||||
vgcore*
|
@ -0,0 +1,6 @@
|
|||||||
make
|
|||||||
gcc compile/resources.c compile/ubl-cmake.h source/view_set_disk.h source/view_set_disk.c source/view_check_user_table.c source/view_check_user_table.h source/view_filters.c source/model/vector.c source/model/vector.h source/view_filters.h source/view_temp_u_g_p.c source/view_temp_u_g_p.h source/controler.h source/controler.c source/model/philos_utils.h source/model/philos_utils.c source/model/my_device.h source/model/save.h source/model/save.c source/model/my_device.c source/model/model.h source/model/load.h source/model/load.c source/model/model.c source/ubl-settings-diskquota.c source/ubl-settings-diskquota.h source/ubl-strings.h source/model/ubl-utils.c source/model/ubl-utils.h -o ubl-settings-diskquota `pkg-config --cflags --libs gtk+-3.0 vte-2.91 webkit2gtk-4.0 webkit2gtk-web-extension-4.0` -g
|
|||||||
|
|||||||
sudo make install clean
|
|||||||
cd ./terminal-commands
|
|||||||
make
|
|||||||
cd ../
|
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<gresources>
|
||||
<gresource prefix="/com/ublinux/ui">
|
||||
<file>ubl-settings-diskquota.glade</file>
|
||||
</gresource>
|
||||
<gresource prefix="/com/ublinux/css">
|
||||
<file>ubl-settings-diskquota.css</file>
|
||||
</gresource>
|
||||
<gresource prefix="/com/ublinux/images">
|
||||
<file>ubl-settings-diskquota-banner.png</file>
|
||||
</gresource>
|
||||
</gresources>
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 70 KiB |
@ -0,0 +1,589 @@
|
||||
#include "controler.h"
|
||||
|
||||
main_window cfg_main_gui;
|
||||
custom_window cfg_custom_gui;
|
||||
config_settings_gui main_config;
|
||||
config_all all_config;
|
||||
int index_selected = -1;
|
||||
int note_selected = -1;
|
||||
// note_selected = 0; user
|
||||
// note_selected = 1; group
|
||||
// note_selected = 2; project
|
||||
|
||||
void update_time_table(vector* vec_temp) {
|
||||
for (int index = 0; index < all_config.v_disk_status.vectorList.total; index++) {
|
||||
disk_status* _config_device = (disk_status*)all_config.v_disk_status.pfVectorGet(&all_config.v_disk_status, index);
|
||||
for (int i = 0; i < vec_temp->vectorList.total; i++) {
|
||||
config_u_g_p* _config = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, i);
|
||||
if (strstr(_config->UNIX_file, _config_device->device)) {
|
||||
_config->deferring_size = _config_device->deferring_size;
|
||||
_config->deferring_file = _config_device->deferring_file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void entry_user_disk(GtkWidget *self, int* flag_update) {
|
||||
update_time_table(&all_config.v_user);
|
||||
if (flag_update) {
|
||||
all_config.flag_set_data = 1;
|
||||
all_config.flag_save = 3;
|
||||
temp_on_destroy_subwindow(self);
|
||||
}
|
||||
int find = fill_tree_view_user_group(&all_config, &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);
|
||||
}
|
||||
wrapper_fill_tree_view_generate(&all_config, &cfg_custom_gui);
|
||||
}
|
||||
|
||||
void entry_device_disk(GtkWidget *self, int* flag_update) {
|
||||
|
||||
if (flag_update) {
|
||||
all_config.flag_set_data = 1;
|
||||
all_config.flag_save = 3;
|
||||
view_device_get_gui_data();
|
||||
view_device_on_destroy_subwindow(self);
|
||||
}
|
||||
int find = fill_tree_view_device(&all_config.v_disk_status, &cfg_custom_gui.device, 0);
|
||||
if (find == 0) {
|
||||
g_object_ref(cfg_custom_gui.device.liststore);
|
||||
gtk_list_store_clear(cfg_custom_gui.device.liststore);
|
||||
}
|
||||
entry_user_disk(0, 0);
|
||||
entry_groups_disk(0, 0);
|
||||
entry_project_disk(0, 0);
|
||||
wrapper_fill_tree_view_generate(&all_config, &cfg_custom_gui);
|
||||
tree_view_select_user(NULL);
|
||||
tree_view_select_group(NULL);
|
||||
tree_view_select_project(NULL);
|
||||
}
|
||||
|
||||
void entry_groups_disk(GtkWidget *self,int* flag_update) {
|
||||
update_time_table(&all_config.v_group);
|
||||
if (flag_update) {
|
||||
all_config.flag_set_data = 1;
|
||||
all_config.flag_save = 3;
|
||||
temp_on_destroy_subwindow(self);
|
||||
}
|
||||
int find = fill_tree_view_user_group(&all_config, &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);
|
||||
}
|
||||
wrapper_fill_tree_view_generate(&all_config, &cfg_custom_gui);
|
||||
}
|
||||
|
||||
void entry_project_disk(GtkWidget *self,int* flag_update) {
|
||||
update_time_table(&all_config.v_project);
|
||||
if (flag_update) {
|
||||
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);
|
||||
if (find == 0) {
|
||||
g_object_ref(cfg_custom_gui.project.liststore);
|
||||
gtk_list_store_clear(cfg_custom_gui.project.liststore);
|
||||
}
|
||||
wrapper_fill_tree_view_generate(&all_config, &cfg_custom_gui);
|
||||
}
|
||||
|
||||
void wrapper_filters_user_show() {
|
||||
filters_get_tree_view(cfg_custom_gui.user.tree_view);
|
||||
filters_set_name("usrquota");
|
||||
filters_show(NULL, glade_path);
|
||||
}
|
||||
void wrapper_filters_group_show() {
|
||||
filters_get_tree_view(cfg_custom_gui.group.tree_view);
|
||||
filters_set_name("grpquota");
|
||||
filters_show(NULL, glade_path);
|
||||
}
|
||||
void wrapper_filters_project_show() {
|
||||
filters_get_tree_view(cfg_custom_gui.project.tree_view);
|
||||
filters_set_name("prjquota");
|
||||
filters_show(NULL, glade_path);
|
||||
}
|
||||
|
||||
void wrapper_add_user_show() {
|
||||
set_temp_menu("usrquota", "add");
|
||||
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);
|
||||
}
|
||||
|
||||
void wrapper_edit_user_show() {
|
||||
int index = wrapper_select_tree_view(&cfg_custom_gui.user);
|
||||
set_temp_menu("usrquota", "edit");
|
||||
temp_set_index(index);
|
||||
set_all_config(&all_config);
|
||||
set_vector(&all_config.v_user);
|
||||
temp_show(NULL, glade_path);
|
||||
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);
|
||||
}
|
||||
|
||||
void wrapper_add_group_show() {
|
||||
set_temp_menu("grpquota", "add");
|
||||
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);
|
||||
}
|
||||
|
||||
void wrapper_edit_group_show() {
|
||||
int index = wrapper_select_tree_view(&cfg_custom_gui.group);
|
||||
set_temp_menu("grpquota", "edit");
|
||||
temp_set_index(index);
|
||||
set_all_config(&all_config);
|
||||
set_vector(&all_config.v_group);
|
||||
temp_show(NULL, glade_path);
|
||||
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);
|
||||
temp_show(NULL, glade_path);
|
||||
int i = 0;
|
||||
g_signal_connect(G_OBJECT(get_widget_temp()->btnSaveTempSave),"clicked",G_CALLBACK(entry_project_disk),&i);
|
||||
}
|
||||
|
||||
void wrapper_edit_project_show(GtkWidget* self, vector* vec_temp) {
|
||||
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_vector(&all_config.v_project);
|
||||
temp_show(NULL, glade_path);
|
||||
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);
|
||||
}
|
||||
|
||||
void wrapper_edit_view_device_show(GtkWidget* self) {
|
||||
view_device_set_vector_device(&all_config.v_disk_status);
|
||||
view_device_set_index(index_selected);
|
||||
set_view_device_menu("edit");
|
||||
view_device_all_config(&all_config);
|
||||
view_device_show(NULL, glade_path);
|
||||
int i = 0;
|
||||
g_signal_connect(G_OBJECT(get_widget_view_device()->btnSaveTempSave),"clicked",G_CALLBACK(entry_device_disk),&i);
|
||||
}
|
||||
|
||||
void wrapper_add_view_device_show(GtkWidget* self) {
|
||||
view_device_set_vector_device(&all_config.v_disk_status);
|
||||
view_device_set_index(-1);
|
||||
set_view_device_menu("add");
|
||||
view_device_all_config(&all_config);
|
||||
view_device_show(NULL, glade_path);
|
||||
int i = 0;
|
||||
g_signal_connect(G_OBJECT(get_widget_view_device()->btnSaveTempSave),"clicked",G_CALLBACK(entry_device_disk),&i);
|
||||
}
|
||||
|
||||
void block_tree_view(hotebook* widgets,void (*f)()) {
|
||||
g_signal_handlers_block_by_func(G_OBJECT(widgets->tree_view), G_CALLBACK(f), NULL);
|
||||
}
|
||||
|
||||
void unlock_tree_view(hotebook* widgets,void (*f)()) {
|
||||
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->tree_view), G_CALLBACK(f), NULL);
|
||||
}
|
||||
|
||||
void tree_view_select(GtkWidget* self, vector* vec_temp, hotebook* widgets) {
|
||||
if (self) {}
|
||||
if (vec_temp->vectorList.total > 0 && all_config.v_disk_status.vectorList.total>0) {
|
||||
wrapper_select_tree_view(widgets);
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore);
|
||||
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->tree_view));
|
||||
if(gtk_tree_selection_get_selected(selection, &model, &iter)) {
|
||||
gtk_widget_set_sensitive(widgets->btnAdd, 1);
|
||||
gtk_widget_set_sensitive(widgets->btnDel, 1);
|
||||
gtk_widget_set_sensitive(widgets->btnEdit, 1);
|
||||
}
|
||||
else {
|
||||
if (main_config.lock_save_global == 0 || main_config.lock_save_local == 0) {
|
||||
gtk_widget_set_sensitive(widgets->btnAdd,1);
|
||||
}
|
||||
gtk_widget_set_sensitive(widgets->btnDel, 0);
|
||||
gtk_widget_set_sensitive(widgets->btnEdit, 0);
|
||||
}
|
||||
}
|
||||
if (vec_temp->vectorList.total > 0 && all_config.v_disk_status.vectorList.total==0) {
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore);
|
||||
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->tree_view));
|
||||
if(gtk_tree_selection_get_selected(selection, &model, &iter)) {
|
||||
gtk_widget_set_sensitive(widgets->btnDel, 1);
|
||||
}
|
||||
else {
|
||||
if (main_config.lock_save_global == 0 || main_config.lock_save_local == 0) {
|
||||
gtk_widget_set_sensitive(widgets->btnAdd,1);
|
||||
}
|
||||
gtk_widget_set_sensitive(widgets->btnAdd, 0);
|
||||
gtk_widget_set_sensitive(widgets->btnDel, 0);
|
||||
gtk_widget_set_sensitive(widgets->btnEdit, 0);
|
||||
}
|
||||
}
|
||||
else if (!all_config.v_disk_status.vectorList.total && note_selected != 3) {
|
||||
gtk_widget_set_sensitive(widgets->btnAdd, 0);
|
||||
}
|
||||
else if (all_config.v_disk_status.vectorList.total > 0 && note_selected != 3) {
|
||||
gtk_widget_set_sensitive(widgets->btnAdd, 1);
|
||||
}
|
||||
else {
|
||||
gtk_widget_set_sensitive(widgets->btnDel, 0);
|
||||
gtk_widget_set_sensitive(widgets->btnEdit, 0);
|
||||
}
|
||||
if (widgets->note_selected == note_selected && index_selected>= 0) {
|
||||
gtk_widget_set_sensitive(widgets->btnAdd, 1);
|
||||
gtk_widget_set_sensitive(widgets->btnDel, 1);
|
||||
gtk_widget_set_sensitive(widgets->btnEdit, 1);
|
||||
}
|
||||
else {
|
||||
gtk_widget_set_sensitive(widgets->btnDel, 0);
|
||||
gtk_widget_set_sensitive(widgets->btnEdit, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void device_remove() {
|
||||
if (note_selected == 3) {
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(cfg_custom_gui.device.liststore);
|
||||
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(cfg_custom_gui.device.tree_view));
|
||||
if(gtk_tree_selection_get_selected(selection, &model, &iter)) {
|
||||
int index = wrapper_select_tree_view(&cfg_custom_gui.device);
|
||||
gtk_list_store_remove(cfg_custom_gui.device.liststore, &iter);
|
||||
if (index!=-1) {
|
||||
index_selected = -1;
|
||||
disk_status* _config = (disk_status*)all_config.v_disk_status.pfVectorGet(&all_config.v_disk_status, index);
|
||||
yon_window_config_erase_custom_parameter(_config->device, "deferring_size");
|
||||
yon_window_config_erase_custom_parameter(_config->device, "deferring_file");
|
||||
yon_window_config_erase_custom_parameter(_config->device, _config->device);
|
||||
all_config.v_disk_remove.pfVectorAdd(&all_config.v_disk_remove, yon_char_new(_config->device));
|
||||
model_search_disk_remove(&all_config.v_user, &all_config.v_remove, _config->device);
|
||||
model_search_disk_remove(&all_config.v_group, &all_config.v_remove, _config->device);
|
||||
model_search_disk_remove_project(&all_config.v_project,&all_config.v_disk_status, &all_config.v_remove, _config->device);
|
||||
model_clear_cfg_device(_config);
|
||||
all_config.v_disk_status.pfVectorDelete(&all_config.v_disk_status, index);
|
||||
all_config.flag_save = 1;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
entry_user_disk(0, 0);
|
||||
entry_groups_disk(0, 0);
|
||||
entry_project_disk(0, 0);
|
||||
tree_view_select_user(NULL);
|
||||
tree_view_select_group(NULL);
|
||||
tree_view_select_project(NULL);
|
||||
}
|
||||
|
||||
|
||||
void user_remove() {
|
||||
if (note_selected == 0) {
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(cfg_custom_gui.user.liststore);
|
||||
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(cfg_custom_gui.user.tree_view));
|
||||
if(gtk_tree_selection_get_selected(selection, &model, &iter)) {
|
||||
int index = wrapper_select_tree_view(&cfg_custom_gui.user);
|
||||
gtk_list_store_remove(cfg_custom_gui.user.liststore, &iter);
|
||||
model_template_remove(&all_config.v_user, &all_config.v_remove, index);
|
||||
index_selected = -1;
|
||||
all_config.flag_save = 1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void group_remove() {
|
||||
if (note_selected == 1) {
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(cfg_custom_gui.group.liststore);
|
||||
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(cfg_custom_gui.group.tree_view));
|
||||
if(gtk_tree_selection_get_selected(selection, &model, &iter)) {
|
||||
int index = wrapper_select_tree_view(&cfg_custom_gui.group);
|
||||
gtk_list_store_remove(cfg_custom_gui.group.liststore, &iter);
|
||||
model_template_remove(&all_config.v_group, &all_config.v_remove, index);
|
||||
index_selected = -1;
|
||||
all_config.flag_save = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void project_remove() {
|
||||
if (note_selected == 2) {
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(cfg_custom_gui.project.liststore);
|
||||
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(cfg_custom_gui.project.tree_view));
|
||||
if(gtk_tree_selection_get_selected(selection, &model, &iter)) {
|
||||
int index = wrapper_select_tree_view(&cfg_custom_gui.project);
|
||||
gtk_list_store_remove(cfg_custom_gui.project.liststore, &iter);
|
||||
model_template_remove(&all_config.v_project, &all_config.v_remove, index);
|
||||
index_selected = -1;
|
||||
all_config.flag_save = 1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
int wrapper_select_tree_view(hotebook* widgets) {
|
||||
int index = -1;
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore);
|
||||
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->tree_view));
|
||||
if(gtk_tree_selection_get_selected(selection, &model, &iter)) {
|
||||
char* str_iter = gtk_tree_model_get_string_from_iter(model, &iter);
|
||||
index = atoi(str_iter);
|
||||
index_selected = index;
|
||||
}
|
||||
else {
|
||||
index_selected = -1;
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
else {
|
||||
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;
|
||||
}
|
||||
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)) {
|
||||
yon_ubl_status_box_render(GLOBAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
||||
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)) {
|
||||
yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
||||
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);
|
||||
yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL, BACKGROUND_IMAGE_SUCCESS_TYPE);
|
||||
entry_device_disk(0, 0);
|
||||
entry_user_disk(0, 0);
|
||||
entry_groups_disk(0, 0);
|
||||
entry_project_disk(0, 0);
|
||||
tree_view_select_user(NULL);
|
||||
tree_view_select_group(NULL);
|
||||
tree_view_select_project(NULL);
|
||||
tree_view_select_device(NULL);
|
||||
}
|
||||
|
||||
void load_global_cfg() {
|
||||
all_config.flag_load = 1;
|
||||
load_template_load_cfg(&all_config, CMD_LOAD_GLOBAL);
|
||||
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
||||
entry_device_disk(0, 0);
|
||||
entry_user_disk(0, 0);
|
||||
entry_groups_disk(0, 0);
|
||||
entry_project_disk(0, 0);
|
||||
tree_view_select_user(NULL);
|
||||
tree_view_select_group(NULL);
|
||||
tree_view_select_project(NULL);
|
||||
tree_view_select_device(NULL);
|
||||
}
|
||||
|
||||
void tree_view_select_device(GtkWidget* self) {
|
||||
note_selected = 3;
|
||||
tree_view_select(NULL,&all_config.v_disk_status , &cfg_custom_gui.device);
|
||||
}
|
||||
|
||||
void tree_view_select_user(GtkWidget* self) {
|
||||
note_selected = 0;
|
||||
tree_view_select(NULL,&all_config.v_user , &cfg_custom_gui.user);
|
||||
}
|
||||
void tree_view_select_group(GtkWidget* self) {
|
||||
note_selected = 1;
|
||||
tree_view_select(NULL,&all_config.v_group ,&cfg_custom_gui.group);
|
||||
}
|
||||
void tree_view_select_project(GtkWidget* self) {
|
||||
note_selected = 2;
|
||||
tree_view_select(NULL,&all_config.v_project , &cfg_custom_gui.project);
|
||||
}
|
||||
|
||||
void control_event(main_window* _config_main_gui, custom_window* _config_custom_gui) {
|
||||
g_signal_connect(G_OBJECT(_config_main_gui->LoadLocalMenuItem), "activate", G_CALLBACK(load_system_cfg), NULL);
|
||||
g_signal_connect(G_OBJECT(_config_main_gui->LoadGlobalMenuItem), "activate", G_CALLBACK(load_global_cfg), NULL);
|
||||
g_signal_connect(G_OBJECT(_config_main_gui->SaveGlobalMenuItem), "activate", G_CALLBACK(wrapper_global_save), NULL);
|
||||
g_signal_connect(G_OBJECT(_config_main_gui->SaveLocalMenuItem), "activate", G_CALLBACK(wrapper_system_save), NULL);
|
||||
g_signal_connect(G_OBJECT(_config_main_gui->SaveMenuItem), "activate", G_CALLBACK(wrapper_all_save), NULL);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->user.btnAdd),"clicked",G_CALLBACK(wrapper_add_user_show), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->user.btnEdit),"clicked",G_CALLBACK(wrapper_edit_user_show), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->user.btnDel),"clicked",G_CALLBACK(user_remove), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->group.btnAdd),"clicked",G_CALLBACK(wrapper_add_group_show), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->group.btnEdit),"clicked",G_CALLBACK(wrapper_edit_group_show), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->group.btnDel),"clicked",G_CALLBACK(group_remove), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->project.btnAdd),"clicked",G_CALLBACK(wrapper_add_project_show), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->project.btnEdit),"clicked",G_CALLBACK(wrapper_edit_project_show), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->project.btnDel),"clicked",G_CALLBACK(project_remove), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->user.btnFilter),"clicked",G_CALLBACK(wrapper_filters_user_show), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->group.btnFilter),"clicked",G_CALLBACK(wrapper_filters_group_show), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->project.btnFilter),"clicked",G_CALLBACK(wrapper_filters_project_show), glade_path);
|
||||
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->user.tree_view), "cursor-changed", G_CALLBACK(tree_view_select_user), NULL);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->group.tree_view), "cursor-changed", G_CALLBACK(tree_view_select_group), NULL);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->project.tree_view), "cursor-changed", G_CALLBACK(tree_view_select_project), NULL);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->device.tree_view), "cursor-changed", G_CALLBACK(tree_view_select_device), NULL);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->device.btnEdit), "clicked", G_CALLBACK(wrapper_edit_view_device_show), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->device.btnAdd), "clicked", G_CALLBACK(wrapper_add_view_device_show), glade_path);
|
||||
g_signal_connect(G_OBJECT(_config_custom_gui->device.btnDel),"clicked",G_CALLBACK(device_remove), glade_path);
|
||||
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]){
|
||||
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, "");
|
||||
textdomain(LocaleName);
|
||||
config_init(&main_config);
|
||||
int size_array_size_pow = 0;
|
||||
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_KB);
|
||||
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_MB);
|
||||
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_GB);
|
||||
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_TB);
|
||||
|
||||
int option_index=0;
|
||||
int show_help=0;
|
||||
int debug_mode=0;
|
||||
{
|
||||
struct option long_options[] = {
|
||||
{"help", 0, 0, 'h'},
|
||||
{"version", 0, 0, 'V'},
|
||||
{"lock-help", 0,0, 1},
|
||||
{"lock-save", 0,0, 2},
|
||||
{"lock-save-local", 0,0, 3},
|
||||
{"lock-save-global", 0,0, 4},
|
||||
{"lock-load-global", 0,0, 5},
|
||||
{"socket-id", 1, 0, 's'},
|
||||
{"socket-ext-id", 1,0, 'e'},
|
||||
{"socket-trd-id", 1,0, 't'},
|
||||
{"debug", 0,0, 'd'},
|
||||
{ NULL, 0, NULL, 0 }
|
||||
};
|
||||
for (int i=0;i<argc;i++){
|
||||
int argument=getopt_long(argc,argv,"hVvs:e:t:d",long_options,&option_index);
|
||||
switch(argument){
|
||||
case 'h':
|
||||
show_help=1;
|
||||
break;
|
||||
case 'v':
|
||||
case 'V':
|
||||
printf("%s\n",VERSION_LABEL);
|
||||
exit(0);
|
||||
break;
|
||||
case 's':
|
||||
if(optarg)
|
||||
main_config.socket_id=atoi(optarg);
|
||||
break;
|
||||
case 'e':
|
||||
if(optarg)
|
||||
main_config.save_socket_id=atoi(optarg);
|
||||
break;
|
||||
case 't':
|
||||
if(optarg)
|
||||
main_config.load_socket_id=atoi(optarg);
|
||||
break;
|
||||
case 1:
|
||||
main_config.lock_help=1;
|
||||
break;
|
||||
case 2:
|
||||
main_config.lock_save_local=1;
|
||||
main_config.lock_save_global=1;
|
||||
break;
|
||||
case 3:
|
||||
main_config.lock_save_local=1;
|
||||
break;
|
||||
case 4:
|
||||
main_config.lock_save_global=1;
|
||||
break;
|
||||
case 5:
|
||||
main_config.lock_load_global=1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (show_help==1&&main_config.lock_help!=1){
|
||||
printf("%s\n",HELP_LABEL);
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (getuid()!=0){
|
||||
main_config.lock_load_global=1;
|
||||
main_config.lock_save_global=1;
|
||||
main_config.lock_save_local=1;
|
||||
}
|
||||
gtk_init(&argc,&argv);
|
||||
|
||||
main_window *widgets = setup_window(&cfg_main_gui,&cfg_custom_gui);
|
||||
filters_set_name("prjquota");
|
||||
filters_init_flag();
|
||||
control_event(widgets, &cfg_custom_gui);
|
||||
|
||||
|
||||
yon_ubl_header_setup_resource(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path);
|
||||
|
||||
yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel);
|
||||
yon_window_config_setup(GTK_WINDOW(widgets->Window));
|
||||
yon_window_config_load(config_path);
|
||||
if (getuid()!=0) {
|
||||
load_system_cfg();
|
||||
yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
||||
}
|
||||
else {
|
||||
yon_ubl_status_box_render(LOAD_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
||||
if (main_config.lock_load_global == 0) {
|
||||
load_global_cfg();
|
||||
}
|
||||
if (main_config.lock_save_local == 0) {
|
||||
load_system_cfg();
|
||||
}
|
||||
}
|
||||
|
||||
yon_ubl_setup_sockets(widgets->PlugBox,widgets->LeftBox,widgets->RightBox,main_config.socket_id,main_config.load_socket_id,main_config.save_socket_id);
|
||||
GtkCssProvider *css=gtk_css_provider_new();
|
||||
gtk_css_provider_load_from_resource(css,CssPath);
|
||||
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
|
||||
GTK_STYLE_PROVIDER(css),
|
||||
-1);
|
||||
tree_view_select_user(NULL);
|
||||
tree_view_select_group(NULL);
|
||||
tree_view_select_project(NULL);
|
||||
tree_view_select_device(NULL);
|
||||
gtk_main();
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
#include "ubl-settings-diskquota.h"
|
||||
#include "ubl-strings.h"
|
||||
#include "view_set_disk.h"
|
||||
char *local;
|
||||
|
||||
int main(int argc, char *argv[]);
|
||||
void load_global_cfg();
|
||||
void load_system_cfg();
|
||||
void control_event(main_window* _config_main_gui, custom_window* _config_custom_gui);
|
||||
void wrapper_all_save();
|
||||
void wrapper_global_save();
|
||||
void wrapper_system_save();
|
||||
int fill_tree_view_project(config_all* all_config, hotebook* widget, char* str_fill , int flag_gui_add);
|
||||
void entry_user_disk(GtkWidget *self,int* flag_update);
|
||||
void entry_groups_disk(GtkWidget *self,int* flag_update);
|
||||
void entry_project_disk(GtkWidget *self,int* flag_update);
|
||||
void wrapper_add_user_show();
|
||||
void wrapper_edit_user_show();
|
||||
void wrapper_add_group_show();
|
||||
void wrapper_edit_group_show();
|
||||
void wrapper_add_project_show();
|
||||
void wrapper_edit_project_show();
|
||||
void wrapper_filters_user_show();
|
||||
void wrapper_filters_group_show();
|
||||
void wrapper_filters_project_show();
|
||||
void wrapper_get_spin_time_gui_user();
|
||||
void wrapper_get_spin_time_gui_group();
|
||||
void wrapper_get_spin_time_gui_project();
|
||||
void tree_view_select_user(GtkWidget* self);
|
||||
void tree_view_select_group(GtkWidget* self);
|
||||
void tree_view_select_project(GtkWidget* self);
|
||||
void tree_view_select_device(GtkWidget* self);
|
||||
void get_spin_time_gui(vector* vec_u_g_p, hotebook* widgets);
|
||||
void tree_view_select(GtkWidget* self, vector* vec_temp, hotebook* widgets);
|
||||
void block_spin_time(hotebook* widgets,void (*f)());
|
||||
void unlock_spin_time(hotebook* widgets,void (*f)());
|
||||
void template_set_status_disk(GtkWidget* self, hotebook* widgets);
|
||||
void get_status_disk(hotebook* widgets);
|
@ -1,68 +0,0 @@
|
||||
#include "controller.h"
|
||||
|
||||
int socket_ext_id_I = 0;
|
||||
int socket_trd_id_I = 0;
|
||||
|
||||
Controller::Controller(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder)
|
||||
:Gtk::ApplicationWindow(obj), builder{builder} {
|
||||
this->builder = builder;
|
||||
this->settings();
|
||||
}
|
||||
|
||||
Controller::Controller(Glib::RefPtr<Gtk::Builder> const& builder) {
|
||||
this->builder = builder;
|
||||
this->settings();
|
||||
}
|
||||
|
||||
Controller::~Controller()
|
||||
{
|
||||
}
|
||||
|
||||
void Controller::settings() {
|
||||
obj_open_browser->set_obj_about(obj_view_about);
|
||||
obj_main_window = new MainWindow(builder, obj_open_browser, &socket_ext_id_I, &socket_trd_id_I);
|
||||
obj_main_window->set_obj_wrapper_load_save(obj_wrapper_load_save);
|
||||
obj_open_browser->settings();
|
||||
obj_main_window->set_map_gui(&map_gui_cfg);
|
||||
obj_main_window->set_map_global(&map_global_cfg);
|
||||
obj_main_window->set_map_local(&map_system_cfg);
|
||||
obj_main_window->set_obj_view_filters(&obj_view_filters);
|
||||
obj_main_window->set_obj_view_edit(&obj_view_edit);
|
||||
obj_main_window->set_obj_view_add(&obj_view_add);
|
||||
obj_main_window->set_obj_view_add_project(&obj_view_add_project);
|
||||
obj_main_window->set_obj_view_edit_project(&obj_view_edit_project);
|
||||
obj_main_window->settings();
|
||||
}
|
||||
|
||||
CmdArgParser::CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help)
|
||||
: Glib::OptionGroup{p_name, p_description, p_help} {
|
||||
Glib::OptionEntry socketIDArg;
|
||||
socketIDArg.set_long_name("socket-id");
|
||||
socketIDArg.set_flags(Glib::OptionEntry::FLAG_IN_MAIN);
|
||||
socketIDArg.set_description("Settings manager socket");
|
||||
Glib::OptionEntry socketExtId;
|
||||
socketExtId.set_long_name("socket-ext-id");
|
||||
socketExtId.set_flags(Glib::OptionEntry::FLAG_IN_MAIN);
|
||||
socketExtId.set_description("Settings manager secondary socket");
|
||||
Glib::OptionEntry socketTrdId;
|
||||
socketTrdId.set_long_name("socket-trd-id");
|
||||
socketTrdId.set_flags(Glib::OptionEntry::FLAG_IN_MAIN);
|
||||
socketTrdId.set_description("Settings manager secondary socket");
|
||||
add_entry(socketIDArg, m_socketID);
|
||||
add_entry(socketExtId, socket_ext_id_I);
|
||||
add_entry(socketTrdId, socket_trd_id_I);
|
||||
}
|
||||
|
||||
::Window CmdArgParser::GetSocketID() const{
|
||||
return m_socketID;
|
||||
}
|
||||
|
||||
SettingsPlug::SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> builder)
|
||||
:Gtk::Plug{p_socketID} {
|
||||
Controller* wnd = nullptr;
|
||||
builder->get_widget_derived("window", wnd);
|
||||
builder->get_widget("plugBox", plugBox);
|
||||
plugBox->get_parent()->remove(*plugBox);
|
||||
add(*plugBox);
|
||||
show_all_children();
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
#ifndef CONTROLLER_H
|
||||
#define CONTROLLER_H
|
||||
#include "my_type.h"
|
||||
#include "view/view_open_browser.h"
|
||||
#include "view/view_about.h"
|
||||
#include "view/ubl-settings-diskquota.h"
|
||||
#include "view/model/wrapper_load_save.h"
|
||||
#include "view/view_filters.h"
|
||||
#include "view/view_add_user_group.h"
|
||||
#include "view/view_edit_user_group.h"
|
||||
#include "view/view_edit_project.h"
|
||||
#include "view/view_add_project.h"
|
||||
|
||||
extern int socket_ext_id_I;
|
||||
extern int socket_trd_id_I;
|
||||
|
||||
class Controller : public Gtk::ApplicationWindow
|
||||
{
|
||||
private:
|
||||
Glib::RefPtr<Gtk::Builder> builder;
|
||||
map_str_str map_gui_cfg;
|
||||
map_str_str map_global_cfg;
|
||||
map_str_str map_system_cfg;
|
||||
public:
|
||||
~Controller();
|
||||
void settings();
|
||||
View_open_browser* obj_open_browser = new View_open_browser();
|
||||
View_about* obj_view_about = new View_about();
|
||||
MainWindow* obj_main_window;
|
||||
Wrapper_load_save *obj_wrapper_load_save = new Wrapper_load_save();
|
||||
View_filters obj_view_filters = View_filters();
|
||||
View_add_user_group obj_view_add = View_add_user_group();
|
||||
View_edit_user_group obj_view_edit = View_edit_user_group();
|
||||
View_edit_project obj_view_edit_project = View_edit_project();
|
||||
View_add_project obj_view_add_project = View_add_project();
|
||||
Controller(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder);
|
||||
Controller(Glib::RefPtr<Gtk::Builder> const& builder);
|
||||
|
||||
|
||||
};
|
||||
|
||||
class CmdArgParser : public Glib::OptionGroup {
|
||||
public:
|
||||
CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help);
|
||||
::Window GetSocketID() const;
|
||||
private:
|
||||
int m_socketID = 0;
|
||||
|
||||
};
|
||||
class SettingsPlug : public Gtk::Plug{
|
||||
public:
|
||||
Gtk::Window *window;
|
||||
SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> builder);
|
||||
|
||||
private:
|
||||
Gtk::Widget *plugBox;
|
||||
Gtk::Widget *parent;
|
||||
};
|
||||
#endif
|
@ -1,99 +0,0 @@
|
||||
#include "controller.h"
|
||||
#include "var.h"
|
||||
|
||||
void pars_flag(int index_start, int argc, char* argv[]);
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
string str_argv= "";
|
||||
string str_cmd_argv = "";
|
||||
for (int i=1; i<argc; i++){
|
||||
str_cmd_argv+= to_string(*argv[i]) + " ";
|
||||
}
|
||||
if (geteuid()!=0){
|
||||
string cmd = "";
|
||||
cmd = cmd + "pkexec " + app_name + " " + str_cmd_argv;
|
||||
return system(cmd.c_str());
|
||||
}
|
||||
if (argc > 1){
|
||||
str_argv = argv[1];
|
||||
}
|
||||
bindtextdomain(app_name, "/usr/share/locale/");
|
||||
bind_textdomain_codeset(app_name, "UTF-8");
|
||||
textdomain(app_name);
|
||||
if (str_argv.find("--socket-id") != std::string::npos) {
|
||||
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug");
|
||||
auto builder = Gtk::Builder::create_from_file(path_glade);
|
||||
Glib::init();
|
||||
setlocale(LC_ALL, "");
|
||||
Glib::OptionContext context;
|
||||
|
||||
CmdArgParser parser{
|
||||
"Socket ID",
|
||||
"Command line argument for socket ID communication.",
|
||||
"No help available, sorry"
|
||||
};
|
||||
|
||||
context.set_main_group(parser);
|
||||
context.parse(argc, argv);
|
||||
|
||||
::Window socketID = parser.GetSocketID();
|
||||
|
||||
// Handle plug:
|
||||
SettingsPlug plug{socketID, builder};
|
||||
plug.show();
|
||||
|
||||
app->run(plug);
|
||||
return 0;
|
||||
}
|
||||
else if (str_argv.find("-") != std::string::npos || argc == 1) {
|
||||
int len_argv = 1;
|
||||
auto app = Gtk::Application::create(len_argv, argv, "org.gtkmm.example.plug");
|
||||
auto builder = Gtk::Builder::create_from_file(path_glade);
|
||||
pars_flag(1, argc, argv);
|
||||
Controller* wnd = nullptr;
|
||||
builder->get_widget_derived("window", wnd);
|
||||
auto r = app->run(*wnd);
|
||||
delete wnd;
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
void pars_flag(int index_start, int argc, char* argv[]) {
|
||||
string str_argv = "";
|
||||
for (int i = index_start; i<argc; i++){
|
||||
str_argv = argv[i];
|
||||
if (str_argv == "--help" || str_argv == "-h"){
|
||||
help();
|
||||
exit(1);
|
||||
}
|
||||
else if (str_argv == "--version" || str_argv == "-v"){
|
||||
string version = string(str_version) + version_application + "\n";
|
||||
cout << version.c_str();
|
||||
exit(1);
|
||||
}
|
||||
else if (str_argv == "--lock-help") {
|
||||
flag_lock_help = true;
|
||||
}
|
||||
else if (str_argv == "--lock-save") {
|
||||
flag_save = true;
|
||||
flag_save_local = true;
|
||||
flag_save_global = true;
|
||||
}
|
||||
else if (str_argv == "--lock-save-local"){
|
||||
flag_save_local = true;
|
||||
}
|
||||
else if (str_argv == "--lock-save-global"){
|
||||
flag_save_global = true;
|
||||
}
|
||||
else if (str_argv == "--lock-load-global"){
|
||||
flag_load_global = true;
|
||||
}
|
||||
else{
|
||||
if (index_start == 1){
|
||||
g_print(no_recognized);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,290 @@
|
||||
#include "load.h"
|
||||
|
||||
|
||||
void load_template_load_cfg(config_all* _all_config, char* cmd) {
|
||||
int size = 0;
|
||||
char** cfg = yon_config_load(cmd, &size);
|
||||
philos_array_string_remove_char(&cfg, "\n", size);
|
||||
int size_loaded_keys = 0;
|
||||
load_free_vector(_all_config, &_all_config->v_user);
|
||||
load_free_vector(_all_config, &_all_config->v_group);
|
||||
load_free_vector(_all_config, &_all_config->v_project);
|
||||
free_remove_vector(_all_config, &_all_config->v_remove);
|
||||
model_free_vector_string(&_all_config->v_disk_remove);
|
||||
device_disk_parsed();
|
||||
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);
|
||||
vector_init(&_all_config->v_disk_remove);
|
||||
if (size == 1 && strcmp(cfg[0], "(null)") == 0) {
|
||||
for (int index_1 = 0; index_1 < get_device_vec()->vectorList.total; index_1++) {
|
||||
char* device = NULL;
|
||||
device_config* _config_disk = (device_config*)get_device_vec()->pfVectorGet(get_device_vec(), index_1);
|
||||
if (yon_window_config_get_parameter(_config_disk->name_disk, _config_disk->name_disk, &device, YON_TYPE_STRING)) {
|
||||
if (strstr(device, _config_disk->name_disk)) {
|
||||
size_t deferring_size = 0;
|
||||
size_t deferring_file = 0;
|
||||
disk_status* disk_cfg = malloc(sizeof(disk_status));
|
||||
disk_cfg->status = 1;
|
||||
_all_config->v_disk_status.pfVectorAdd(&_all_config->v_disk_status, disk_cfg);
|
||||
disk_cfg->device = yon_char_new(device);
|
||||
disk_cfg->fs = yon_char_new(_config_disk->file_system);
|
||||
disk_cfg->mount_point = yon_char_new(_config_disk->mounted);
|
||||
disk_cfg->name = yon_char_new(_config_disk->type_dick);
|
||||
if (yon_window_config_get_parameter("deferring_size", _config_disk->name_disk, &deferring_size, YON_TYPE_INT)) {
|
||||
disk_cfg->deferring_size = deferring_size;
|
||||
}
|
||||
else {
|
||||
disk_cfg->deferring_size = 0;
|
||||
}
|
||||
if (yon_window_config_get_parameter("deferring_file", _config_disk->name_disk, &deferring_file, YON_TYPE_INT)) {
|
||||
disk_cfg->deferring_file = deferring_file;
|
||||
}
|
||||
else {
|
||||
disk_cfg->deferring_file = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int index = 0; index < size; index++) {
|
||||
char* str_key_value = yon_char_new(cfg[index]);
|
||||
char* str_key = yon_char_divide_search(str_key_value, "=",-1);
|
||||
yon_char_divide_search(str_key, "[",-1);
|
||||
str_key = yon_char_divide_search(str_key, "]",-1);
|
||||
char* str_value = str_key_value;
|
||||
int flag_find = 0;
|
||||
for (int j=0; j < _all_config->v_disk_status.vectorList.total;j++) {
|
||||
disk_status* config_disk_status = (disk_status*)_all_config->v_disk_status.pfVectorGet(&_all_config->v_disk_status, j);
|
||||
if (strstr(str_key, config_disk_status->device)) {
|
||||
flag_find = 1;
|
||||
}
|
||||
}
|
||||
if (((strstr(str_value, "enable") || strstr(str_value, "disable")) || yon_char_find_count(str_key, ":") == 1) && flag_find == 0) {
|
||||
disk_status* disk_cfg = malloc(sizeof(disk_status));
|
||||
disk_cfg->deferring_size = 0;
|
||||
disk_cfg->deferring_file = 0;
|
||||
load_pars_values_status(disk_cfg, str_key, str_value);
|
||||
_all_config->v_disk_status.pfVectorAdd(&_all_config->v_disk_status, disk_cfg);
|
||||
for (int index = 0; index < get_device_vec()->vectorList.total; index++) {
|
||||
device_config* _config_disk = (device_config*)get_device_vec()->pfVectorGet(get_device_vec(), index);
|
||||
for (int j=0; j < _all_config->v_disk_status.vectorList.total;j++) {
|
||||
disk_status* config_disk_status = (disk_status*)_all_config->v_disk_status.pfVectorGet(&_all_config->v_disk_status, j);
|
||||
if (strstr(config_disk_status->device, _config_disk->name_disk)) {
|
||||
config_disk_status->device = yon_char_new(_config_disk->name_disk);
|
||||
config_disk_status->fs = yon_char_new(_config_disk->file_system);
|
||||
config_disk_status->mount_point = yon_char_new(_config_disk->mounted);
|
||||
config_disk_status->name = yon_char_new(_config_disk->type_dick);
|
||||
if (yon_char_find_count(str_key, ":") == 1 && (!strstr(str_value, "enable") && !strstr(str_value, "disable"))) {
|
||||
int size_value = 0;
|
||||
char** arr_values = philos_str_split(str_value, &size_value, ":");
|
||||
config_disk_status->deferring_size = atoll(arr_values[4]);
|
||||
config_disk_status->deferring_file = atoll(arr_values[5]);
|
||||
config_disk_status->status = 2;
|
||||
philos_free_string_array(&arr_values, size_value);
|
||||
}
|
||||
else {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ((strstr(str_value, "enable") || strstr(str_value, "disable")) && flag_find) {
|
||||
|
||||
}
|
||||
else {
|
||||
if (yon_char_find_count(str_key, ":") == 1) {
|
||||
|
||||
}
|
||||
else {
|
||||
config_u_g_p* _config = malloc(sizeof(config_u_g_p));
|
||||
model_null_str_writing(_config);
|
||||
_config->loaded_keys = yon_char_new(str_key);
|
||||
load_pars_keys(_config, yon_char_new(str_key), index);
|
||||
load_pars_values(_config, _all_config,str_key, yon_char_new(str_value), index);
|
||||
|
||||
if (strstr(str_key, "prjquota")) {
|
||||
_all_config->v_project.pfVectorAdd(&_all_config->v_project,_config);
|
||||
}
|
||||
else if (strstr(str_key, "usrquota")) {
|
||||
_all_config->v_user.pfVectorAdd(&_all_config->v_user,_config);
|
||||
}
|
||||
else if (strstr(str_key, "grpquota")){
|
||||
_all_config->v_group.pfVectorAdd(&_all_config->v_group,_config);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
_all_config->flag_set_data = 0;
|
||||
_all_config->flag_not_data = 1;
|
||||
_all_config->flag_save = 0;
|
||||
|
||||
}
|
||||
|
||||
void load_pars_keys(config_u_g_p* _config, char* str_key, int index) {
|
||||
load_pars_keys_u_g(_config, yon_char_new(str_key), index);
|
||||
load_pars_keys_p(_config, yon_char_new(str_key), index);
|
||||
}
|
||||
|
||||
void load_pars_keys_u_g(config_u_g_p* _config, char* str_key, int index) {
|
||||
if (strstr(str_key, "prjquota")) {
|
||||
return;
|
||||
}
|
||||
if (yon_char_find_count(str_key, ":") == 1) {
|
||||
return;
|
||||
}
|
||||
if (yon_char_find_count(str_key, ":") || yon_char_find_count(str_key, ",")) {
|
||||
int size_point = 0;
|
||||
char** arr_keys = philos_str_split(yon_char_new(str_key), &size_point, ":");
|
||||
_config->type_arr = yon_char_new(arr_keys[0]);
|
||||
int size_users = 0;
|
||||
if (yon_char_find_count(str_key, ":") == 1) {
|
||||
int size_comma = 0;
|
||||
char** arr_user = philos_str_split(arr_keys[size_point-1], &size_comma, ",");
|
||||
_config->UNIX_file = yon_char_new(arr_keys[1]);
|
||||
}
|
||||
else if (yon_char_find_count(str_key, ":") == 2) {
|
||||
if (yon_char_find_count(str_key, ",")) {
|
||||
int size_comma = 0;
|
||||
char** arr_user = philos_str_split(arr_keys[size_point-1], &size_comma, ",");
|
||||
_config->UNIX_file = yon_char_new(arr_keys[1]);
|
||||
for (int i = 0; i < size_comma; i++) {
|
||||
_config->actors.pfVectorAdd(&_config->actors,yon_char_new(arr_user[i]));
|
||||
}
|
||||
}
|
||||
else {
|
||||
_config->UNIX_file = yon_char_new(arr_keys[1]);
|
||||
if (size_point == 3) {
|
||||
_config->actors.pfVectorAdd(&_config->actors,yon_char_new(arr_keys[2]));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void load_pars_keys_p(config_u_g_p* _config, char* str_key, int index) {
|
||||
if (yon_char_find_count(str_key, ":") == 1) {
|
||||
return;
|
||||
}
|
||||
if (strstr(str_key, "prjquota")) {
|
||||
if (yon_char_find_count(str_key, ":") || yon_char_find_count(str_key, ",")) {
|
||||
int size_point = 0;
|
||||
char** arr_keys = philos_str_split(yon_char_new(str_key), &size_point, ":");
|
||||
_config->type_arr = yon_char_new(arr_keys[0]);
|
||||
int size_users = 0;
|
||||
if (yon_char_find_count(str_key, ":") == 2) {
|
||||
_config->UNIX_file = yon_char_new(arr_keys[1]);
|
||||
int size_comma = 0;
|
||||
if (yon_char_find_count(str_key, ",")) {
|
||||
char** arr_user = philos_str_split(arr_keys[size_point-1], &size_comma, ",");
|
||||
if (strstr(str_key, "AUTO")) {
|
||||
_config->id = -1;
|
||||
}
|
||||
else {
|
||||
_config->id = atoi(arr_user[0]);
|
||||
}
|
||||
_config->actors.pfVectorAdd(&_config->actors,yon_char_new(arr_user[size_comma-1]));
|
||||
}
|
||||
else {
|
||||
if (strstr(str_key, "AUTO")) {
|
||||
_config->id = -1;
|
||||
}
|
||||
else {
|
||||
_config->id = atoi(arr_keys[size_point-1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
}
|
||||
}
|
||||
|
||||
void load_pars_values_status(disk_status* _config, char* key, char* value) {
|
||||
_config->device = yon_char_new(key);
|
||||
if (strstr(value,"enable")) {
|
||||
_config->status = 2;
|
||||
return;
|
||||
}
|
||||
else if (strstr(value,"disable")) {
|
||||
_config->status = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void load_pars_values(config_u_g_p* _config, config_all* _all_config, char* str_key, char* str_value, int index) {
|
||||
int size_array_size_pow = 0;
|
||||
char** array_size_pow = NULL;
|
||||
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_KB);
|
||||
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_MB);
|
||||
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_GB);
|
||||
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_TB);
|
||||
int size = 0;
|
||||
char* new_value = yon_char_new(str_value);
|
||||
char** arr_values = philos_str_split(new_value, &size, ":");
|
||||
int index_split = yon_char_find_count(str_value, ":");
|
||||
if (index_split == 3 || index_split == 5) {
|
||||
philos_set_pow_size_memory(yon_char_new(arr_values[0]), &_config->soft_restriction_size_pow, array_size_pow);
|
||||
philos_set_size_memory_integer(yon_char_new(arr_values[0]), &_config->soft_restriction_size);
|
||||
philos_set_pow_size_memory(yon_char_new(arr_values[1]), &_config->severe_limitation_size_pow, array_size_pow);
|
||||
philos_set_size_memory_integer(yon_char_new(arr_values[1]), &_config->severe_limitation_size);
|
||||
philos_set_size_memory_integer(yon_char_new(arr_values[2]), &_config->soft_restriction_file);
|
||||
philos_set_size_memory_integer(yon_char_new(arr_values[3]), &_config->severe_limitation_file);
|
||||
if (index_split == 5) {
|
||||
_config->deferring_size = atoll(arr_values[4]);
|
||||
_config->deferring_file = atoll(arr_values[5]);
|
||||
}
|
||||
else {
|
||||
philos_set_size_memory_integer("-", &_config->deferring_size);
|
||||
philos_set_size_memory_integer("-", &_config->deferring_file);
|
||||
}
|
||||
for (int j=0; j < _all_config->v_disk_status.vectorList.total;j++) {
|
||||
disk_status* config_disk_status = (disk_status*)_all_config->v_disk_status.pfVectorGet(&_all_config->v_disk_status, j);
|
||||
if (strstr(str_key, config_disk_status->device)){
|
||||
config_disk_status->deferring_file = _config->deferring_file;
|
||||
config_disk_status->deferring_size = _config->deferring_size;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void load_free_vector(config_all* _all_config, vector* vec_config) {
|
||||
|
||||
if (_all_config->flag_not_data == 1) {
|
||||
for (int i = 0; i < vec_config->pfVectorTotal(vec_config); i++) {
|
||||
config_u_g_p* _config = (config_u_g_p*)vec_config->pfVectorGet(vec_config, i);
|
||||
model_clear_cfg(_config);
|
||||
}
|
||||
vec_config->pfVectorFree(vec_config);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void free_remove_vector(config_all* _all_config, vector* vec_remove) {
|
||||
if (_all_config->flag_not_data == 1) {
|
||||
if (vec_remove->vectorList.total > 0) {
|
||||
for (int i = 0; i < vec_remove->vectorList.total; i++) {
|
||||
char* str_remove = (char*)vec_remove->pfVectorGet(vec_remove, i);
|
||||
free(str_remove);
|
||||
}
|
||||
vec_remove->pfVectorFree(vec_remove);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -0,0 +1,16 @@
|
||||
#ifndef LOAD_H
|
||||
#define LOAD_H
|
||||
#include "ubl-utils.h"
|
||||
#include "philos_utils.h"
|
||||
#include "my_device.h"
|
||||
|
||||
void load_template_load_cfg(config_all* _all_config, char* cmd);
|
||||
void load_pars_keys(config_u_g_p* _config, char* str_key, int index);
|
||||
void load_pars_keys_u_g(config_u_g_p* _config, char* str_key, int index);
|
||||
void load_pars_keys_p(config_u_g_p* _config, char* str_key, int index);
|
||||
void load_pars_values(config_u_g_p* _config, config_all* _all_config, char* str_key, char* str_value, int index);
|
||||
void load_free_vector(config_all* _all_config,vector* vec_config);
|
||||
void load_pars_values_status(disk_status* _config, char* key, char* value);
|
||||
void free_remove_vector(config_all* _all_config, vector* vec_remove);
|
||||
|
||||
#endif
|
@ -0,0 +1,425 @@
|
||||
#include "model.h"
|
||||
|
||||
size_t check_null(size_t num) {
|
||||
if (num == 0) {
|
||||
return -1;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
char* check_null_to_str(size_t num) {
|
||||
if (num == 0) {
|
||||
return yon_char_new("-");
|
||||
}
|
||||
return philos_char_from_size_t(num);
|
||||
}
|
||||
|
||||
void model_clear_cfg(config_u_g_p* _config) {
|
||||
free(_config->quota);
|
||||
free(_config->size_memory);
|
||||
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_clear_cfg_device(disk_status* _config) {
|
||||
free(_config->device);
|
||||
free(_config->fs);
|
||||
free(_config->mount_point);
|
||||
free(_config->name);
|
||||
}
|
||||
|
||||
void model_free_vector_string(vector* vec_str) {
|
||||
if (vec_str) {
|
||||
if (vec_str->vectorList.total> 0) {
|
||||
for (int i = 0; i < vec_str->vectorList.total; i++) {
|
||||
vectorDelete(vec_str, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void model_free_vector_disk_status(vector* vec_disk_status) {
|
||||
if (vec_disk_status) {
|
||||
if (vec_disk_status->vectorList.total> 0) {
|
||||
for (int i = 0; i < vec_disk_status->vectorList.total; i++) {
|
||||
disk_status* _config = (disk_status*)vec_disk_status->pfVectorGet(vec_disk_status, i);
|
||||
// model_clear_cfg_device(_config);
|
||||
vectorDelete(vec_disk_status, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void model_tree_view_add(config_u_g_p* _config) {
|
||||
model_null_str_writing(_config);
|
||||
}
|
||||
|
||||
void model_null_str_writing(config_u_g_p* _config) {
|
||||
_config->type_arr = yon_char_new(empty_str);
|
||||
_config->quota = yon_char_new(empty_str);
|
||||
_config->size_memory = yon_char_new(empty_str);
|
||||
_config->device = yon_char_new(empty_str);
|
||||
_config->UNIX_file = yon_char_new(empty_str);
|
||||
_config->files = yon_char_new(empty_str);
|
||||
_config->loaded_keys = yon_char_new(empty_str);
|
||||
_config->type_arr = yon_char_new(empty_str);
|
||||
_config->id = 0;
|
||||
_config->soft_restriction_size = 0;
|
||||
_config->soft_restriction_file = 0;
|
||||
_config->severe_limitation_size = 0;
|
||||
_config->severe_limitation_file = 0;
|
||||
_config->deferring_size = 0;
|
||||
_config->deferring_file = 0;
|
||||
_config->size_memory_pow = 0;
|
||||
_config->soft_restriction_size_pow = 0;
|
||||
_config->severe_limitation_size_pow = 0;
|
||||
vector_init(&_config->actors);
|
||||
}
|
||||
|
||||
char* format_actors(vector* vec_actors) {
|
||||
char* str_all = yon_char_new("");
|
||||
char split_simvol[2] = {0};
|
||||
split_simvol[0] = 0;
|
||||
split_simvol[1] = 0;
|
||||
char* str_actors = NULL;
|
||||
if (vec_actors->vectorList.total> 0) {
|
||||
for (int i = 0; i < vec_actors->vectorList.total; i++) {
|
||||
str_actors = (char*)vec_actors->pfVectorGet(vec_actors, i);
|
||||
if (str_actors) {
|
||||
str_all = yon_char_unite(str_all,split_simvol, str_actors, NULL);
|
||||
split_simvol[0] = ',';
|
||||
split_simvol[1] = '\0';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (strlen(str_all) < 3) {
|
||||
return yon_char_new("-");
|
||||
}
|
||||
return str_all;
|
||||
}
|
||||
|
||||
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) {
|
||||
g_object_ref(widget->liststore);
|
||||
gtk_list_store_clear(widget->liststore);
|
||||
}
|
||||
int flag_searhc = 0;
|
||||
for (int i = 0; i < all_config->v_project.pfVectorTotal(&all_config->v_project); i++) {
|
||||
config_u_g_p* _config = (config_u_g_p*)all_config->v_project.pfVectorGet(&all_config->v_project, i);
|
||||
if (strcmp(_config->type_arr, str_fill) == 0) {
|
||||
GtkTreeIter iter;
|
||||
flag_searhc++;
|
||||
gtk_list_store_append(widget->liststore,&iter);
|
||||
char* deferring_size = wrapper_str_time(_config->deferring_size);
|
||||
char* deferring_file = wrapper_str_time(_config->deferring_file);
|
||||
gtk_list_store_set(widget->liststore,&iter,
|
||||
0,model_find_path_to_disk(&all_config->v_disk_status, _config->UNIX_file),
|
||||
1,_config->UNIX_file,
|
||||
2,fill_tree_view_id(_config->id),
|
||||
3,format_actors(&_config->actors),
|
||||
4,philos_format_cfg_str_size_memory("", check_null(_config->soft_restriction_size),_config->soft_restriction_size_pow),
|
||||
5,philos_format_cfg_str_size_memory("", check_null(_config->severe_limitation_size),_config->severe_limitation_size_pow),
|
||||
6,deferring_size,
|
||||
7,check_null_to_str(_config->soft_restriction_file),
|
||||
8,check_null_to_str(_config->severe_limitation_file),
|
||||
9,deferring_file,
|
||||
-1);
|
||||
|
||||
}
|
||||
}
|
||||
if (flag_gui_add != 0) {
|
||||
gtk_tree_view_set_model(GTK_TREE_VIEW(widget->tree_view), model);
|
||||
}
|
||||
return flag_searhc;
|
||||
}
|
||||
|
||||
int fill_tree_view_user_group(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) {
|
||||
g_object_ref(widget->liststore);
|
||||
gtk_list_store_clear(widget->liststore);
|
||||
}
|
||||
int flag_searhc = 0;
|
||||
vector* vec_temp = NULL;
|
||||
if (strcmp(str_fill, "usrquota")==0) {
|
||||
vec_temp = &all_config->v_user;
|
||||
}
|
||||
else {
|
||||
vec_temp = &all_config->v_group;
|
||||
}
|
||||
if (vec_temp->vectorList.total > 0) {
|
||||
for (int i = 0; i < vec_temp->vectorList.total; i++) {
|
||||
config_u_g_p* _config = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, i);
|
||||
if (strcmp(_config->type_arr, str_fill) == 0) {
|
||||
GtkTreeIter iter;
|
||||
flag_searhc++;
|
||||
gtk_list_store_append(widget->liststore,&iter);
|
||||
char* deferring_size = wrapper_str_time(_config->deferring_size);
|
||||
char* deferring_file = wrapper_str_time(_config->deferring_file);
|
||||
gtk_list_store_set(widget->liststore,&iter,
|
||||
0,format_actors(&_config->actors),
|
||||
1,_config->UNIX_file,
|
||||
2,philos_format_cfg_str_size_memory("", check_null(_config->soft_restriction_size),_config->soft_restriction_size_pow),
|
||||
3,philos_format_cfg_str_size_memory("", check_null(_config->severe_limitation_size),_config->severe_limitation_size_pow),
|
||||
4,deferring_size,
|
||||
5,check_null_to_str(_config->soft_restriction_file),
|
||||
6,check_null_to_str(_config->severe_limitation_file),
|
||||
7,deferring_file,
|
||||
-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flag_gui_add != 0) {
|
||||
gtk_tree_view_set_model(GTK_TREE_VIEW(widget->tree_view), model);
|
||||
}
|
||||
return flag_searhc;
|
||||
}
|
||||
|
||||
char* wrapper_str_time(size_t seconds) {
|
||||
me_time t;
|
||||
if (seconds>0) {
|
||||
t = time_convert(seconds);
|
||||
t.str_time = yon_char_unite(yon_char_from_int(t.weeks),WEEKS,
|
||||
yon_char_from_int(t.days), DAYS,
|
||||
yon_char_from_int(t.hours), HOURS,
|
||||
yon_char_from_int(t.minutes), MINUTES, NULL);
|
||||
}
|
||||
else {
|
||||
t.str_time = yon_char_new("-");
|
||||
}
|
||||
|
||||
return t.str_time;
|
||||
}
|
||||
|
||||
char* quota_type(char* str_quota) {
|
||||
if (strcmp(str_quota, "usrquota")==0) {
|
||||
return STR_USER;
|
||||
}
|
||||
else if (strcmp(str_quota, "grpquota")==0) {
|
||||
return STR_GROUP;
|
||||
}
|
||||
else if (strcmp(str_quota, "prjquota")==0) {
|
||||
return STR_PROJECT;
|
||||
}
|
||||
}
|
||||
char quota_fill_generate(char* str_quota, config_u_g_p* _config, GtkListStore* list_store, GtkTreeIter* iter) {
|
||||
int index = -1;
|
||||
if (strcmp(str_quota, "usrquota")==0) {
|
||||
index = 4;
|
||||
}
|
||||
else if (strcmp(str_quota, "grpquota")==0) {
|
||||
index = 5;
|
||||
}
|
||||
else if (strcmp(str_quota, "prjquota")==0) {
|
||||
index = 6;
|
||||
}
|
||||
if (index != -1) {
|
||||
gtk_list_store_set(list_store,iter,index,format_actors(&_config->actors), -1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int pars_status_generate(vector* vec_status, config_u_g_p* _config_u_g_p) {
|
||||
int flag = 0;
|
||||
if (vec_status->vectorList.total > 0) {
|
||||
for (int i = 0; i < vec_status->vectorList.total; i++) {
|
||||
disk_status* _config = (disk_status*)vec_status->pfVectorGet(vec_status, i);
|
||||
if (strstr(_config_u_g_p->type_arr,"prjquota")) {
|
||||
if (strstr(_config_u_g_p->UNIX_file, _config->mount_point)) {
|
||||
if (_config->status == 0 || _config->status == 1) {
|
||||
flag = 0;
|
||||
}
|
||||
else {
|
||||
flag = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (strstr(_config_u_g_p->UNIX_file, _config->device)) {
|
||||
if (_config->status == 0 || _config->status == 1) {
|
||||
flag = 0;
|
||||
}
|
||||
else {
|
||||
flag = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
int fill_tree_view_generate(vector* vec_fill, vector* vec_status_disk, char* str_fill, GtkWidget* tree_view, GtkListStore* liststoreGeneral) {
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(liststoreGeneral);
|
||||
if (vec_fill->vectorList.total > 0) {
|
||||
for (int i = 0; i < vec_fill->vectorList.total; i++) {
|
||||
config_u_g_p* _config = (config_u_g_p*)vec_fill->pfVectorGet(vec_fill, i);
|
||||
GtkTreeIter iter;
|
||||
gtk_list_store_append(liststoreGeneral,&iter);
|
||||
char* deferring_size = wrapper_str_time(_config->deferring_size);
|
||||
char* deferring_file = wrapper_str_time(_config->deferring_file);
|
||||
quota_fill_generate(str_fill, _config,liststoreGeneral,&iter);
|
||||
gtk_list_store_set(liststoreGeneral,&iter,
|
||||
0,pars_status_generate(vec_status_disk,_config),
|
||||
1,_config->quota,
|
||||
2,quota_type(str_fill),
|
||||
3,_config->UNIX_file,
|
||||
7,philos_format_cfg_str_size_memory("", check_null(_config->soft_restriction_size),_config->soft_restriction_size_pow),
|
||||
8,philos_format_cfg_str_size_memory("", check_null(_config->severe_limitation_size),_config->severe_limitation_size_pow),
|
||||
9,deferring_size,
|
||||
10,check_null_to_str(_config->soft_restriction_file),
|
||||
11,check_null_to_str(_config->severe_limitation_file),
|
||||
12,deferring_file,
|
||||
-1);
|
||||
}
|
||||
}
|
||||
gtk_tree_view_set_model(GTK_TREE_VIEW(tree_view), model);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int pars_status_device(disk_status* _config) {
|
||||
if (_config->status == 2) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fill_tree_view_device(vector* vec_device, hotebook* widget, int flag_gui_add) {
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(widget->liststore);
|
||||
if (flag_gui_add == 0) {
|
||||
g_object_ref(widget->liststore);
|
||||
gtk_list_store_clear(widget->liststore);
|
||||
}
|
||||
int flag_searhc = 0;
|
||||
if (vec_device->vectorList.total > 0) {
|
||||
for (int i = 0; i < vec_device->vectorList.total; i++) {
|
||||
disk_status* _config = (disk_status*)vec_device->pfVectorGet(vec_device, i);
|
||||
GtkTreeIter iter;
|
||||
flag_searhc++;
|
||||
gtk_list_store_append(widget->liststore,&iter);
|
||||
char* deferring_size = wrapper_str_time(_config->deferring_size);
|
||||
char* deferring_file = wrapper_str_time(_config->deferring_file);
|
||||
gtk_list_store_set(widget->liststore,&iter,
|
||||
0,pars_status_device(_config),
|
||||
1,_config->device,
|
||||
2,_config->mount_point,
|
||||
3,_config->fs,
|
||||
4,_config->name,
|
||||
5,deferring_size,
|
||||
6,deferring_file,
|
||||
-1);
|
||||
}
|
||||
}
|
||||
if (flag_gui_add != 0) {
|
||||
gtk_tree_view_set_model(GTK_TREE_VIEW(widget->tree_view), model);
|
||||
}
|
||||
return flag_searhc;
|
||||
}
|
||||
void del_disk_to_vector_device(vector* vec_temp, char* str_disk) {
|
||||
for (int i = 0; i < vec_temp->vectorList.total; i++) {
|
||||
config_u_g_p* _config = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, i);
|
||||
if (strstr(_config->UNIX_file, str_disk)) {
|
||||
vec_temp->pfVectorDelete(vec_temp, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
char* format_str_del_config(config_u_g_p* _config) {
|
||||
char* space = g_malloc0(sizeof(char)*2);
|
||||
char* actors = yon_char_new("");
|
||||
char* cmd = NULL;
|
||||
char* unix_file = NULL;
|
||||
if (strstr(_config->UNIX_file, " ") && !strstr(_config->UNIX_file, "\"")) {
|
||||
unix_file = yon_char_unite("\"", _config->UNIX_file, "\"", NULL);
|
||||
}
|
||||
else {
|
||||
unix_file = yon_char_new(_config->UNIX_file);
|
||||
}
|
||||
for (int i = 0; i < _config->actors.vectorList.total; i++) {
|
||||
actors = yon_char_unite(actors, space, _config->actors.pfVectorGet(&_config->actors, i), NULL);
|
||||
space[0] = ',';
|
||||
space[1] = '\0';
|
||||
}
|
||||
if (strstr(_config->type_arr, "prjquota")) {
|
||||
if (_config->actors.vectorList.total == 0) {
|
||||
cmd = yon_char_unite(_config->type_arr, ":", unix_file, ":",fill_tree_view_id(_config->id), NULL);
|
||||
}
|
||||
else {
|
||||
cmd = yon_char_unite(_config->type_arr, ":", unix_file, ":",fill_tree_view_id(_config->id), ",", actors, NULL);
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
cmd = yon_char_unite(_config->type_arr, ":", unix_file, ":", actors, NULL);
|
||||
}
|
||||
free(space);
|
||||
free(unix_file);
|
||||
return cmd;
|
||||
}
|
||||
|
||||
void model_template_remove(vector* vec_temp, vector* vec_remove, int index) {
|
||||
if (index!=-1) {
|
||||
config_u_g_p* _config = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, index);
|
||||
vec_remove->pfVectorAdd(vec_remove, format_str_del_config(_config));
|
||||
model_clear_cfg(_config);
|
||||
vec_temp->pfVectorDelete(vec_temp, index);
|
||||
}
|
||||
}
|
||||
|
||||
void model_search_disk_remove(vector* vec_temp, vector* vec_remove, char* str_disk) {
|
||||
for (int i = 0; i < vec_temp->vectorList.total; i++) {
|
||||
config_u_g_p* _config = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, i);
|
||||
if (strstr(_config->UNIX_file, str_disk)) {
|
||||
model_template_remove(vec_temp,vec_remove, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
char* model_find_path_to_disk(vector* vec_temp, char* str_path) {
|
||||
for (int i = 0; i < vec_temp->vectorList.total; i++) {
|
||||
disk_status* _config = (disk_status*)vec_temp->pfVectorGet(vec_temp, i);
|
||||
if (strstr(str_path, _config->mount_point)) {
|
||||
return _config->device;
|
||||
}
|
||||
}
|
||||
return "-";
|
||||
}
|
||||
|
||||
void model_search_disk_remove_project(vector* vec_temp,vector* vec_status, vector* vec_remove, char* str_disk) {
|
||||
for (int i = 0; i < vec_temp->vectorList.total; i++) {
|
||||
config_u_g_p* _config_project = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, i);
|
||||
for (int j = 0; j < vec_status->vectorList.total; j++) {
|
||||
disk_status* _config = (disk_status*)vec_status->pfVectorGet(vec_status, j);
|
||||
if (strstr(_config_project->UNIX_file, _config->mount_point)) {
|
||||
model_template_remove(vec_temp,vec_remove, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void model_format_del_str(config_u_g_p* _config) {
|
||||
char* loaded_keys = yon_char_new("");
|
||||
if (strstr(_config->type_arr,"prjquota")) {
|
||||
if (strcmp(format_actors(&_config->actors), "-") == 0) {
|
||||
loaded_keys = yon_char_unite(_config->type_arr,":" , _config->UNIX_file,":", fill_tree_view_id(_config->id), ",", format_actors(&_config->actors), NULL);
|
||||
}
|
||||
else {
|
||||
loaded_keys = yon_char_unite(_config->type_arr,":" , _config->UNIX_file,":", fill_tree_view_id(_config->id), NULL);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (strcmp(format_actors(&_config->actors), "-") == 0) {
|
||||
loaded_keys = yon_char_unite(_config->type_arr,":" , _config->UNIX_file, NULL);
|
||||
}
|
||||
else {
|
||||
loaded_keys = yon_char_unite(_config->type_arr,":" , _config->UNIX_file,":", format_actors(&_config->actors), NULL);
|
||||
}
|
||||
}
|
||||
_config->loaded_keys = loaded_keys;
|
||||
}
|
@ -0,0 +1,84 @@
|
||||
#ifndef MODEL_H
|
||||
#define MODEL_H
|
||||
#include "ubl-utils.h"
|
||||
#include "philos_utils.h"
|
||||
#include "vector.h"
|
||||
#include "../ubl-strings.h"
|
||||
typedef struct{
|
||||
char* type_arr;
|
||||
int id;
|
||||
char* quota;
|
||||
char* size_memory;
|
||||
char* UNIX_file;
|
||||
char* files;
|
||||
vector actors;
|
||||
size_t actors_size;
|
||||
char* loaded_keys;
|
||||
size_t soft_restriction_size;
|
||||
size_t soft_restriction_file;
|
||||
size_t severe_limitation_size;
|
||||
size_t severe_limitation_file;
|
||||
size_t deferring_size;
|
||||
size_t deferring_file;
|
||||
|
||||
int size_memory_pow;
|
||||
int soft_restriction_size_pow;
|
||||
int severe_limitation_size_pow;
|
||||
char* device;
|
||||
size_t size;
|
||||
|
||||
} config_u_g_p;
|
||||
|
||||
typedef struct {
|
||||
vector v_general;
|
||||
vector v_user;
|
||||
vector v_group;
|
||||
vector v_project;
|
||||
vector v_disk_status;
|
||||
vector v_disk_remove;
|
||||
vector v_remove;
|
||||
int flag_set_data;
|
||||
int flag_save;
|
||||
int flag_load;
|
||||
int count_remove;
|
||||
int flag_not_data;
|
||||
} config_all;
|
||||
|
||||
typedef struct{
|
||||
char* device;
|
||||
int status;
|
||||
size_t deferring_size;
|
||||
size_t deferring_file;
|
||||
char* fs;
|
||||
char* mount_point;
|
||||
char* name;
|
||||
|
||||
} disk_status;
|
||||
|
||||
typedef struct{
|
||||
int flag_status;
|
||||
int size;
|
||||
} config_general;
|
||||
|
||||
typedef struct{
|
||||
int flag_load;
|
||||
} config_gui;
|
||||
|
||||
void model_clear_cfg_device(disk_status* _config);
|
||||
char* wrapper_str_time(size_t seconds);
|
||||
void model_template_remove(vector* vec_temp, vector* vec_remove, int index);
|
||||
void model_search_disk_remove(vector* vec_temp, vector* vec_remove, char* str_disk);
|
||||
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);
|
||||
char* model_find_path_to_disk(vector* vec_temp, char* str_path);
|
||||
void model_search_disk_remove_project(vector* vec_temp,vector* vec_status, vector* vec_remove, char* str_disk);
|
||||
void model_free_vector_string(vector* vec_str);
|
||||
void model_format_del_str(config_u_g_p* _config);
|
||||
void del_disk_to_vector_device(vector* vec_temp, char* str_disk);
|
||||
int fill_tree_view_user_group(config_all* all_config, 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);
|
||||
int fill_tree_view_generate(vector* vec_fill, vector* vec_status_disk, char* str_fill, GtkWidget* tree_view, GtkListStore* liststoreGeneral);
|
||||
int fill_tree_view_device(vector* vec_device, hotebook* widget, int flag_gui_add);
|
||||
#endif
|
@ -0,0 +1,99 @@
|
||||
#include "my_device.h"
|
||||
|
||||
vector vec_disk;
|
||||
|
||||
vector *get_device_vec()
|
||||
{
|
||||
return &vec_disk;
|
||||
}
|
||||
|
||||
void device_disk_parsed() {
|
||||
char *cmd = "findmnt -lo source,target,fstype,label,size -t ext4";
|
||||
device_device_config_free(get_device_vec());
|
||||
vector_init(get_device_vec());
|
||||
int size = 0;
|
||||
char **responce = yon_config_load(cmd, &size);
|
||||
char *split_simvol = " ";
|
||||
for (int index = 1; index < size; index++)
|
||||
{
|
||||
char *disk = yon_char_divide_search(responce[index], "\n", -1);
|
||||
if (yon_char_find_count(disk, " ") != 0 && !strstr(disk, "zram") && !strstr(disk, "["))
|
||||
{
|
||||
int size_str = 0;
|
||||
char** name_disk = yon_char_parse(disk, &size_str, " ");
|
||||
int flag = 0;
|
||||
device_config* obj_device_config = malloc(sizeof(device_config));
|
||||
for (int index_1 = 0; index_1 < size_str; index_1++) {
|
||||
if (strlen(name_disk[index_1])) {
|
||||
if (flag == 0) {
|
||||
obj_device_config->name_disk = yon_char_new(name_disk[index_1]);
|
||||
}
|
||||
else if (flag == 1) {
|
||||
obj_device_config->mounted = yon_char_new(name_disk[index_1]);
|
||||
}
|
||||
else if (flag == 2) {
|
||||
obj_device_config->file_system = yon_char_new(name_disk[index_1]);
|
||||
}
|
||||
else if (flag == 3) {
|
||||
obj_device_config->type_dick = yon_char_new(name_disk[index_1]);
|
||||
}
|
||||
else if (flag == 4) {
|
||||
obj_device_config->size_disk = philos_convert_memory(yon_char_new(name_disk[index_1]));
|
||||
}
|
||||
flag+=1;
|
||||
}
|
||||
}
|
||||
obj_device_config->description_disk = yon_char_unite(obj_device_config->name_disk,split_simvol,
|
||||
obj_device_config->file_system,
|
||||
split_simvol,
|
||||
obj_device_config->mounted,
|
||||
split_simvol,
|
||||
obj_device_config->type_dick, NULL);
|
||||
get_device_vec()->pfVectorAdd(get_device_vec(), obj_device_config);
|
||||
philos_free_string_array(&name_disk, size_str);
|
||||
}
|
||||
free(disk);
|
||||
}
|
||||
philos_free_string_array(&responce, size);
|
||||
}
|
||||
|
||||
|
||||
void device_fill_disk(GtkWidget *combo_box_text, vector* vec_filt)
|
||||
{
|
||||
vector vec;
|
||||
vector_init(&vec);
|
||||
vec.pfVectorCopy(&vec, get_device_vec());
|
||||
for (int i = 0; i < vec_filt->vectorList.total; i++) {
|
||||
disk_status* _config_disk_remove = (disk_status*)vec_filt->pfVectorGet(vec_filt, i);
|
||||
for (int index = 0; index < vec.vectorList.total; index++) {
|
||||
device_config* _config_disk = (device_config*)vec.pfVectorGet(&vec, index);
|
||||
if (strcmp(_config_disk->name_disk, _config_disk_remove->device) == 0) {
|
||||
vec.pfVectorDelete(&vec, index);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (vec.vectorList.total > 0) {
|
||||
for (int index = 0; index < vec.vectorList.total; index++)
|
||||
{
|
||||
device_config* _config_disk_remove = (device_config*)vec.pfVectorGet(&vec, index);
|
||||
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box_text), yon_char_new(_config_disk_remove->description_disk));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void device_device_config_free() {
|
||||
if (get_device_vec()) {
|
||||
for (int i = 0; i < get_device_vec()->vectorList.total; i++) {
|
||||
device_config* _config_disk_remove = (device_config*)get_device_vec()->pfVectorGet(get_device_vec(), i);
|
||||
free(_config_disk_remove->description_disk);
|
||||
free(_config_disk_remove->type_dick);
|
||||
free(_config_disk_remove->mounted);
|
||||
free(_config_disk_remove->file_system);
|
||||
free(_config_disk_remove->name_disk);
|
||||
get_device_vec()->pfVectorDelete(get_device_vec(), i);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
#ifndef MY_DEVICE_H
|
||||
#define MY_DEVICE_H
|
||||
#include "ubl-utils.h"
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include "philos_utils.h"
|
||||
#include "model.h"
|
||||
typedef struct {
|
||||
char* name_disk;
|
||||
char* file_system;
|
||||
char* mounted;
|
||||
char* type_dick;
|
||||
char* description_disk;
|
||||
size_t size_disk;
|
||||
} device_config;
|
||||
|
||||
void device_disk_parsed();
|
||||
vector *get_device_vec();
|
||||
void device_fill_disk(GtkWidget* combo_box_text, vector* vec_filt);
|
||||
size_t get_mem_total();
|
||||
float get_size_pow_memory(size_t size_memory, int size);
|
||||
size_t get_resurs_total(char* cmd);
|
||||
void device_device_config_free();
|
||||
|
||||
#endif
|
@ -0,0 +1,873 @@
|
||||
#include "philos_utils.h"
|
||||
|
||||
void philos_array_string_remove_char(char*** array, char* str_remove, int size) {
|
||||
for (int index = 0; index < size; index++) {
|
||||
(*array)[index] = yon_char_divide_search((*array)[index], str_remove, -1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void philos_set_pow_size_memory(char* str_find, int* array_size, char** array_size_pow) {
|
||||
char* STR_KB = array_size_pow[0];
|
||||
char* STR_MB = array_size_pow[1];
|
||||
char* STR_GB = array_size_pow[2];
|
||||
char* STR_TB = array_size_pow[3];
|
||||
size_t length = strlen(str_find);
|
||||
if (strstr(str_find,"K") != NULL) {
|
||||
(*array_size) = 0;
|
||||
str_find = yon_char_divide(str_find, length-1);
|
||||
str_find = yon_char_unite(str_find, " ", STR_KB, NULL);
|
||||
}
|
||||
else if (strstr(str_find,"M") != NULL) {
|
||||
(*array_size) = 1;
|
||||
str_find = yon_char_divide(str_find, length-1);
|
||||
str_find = yon_char_unite(str_find," ", STR_MB, NULL);
|
||||
}
|
||||
else if (strstr(str_find,"G") != NULL) {
|
||||
(*array_size) = 2;
|
||||
str_find = yon_char_divide(str_find, length-1);
|
||||
str_find = yon_char_unite(str_find," ", STR_GB, NULL);
|
||||
}
|
||||
else if (strstr(str_find,"T") != NULL) {
|
||||
(*array_size) = 3;
|
||||
str_find = yon_char_divide(str_find, length-1);
|
||||
|
||||
str_find = yon_char_unite(str_find," ", STR_TB, NULL);
|
||||
}
|
||||
else if (strstr(str_find,"%%") != NULL) {
|
||||
(*array_size) = -1;
|
||||
str_find = yon_char_divide(str_find, length-1);
|
||||
}
|
||||
else if (strstr(str_find,"-") != NULL) {
|
||||
(*array_size) = -1;
|
||||
}
|
||||
else {
|
||||
(*array_size) = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void philos_set_size_memory_integer_char(char* str_find, char*** array_data, int index) {
|
||||
char* simv_del_array[10] = {"K","M","G","T","k","m","g","t"," ","%"};
|
||||
for (size_t i = 0; i < 10; i++) {
|
||||
if (strstr(str_find, simv_del_array[i])) {
|
||||
str_find = yon_char_divide_search(str_find, simv_del_array[i], -1);
|
||||
}
|
||||
}
|
||||
if (strstr(str_find, " ") != NULL) {
|
||||
char* mem_s = yon_char_new(str_find);
|
||||
yon_char_divide_search(mem_s, " ", -1);
|
||||
*array_data = yon_char_parsed_append(*array_data, &index, mem_s);
|
||||
}
|
||||
if (strstr(str_find, "-") != NULL) {
|
||||
*array_data = yon_char_parsed_append(*array_data, &index, "-");
|
||||
}
|
||||
else {
|
||||
if (str_find[0] == '\"') {
|
||||
yon_char_divide(str_find, 0);
|
||||
size_t length = strlen(str_find);
|
||||
str_find = yon_char_divide(str_find, length-2);
|
||||
}
|
||||
if (strstr(str_find, " ") == NULL) {
|
||||
*array_data = yon_char_parsed_append(*array_data, &index, str_find);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void philos_free_string_array(char ***array, int size) {
|
||||
if ((*array) == NULL) {
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < size; i++){
|
||||
free((*array)[i]);
|
||||
}
|
||||
if (size!= 0) {
|
||||
free(*array);
|
||||
(*array) = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void philos_free_string_array_n3(char ****array, int size) {
|
||||
if ((*array) == NULL || size == 0) {
|
||||
return;
|
||||
}
|
||||
int index_to_l2 = 0;
|
||||
for (int i = 0; i < size; i++){
|
||||
index_to_l2 = 0;
|
||||
if ((*array)[i]!=NULL) {
|
||||
while ((*array)[i][index_to_l2] != NULL) {
|
||||
if ((*array)[i][index_to_l2] != NULL) {
|
||||
free((*array)[i][index_to_l2]);
|
||||
index_to_l2++;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
free((*array)[i]);
|
||||
|
||||
}
|
||||
if (size!= 0) {
|
||||
free(*array);
|
||||
(*array) = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void philos_free_int_array(int **array, int size) {
|
||||
if (size!= 0) {
|
||||
free(*array);
|
||||
*array = NULL;
|
||||
}
|
||||
}
|
||||
void philos_free_int_array_n2(int ***array, int size) {
|
||||
if ((*array) == NULL || size == 0) {
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < size; i++){
|
||||
free((*array)[i]);
|
||||
}
|
||||
if (size!= 0) {
|
||||
free(*array);
|
||||
(*array) = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
config_str philos_list_user(int* size, int flag_lim) {
|
||||
char* str_uid_min = "UID_MIN";
|
||||
char* str_uid_max = "UID_MAX";
|
||||
unsigned short uid_min = philos_read_uid_min_max(file_source_login_min_max, str_uid_min);
|
||||
unsigned short uid_max = philos_read_uid_min_max(file_source_login_min_max, str_uid_max);
|
||||
config_str str_users = malloc(1);
|
||||
while (1) {
|
||||
errno = 0;
|
||||
struct passwd* entry = getpwent();
|
||||
if (!entry) {
|
||||
if (errno) {
|
||||
return str_users;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (flag_lim == 1) {
|
||||
if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) {
|
||||
str_users = yon_char_parsed_append(str_users, size, entry->pw_name);
|
||||
}
|
||||
}
|
||||
else {
|
||||
str_users = yon_char_parsed_append(str_users, size, entry->pw_name);
|
||||
}
|
||||
|
||||
}
|
||||
endpwent();
|
||||
return str_users;
|
||||
}
|
||||
|
||||
unsigned short philos_read_uid_min_max(char* filename, char* search) {
|
||||
int uid = 0;
|
||||
char* remove_tab = "\t";
|
||||
char* remove_space = " ";
|
||||
char* search_uid_min = "UID_MIN";
|
||||
int buff_size = 255;
|
||||
char* line = g_malloc0(buff_size);
|
||||
char* search_true = yon_char_get_augumented("SYS_", search);
|
||||
FILE *fp = fopen(filename, "r");
|
||||
if(fp) {
|
||||
while((fgets(line, buff_size, fp)) != NULL) {
|
||||
try{
|
||||
if (yon_char_find_count(line, search) != 0 && yon_char_find_count(line, search_true) == 0) {
|
||||
line = philos_str_remove(line, search);
|
||||
line = philos_str_remove(line, remove_space);
|
||||
line = philos_str_remove(line, remove_tab);
|
||||
uid = atoi(line);
|
||||
|
||||
}
|
||||
}
|
||||
catch (...) {
|
||||
if (yon_char_find_count(search, search_uid_min) != 0){
|
||||
uid = 1000;
|
||||
}
|
||||
else{
|
||||
uid = 65534;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
if (yon_char_find_count(search, search_uid_min) != 0) {
|
||||
uid = 1000;
|
||||
}
|
||||
else{
|
||||
uid = 65534;
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
free(line);
|
||||
free(search_true);
|
||||
return uid;
|
||||
|
||||
}
|
||||
|
||||
config_str philos_list_group(int* size, int flag_lim) {
|
||||
char* str_uid_min = "UID_MIN";
|
||||
char* str_uid_max = "UID_MAX";
|
||||
unsigned short uid_min = philos_read_uid_min_max(file_source_login_min_max, str_uid_min);
|
||||
unsigned short uid_max = philos_read_uid_min_max(file_source_login_min_max, str_uid_max);
|
||||
config_str str_users = malloc(1);
|
||||
char *cmd = "cat /etc/group";
|
||||
int size_groups = 0;
|
||||
size_t pw_gid = 0;
|
||||
char **responce = yon_config_load(cmd, &size_groups);
|
||||
for (int i = 0; i< size_groups; i++) {
|
||||
char* str_data = yon_char_new(responce[i]);
|
||||
char* str_group = yon_char_divide_search(str_data,":x:",-1);
|
||||
char* num = yon_char_divide_search(str_data, ":", -1);
|
||||
pw_gid = atoll(yon_char_divide_search(str_data, ":", -1));
|
||||
if (flag_lim == 1) {
|
||||
if ((pw_gid >= uid_min && pw_gid < uid_max) || pw_gid == 0) {
|
||||
str_users = yon_char_parsed_append(str_users, size, str_group);
|
||||
}
|
||||
}
|
||||
else {
|
||||
str_users = yon_char_parsed_append(str_users, size, str_group);
|
||||
}
|
||||
}
|
||||
endpwent();
|
||||
return str_users;
|
||||
}
|
||||
|
||||
char* philos_str_size_pow_byte(GtkWidget *combo_box_text) {
|
||||
int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box_text));
|
||||
if (menu_id == 0) {
|
||||
return "K";
|
||||
}
|
||||
else if (menu_id == 1) {
|
||||
return "M";
|
||||
}
|
||||
else if (menu_id == 2) {
|
||||
return "G";
|
||||
}
|
||||
else if (menu_id == 3) {
|
||||
return "T";
|
||||
}
|
||||
else {
|
||||
return " ";
|
||||
}
|
||||
}
|
||||
|
||||
char* philos_str_remove(char *str, const char *sub) {
|
||||
size_t len = strlen(sub);
|
||||
if (len > 0) {
|
||||
char *p = str;
|
||||
size_t size = 0;
|
||||
while ((p = strstr(p, sub)) != NULL) {
|
||||
size = (size == 0) ? (p - str) + strlen(p + len) + 1 : size - len;
|
||||
memmove(p, p + len, size - (p - str));
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
void philos_split_size_memory(char* str_value, int* size, char* pow_memory) {
|
||||
(*size) = atoi(yon_char_divide_search(pow_memory, " ", -1));
|
||||
}
|
||||
|
||||
char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_memory) {
|
||||
if (value == -1 || value == -3 || pow_size_memory == -3) {
|
||||
return yon_char_new("-");
|
||||
}
|
||||
char* str_value = yon_char_from_int(value);
|
||||
if (value == 0) {
|
||||
return str_value;
|
||||
}
|
||||
if (pow_size_memory==0) {
|
||||
return yon_char_unite(str_key, str_value, "K" ,NULL);
|
||||
}
|
||||
else if (pow_size_memory==1) {
|
||||
return yon_char_unite(str_key, str_value, "M" ,NULL);
|
||||
}
|
||||
else if (pow_size_memory==2){
|
||||
return yon_char_unite(str_key, str_value, "G" ,NULL);
|
||||
}
|
||||
else if (pow_size_memory== 3) {
|
||||
return yon_char_unite(str_key, str_value, "T" ,NULL);
|
||||
}
|
||||
else if (pow_size_memory== -1) {
|
||||
return yon_char_unite(str_key, str_value, "%" ,NULL);
|
||||
}
|
||||
else if (pow_size_memory== -3) {
|
||||
return yon_char_new("-");
|
||||
}
|
||||
else {
|
||||
return yon_char_new("-");
|
||||
}
|
||||
}
|
||||
|
||||
char** philos_str_split(char *parameters, int *size, char *divider) {
|
||||
char** array_split = NULL;
|
||||
char* ch= NULL;
|
||||
ch = strtok(parameters, divider);
|
||||
if (ch != NULL) {
|
||||
array_split = yon_char_parsed_append(array_split, size, ch);
|
||||
while (ch != NULL) {
|
||||
ch = strtok(NULL, divider);
|
||||
array_split = yon_char_parsed_append(array_split, size, ch);
|
||||
}
|
||||
}
|
||||
(*size) -= 1;
|
||||
return array_split;
|
||||
}
|
||||
|
||||
void philos_array_str_copy(char*** source, char*** copy) {
|
||||
int index = 0;
|
||||
if (copy == NULL || source == NULL) {
|
||||
return;
|
||||
}
|
||||
while (1) {
|
||||
if ((*copy)[index] != NULL) {
|
||||
(*source) = yon_char_parsed_append((*source), &index, yon_char_new((*copy)[index]));
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
void philos_array_int_copy(int** source, int** copy) {
|
||||
int * new_int = g_malloc0(sizeof(int)*2);
|
||||
if ((*copy)[0] != -2) {
|
||||
new_int[0] = (*copy)[0];
|
||||
new_int[1] = -2;
|
||||
int i = 2;
|
||||
for (i=1;(*copy)[i]!=-2;i++) {
|
||||
yon_int_array_append(&new_int,(*copy)[i]);
|
||||
}
|
||||
*source=new_int;
|
||||
}
|
||||
else {
|
||||
new_int[0] = (*copy)[0];
|
||||
*source=new_int;
|
||||
}
|
||||
|
||||
}
|
||||
char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data) {
|
||||
int size = 0;
|
||||
char** terminal_print = yon_config_load(CMD_GET_SLICE_SERVICE, &size);
|
||||
char** array_data = NULL;
|
||||
for (int index = 0; index < size; index++) {
|
||||
if (strstr(terminal_print[index], str_find) != NULL) {
|
||||
yon_char_divide_search(terminal_print[index],"─",-1);
|
||||
terminal_print[index] = yon_char_divide_search(terminal_print[index]," ", -1);
|
||||
yon_char_divide(terminal_print[index],1);
|
||||
array_data = yon_char_parsed_append(array_data, size_array_data, terminal_print[index]);
|
||||
|
||||
}
|
||||
}
|
||||
return array_data;
|
||||
}
|
||||
char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size, char** disk, int size) {
|
||||
char* split_simvol = g_malloc0(sizeof(char)*2);
|
||||
int flag_format = 0;
|
||||
char* cmd_old = yon_char_new(cmd);
|
||||
char* cmd_new = "";
|
||||
if (disk && size && array_io && array_io_pow_size) {
|
||||
int index_find = 0;
|
||||
for (int index = 0; index < size; index++) {
|
||||
if (array_io_pow_size[index] >= 0 && array_io[index]>= 0 && !strstr(disk[index], "-")) {
|
||||
char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]);
|
||||
if (!strstr(num_and_pow_size, "-")) {
|
||||
cmd_new = yon_char_unite(cmd_new,
|
||||
split_simvol,
|
||||
disk[index],
|
||||
num_and_pow_size, NULL);
|
||||
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 {
|
||||
return cmd_old;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void philos_temp_config_init(temp_config* _config) {
|
||||
if (_config->size_disk != 0) {
|
||||
philos_free_string_array(&_config->disk_read, _config->size_disk);
|
||||
philos_free_int_array(&_config->i_o_limit_read, _config->size_disk);
|
||||
philos_free_int_array(&_config->i_o_limit_read_size, _config->size_disk);
|
||||
}
|
||||
else if (_config->size_disk != 0) {
|
||||
philos_free_string_array(&_config->disk_write, _config->size_disk);
|
||||
philos_free_int_array(&_config->i_o_limit_write, _config->size_disk);
|
||||
philos_free_int_array(&_config->i_o_limit_write_size, _config->size_disk);
|
||||
}
|
||||
_config->disk_read = NULL;
|
||||
_config->disk_write = NULL;
|
||||
_config->i_o_limit_read = NULL;
|
||||
_config->i_o_limit_write = NULL;
|
||||
_config->i_o_limit_read_size = NULL;
|
||||
_config->i_o_limit_write_size = NULL;
|
||||
_config->size_disk = 0;
|
||||
_config->size_disk = 0;
|
||||
}
|
||||
|
||||
|
||||
int find_null_array(temp_config* _config) {
|
||||
int index = 0;
|
||||
for (index = 0; (_config->disk_read[index]!=NULL && _config->disk_write[index]!=NULL); index++) {
|
||||
if (strcmp(_config->disk_read[index], "-") == 0 && strcmp(_config->disk_write[index], "-") == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return index;
|
||||
|
||||
|
||||
}
|
||||
int* philos_int_append(int* array, int* size, int value) {
|
||||
array = yon_remalloc(array, (*size+1)*sizeof(int));
|
||||
array[(*size)] = value;
|
||||
(*size)++;
|
||||
return array;
|
||||
|
||||
}
|
||||
|
||||
int* remove_element_int_array(int* array, int* size, int item_to_delete) {
|
||||
int *new_int_parsed=NULL;
|
||||
new_int_parsed=malloc(sizeof(int)*((*size)-1));
|
||||
int flag = 0;
|
||||
for (int i=0;i < (*size);i++){
|
||||
if (i==item_to_delete) {
|
||||
flag = 1;
|
||||
}
|
||||
if (flag == 0) {
|
||||
memcpy(&(new_int_parsed[i]),&(array[i]),sizeof(int));
|
||||
}
|
||||
else if (flag == 1 && i!=item_to_delete) {
|
||||
memcpy(&(new_int_parsed[i-1]),&(array[i]),sizeof(int));
|
||||
}
|
||||
}
|
||||
(*size)=(*size)-1;
|
||||
return new_int_parsed;
|
||||
}
|
||||
|
||||
int** remove_element_int_array_n3(int** array, int* size, int item_to_delete) {
|
||||
int **new_int_parsed=NULL;
|
||||
new_int_parsed=malloc(sizeof(int*)*((*size)-1));
|
||||
int flag = 0;
|
||||
for (int i=0;i < (*size);i++){
|
||||
if (i==item_to_delete) {
|
||||
flag = 1;
|
||||
}
|
||||
if (flag == 0) {
|
||||
philos_array_int_copy(&new_int_parsed[i],&array[i]);
|
||||
}
|
||||
else if (flag == 1 && i!=item_to_delete) {
|
||||
philos_array_int_copy(&new_int_parsed[i-1],&array[i]);
|
||||
}
|
||||
}
|
||||
(*size)=(*size)-1;
|
||||
return new_int_parsed;
|
||||
}
|
||||
char* philos_get_size_bite(GtkWidget* chk_button, GtkWidget* spin, GtkWidget* combo_box_text) {
|
||||
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(chk_button))) {
|
||||
char* size_prifics = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo_box_text));
|
||||
int size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin));
|
||||
char* str_size_bute = yon_char_unite(yon_char_from_int(size_bite), " ", size_prifics, NULL);
|
||||
return str_size_bute;
|
||||
}
|
||||
else {
|
||||
char* str = (char*)malloc(sizeof(char*)*2);
|
||||
str[0] = '-';
|
||||
str[1] = '\0';
|
||||
return str;
|
||||
}
|
||||
}
|
||||
void philos_fill_combo_box_text(GtkWidget *cbt, config_str list_data, int size) {
|
||||
for (int index = 0; index < size; index++) {
|
||||
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cbt), list_data[index]);
|
||||
}
|
||||
}
|
||||
|
||||
void philos_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value) {
|
||||
gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check));
|
||||
//guint value_spin = gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin));
|
||||
guint value_spin = atoi((char*)gtk_entry_get_text(GTK_ENTRY(spin)));
|
||||
if (active != -1) {
|
||||
GtkAdjustment* adjustment = NULL;
|
||||
adjustment = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(spin));
|
||||
gtk_adjustment_set_lower(adjustment, 0.0);
|
||||
gtk_adjustment_set_page_increment(adjustment, 1.0);
|
||||
if (combo == NULL) {
|
||||
gtk_adjustment_set_upper(adjustment, (value*100));
|
||||
if ((value*100)<value_spin) {
|
||||
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), (value*100));
|
||||
}
|
||||
}
|
||||
else {
|
||||
int index = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
|
||||
if (index == 0) {
|
||||
gtk_adjustment_set_upper(adjustment, value);
|
||||
if (value<value_spin) {
|
||||
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), value);
|
||||
}
|
||||
}
|
||||
else if (index == -1) {}
|
||||
else {
|
||||
size_t pow_mem_size = (size_t)get_size_pow_memory(value, index);
|
||||
gtk_adjustment_set_upper(adjustment, pow_mem_size);
|
||||
if (pow_mem_size<value_spin) {
|
||||
//gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), (int)pow_mem_size);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
void philos_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo) {
|
||||
gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check));
|
||||
size_t value_spin = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin));
|
||||
gtk_widget_set_sensitive(spin, active);
|
||||
if (combo) {
|
||||
if (!active) {
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
|
||||
}
|
||||
gtk_widget_set_sensitive(combo, active);
|
||||
}
|
||||
}
|
||||
|
||||
size_t get_resurs_total(char* cmd) {
|
||||
int size = 0;
|
||||
size_t size_memory = 0;
|
||||
char **responce = yon_config_load(cmd, &size);
|
||||
for (int index = 0; index < size; index++ ) {
|
||||
char* mem_size_kb = yon_char_divide_search(responce[index], "\n", -1);
|
||||
size_memory = atoll(mem_size_kb);
|
||||
free(mem_size_kb);
|
||||
}
|
||||
philos_free_string_array(&responce, size);
|
||||
return size_memory;
|
||||
}
|
||||
|
||||
float get_size_pow_memory(size_t size_memory, int size) {
|
||||
float res = size_memory;
|
||||
for (size_t index = 0; index < size; index++) {
|
||||
res = res/1024;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
void philos_set_active_widgets_device_io(GtkWidget* combo_to_l2,GtkWidget *check, GtkWidget *spin, GtkWidget *combo) {
|
||||
int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_to_l2));
|
||||
if (menu_id != -1) {
|
||||
gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check));
|
||||
if (active == 0) {
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0);
|
||||
}
|
||||
else if (gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin))>0) {
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1);
|
||||
}
|
||||
gtk_widget_set_sensitive(spin, active);
|
||||
gtk_widget_set_sensitive(combo, active);
|
||||
}
|
||||
else {
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0);
|
||||
gtk_widget_set_sensitive(spin, 0);
|
||||
gtk_widget_set_sensitive(combo, 0);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), 0);
|
||||
}
|
||||
philos_set_spin_adjustment(check, spin, combo, 12582912);
|
||||
}
|
||||
char *yon_char_get_augumented(char *source, char *append)
|
||||
{
|
||||
if (source && append)
|
||||
{
|
||||
int size = strlen(source) + strlen(append) + 1;
|
||||
char *final = malloc(size);
|
||||
memset(final, 0, size);
|
||||
if (strstr(source, "%%"))
|
||||
sprintf(final, source, append);
|
||||
else
|
||||
sprintf(final, "%s%s", source, append);
|
||||
return final;
|
||||
}
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data) {
|
||||
dictionary *dct = yon_dictionary_create_conneced(dict);
|
||||
dct->key = yon_char_new(key);
|
||||
dct->data = data;
|
||||
dct->data_type = DICTIONARY_OTHER_TYPE;
|
||||
return dct;
|
||||
}
|
||||
char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete) {
|
||||
char **new_char_parsed=NULL;
|
||||
new_char_parsed=malloc(sizeof(char*)*((*size)-1));
|
||||
int flag = 0;
|
||||
for (int i=0;i < (*size);i++){
|
||||
if (i==item_to_delete) {
|
||||
flag = 1;
|
||||
}
|
||||
if (flag == 0) {
|
||||
new_char_parsed[i]=yon_char_new(char_string[i]);
|
||||
}
|
||||
else if (flag == 1 && i!=item_to_delete) {
|
||||
new_char_parsed[i-1]=yon_char_new(char_string[i]);
|
||||
}
|
||||
}
|
||||
(*size)=(*size)-1;
|
||||
return new_char_parsed;
|
||||
}
|
||||
char*** yon_char_parsed_shrink_n3(char ***char_string, int *size, int item_to_delete) {
|
||||
char ***new_char_parsed=NULL;
|
||||
new_char_parsed=malloc(sizeof(char**)*((*size)-1));
|
||||
int flag = 0;
|
||||
for (int i=0;i < (*size);i++){
|
||||
if (i==item_to_delete) {
|
||||
flag = 1;
|
||||
}
|
||||
if (flag == 0) {
|
||||
yon_char_parsed_copy(&new_char_parsed[i],&char_string[i]);
|
||||
}
|
||||
else if (flag == 1 && i!=item_to_delete) {
|
||||
yon_char_parsed_copy(&new_char_parsed[i-1], &char_string[i]);
|
||||
}
|
||||
}
|
||||
(*size)=(*size)-1;
|
||||
return new_char_parsed;
|
||||
}
|
||||
dictionary *yon_dictionary_create_empty() {
|
||||
dictionary *dict = malloc(sizeof(dictionary));
|
||||
dict->data = NULL;
|
||||
dict->key = NULL;
|
||||
dict->next = NULL;
|
||||
dict->prev = NULL;
|
||||
dict->first = dict;
|
||||
dict->data_type = DICTIONARY_OTHER_TYPE;
|
||||
return dict;
|
||||
}
|
||||
#ifdef VTE_TERMINAL
|
||||
void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument){
|
||||
char **commands=new_arr(char*,2);
|
||||
gchar **envp = g_get_environ();
|
||||
commands[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL"));
|
||||
commands[1]=NULL;
|
||||
char **env=new_arr(char*,2);
|
||||
env[0]="";
|
||||
env[1]=NULL;
|
||||
vte_terminal_set_size(VTE_TERMINAL(terminal),10,15);
|
||||
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
|
||||
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
|
||||
char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command, "; exit 0\n",NULL);
|
||||
if(endwork_function)
|
||||
g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument);
|
||||
vte_terminal_spawn_async(VTE_TERMINAL(terminal),
|
||||
VTE_PTY_DEFAULT,
|
||||
NULL,
|
||||
commands,
|
||||
NULL,
|
||||
0,
|
||||
NULL, NULL,
|
||||
NULL,
|
||||
-1,
|
||||
NULL,
|
||||
child_ready,
|
||||
install_command);
|
||||
vte_pty_spawn_async(pty,
|
||||
NULL,
|
||||
commands,
|
||||
NULL,
|
||||
0,
|
||||
NULL, NULL,
|
||||
NULL,
|
||||
-1,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), -1);
|
||||
vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), TRUE);
|
||||
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
|
||||
gtk_widget_show_all(terminal);
|
||||
}
|
||||
static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data)
|
||||
{
|
||||
if (!terminal) return;
|
||||
if (pid == -1) printf("Error\n\n\n");
|
||||
else vte_terminal_feed_child(VTE_TERMINAL(terminal),(char*)user_data,strlen((char*)user_data));
|
||||
}
|
||||
#endif
|
||||
dictionary *yon_dictionary_create_conneced(dictionary *targetdict)
|
||||
{
|
||||
targetdict = yon_dictionary_get_last(targetdict);
|
||||
targetdict->next = yon_dictionary_create_empty();
|
||||
targetdict->next->prev = targetdict;
|
||||
targetdict->next->first = targetdict->first;
|
||||
targetdict->next->data_type = DICTIONARY_OTHER_TYPE;
|
||||
return targetdict->next;
|
||||
}
|
||||
void yon_int_array_append(int **source, int append){
|
||||
int size=0;
|
||||
for (size=0;(*source)[size]!=-2;size++);
|
||||
*source = realloc(*source,(size+2)*sizeof(int));
|
||||
(*source)[size] = append;
|
||||
(*source)[size+1] = -2;
|
||||
}
|
||||
|
||||
/**[EN]
|
||||
* int yon_config_save(char *command)
|
||||
* Saves config with [command]
|
||||
* [RU]
|
||||
*/
|
||||
int philos_config_save(char *command)
|
||||
{
|
||||
FILE *output = popen(command, "r");
|
||||
return 1;
|
||||
}
|
||||
|
||||
void philos_array_int_pars_to(int** array, int to) {
|
||||
int flag = 0;
|
||||
int i = 0;
|
||||
for (i = 0; (*array)[i] != -2; i++) {
|
||||
if ((*array)[i]==-3) {
|
||||
(*array)[i] = to;
|
||||
flag = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void philos_array_char_pars_to(char*** array, char* to) {
|
||||
int flag = 0;
|
||||
int i = 0;
|
||||
for (i = 0; (*array)[i] != NULL; i++) {
|
||||
if (strcmp((*array)[i], "-") == 0) {
|
||||
(*array)[i] = yon_char_new(to);
|
||||
flag = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
char** philos_char_parsed_append(char** parsed, int *size, char *string) {
|
||||
parsed = yon_char_parsed_append(parsed, size, string);
|
||||
(*size)--;
|
||||
return parsed;
|
||||
}
|
||||
|
||||
void philos_set_size_memory_integer(char* str_find, size_t* array_data) {
|
||||
if (strstr(str_find, " ")) {
|
||||
yon_char_divide_search(str_find, " ", -1);
|
||||
}
|
||||
char* simv_del_array[9] = {"K","M","G","T","k","m","g","t","%"};
|
||||
for (size_t i = 0; i < 9; i++) {
|
||||
if (strstr(str_find, simv_del_array[i])) {
|
||||
str_find = yon_char_divide_search(str_find, simv_del_array[i], -1);
|
||||
}
|
||||
}
|
||||
if (strstr(str_find, "-")==NULL) {
|
||||
(*array_data) = atoll(str_find);
|
||||
}
|
||||
else {
|
||||
(*array_data) = -1;
|
||||
}
|
||||
}
|
||||
|
||||
me_time time_convert(size_t seconds) {
|
||||
me_time t;
|
||||
if (seconds != -1) {
|
||||
double weeks = seconds / (7*24*60*60);
|
||||
double days = seconds / (24*60*60) - 7*weeks;
|
||||
double hours = seconds / (60*60) - 7*24*weeks - 24*days;
|
||||
double minutes = seconds / 60 - 7*24*60*weeks - 24*60*days - 60*hours;
|
||||
if (weeks>0) {
|
||||
t.weeks = (int)weeks;
|
||||
}
|
||||
else {
|
||||
t.weeks = 0;
|
||||
}
|
||||
if (days>0) {
|
||||
t.days = (int)days;
|
||||
}
|
||||
else {
|
||||
t.days = 0;
|
||||
}
|
||||
if (hours>0) {
|
||||
t.hours = (int)hours;
|
||||
}
|
||||
else {
|
||||
t.hours = 0;
|
||||
}
|
||||
if (minutes>0) {
|
||||
t.minutes = (int)minutes;
|
||||
}
|
||||
else {
|
||||
t.minutes = 0;
|
||||
}
|
||||
t.str_time = NULL;
|
||||
}
|
||||
else {
|
||||
t.weeks = 0;
|
||||
t.days = 0;
|
||||
t.hours = 0;
|
||||
t.hours = 0;
|
||||
t.str_time = NULL;
|
||||
}
|
||||
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
char* fill_tree_view_id(int id) {
|
||||
if (id < 0) {
|
||||
return yon_char_new("AUTO");
|
||||
}
|
||||
else {
|
||||
return yon_char_from_int(id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
char *philos_char_from_size_t(size_t int_to_convert) {
|
||||
int i = 1;
|
||||
float convert_check = (float)int_to_convert;
|
||||
for (i = 1; convert_check >= 10; i++)
|
||||
{
|
||||
convert_check = convert_check / 10;
|
||||
}
|
||||
char *ch = g_malloc0(i * sizeof(char) + 1);
|
||||
sprintf(ch, "%d", int_to_convert);
|
||||
return ch;
|
||||
}
|
||||
size_t philos_convert_memory(char* num_memory_pow) {
|
||||
float num_f = atof(yon_char_new(num_memory_pow));
|
||||
if (strstr(num_memory_pow,"K") != NULL) {
|
||||
return (size_t)(num_f);
|
||||
}
|
||||
else if (strstr(num_memory_pow,"M") != NULL) {
|
||||
return (size_t)(num_f*1024);
|
||||
}
|
||||
else if (strstr(num_memory_pow,"G") != NULL) {
|
||||
return (size_t)(num_f*1024*1024);
|
||||
}
|
||||
else if (strstr(num_memory_pow,"T") != NULL) {
|
||||
return (size_t)(num_f*1024*1024*1024);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -0,0 +1,158 @@
|
||||
#ifndef PHILOS_UTILS_H
|
||||
#define PHILOS_UTILS_H
|
||||
#include "ubl-utils.h"
|
||||
#include <pthread.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <pthread.h>
|
||||
#include <string.h>
|
||||
#include <dirent.h>
|
||||
#include <locale.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtkx.h>
|
||||
#ifdef VTE_TERMINAL
|
||||
#include <vte/vte.h>
|
||||
#endif
|
||||
|
||||
#include <pwd.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#define catch(x) ExitJmp:if(__HadError)
|
||||
#define throw(x) {__HadError=true;goto ExitJmp;}
|
||||
#define file_source_login_min_max "/etc/login.defs"
|
||||
static char** array_size_pow;
|
||||
typedef struct {
|
||||
char** disk_read;
|
||||
char** disk_write;
|
||||
int* i_o_limit_read;
|
||||
int* i_o_limit_write;
|
||||
int* i_o_limit_read_size;
|
||||
int* i_o_limit_write_size;
|
||||
int size;
|
||||
int size_disk;
|
||||
} temp_config;
|
||||
|
||||
typedef struct {
|
||||
GtkWidget* Window;
|
||||
GtkWidget* btnSaveTempSave;
|
||||
GtkWidget* btnTempCancel;
|
||||
GtkWidget* lblSetUGP;
|
||||
GtkWidget* lblHeadQuotasEditWindow;
|
||||
|
||||
GtkWidget* btnOpenUserGroup;
|
||||
|
||||
GtkWidget* btnReviewProject;
|
||||
GtkWidget* btnGenerateProject;
|
||||
GtkWidget* entryCatalogProject;
|
||||
GtkWidget* chbAuto;
|
||||
GtkWidget* entryProjectName;
|
||||
GtkWidget* boxProjectAddEdit;
|
||||
GtkWidget* boxProject;
|
||||
GtkWidget* lblCatalogProjectEdit;
|
||||
GtkWidget* lblProjectIdValueEdit;
|
||||
GtkWidget* entryProjectId;
|
||||
GtkWidget* boxTempDevice;
|
||||
|
||||
GtkWidget* wndChooseFileWallpaper;
|
||||
GtkWidget* btnFilemangerOk;
|
||||
GtkWidget* btnFilemangerExit;
|
||||
GtkWidget* quotegroupSizeSoftLimitCheck;
|
||||
GtkWidget* quotegroupSizeSoftLimitSpin;
|
||||
GtkWidget* quotegroupSizeSoftLimitCombo;
|
||||
GtkWidget* quotegroupSizeHardLimitCheck;
|
||||
GtkWidget* quotegroupSizeHardLimitSpin;
|
||||
GtkWidget* quotegroupSizeHardLimitCombo;
|
||||
GtkWidget* quotegroupFilesSoftLimitCheck;
|
||||
GtkWidget* quotegroupFilesSoftLimitSpin;
|
||||
GtkWidget* quotegroupFilesHardLimitCheck;
|
||||
GtkWidget* quotegroupFilesHardLimitSpin;
|
||||
GtkWidget* lblSetNameDevice;
|
||||
GtkWidget* boxProjectAddEditboxProjectId;
|
||||
GtkWidget* entryUser;
|
||||
GtkWidget* UserDeviceCombo;
|
||||
GtkWidget* lblSetQuotasStatus;
|
||||
GtkWidget* lblWarningText;
|
||||
GtkWidget* WarrningWindow;
|
||||
GtkWidget* CancelWarrningButton;
|
||||
GtkWidget* boxBlockGuiAddEdit;
|
||||
} temp_set_window;
|
||||
|
||||
typedef struct {
|
||||
char* name;
|
||||
int note_selected;
|
||||
GtkListStore *liststore;
|
||||
GtkWidget* tree_view;
|
||||
GtkWidget* btnAdd;
|
||||
GtkWidget* btnEdit;
|
||||
GtkWidget* btnDel;
|
||||
GtkWidget* btnFilter;
|
||||
GtkWidget* lblSetNameDevice;
|
||||
} hotebook;
|
||||
typedef struct {
|
||||
int weeks;
|
||||
int days;
|
||||
int hours;
|
||||
int minutes;
|
||||
char* str_time;
|
||||
} me_time;
|
||||
|
||||
void philos_array_string_remove_char(char*** array, char* str_remove, int size);
|
||||
void philos_set_pow_size_memory(char* str_find, int* array_size, char** array_size_pow);
|
||||
void philos_set_size_memory_integer_char(char* str_find, char*** array_data, int index);
|
||||
void philos_free_string_array(char ***array, int size);
|
||||
void philos_free_string_array_n3(char ****array, int size);
|
||||
void philos_free_int_array(int **array, int size);
|
||||
void philos_free_int_array_n2(int ***array, int size);
|
||||
unsigned short philos_read_uid_min_max(char* filename, char* search);
|
||||
config_str philos_list_user(int* size, int flag_lim);
|
||||
config_str philos_list_group(int* size, int flag_lim);
|
||||
char* philos_str_size_pow_byte(GtkWidget *combo_box_text);
|
||||
char* philos_str_remove(char *str, const char *sub);
|
||||
void philos_split_size_memory(char* str_value, int* size, char* pow_memory);
|
||||
char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_memory);
|
||||
char** philos_str_split(char *parameters, int *size, char *divider);
|
||||
void philos_array_str_copy(char*** source, char*** copy);
|
||||
void philos_array_int_copy(int** source, int** copy);
|
||||
char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data);
|
||||
char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size, char** disk, int size);
|
||||
int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config);
|
||||
void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config);
|
||||
void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array);
|
||||
void philos_temp_config_init(temp_config* _config);
|
||||
void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _config, int flag_check_array);
|
||||
void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array);
|
||||
int* philos_int_append(int* array, int* size, int value);
|
||||
int* remove_element_int_array(int* array, int* size, int item_to_delete);
|
||||
int** remove_element_int_array_n3(int** array, int* size, int item_to_delete);
|
||||
char* philos_get_size_bite(GtkWidget* chk_button, GtkWidget* spin, GtkWidget* combo_box_text);
|
||||
void philos_fill_combo_box_text(GtkWidget *cbt, config_str list_data, int size);
|
||||
void philos_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value);
|
||||
void philos_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo);
|
||||
size_t get_resurs_total(char* cmd);
|
||||
float get_size_pow_memory(size_t size_memory, int size);
|
||||
void philos_set_active_widgets_device_io(GtkWidget* combo_to_l2,GtkWidget *check, GtkWidget *spin, GtkWidget *combo);
|
||||
char *yon_char_get_augumented(char *source, char *append);
|
||||
dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data);
|
||||
char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete);
|
||||
char*** yon_char_parsed_shrink_n3(char ***char_string, int *size, int item_to_delete);
|
||||
dictionary *yon_dictionary_create_empty();
|
||||
void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument);
|
||||
dictionary *yon_dictionary_create_conneced(dictionary *targetdict);
|
||||
void yon_int_array_append(int **source, int append);
|
||||
#ifdef VTE_TERMINAL
|
||||
static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data);
|
||||
#endif
|
||||
int philos_config_save(char *command);
|
||||
void philos_array_int_pars_to(int** array, int to);
|
||||
void philos_array_char_pars_to(char*** array, char* to);
|
||||
int find_null_array(temp_config* _config);
|
||||
void init_device_disk(temp_config* _config);
|
||||
char** philos_char_parsed_append(char** parsed, int *size, char *string);
|
||||
void philos_set_size_memory_integer(char* str_find, size_t* array_data);
|
||||
me_time time_convert(size_t seconds);
|
||||
char* fill_tree_view_id(int id);
|
||||
char *philos_char_from_size_t(size_t int_to_convert);
|
||||
size_t philos_convert_memory(char* num_memory_pow);
|
||||
|
||||
#endif
|
@ -0,0 +1,264 @@
|
||||
#ifndef SAVE_H
|
||||
#define SAVE_H
|
||||
#include "save.h"
|
||||
|
||||
char* save_str_users(config_u_g_p* config, int index, char* start_split) {
|
||||
char* cmd = yon_char_new("");
|
||||
char split_simvol[2] = {0};
|
||||
split_simvol[0] = 0;
|
||||
split_simvol[1] = 0;
|
||||
vector* vec_actors = &config->actors;
|
||||
char* str_actors = NULL;
|
||||
if (vec_actors->vectorList.total> 0) {
|
||||
for (int i = 0; i < vec_actors->vectorList.total; i++) {
|
||||
if (i==0) {
|
||||
cmd = yon_char_unite(cmd, start_split, NULL);
|
||||
}
|
||||
str_actors = (char*)vec_actors->pfVectorGet(vec_actors, i);
|
||||
cmd = yon_char_unite(cmd, split_simvol, str_actors, NULL);
|
||||
split_simvol[0] = ',';
|
||||
split_simvol[1] = '\0';
|
||||
}
|
||||
}
|
||||
return cmd;
|
||||
|
||||
}
|
||||
|
||||
char* template_format_save(vector* vec_temp) {
|
||||
char* cmd = yon_char_new("");
|
||||
if (vec_temp->vectorList.total> 0) {
|
||||
for (int i = 0; i < vec_temp->pfVectorTotal(vec_temp); i++) {
|
||||
config_u_g_p* _config = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, i);
|
||||
char* key = save_format_key(_config, i);
|
||||
char* value = save_format_str_value(_config, i);
|
||||
if (key!= NULL) {
|
||||
cmd = yon_char_unite(cmd, key, "=" , value, " ", NULL);
|
||||
free(key);
|
||||
free(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
return cmd;
|
||||
}
|
||||
|
||||
char* save_format_status_cmd_all(vector* vec_temp, vector* vec_status_disk) {
|
||||
char* cmd = yon_char_new("");
|
||||
char* str_cmd_format = NULL;
|
||||
if (vec_temp->vectorList.total > 0 && vec_status_disk->vectorList.total > 0) {
|
||||
for (int i=0; i < vec_temp->vectorList.total; i++) {
|
||||
config_u_g_p* _config = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, i);
|
||||
for (int j=0; j < vec_status_disk->vectorList.total;j++) {
|
||||
disk_status* config_disk_status = (disk_status*)vec_status_disk->pfVectorGet(vec_status_disk, j);
|
||||
if (strstr(config_disk_status->device, _config->UNIX_file) ) {
|
||||
str_cmd_format = save_format_status_cmd(config_disk_status, _config);
|
||||
if (str_cmd_format) {
|
||||
cmd = yon_char_unite(cmd, " ", str_cmd_format, NULL);
|
||||
free(str_cmd_format);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return cmd;
|
||||
}
|
||||
|
||||
char* set_status_and_del(config_all* _all_config) {
|
||||
char* cmd = yon_char_new("");
|
||||
for (int j=0; j < _all_config->v_disk_status.vectorList.total;j++) {
|
||||
disk_status* config_disk_status = (disk_status*)_all_config->v_disk_status.pfVectorGet(&_all_config->v_disk_status, j);
|
||||
if (config_disk_status->status == 2 && (config_disk_status->deferring_size == 0 && config_disk_status->deferring_file == 0)) {
|
||||
cmd = yon_char_unite(cmd, "DISK_QUOTA[usrquota:" , config_disk_status->device, "]=enable ", NULL);
|
||||
cmd = yon_char_unite(cmd, "DISK_QUOTA[grpquota:" , config_disk_status->device, "]=enable ", NULL);
|
||||
cmd = yon_char_unite(cmd, "DISK_QUOTA[prjquota:" , config_disk_status->device, "]=enable ", NULL);
|
||||
yon_window_config_erase_custom_parameter(config_disk_status->device, "deferring_size");
|
||||
yon_window_config_erase_custom_parameter(config_disk_status->device, "deferring_file");
|
||||
yon_window_config_erase_custom_parameter(config_disk_status->device, config_disk_status->device);
|
||||
}
|
||||
else if (config_disk_status->status == 1) {
|
||||
cmd = yon_char_unite(cmd, "DISK_QUOTA[usrquota:" , config_disk_status->device, "]=disable ", NULL);
|
||||
cmd = yon_char_unite(cmd, "DISK_QUOTA[grpquota:" , config_disk_status->device, "]=disable ", NULL);
|
||||
cmd = yon_char_unite(cmd, "DISK_QUOTA[prjquota:" , config_disk_status->device, "]=disable ", NULL);
|
||||
yon_window_config_erase_custom_parameter(config_disk_status->device, "deferring_size");
|
||||
yon_window_config_erase_custom_parameter(config_disk_status->device, "deferring_file");
|
||||
yon_window_config_erase_custom_parameter(config_disk_status->device, config_disk_status->device);
|
||||
}
|
||||
if (config_disk_status->status == 2 && (config_disk_status->deferring_size != 0 || config_disk_status->deferring_file != 0)) {
|
||||
cmd = yon_char_unite(cmd, "DISK_QUOTA[usrquota:", config_disk_status->device, "]=0:0:0:0:",yon_char_from_int(config_disk_status->deferring_size), ":", yon_char_from_int(config_disk_status->deferring_file)," ", NULL);
|
||||
cmd = yon_char_unite(cmd, "DISK_QUOTA[grpquota:", config_disk_status->device, "]=0:0:0:0:",yon_char_from_int(config_disk_status->deferring_size), ":", yon_char_from_int(config_disk_status->deferring_file)," ", NULL);
|
||||
cmd = yon_char_unite(cmd, "DISK_QUOTA[prjquota:", config_disk_status->device, "]=0:0:0:0:",yon_char_from_int(config_disk_status->deferring_size), ":", yon_char_from_int(config_disk_status->deferring_file)," ", NULL);
|
||||
}
|
||||
}
|
||||
return cmd;
|
||||
}
|
||||
|
||||
char* wrapper_save_format_status_cmd_all(config_all* _all_config) {
|
||||
return set_status_and_del(_all_config);
|
||||
}
|
||||
|
||||
char* save_format_status_cmd(disk_status* config_disk_status, config_u_g_p* config) {
|
||||
char* cmd = yon_char_unite("DISK_QUOTA[", config->type_arr, ":", config->UNIX_file,"]=", NULL);;
|
||||
if (config_disk_status->status == 2) {
|
||||
cmd = yon_char_unite(cmd,"enable", NULL);
|
||||
return cmd;
|
||||
}
|
||||
else if (config_disk_status->status == 1) {
|
||||
return yon_char_unite(cmd,"disable", NULL);
|
||||
}
|
||||
else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
char* wrapper_template_format_save(config_all* _all_config, char* source_set_cmd) {
|
||||
char* cmd_user = template_format_save(&_all_config->v_user);
|
||||
char* cmd_group = template_format_save(&_all_config->v_group);
|
||||
char* cmd_project = template_format_save(&_all_config->v_project);
|
||||
char* cmd_status_disk = wrapper_save_format_status_cmd_all(_all_config);
|
||||
if ((strlen(cmd_status_disk) > 3 || strlen(cmd_user) > 3 || strlen(cmd_group) > 3 || strlen(cmd_project) > 3) && !save_check_save(_all_config)) {
|
||||
return yon_char_unite(source_set_cmd," ", cmd_status_disk, " ", cmd_user, " ", cmd_group, " ", cmd_project, NULL);
|
||||
}
|
||||
return NULL;
|
||||
|
||||
}
|
||||
char* template_format_remove_save(config_all* _all_config, char* source_remove_cmd) {
|
||||
if (_all_config->v_remove.vectorList.total > 0) {
|
||||
char* cmd = yon_char_new(source_remove_cmd);
|
||||
for (int i = 0; i < _all_config->v_remove.vectorList.total; i++) {
|
||||
char* str_remove = (char*)_all_config->v_remove.pfVectorGet(&_all_config->v_remove, i);
|
||||
cmd = yon_char_unite(cmd, " DISK_QUOTA[" , str_remove, "] ", NULL);
|
||||
}
|
||||
if (strlen(cmd) > strlen(source_remove_cmd) && save_check_save(_all_config)== 0) {
|
||||
return cmd;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
|
||||
}
|
||||
char* template_format_remove_save_device(config_all* _all_config, char* source_remove_cmd) {
|
||||
char* cmd = yon_char_new("");
|
||||
if (_all_config->v_disk_remove.vectorList.total > 0) {
|
||||
for (int i=0; i < _all_config->v_disk_remove.vectorList.total; i++) {
|
||||
char* str_del = (char*)_all_config->v_disk_remove.pfVectorGet(&_all_config->v_disk_remove, i);
|
||||
if (str_del) {
|
||||
cmd = yon_char_unite(cmd, " DISK_QUOTA[usrquota:" , str_del, "] ", NULL);
|
||||
cmd = yon_char_unite(cmd, " DISK_QUOTA[grpquota:" , str_del, "] ", NULL);
|
||||
cmd = yon_char_unite(cmd, " DISK_QUOTA[prjquota:" , str_del, "] ", NULL);
|
||||
yon_window_config_erase_custom_parameter(str_del, "deferring_size");
|
||||
yon_window_config_erase_custom_parameter(str_del, "deferring_file");
|
||||
yon_window_config_erase_custom_parameter(str_del, str_del);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if (strlen(cmd)>5) {
|
||||
for (int i=0; i < _all_config->v_disk_remove.vectorList.total; i++) {
|
||||
_all_config->v_disk_remove.pfVectorDelete(&_all_config->v_disk_remove, i);
|
||||
}
|
||||
return cmd;
|
||||
}
|
||||
else {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
int wrapper_template_save(config_all* _all_config, char* source_set_cmd, char* source_remove_cmd) {
|
||||
char* str_cmd_remove = template_format_remove_save(_all_config,source_remove_cmd);
|
||||
char* str_cmd_remove_device = template_format_remove_save_device(_all_config,source_remove_cmd);
|
||||
char* str_cmd_set = wrapper_template_format_save(_all_config,source_set_cmd);
|
||||
if (str_cmd_set != NULL && str_cmd_remove != NULL && str_cmd_remove_device != NULL) {
|
||||
philos_config_save(yon_char_unite(str_cmd_remove, " " ,str_cmd_remove_device, "; " , str_cmd_set, NULL));
|
||||
}
|
||||
else {
|
||||
if (str_cmd_remove != NULL) {
|
||||
philos_config_save(str_cmd_remove);
|
||||
}
|
||||
if (str_cmd_remove_device != NULL) {
|
||||
philos_config_save(yon_char_unite(source_remove_cmd, " " , str_cmd_remove_device, NULL));
|
||||
}
|
||||
if (str_cmd_set != NULL) {
|
||||
philos_config_save(str_cmd_set);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (str_cmd_remove != NULL) {
|
||||
free(str_cmd_remove);
|
||||
}
|
||||
if (str_cmd_set != NULL) {
|
||||
free(str_cmd_set);
|
||||
}
|
||||
if (str_cmd_remove_device != NULL) {
|
||||
free(str_cmd_remove_device);
|
||||
}
|
||||
vector_init(&_all_config->v_remove);
|
||||
_all_config->flag_set_data = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
char* save_format_key(config_u_g_p* config, int index) {
|
||||
char* value = yon_char_new("");
|
||||
char* key = yon_char_new("");
|
||||
int number = config->id;
|
||||
key = yon_char_unite("DISK_QUOTA[", config->type_arr, ":", NULL);
|
||||
char* unix_file = NULL;
|
||||
if (strstr(config->UNIX_file, " ") && !strstr(config->UNIX_file, "\"") ) {
|
||||
unix_file = yon_char_unite("\"", config->UNIX_file, "\"", NULL);
|
||||
}
|
||||
else {
|
||||
unix_file = yon_char_new(config->UNIX_file);
|
||||
}
|
||||
if (strstr(config->type_arr, "prjquota")) {
|
||||
if (number!=-1) {
|
||||
key = yon_char_unite(key, unix_file,":",yon_char_from_int(number), NULL);
|
||||
}
|
||||
else {
|
||||
key = yon_char_unite(key, unix_file,":AUTO", NULL);
|
||||
}
|
||||
key = yon_char_unite(key, save_str_users(config, index, ",") , "]", NULL);
|
||||
}
|
||||
else {
|
||||
key = yon_char_unite(key, unix_file, NULL);
|
||||
key = yon_char_unite(key, save_str_users(config, index, ":") , "]", NULL);
|
||||
}
|
||||
free(unix_file);
|
||||
return key;
|
||||
}
|
||||
|
||||
|
||||
char* save_format_str_value(config_u_g_p* config, int index) {
|
||||
char* value = NULL;
|
||||
if (config->soft_restriction_size) {
|
||||
value = yon_char_unite(philos_format_cfg_str_size_memory("", config->soft_restriction_size,config->soft_restriction_size_pow), NULL);
|
||||
}
|
||||
else {
|
||||
value = yon_char_new("0");
|
||||
}
|
||||
if (config->severe_limitation_size) {
|
||||
value = yon_char_unite(value, ":", philos_format_cfg_str_size_memory("", config->severe_limitation_size,config->severe_limitation_size_pow), NULL);
|
||||
}
|
||||
else {
|
||||
value = yon_char_unite(value,":0", NULL);
|
||||
}
|
||||
value = yon_char_unite(value, ":", yon_char_from_int(config->soft_restriction_file), NULL);
|
||||
value = yon_char_unite(value, ":", NULL);
|
||||
value = yon_char_unite(value, yon_char_from_int(config->severe_limitation_file), NULL);
|
||||
value = yon_char_unite(value, ":", NULL);
|
||||
value = yon_char_unite(value, philos_char_from_size_t(config->deferring_size), ":", NULL);
|
||||
value = yon_char_unite(value, philos_char_from_size_t(config->deferring_file), NULL);
|
||||
return value;
|
||||
}
|
||||
|
||||
int save_check_save(config_all* _all_config) {
|
||||
if (_all_config->flag_set_data == 1 || _all_config->flag_save>0) {
|
||||
return 0;
|
||||
}
|
||||
else if (_all_config->flag_set_data == 0 || _all_config->flag_save<=0) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
@ -0,0 +1,14 @@
|
||||
#ifndef SAVE
|
||||
#define SAVE
|
||||
#include "ubl-utils.h"
|
||||
#include "model.h"
|
||||
char* template_format_save(vector* vec_temp);
|
||||
char* save_format_key(config_u_g_p* _config, int index);
|
||||
char* save_str_users(config_u_g_p* _config, int index, char* start_split);
|
||||
char* save_format_str_value(config_u_g_p* config, int index);
|
||||
char* save_format_status_cmd(disk_status* config_disk_status, config_u_g_p* config);
|
||||
char* template_format_remove_save(config_all* _all_config, char* source_remove_cmd);
|
||||
void save_remove_array(config_all* _all_config);
|
||||
int save_check_save(config_all* _all_config);
|
||||
int wrapper_template_save(config_all* _all_config, char* source_set_cmd, char* source_remove_cmd);
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,128 @@
|
||||
#include "vector.h"
|
||||
|
||||
int vectorTotal(vector *v)
|
||||
{
|
||||
int totalCount = UNDEFINE;
|
||||
if(v)
|
||||
{
|
||||
totalCount = v->vectorList.total;
|
||||
}
|
||||
return totalCount;
|
||||
}
|
||||
int vectorResize(vector *v, int capacity)
|
||||
{
|
||||
int status = UNDEFINE;
|
||||
if(v)
|
||||
{
|
||||
void **items = realloc(v->vectorList.items, sizeof(void *) * capacity);
|
||||
if (items)
|
||||
{
|
||||
v->vectorList.items = items;
|
||||
v->vectorList.capacity = capacity;
|
||||
status = SUCCESS;
|
||||
}
|
||||
}
|
||||
return status;
|
||||
}
|
||||
int vectorPushBack(vector *v, void *item)
|
||||
{
|
||||
int status = UNDEFINE;
|
||||
if(v)
|
||||
{
|
||||
if (v->vectorList.capacity == v->vectorList.total)
|
||||
{
|
||||
status = vectorResize(v, v->vectorList.capacity * 2);
|
||||
if(status != UNDEFINE)
|
||||
{
|
||||
v->vectorList.items[v->vectorList.total++] = item;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v->vectorList.items[v->vectorList.total++] = item;
|
||||
status = SUCCESS;
|
||||
}
|
||||
}
|
||||
return status;
|
||||
}
|
||||
int vectorSet(vector *v, int index, void *item)
|
||||
{
|
||||
int status = UNDEFINE;
|
||||
if(v)
|
||||
{
|
||||
if ((index >= 0) && (index < v->vectorList.total))
|
||||
{
|
||||
v->vectorList.items[index] = item;
|
||||
status = SUCCESS;
|
||||
}
|
||||
}
|
||||
return status;
|
||||
}
|
||||
void *vectorGet(vector *v, int index)
|
||||
{
|
||||
void *readData = NULL;
|
||||
if(v)
|
||||
{
|
||||
if ((index >= 0) && (index < v->vectorList.total))
|
||||
{
|
||||
readData = v->vectorList.items[index];
|
||||
}
|
||||
}
|
||||
return readData;
|
||||
}
|
||||
int vectorDelete(vector *v, int index)
|
||||
{
|
||||
int status = UNDEFINE;
|
||||
int i = 0;
|
||||
if(v)
|
||||
{
|
||||
if ((index < 0) || (index >= v->vectorList.total))
|
||||
return status;
|
||||
v->vectorList.items[index] = NULL;
|
||||
for (i = index; (i < v->vectorList.total - 1); ++i)
|
||||
{
|
||||
v->vectorList.items[i] = v->vectorList.items[i + 1];
|
||||
v->vectorList.items[i + 1] = NULL;
|
||||
}
|
||||
v->vectorList.total--;
|
||||
if ((v->vectorList.total > 0) && ((v->vectorList.total) == (v->vectorList.capacity / 4)))
|
||||
{
|
||||
vectorResize(v, v->vectorList.capacity / 2);
|
||||
}
|
||||
status = SUCCESS;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
int vectorFree(vector *v)
|
||||
{
|
||||
int status = UNDEFINE;
|
||||
if(v)
|
||||
{
|
||||
free(v->vectorList.items);
|
||||
v->vectorList.items = NULL;
|
||||
status = SUCCESS;
|
||||
}
|
||||
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
|
||||
v->pfVectorTotal = vectorTotal;
|
||||
v->pfVectorResize = vectorResize;
|
||||
v->pfVectorAdd = vectorPushBack;
|
||||
v->pfVectorSet = vectorSet;
|
||||
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;
|
||||
v->vectorList.items = malloc(sizeof(void *) * v->vectorList.capacity);
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
// https://aticleworld.com/implement-vector-in-c/
|
||||
|
||||
#define VECTOR_INIT_CAPACITY 7
|
||||
#define UNDEFINE -1
|
||||
#define SUCCESS 0
|
||||
//Store and track the stored data
|
||||
typedef struct sVectorList
|
||||
{
|
||||
void **items;
|
||||
int capacity;
|
||||
int total;
|
||||
} sVectorList;
|
||||
//structure contain the function pointer
|
||||
typedef struct sVector vector;
|
||||
struct sVector
|
||||
{
|
||||
sVectorList vectorList;
|
||||
//function pointers
|
||||
int (*pfVectorTotal)(vector *);
|
||||
int (*pfVectorResize)(vector *, int);
|
||||
int (*pfVectorAdd)(vector *, void *);
|
||||
int (*pfVectorSet)(vector *, int, void *);
|
||||
void *(*pfVectorGet)(vector *, int);
|
||||
int (*pfVectorDelete)(vector *, int);
|
||||
int (*pfVectorFree)(vector *);
|
||||
void (*pfVectorCopy)(vector *,vector *);
|
||||
|
||||
};
|
||||
void vector_init(vector *v);
|
||||
int vectorFree(vector *v);
|
||||
int vectorDelete(vector *v, int index);
|
||||
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);
|
||||
void vectorCopy(vector* v_to_copy, vector* v_from_copy);
|
@ -1,79 +0,0 @@
|
||||
#ifndef MY_TYPE_H
|
||||
#define MY_TYPE_H
|
||||
|
||||
#include "project_lib.h"
|
||||
#include <string>
|
||||
|
||||
using namespace std;
|
||||
|
||||
typedef unsigned long max_num_T;
|
||||
|
||||
struct users_grups{
|
||||
string name;
|
||||
bool state;
|
||||
max_num_T size_data;
|
||||
max_num_T soft_limit_size;
|
||||
max_num_T severe_restriction_size;
|
||||
max_num_T postponement_size_brat;
|
||||
max_num_T hard_limit_activation_time_size;
|
||||
max_num_T file;
|
||||
max_num_T soft_file_limitation;
|
||||
max_num_T hard_file_restriction;
|
||||
max_num_T postponement_hard_file_restriction;
|
||||
max_num_T hard_limit_activation_time;
|
||||
};
|
||||
struct Mount {
|
||||
std::string device;
|
||||
std::string destination;
|
||||
std::string fstype;
|
||||
std::string options;
|
||||
std::string dump;
|
||||
std::string pass;
|
||||
};
|
||||
struct partition_cmd {
|
||||
string device;
|
||||
string cmd;
|
||||
};
|
||||
struct struct_quotas {
|
||||
string device;
|
||||
string cmd;
|
||||
string type_quotas;
|
||||
string name;
|
||||
};
|
||||
struct status_quotas {
|
||||
bool user;
|
||||
bool group;
|
||||
bool project;
|
||||
bool status;
|
||||
};
|
||||
struct data_all_quotas {
|
||||
string username;
|
||||
string status;
|
||||
string block_used;
|
||||
string block_soft;
|
||||
string block_hard;
|
||||
string block_grace;
|
||||
string file_used;
|
||||
string file_soft;
|
||||
string file_hard;
|
||||
string file_grace;
|
||||
bool is_validate;
|
||||
};
|
||||
struct tv_g_u_p {
|
||||
string name;
|
||||
string quotas;
|
||||
string size;
|
||||
string soft_limit_size;
|
||||
string hard_limit_size;
|
||||
string deferring_size;
|
||||
string files;
|
||||
string soft_limit_files;
|
||||
string hard_limit_delay;
|
||||
string deferring_files;
|
||||
};
|
||||
|
||||
typedef struct users_grups USER_GRUPS;
|
||||
typedef map <string, string> map_str_str;
|
||||
typedef map <string, string>* map_s_s_ptr;
|
||||
typedef std::map<std::string, Mount> map_str_device;
|
||||
#endif
|
@ -1,27 +0,0 @@
|
||||
#ifndef PROJECT_LIB_H
|
||||
#define PROJECT_LIB_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <array>
|
||||
#include <vector>
|
||||
#include <linux/limits.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <filesystem>
|
||||
#include <pwd.h>
|
||||
#include <cstddef>
|
||||
#include <gtkmm.h>
|
||||
#include <gtkmm/stock.h>
|
||||
#include <gtkmm/window.h>
|
||||
#include <gtkmm/plug.h>
|
||||
#include <locale.h>
|
||||
#include <libintl.h>
|
||||
#include <glibmm/i18n.h>
|
||||
#include <map>
|
||||
#include "ubl-settings-diskquota-cm.h"
|
||||
|
||||
#endif
|
@ -0,0 +1 @@
|
||||
#cmakedefine WEBKIT_FOUND
|
@ -1 +0,0 @@
|
||||
#cmakedefine WEBKIT_FOUND
|
@ -0,0 +1,101 @@
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtkx.h>
|
||||
#include <libintl.h>
|
||||
#include <libintl.h>
|
||||
#define _(String) gettext(String)
|
||||
|
||||
|
||||
#define HELP_LABEL yon_char_unite(_("ubl-settings-diskquota version:")," ", version_application,"\n","\n",_("Usage:"), " ubl-settings-diskquota ",_("[OPTIONS]"),"\n",_("Options:"),"\n\t--help, -h\t\t\t",_("Show this help"),"\n\t--version, -V\t\t\t",_("Show package version"),"\n\t--lock-help\t\t\t",_("Lock this help menu"),"\n\t--lock-save\t\t\t",_("Lock configuration saving"),"\n\t--lock-save-local\t\t",_("Lock local configration saving"),"\n\t--lock-save-global\t\t",_("Lock global configration saving"),"\n\t--lock-load-global\t\t",_("Lock global configration loading"),"\n",NULL)
|
||||
|
||||
#define TITLE_LABEL _("Disk quotas")
|
||||
#define TITLE_INFO_LABEL _("Configuring disk quota settings for system groups and users")
|
||||
|
||||
#define SUCCESS_LABEL _("Operation succeeded")
|
||||
#define ROOT_WARNING_LABEL _("Warning! Application was launched without root - root-dependent actions are locked.")
|
||||
|
||||
#define ABOUT_LABEL _("About")
|
||||
#define DOCUMENTATION_LABEL _("Documentation")
|
||||
|
||||
#define SAVE_LOCAL_LABEL _("Save to local configuration")
|
||||
#define SAVE_GLOBAL_LABEL _("Save to global configuration")
|
||||
#define SAVE_CONFIGURATION_LABEL _("Save configuration")
|
||||
#define SAVE_LABEL _("Save")
|
||||
|
||||
#define LOAD_LOCAL_LABEL _("Load local configuration")
|
||||
#define LOAD_GLOBAL_LABEL _("Load global configuration")
|
||||
#define LOAD_LABEL _("Load")
|
||||
|
||||
#define CANCEL_LABEL _("Cancel")
|
||||
|
||||
#define HELP_TITLE_LABEL _("Would you like to read documentation in the Web?")
|
||||
#define HELP_INFO_LABEL _("You will be redirected to documentation website where documentation is\ntranslated and supported by community.")
|
||||
#define HELP_ALWAYS_OPEN_LABEL _("Always redirect to online documentation")
|
||||
#define OPEN_HELP_LABEL _("Open documentation")
|
||||
#define PROJECT_HOME_LABEL _("Project Home Page")
|
||||
#define NOTHING_CHOSEN_LABEL _("Nothing were chosen")
|
||||
|
||||
|
||||
#define GLOBAL_LOAD_SUCCESS_LABEL _("Global configuration loading succseeded.")
|
||||
#define LOCAL_LOAD_SUCCESS_LABEL _("Local configuration loading succseeded.")
|
||||
#define LOAD_FAILED_LABEL _("Config loading failed")
|
||||
|
||||
#define GLOBAL_LOCAL_SAVE_SUCCESS_LABEL _("Local and global configuration saving succseeded.")
|
||||
#define GLOBAL_SAVE_SUCCESS_LABEL _("Global configuration saving succseeded.")
|
||||
#define LOCAL_SAVE_SUCCESS_LABEL _("Local configuration saving succseeded.")
|
||||
#define MESS_NOTHING_SAVE _("Nothing to save!")
|
||||
|
||||
#define STR_KB _("Kb")
|
||||
#define STR_MB _("Mb")
|
||||
#define STR_GB _("Gb")
|
||||
#define STR_TB _("Tb")
|
||||
|
||||
|
||||
#define CMD_LOAD_GLOBAL "ubconfig --default --source global get security DISK_QUOTA[*]"
|
||||
#define CMD_LOAD_SYSTEM "ubconfig --default --source system get security DISK_QUOTA[*]"
|
||||
#define CMD_SAVE_GLOBAL "ubconfig --target global set security"
|
||||
#define CMD_SAVE_SYSTEM "ubconfig --target system set security"
|
||||
#define CMD_ALL_SAVE "ubconfig set security "
|
||||
#define CMD_ALL_REMOVE "ubconfig remove security "
|
||||
#define CMD_REMOVE_GLOBAL "ubconfig --target global --noexecute remove security "
|
||||
#define CMD_REMOVE_SYSTEM "ubconfig --target system remove security "
|
||||
|
||||
#define empty_str "-"
|
||||
#define WEEKS _("w ")
|
||||
#define DAYS _("d ")
|
||||
#define HOURS _("h ")
|
||||
#define MINUTES _("m ")
|
||||
|
||||
#define STR_ON _("On")
|
||||
#define STR_OFF _("Off")
|
||||
#define STR_NOT_SET _("Not set")
|
||||
#define STR_TITLE_ADD_QUOTAS _("Settings quotas - Addition")
|
||||
#define STR_TITLE_EDIT_QUOTAS _("Settings quotas - Editing")
|
||||
|
||||
#define SAVE_FAILED_LABEL
|
||||
|
||||
#define STR_TITLE_FILE_MANGER _("Please select folder")
|
||||
|
||||
#define STR_USER _("User")
|
||||
#define STR_GROUP _("Group")
|
||||
#define STR_PROJECT _("Project")
|
||||
#define STR_USERS _("Users")
|
||||
#define STR_GROUPS _("Groups")
|
||||
|
||||
#define STR_ERROR_MESS_NOT_DIR _("Is not a directory")
|
||||
#define STR_CHK_LABEL_WRITE_ALL_USERS _("Withdraw all users")
|
||||
#define STR_CHK_LABEL_WRITE_ALL_GROUPS _("Withdraw all groups")
|
||||
|
||||
#define STR_ERROR_ERROR_PROJECT_ID _("Project ID mandatory field")
|
||||
#define STR_ERROR_PATH_IS_DISK_FALSE_1 _("The path does not match the specified disk")
|
||||
#define STR_ERROR_PROJECT_NAME_VALUE_NULL _("Project name mandatory field")
|
||||
#define STR_ERROR_PROJECT_NAME_ENTER_VALUE _("Project name required field")
|
||||
#define STR_ERROR_LIST_USER_NULL _("The list of users is empty")
|
||||
#define STR_ERROR_NO_SELECTED_DISK _("To save, you need to select a disk")
|
||||
#define STR_ERROR_ENTRY_VALUE_VOLUME_OR_FILES _("The volume and files fields must have at least one value")
|
||||
#define STR_ERROR_PATH_IS_DISK_FALSE _("The selected directory is not located on the target device")
|
||||
|
||||
|
||||
|
||||
|
@ -1,34 +0,0 @@
|
||||
#include "load.h"
|
||||
|
||||
namespace Lib_Load{
|
||||
void Load::set_count_error(int count_error) {
|
||||
process.set_count_error(count_error);
|
||||
}
|
||||
string Load::get_cmd_error() {
|
||||
return process.get_cmd_error();
|
||||
}
|
||||
map<string, string>& Load::get_load_data(std::map <string, string> &map_temp, string cmd) {
|
||||
string response = "";
|
||||
string key = "";
|
||||
string value = "";
|
||||
response = process.call_all_sections(cmd);
|
||||
vector<string> vec_str_key_value = Utils::split(response, '\n');
|
||||
for (const string ¶m: vec_str_key_value) {
|
||||
if ((param.find("(null)") == std::string::npos) && (param.length() != 0 )) {
|
||||
if (param.find("=") != std::string::npos) {
|
||||
size_t index = param.find("=");
|
||||
key = param.substr(0, index);
|
||||
value = param.substr(index + 1, param.length());
|
||||
Utils::str_replace_all(value, " \"","");
|
||||
Utils::str_replace_all(value, "\"","");
|
||||
map_temp[key] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return map_temp;
|
||||
}
|
||||
int Load::get_count_error() {
|
||||
return process.get_count_error();
|
||||
}
|
||||
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
#ifndef LOAD_H
|
||||
#define LOAD_H
|
||||
|
||||
#include "my_process.h"
|
||||
namespace Lib_Load{
|
||||
class Load {
|
||||
|
||||
private:
|
||||
string sections;
|
||||
My_Process::My_Process_call process = My_Process::My_Process_call();
|
||||
public:
|
||||
int get_count_error();
|
||||
void set_count_error(int count_error);
|
||||
string get_cmd_error();
|
||||
map<string, string>& get_load_data(std::map <string, string> &map_temp, string str_flag_load);
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
#endif
|
@ -1,84 +0,0 @@
|
||||
#include "my_process.h"
|
||||
#include "util.h"
|
||||
|
||||
namespace My_Process {
|
||||
#define debug false
|
||||
struct Utils::Result<string> My_Process_call::call(string cmd) {
|
||||
this->i_error_old = this->i_error;
|
||||
struct Utils::Result<string> obj_result;
|
||||
string response = Utils::call(cmd);
|
||||
obj_result.response = response;
|
||||
if ((response.find("(null)") == std::string::npos) && (response.length() != 0 )) {
|
||||
if (response.find("=") != std::string::npos) {
|
||||
if (response.find("\n") != std::string::npos) {
|
||||
response = response.substr(response.find("=")+1,response.length());
|
||||
response = response.substr(0,response.find("\n"));
|
||||
obj_result.response = response;
|
||||
obj_result.error = 0;
|
||||
}
|
||||
else {
|
||||
obj_result.error = 1;
|
||||
this->i_error += 1;
|
||||
this->log_mess_error(cmd);
|
||||
}
|
||||
}
|
||||
else {
|
||||
obj_result.error = 2;
|
||||
this->i_error += 1;
|
||||
str_cmd_error = cmd;
|
||||
this->log_mess_error(cmd);
|
||||
}
|
||||
}
|
||||
else {
|
||||
obj_result.error = 3;
|
||||
this->i_error += 1;
|
||||
str_cmd_error = cmd;
|
||||
this->log_mess_error(cmd);
|
||||
}
|
||||
return obj_result;
|
||||
}
|
||||
|
||||
int My_Process::get_count_error() {
|
||||
return this->i_error;
|
||||
}
|
||||
|
||||
void My_Process::set_back_count_error() {
|
||||
this->i_error = this->i_error_old;
|
||||
}
|
||||
|
||||
void My_Process_system::call(string cmd, string thread_str = "") {
|
||||
string cmd_new = cmd + " " + thread_str;
|
||||
int response_cmd = system(cmd_new.c_str());
|
||||
if (response_cmd != 0) {
|
||||
this->i_error += 1;
|
||||
}
|
||||
}
|
||||
|
||||
void My_Process::set_count_error(int count_error) {
|
||||
this->i_error = count_error;
|
||||
this->str_cmd_error = "";
|
||||
}
|
||||
|
||||
void My_Process::log_mess_error(string) {
|
||||
}
|
||||
|
||||
string My_Process::get_cmd_error() {
|
||||
return this->str_cmd_error;
|
||||
}
|
||||
string My_Process_call::call_all_sections(string cmd) {
|
||||
char buffer[PATH_MAX] = {0};
|
||||
std::string result = "";
|
||||
FILE* pipe = popen(cmd.c_str(), "r");
|
||||
if (!pipe) throw std::runtime_error("popen() failed!");
|
||||
try {
|
||||
while (fgets(buffer, sizeof buffer, pipe) != NULL) {
|
||||
result += buffer;
|
||||
}
|
||||
} catch (...) {
|
||||
pclose(pipe);
|
||||
throw;
|
||||
}
|
||||
pclose(pipe);
|
||||
return result;
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
#ifndef MY_PROCESS_H
|
||||
#define MY_PROCESS_H
|
||||
|
||||
#include "util.h"
|
||||
namespace My_Process {
|
||||
class My_Process {
|
||||
public:
|
||||
int i_error = 0;
|
||||
int i_error_old = 0;
|
||||
string str_cmd_error = "";
|
||||
int get_count_error();
|
||||
void set_count_error(int count_error);
|
||||
void set_back_count_error();
|
||||
void log_mess_error(string);
|
||||
string get_cmd_error();
|
||||
};
|
||||
|
||||
|
||||
class My_Process_call: public My_Process {
|
||||
public:
|
||||
struct Utils::Result<string> call(string cmd);
|
||||
string call_all_sections(string cmd);
|
||||
|
||||
};
|
||||
|
||||
class My_Process_system: public My_Process {
|
||||
public:
|
||||
void call(string cmd, string thread_str);
|
||||
|
||||
};
|
||||
}
|
||||
#endif
|
@ -1,151 +0,0 @@
|
||||
#include "save.h"
|
||||
|
||||
namespace Lib_save {
|
||||
|
||||
vector<string> Save::get_error() {
|
||||
return this->vec_errors;
|
||||
}
|
||||
|
||||
bool Save::get_state_save() {
|
||||
return this->flag_no_save;
|
||||
}
|
||||
|
||||
void Save::set_data_global(std::map <string, string> &map_global) {
|
||||
this->map_global = &map_global;
|
||||
}
|
||||
|
||||
void Save::set_data_local(std::map <string, string> &map_local) {
|
||||
this->map_local = &map_local;
|
||||
}
|
||||
|
||||
void Save::set_data_gui(std::map <string, string> &map_gui) {
|
||||
this->map_gui = &map_gui;
|
||||
}
|
||||
|
||||
bool Save::check_save(string flag_save, string key_name) {
|
||||
std::map <string, string>:: iterator iter_map_data;
|
||||
std::map <string, string>:: iterator iter_map_data_old;
|
||||
std::map <string, string> *map_data_old;
|
||||
if (flag_save == "system") {
|
||||
map_data_old = map_local;
|
||||
}
|
||||
else if (flag_save == "global") {
|
||||
map_data_old = map_global;
|
||||
}
|
||||
iter_map_data = (*map_gui).find(key_name);
|
||||
iter_map_data_old = (*map_data_old).find(key_name);
|
||||
if ((*map_local).find(key_name) != (*map_local).end() && (*map_global).find(key_name) != (*map_global).end()) {
|
||||
if ((*map_local)[key_name] != (*map_global)[key_name]) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (iter_map_data_old == (*map_data_old).end() && iter_map_data != (*map_gui).end()) {
|
||||
return true;
|
||||
}
|
||||
else if (iter_map_data->second != iter_map_data_old->second) {
|
||||
return true;
|
||||
}
|
||||
else if (iter_map_data->second.length() == 0 && iter_map_data_old->second.length() == 0) {
|
||||
return false;
|
||||
}
|
||||
else if (iter_map_data->second == iter_map_data_old->second) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
int Save::get_count_error() {
|
||||
return process.get_count_error();
|
||||
}
|
||||
|
||||
string Save::get_cmd_error() {
|
||||
return process.get_cmd_error();
|
||||
}
|
||||
|
||||
void Save::set_count_error(int count_error) {
|
||||
process.set_count_error(count_error);
|
||||
}
|
||||
|
||||
void Save::set_vec_params(vector<string>& vec_param_names) {
|
||||
this->vec_param_names = &vec_param_names;
|
||||
}
|
||||
|
||||
void Save::save(string sections, string str_flag_save) {
|
||||
string key = "";
|
||||
string value = "";
|
||||
string cmd = "";
|
||||
string str_error = "";
|
||||
this->flag_no_save = true;
|
||||
for (const auto &key: *vec_param_names) {
|
||||
if (map_gui->find(key) != map_gui->end()) {
|
||||
value = (*map_gui)[key];
|
||||
if (this->check_save(str_flag_save, key)) {
|
||||
if (value.length() != 0) {
|
||||
cmd = "ubconfig --target " + str_flag_save + " set " + sections + " " +
|
||||
key + "=\"" + value + "\"";
|
||||
}
|
||||
else if (value.length() == 0) {
|
||||
cmd = "ubconfig --target " + str_flag_save + " remove " + sections + " " + key;
|
||||
}
|
||||
else {
|
||||
cmd = "";
|
||||
}
|
||||
if (cmd.length() != 0) {
|
||||
process.call(cmd, "");
|
||||
this->flag_no_save = false;
|
||||
str_error = process.get_cmd_error();
|
||||
if (str_error.length() != 0) {
|
||||
this->vec_errors.push_back(str_error);
|
||||
str_error = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
void Save::save_one_cmd(string cmd1, string cmd_remove, string str_flag_save) {
|
||||
string key = "";
|
||||
string value = "";
|
||||
string cmd = "";
|
||||
this->flag_no_save = true;
|
||||
cmd = cmd1;
|
||||
string remove = cmd_remove;
|
||||
for (const auto &key: *vec_param_names) {
|
||||
if (map_gui->find(key) != map_gui->end()) {
|
||||
value = (*map_gui)[key];
|
||||
if (this->check_save(str_flag_save, key)) {
|
||||
if (value.length() != 0) {
|
||||
cmd = cmd + key + "=\"" + value + "\" ";
|
||||
}
|
||||
else if (value.length() == 0) {
|
||||
remove = remove + key + " ";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
if (cmd.length() != cmd1.length()) {
|
||||
this->template_save(cmd);
|
||||
}
|
||||
if (cmd_remove.length() != remove.length()) {
|
||||
this->template_save(remove);
|
||||
}
|
||||
}
|
||||
|
||||
void Save::template_save(string cmd) {
|
||||
string str_error = "";
|
||||
process.call(cmd, "");
|
||||
this->flag_no_save = false;
|
||||
str_error = process.get_cmd_error();
|
||||
if (str_error.length() != 0) {
|
||||
this->vec_errors.push_back(str_error);
|
||||
str_error = "";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
#ifndef MY_SAVE_H
|
||||
#define MY_SAVE_H
|
||||
|
||||
#include "my_process.h"
|
||||
namespace Lib_save {
|
||||
|
||||
class Save {
|
||||
private:
|
||||
std::map <string, string> *map_global;
|
||||
std::map <string, string> *map_local;
|
||||
std::map <string, string> *map_gui;
|
||||
vector<string> vec_errors;
|
||||
vector<string>* vec_param_names;
|
||||
My_Process::My_Process_system process = My_Process::My_Process_system();
|
||||
bool flag_no_save;
|
||||
void template_save(string cmd);
|
||||
public:
|
||||
void set_data_global(std::map <string, string> &map_global);
|
||||
void set_data_local(std::map <string, string> &map_local);
|
||||
void set_data_gui(std::map <string, string> &map_gui);
|
||||
bool check_save(string flag_save, string key_name);
|
||||
bool get_state_save();
|
||||
|
||||
void save_one_cmd(string cmd1, string cmd_remove, string str_flag_save);
|
||||
int get_count_error();
|
||||
string get_cmd_error();
|
||||
void set_count_error(int count_error);
|
||||
void set_vec_params(vector<string>& vec_param_names);
|
||||
void save(string sections, string str_flag_save) ;
|
||||
vector<string> get_error();
|
||||
};
|
||||
}
|
||||
#endif
|
@ -1,39 +0,0 @@
|
||||
#include "ubconfig_quota.h"
|
||||
|
||||
|
||||
|
||||
Ubconfig_quota::Ubconfig_quota(/* args */)
|
||||
{
|
||||
}
|
||||
|
||||
Ubconfig_quota::~Ubconfig_quota()
|
||||
{
|
||||
}
|
||||
|
||||
void Ubconfig_quota::set_map_global(map_str_str* map_global_cfg) {
|
||||
this->map_global_cfg = map_global_cfg;
|
||||
}
|
||||
|
||||
void Ubconfig_quota::set_map_local(map_str_str* map_system_cfg) {
|
||||
this->map_system_cfg = map_system_cfg;
|
||||
}
|
||||
|
||||
void Ubconfig_quota::remove_key_to_vec(string key) {
|
||||
cout << key << endl;
|
||||
}
|
||||
|
||||
void Ubconfig_quota::add_key_to_vec(string key) {
|
||||
cout << key << endl;
|
||||
}
|
||||
|
||||
void Ubconfig_quota::set_vec_key(vector<string>* vec_param_names) {
|
||||
this->vec_param_names = vec_param_names;
|
||||
}
|
||||
|
||||
void Ubconfig_quota::format_data() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,58 +0,0 @@
|
||||
#ifndef UBCONFIG_QUOTAS_H
|
||||
#define UBCONFIG_QUOTAS_H
|
||||
|
||||
#include "../../my_type.h"
|
||||
#include "../../project_lib.h"
|
||||
|
||||
class Ubconfig_quota
|
||||
{
|
||||
private:
|
||||
map_str_str* map_gui_cfg = NULL;
|
||||
map_str_str* map_global_cfg = NULL;
|
||||
map_str_str* map_system_cfg = NULL;
|
||||
vector<string>* vec_param_names = NULL;
|
||||
struct Size {
|
||||
int size_0;
|
||||
int size_1;
|
||||
int size_2;
|
||||
int size_3;
|
||||
int size_4;
|
||||
int size_5;
|
||||
};
|
||||
struct User {
|
||||
bool active;
|
||||
string device;
|
||||
vector<string> users;
|
||||
struct Size obj_size;
|
||||
};
|
||||
struct Group {
|
||||
bool active;
|
||||
string device;
|
||||
vector<string> groups;
|
||||
struct Size obj_size;
|
||||
};
|
||||
struct Prjquota {
|
||||
bool active;
|
||||
string device;
|
||||
vector<string> prjquota_name;
|
||||
struct Size obj_size;
|
||||
};
|
||||
struct Quotas {
|
||||
struct User obj_user;
|
||||
struct Group obj_group;
|
||||
struct Prjquota obj_prjquota;
|
||||
};
|
||||
public:
|
||||
Ubconfig_quota(/* args */);
|
||||
~Ubconfig_quota();
|
||||
void set_map_gui(map_str_str* map_gui_cfg);
|
||||
void set_map_global(map_str_str* map_global_cfg);
|
||||
void set_map_local(map_str_str* map_system_cfg);
|
||||
void set_vec_key(vector<string>* vec_param_names);
|
||||
void remove_key_to_vec(string key);
|
||||
void add_key_to_vec(string key);
|
||||
void format_data();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
@ -1,34 +0,0 @@
|
||||
#ifndef UTIL_H
|
||||
#define UTIL_H
|
||||
#include "../../project_lib.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace Utils {
|
||||
#define file_source_login_min_max "/etc/login.defs"
|
||||
template<typename Type>
|
||||
struct Result{
|
||||
Type response;
|
||||
int error;
|
||||
};
|
||||
|
||||
struct Passwd {
|
||||
string user;
|
||||
int uid;
|
||||
};
|
||||
|
||||
string format_str_size(int num, int index);
|
||||
std::array<std::vector<std::string>, 5> read_csv(const std::string& filename);
|
||||
std::string call(std::string cmd);
|
||||
vector<int> find_all(string &str_ntp, string substr);
|
||||
void str_remove(std::string& source, std::string to_remove);
|
||||
void str_replace_all(string &str_base, string str_find, string str_replace);
|
||||
std::vector<std::string> split(std::string text, char delim);
|
||||
vector <string> pars_users();
|
||||
int synopsis_show(string str_link);
|
||||
string file_read(string filename);
|
||||
unsigned short read_uid_min_max(string filename, string search);
|
||||
vector<string> pars_users();
|
||||
vector<string> pars_group();
|
||||
}
|
||||
#endif
|
@ -1,133 +0,0 @@
|
||||
#include "wrapper_load_save.h"
|
||||
|
||||
|
||||
|
||||
Wrapper_load_save::Wrapper_load_save(/* args */) {
|
||||
//obj_quotas_sys.set_map_gui(map_gui_cfg);
|
||||
//obj_quotas_ubconfig.set_map_gui(map_gui_cfg);
|
||||
}
|
||||
|
||||
Wrapper_load_save::~Wrapper_load_save()
|
||||
{
|
||||
}
|
||||
|
||||
void Wrapper_load_save::set_map_gui(map_str_str* map_gui_cfg) {
|
||||
this->map_gui_cfg = map_gui_cfg;
|
||||
}
|
||||
|
||||
void Wrapper_load_save::set_map_global(map_str_str* map_global_cfg) {
|
||||
this->map_global_cfg = map_global_cfg;
|
||||
}
|
||||
|
||||
void Wrapper_load_save::set_map_local(map_str_str* map_system_cfg) {
|
||||
this->map_system_cfg = map_system_cfg;
|
||||
}
|
||||
|
||||
void Wrapper_load_save::set_vec_key(vector<string> vec_param_names) {
|
||||
this->vec_param_names = vec_param_names;
|
||||
}
|
||||
|
||||
int Wrapper_load_save::load_global_cfg() {
|
||||
this->load_template(map_global_cfg, global_load);
|
||||
*map_gui_cfg = *map_global_cfg;
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
int Wrapper_load_save::load_system_cfg() {
|
||||
this->load_template(map_system_cfg, system_load);
|
||||
*map_gui_cfg = *map_system_cfg;
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
void Wrapper_load_save::load_template(map_str_str* map_temp, string cmd) {
|
||||
if (cmd.find("system") != string::npos) {
|
||||
this->init_dict("system");
|
||||
}
|
||||
else {
|
||||
this->init_dict("global");
|
||||
}
|
||||
*map_temp = obj_load.get_load_data(*map_temp, cmd);
|
||||
}
|
||||
|
||||
int Wrapper_load_save::wrapper_save_global_cfg() {
|
||||
this->set_data_cfg();
|
||||
if (this->save_template("boot", "global")) {
|
||||
*map_global_cfg = *map_gui_cfg;
|
||||
return 5;
|
||||
}
|
||||
else {
|
||||
*map_global_cfg = *map_gui_cfg;
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
|
||||
int Wrapper_load_save::wrapper_save_system_cfg() {
|
||||
this->set_data_cfg();
|
||||
if (this->save_template("boot", "system")) {
|
||||
*map_system_cfg = *map_gui_cfg;
|
||||
return 5;
|
||||
}
|
||||
else {
|
||||
*map_system_cfg = *map_gui_cfg;
|
||||
return 2;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
int Wrapper_load_save::wrapper_save_all_cfg() {
|
||||
this->set_data_cfg();
|
||||
bool _flag_save_global = this->save_template("boot", "global");;
|
||||
bool _flag_save_local = this->save_template("boot", "system");
|
||||
if (_flag_save_global && _flag_save_local) {
|
||||
*map_global_cfg = *map_gui_cfg;
|
||||
*map_system_cfg = *map_gui_cfg;
|
||||
return 5;
|
||||
}
|
||||
else {
|
||||
*map_global_cfg = *map_gui_cfg;
|
||||
*map_system_cfg = *map_gui_cfg;
|
||||
return 4;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
int Wrapper_load_save::get_error_load() {
|
||||
return obj_load.get_count_error();
|
||||
}
|
||||
int Wrapper_load_save::get_error_save() {
|
||||
return obj_save.get_count_error();
|
||||
}
|
||||
|
||||
bool Wrapper_load_save::save_template(string section, string flag_save) {
|
||||
bool flag_no_save = true;
|
||||
obj_save.set_data_local(*map_system_cfg);
|
||||
obj_save.set_data_global(*map_global_cfg);
|
||||
obj_save.set_data_gui(*map_gui_cfg);
|
||||
obj_save.set_vec_params(vec_param_names);
|
||||
obj_save.save(section, flag_save);
|
||||
vector<string> obj_vec_error = obj_save.get_error();
|
||||
flag_no_save = obj_save.get_state_save();
|
||||
return flag_no_save;
|
||||
}
|
||||
|
||||
void Wrapper_load_save::init_dict(string flag_load) {
|
||||
map_str_str map_gui_cfg_n;
|
||||
map_gui_cfg_n[""] = "";
|
||||
|
||||
*map_gui_cfg = map_gui_cfg_n;
|
||||
if (flag_load == "global") {
|
||||
*map_global_cfg = *map_gui_cfg;
|
||||
}
|
||||
else if (flag_load == "system") {
|
||||
*map_system_cfg = *map_gui_cfg;
|
||||
}
|
||||
}
|
||||
|
||||
void Wrapper_load_save::set_data_cfg() {
|
||||
// TODO:
|
||||
// Написать функцию
|
||||
}
|
@ -1,55 +0,0 @@
|
||||
#ifndef WRAPPER_LOAD_SAVE_H
|
||||
#define WRAPPER_LOAD_SAVE_H
|
||||
#include "../../my_type.h"
|
||||
#include "../../project_lib.h"
|
||||
#include "load.h"
|
||||
#include "save.h"
|
||||
#include "my_process.h"
|
||||
#include "util.h"
|
||||
#define global_load "ubconfig --default --source global get boot"
|
||||
#define system_load "ubconfig --default --source system get boot"
|
||||
#define global_save "ubconfig --target global --noexecute set boot "
|
||||
#define system_save "ubconfig --target system set boot "
|
||||
#define all_save "ubconfig set boot "
|
||||
#define all_remove "ubconfig set/remove boot "
|
||||
#define global_remove "ubconfig --target global --noexecute set/remove boot "
|
||||
#define system_remove "ubconfig --target system --noexecute set/remove boot "
|
||||
|
||||
|
||||
|
||||
class Wrapper_load_save {
|
||||
private:
|
||||
string str_cmd_error;
|
||||
private:
|
||||
map_str_str* map_gui_cfg = NULL;
|
||||
map_str_str* map_global_cfg = NULL;
|
||||
map_str_str* map_system_cfg = NULL;
|
||||
vector<string> vec_param_names;
|
||||
My_Process::My_Process_system obj_process_system = My_Process::My_Process_system();
|
||||
My_Process::My_Process_call obj_process_call = My_Process::My_Process_call();
|
||||
Lib_save::Save obj_save = Lib_save::Save();
|
||||
Lib_Load::Load obj_load = Lib_Load::Load();
|
||||
public:
|
||||
Wrapper_load_save(/* args */);
|
||||
~Wrapper_load_save();
|
||||
int load_global_cfg();
|
||||
int load_system_cfg();
|
||||
int wrapper_save_system_cfg();
|
||||
int wrapper_save_global_cfg();
|
||||
int wrapper_save_all_cfg();
|
||||
int get_error_load();
|
||||
int get_error_save();
|
||||
void set_map_gui(map_str_str* map_gui_cfg);
|
||||
void set_map_global(map_str_str* map_global_cfg);
|
||||
void set_map_local(map_str_str* map_system_cfg);
|
||||
void set_vec_key(vector<string> vec_param_names);
|
||||
private:
|
||||
void load_template(map_str_str* map_temp, string cmd);
|
||||
void init_dict(string flag_load);
|
||||
void set_data_cfg();
|
||||
bool save_template(string section, string flag_save);
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
@ -1,620 +0,0 @@
|
||||
#ifndef UBL_SETTINGS_DISKQUOTA_H
|
||||
#define UBL_SETTINGS_DISKQUOTA_H
|
||||
#include "ubl-settings-diskquota.h"
|
||||
|
||||
string version_application = "1.7";
|
||||
bool flag_save = false;
|
||||
bool flag_save_local = false;
|
||||
bool flag_save_global = false;
|
||||
bool flag_load_global = false;
|
||||
bool flag_lock_help = false;
|
||||
|
||||
MainWindow::MainWindow(Glib::RefPtr<Gtk::Builder> builder, View_open_browser* obj_open_browser, int* socket_ext_id_I, int* socket_trd_id_I) {
|
||||
this->builder = builder;
|
||||
this->socket_ext_id_I = socket_ext_id_I;
|
||||
this->socket_trd_id_I = socket_trd_id_I;
|
||||
this->set_obj_browser(obj_open_browser);
|
||||
// this->settings();
|
||||
}
|
||||
|
||||
void MainWindow::set_map_gui(map_str_str* map_gui_cfg) {
|
||||
this->map_gui_cfg = map_gui_cfg;
|
||||
obj_wrapper_load_save->set_map_gui(map_gui_cfg);
|
||||
}
|
||||
|
||||
void MainWindow::set_map_global(map_str_str* map_global_cfg) {
|
||||
this->map_global_cfg = map_global_cfg;
|
||||
obj_wrapper_load_save->set_map_global(map_global_cfg);
|
||||
}
|
||||
|
||||
void MainWindow::set_map_local(map_str_str* map_system_cfg) {
|
||||
this->map_system_cfg = map_system_cfg;
|
||||
obj_wrapper_load_save->set_map_local(map_system_cfg);
|
||||
}
|
||||
|
||||
void MainWindow::set_obj_wrapper_load_save(Wrapper_load_save* obj_wrapper_load_save) {
|
||||
this->obj_wrapper_load_save = obj_wrapper_load_save;
|
||||
}
|
||||
|
||||
void MainWindow::set_obj_view_filters(View_filters* obj_view_filters) {
|
||||
this->obj_view_filters = obj_view_filters;
|
||||
}
|
||||
|
||||
void MainWindow::set_obj_view_add(View_add_user_group* obj_view_add) {
|
||||
this->obj_view_add = obj_view_add;
|
||||
}
|
||||
|
||||
void MainWindow::set_obj_view_edit(View_edit_user_group* obj_view_edit) {
|
||||
this->obj_view_edit = obj_view_edit;
|
||||
}
|
||||
void MainWindow::set_obj_view_add_project(View_add_project* obj_view_add_project) {
|
||||
this->obj_view_add_project = obj_view_add_project;
|
||||
}
|
||||
void MainWindow::set_obj_view_edit_project(View_edit_project* obj_view_edit_project) {
|
||||
this->obj_view_edit_project = obj_view_edit_project;
|
||||
}
|
||||
|
||||
void MainWindow::settings() {
|
||||
this->get_builder();
|
||||
this->lacalization();
|
||||
Gtk::Widget *boxWidget;
|
||||
builder->get_widget("boxColor", boxWidget);
|
||||
HeadOverlay->add_overlay(*boxWidget);
|
||||
ubl_make_plugs(boxSave, boxButton, (*socket_ext_id_I), (*socket_trd_id_I));
|
||||
this->add_CSS();
|
||||
this->flag_block_gui();
|
||||
this->init_tree_view();
|
||||
this->init_spin_all();
|
||||
if (geteuid() == 0) {
|
||||
this->wrapper_load_system();
|
||||
this->wrapper_load_global();
|
||||
this->event();
|
||||
}
|
||||
else {
|
||||
boxFuncs->set_sensitive(false);
|
||||
btnSave->set_sensitive(false);
|
||||
btnLoad->set_sensitive(false);
|
||||
imgInfo->set_from_icon_name(icon_warning, Gtk::ICON_SIZE_MENU);
|
||||
info_status_app(info_box_error_css);
|
||||
lblWarning->set_text(program_as_root);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void MainWindow::set_obj_browser(View_open_browser* obj_open_browser) {
|
||||
this->obj_open_browser = obj_open_browser;
|
||||
obj_open_browser->get_about()->set_version(version_application);
|
||||
}
|
||||
|
||||
void MainWindow::init_spin_all() {
|
||||
generalGroupsSizeWeeksSpi->set_range(0, 52);
|
||||
generalGroupsSizeWeeksSpi->set_increments(1.0, 1.0);
|
||||
generalGroupsSizeWeeksSpi->set_value(0);
|
||||
generalGroupsFileWeeksSpin->set_range(0, 52);
|
||||
generalGroupsFileWeeksSpin->set_increments(1.0, 1.0);
|
||||
generalGroupsFileWeeksSpin->set_value(0);
|
||||
generalUsersSizWeeksSpin->set_range(0, 52);
|
||||
generalUsersSizWeeksSpin->set_increments(1.0, 1.0);
|
||||
generalUsersSizWeeksSpin->set_value(0);
|
||||
generalUsersFileWeeksSpin->set_range(0, 52);
|
||||
generalUsersFileWeeksSpin->set_increments(1.0, 1.0);
|
||||
generalUsersFileWeeksSpin->set_value(0);
|
||||
generalGroupsSizeDaySpin->set_range(0, 31);
|
||||
generalGroupsSizeDaySpin->set_increments(1.0, 1.0);
|
||||
generalGroupsSizeDaySpin->set_value(0);
|
||||
generalGroupsFilesDaySpin->set_range(0, 31);
|
||||
generalGroupsFilesDaySpin->set_increments(1.0, 1.0);
|
||||
generalGroupsFilesDaySpin->set_value(0);
|
||||
generalUsersSizeDaySpin->set_range(0, 31);
|
||||
generalUsersSizeDaySpin->set_increments(1.0, 1.0);
|
||||
generalUsersSizeDaySpin->set_value(0);
|
||||
generalUsersFilesDaySpin->set_range(0, 31);
|
||||
generalUsersFilesDaySpin->set_increments(1.0, 1.0);
|
||||
generalUsersFilesDaySpin->set_value(0);
|
||||
generalGroupsSizeHourSpin->set_range(0, 23);
|
||||
generalGroupsSizeHourSpin->set_increments(1.0, 1.0);
|
||||
generalGroupsSizeHourSpin->set_value(0);
|
||||
generalGroupsFilesHourSpin->set_range(0, 23);
|
||||
generalGroupsFilesHourSpin->set_increments(1.0, 1.0);
|
||||
generalGroupsFilesHourSpin->set_value(0);
|
||||
generalUsersSizeHourSpin->set_range(0, 23);
|
||||
generalUsersSizeHourSpin->set_increments(1.0, 1.0);
|
||||
generalUsersSizeHourSpin->set_value(0);
|
||||
generalUsersFilesHoursSpin->set_range(0, 23);
|
||||
generalUsersFilesHoursSpin->set_increments(1.0, 1.0);
|
||||
generalUsersFilesHoursSpin->set_value(0);
|
||||
generalGroupsSizeMinuteSpin->set_range(0, 59);
|
||||
generalGroupsSizeMinuteSpin->set_increments(1.0, 1.0);
|
||||
generalGroupsSizeMinuteSpin->set_value(0);
|
||||
generalGroupsFilesMinuteSpin->set_range(0, 59);
|
||||
generalGroupsFilesMinuteSpin->set_increments(1.0, 1.0);
|
||||
generalGroupsFilesMinuteSpin->set_value(0);
|
||||
generalUsersSizeMinuteSpin->set_range(0, 59);
|
||||
generalUsersSizeMinuteSpin->set_increments(1.0, 1.0);
|
||||
generalUsersSizeMinuteSpin->set_value(0);
|
||||
generalUsersFilesMinutesSpin->set_range(0, 59);
|
||||
generalUsersFilesMinutesSpin->set_increments(1.0, 1.0);
|
||||
generalUsersFilesMinutesSpin->set_value(0);
|
||||
}
|
||||
|
||||
void MainWindow::init_tree_view() {
|
||||
this->view_add_columns(*usersQuotasTree);
|
||||
this->view_add_columns(*groupsQuotasTree);
|
||||
this->view_add_columns(*ProjectQuotasTree);
|
||||
this->init_tree_view_general();
|
||||
}
|
||||
void MainWindow::init_tree_view_general() {
|
||||
GeneralQuotasTree->append_column_editable(str_status, m_columnsGeneral.status);
|
||||
GeneralQuotasTree->append_column(str_quota, m_columnsGeneral.type_quotas);
|
||||
GeneralQuotasTree->append_column(str_device_project, m_columnsGeneral.device);
|
||||
GeneralQuotasTree->append_column(str_user, m_columnsGeneral.user);
|
||||
GeneralQuotasTree->append_column(str_group, m_columnsGeneral.group);
|
||||
GeneralQuotasTree->append_column(str_projects, m_columnsGeneral.projects);
|
||||
GeneralQuotasTree->append_column(str_tw_soft_limit, m_columnsGeneral.soft_limit_size);
|
||||
GeneralQuotasTree->append_column(str_tw_severe_limitation, m_columnsGeneral.hard_limit_size);
|
||||
GeneralQuotasTree->append_column(str_tw_soft_limit_files, m_columnsGeneral.soft_limit_files);
|
||||
GeneralQuotasTree->append_column(str_tw_severe_limitation_files, m_columnsGeneral.hard_limit_files);
|
||||
GeneralQuotasTree->append_column(str_tw_general_deferring_size, m_columnsGeneral.deferring_size);
|
||||
GeneralQuotasTree->append_column(str_tw_general_deferring_files, m_columnsGeneral.deferring_files);
|
||||
}
|
||||
|
||||
void MainWindow::view_add_columns(Gtk::TreeView &treeView) {
|
||||
treeView.append_column_editable(str_name, m_columns.name);
|
||||
treeView.append_column_editable(str_quotas, m_columns.quotas);
|
||||
treeView.append_column(str_size, m_columns.size);
|
||||
treeView.append_column(str_tw_soft_limit, m_columns.soft_limit_size);
|
||||
treeView.append_column(str_tw_severe_limitation, m_columns.hard_limit_size);
|
||||
treeView.append_column(str_tw_deferring_size, m_columns.deferring_size);
|
||||
treeView.append_column(str_files, m_columns.files);
|
||||
treeView.append_column(str_tw_soft_limit_files, m_columns.soft_limit_files);
|
||||
treeView.append_column(str_tw_severe_limitation_files, m_columns.hard_limit_delay);
|
||||
treeView.append_column(str_tw_deferring_files, m_columns.deferring_files);
|
||||
}
|
||||
|
||||
void MainWindow::lacalization() {
|
||||
GroupsTabLabel->set_text(str_groups);
|
||||
headerTopic->set_label(name_app);
|
||||
UsersTabLabel->set_text(str_users);
|
||||
generalGroupsFilesLabel->set_text(str_excess_files_delay);
|
||||
generalUsersSizeLabel->set_text(str_excess_size_delay);
|
||||
generalUsersFilesLabel->set_text(str_excess_files_delay);
|
||||
lblLoad->set_text(str_load_local);
|
||||
lblSave->set_text(str_save_local);
|
||||
groupsDeviceLabel->set_label(str_device);
|
||||
usersDeviceLabel->set_label(str_device);
|
||||
headLabel->set_label(str_lb_head);
|
||||
btnLoadGlob->set_label(load_global);
|
||||
btnLoadLocal->set_label(load_local);
|
||||
btnAbout->set_label(str_about_1);
|
||||
btnSynopsis->set_label(str_help);
|
||||
btnSaveLocalGlob->set_label(save_all);
|
||||
btnSaveGlob->set_label(save_global);
|
||||
btnSaveLocal->set_label(save_local);
|
||||
ProjectTabLabel->set_label(str_projects);
|
||||
usersProjectLabel->set_text(str_device);
|
||||
chbMangSystemFile->set_label(str_quotas_mode);
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::info_warning_error(int mess, int error_save, int error_load) {
|
||||
if (error_save > 0 || error_load > 0) {
|
||||
info_status_app(info_box_error_css);
|
||||
imgInfo->set_from_icon_name(icon_warning, Gtk::ICON_SIZE_MENU);
|
||||
string mess_error = "";
|
||||
if (mess == 0) {
|
||||
mess_error = string(local_read_error) + str_cmd_error;
|
||||
lblWarning->set_text(mess_error);
|
||||
}
|
||||
else if (mess == 1) {
|
||||
mess_error = string(global_read_error) + str_cmd_error;
|
||||
lblWarning->set_text(mess_error);
|
||||
}
|
||||
else if (mess == 2) {
|
||||
mess_error = string(local_write_error) + str_cmd_error;
|
||||
lblWarning->set_text(mess_error);
|
||||
}
|
||||
else if (mess == 3) {
|
||||
mess_error = string(global_write_error) + str_cmd_error;
|
||||
lblWarning->set_text(mess_error);
|
||||
}
|
||||
else if (mess == 4) {
|
||||
mess_error = string(error_save_all) + str_cmd_error;
|
||||
lblWarning->set_text(mess_error);
|
||||
}
|
||||
str_cmd_error = "";
|
||||
}
|
||||
else {
|
||||
info_status_app(info_box_ok_css);
|
||||
imgInfo->set_from_icon_name(icon_checked, Gtk::ICON_SIZE_MENU);
|
||||
if (mess == 0) {
|
||||
lblWarning->set_text(local_load_ok);
|
||||
}
|
||||
else if (mess == 1) {
|
||||
lblWarning->set_text(global_load_ok);
|
||||
}
|
||||
else if (mess == 2) {
|
||||
lblWarning->set_text(local_ok_written);
|
||||
}
|
||||
else if (mess == 3) {
|
||||
lblWarning->set_text(global_ok_written);
|
||||
}
|
||||
else if (mess == 4) {
|
||||
lblWarning->set_text(successfully_save_all);
|
||||
}
|
||||
else if (mess == 5) {
|
||||
lblWarning->set_text(nothing_save);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::filling_device_combo_box_template(Gtk::ComboBoxText *combo_box, map_str_str &map_device) {
|
||||
if (map_device.size() != 0) {
|
||||
for (const auto &device : map_device) {
|
||||
combo_box->append(device.first.c_str());
|
||||
}
|
||||
combo_box->set_active(0);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::flag_block_gui() {
|
||||
if (flag_load_global == true) {
|
||||
btnLoadGlob->set_sensitive(false);
|
||||
}
|
||||
if (flag_save_local == true && flag_save_global == true) {
|
||||
btnSave->set_sensitive(false);
|
||||
}
|
||||
if (flag_save == true) {
|
||||
btnSave->set_sensitive(false);
|
||||
}
|
||||
if (flag_save_local == true) {
|
||||
btnSaveLocal->set_sensitive(false);
|
||||
btnSaveLocalGlob->set_sensitive(false);
|
||||
}
|
||||
if (flag_save_global == true) {
|
||||
btnSaveGlob->set_sensitive(false);
|
||||
btnSaveLocalGlob->set_sensitive(false);
|
||||
}
|
||||
if (flag_lock_help == true) {
|
||||
btnSynopsis->set_sensitive(false);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void MainWindow::entry_combo_box_temp(Gtk::ComboBoxText *combo_box, Gtk::Label *label) {
|
||||
string text = combo_box->get_active_text();
|
||||
if (map_device.find(text) != map_device.end()){
|
||||
label->set_text(map_device[text]);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void MainWindow::add_CSS() {
|
||||
Glib::RefPtr<Gtk::CssProvider> cssProvider = Gtk::CssProvider::create();
|
||||
cssProvider->load_from_path(path_css);
|
||||
Glib::RefPtr<Gtk::StyleContext> styleContext = Gtk::StyleContext::create();
|
||||
Glib::RefPtr<Gdk::Screen> screen = Gdk::Screen::get_default();//get default screen
|
||||
styleContext->add_provider_for_screen(screen, cssProvider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);//add provider for screen in all application
|
||||
HeadBackgroundImage->set(path_img_head_background);
|
||||
Glib::RefPtr<Gtk::StyleContext> headLabel_css = headLabel->get_style_context();
|
||||
Glib::RefPtr<Gtk::StyleContext> boxButton_css = boxButton->get_style_context();
|
||||
Glib::RefPtr<Gtk::StyleContext> boxSave_css = boxSave->get_style_context();
|
||||
Glib::RefPtr<Gtk::StyleContext> headerBar_css = headerBar->get_style_context();
|
||||
if ((*socket_trd_id_I) == 0 && (*socket_ext_id_I) == 0){
|
||||
boxButton_css->add_class("bkim_no_plug");
|
||||
boxSave_css->add_class("bkim_no_plug");
|
||||
}
|
||||
headLabel_css->add_class("textHead");
|
||||
}
|
||||
|
||||
void MainWindow::get_builder() {
|
||||
builder->set_translation_domain(path_app);
|
||||
builder->get_widget("headerTopic", headerTopic);
|
||||
builder->get_widget("boxButton", boxButton);
|
||||
builder->get_widget("boxSave", boxSave);
|
||||
builder->get_widget("HeadOverlay", HeadOverlay);
|
||||
builder->get_widget("headerBar", headerBar);
|
||||
builder->get_widget("boxFuncs", boxFuncs);
|
||||
builder->get_widget("btnLoad", btnLoad);
|
||||
builder->get_widget("btnSave", btnSave);
|
||||
builder->get_widget("HeadBackgroundImage", HeadBackgroundImage);
|
||||
builder->get_widget("imgInfo", imgInfo);
|
||||
builder->get_widget("lblWarning", lblWarning);
|
||||
builder->get_widget("boxInfoError", boxInfoError);
|
||||
builder->get_widget("imgInfo", imgInfo);
|
||||
builder->get_widget("generalTabLabel", generalTabLabel);
|
||||
builder->get_widget("GroupsTabLabel", GroupsTabLabel);
|
||||
builder->get_widget("UsersTabLabel", UsersTabLabel);
|
||||
builder->get_widget("generalGroupsFilesLabel", generalGroupsFilesLabel);
|
||||
builder->get_widget("generalUsersSizeLabel", generalUsersSizeLabel);
|
||||
builder->get_widget("generalUsersFilesLabel", generalUsersFilesLabel);
|
||||
builder->get_widget("generalGroupsSizeWeeksLabel", generalGroupsSizeWeeksLabel);
|
||||
builder->get_widget("generalGroupsFilesWeeksLabel", generalGroupsFilesWeeksLabel);
|
||||
builder->get_widget("generalUsersSizeWeeksLabel", generalUsersSizeWeeksLabel);
|
||||
builder->get_widget("generalUsersFilesWeeksLabel", generalUsersFilesWeeksLabel);
|
||||
builder->get_widget("generalGroupsSizeDaysLabel", generalGroupsSizeDaysLabel);
|
||||
builder->get_widget("generalGroupsFilesDaysLabel", generalGroupsFilesDaysLabel);
|
||||
builder->get_widget("generalUsersSizeDaysLabel", generalUsersSizeDaysLabel);
|
||||
builder->get_widget("generalUsersFilesDaysLabel", generalUsersFilesDaysLabel);
|
||||
builder->get_widget("generalGroupsSizeHoursLabel", generalGroupsSizeHoursLabel);
|
||||
builder->get_widget("generalGroupsFilesHoursLabel", generalGroupsFilesHoursLabel);
|
||||
builder->get_widget("generalUsersSizeHoursLabel", generalUsersSizeHoursLabel);
|
||||
builder->get_widget("generalUsersFilesHoursLabel", generalUsersFilesHoursLabel);
|
||||
builder->get_widget("generalGroupsSizeMinutesLabel", generalGroupsSizeMinutesLabel);
|
||||
builder->get_widget("generalGroupsFilesMinutesLabel", generalGroupsFilesMinutesLabel);
|
||||
builder->get_widget("generalUsersSizeMinutesLabel", generalUsersSizeMinutesLabel);
|
||||
builder->get_widget("generalUsersFilesMinutesLabel", generalUsersFilesMinutesLabel);
|
||||
builder->get_widget("lblLoad", lblLoad);
|
||||
builder->get_widget("lblSave", lblSave);
|
||||
builder->get_widget("btnSettings", btnSettings);
|
||||
builder->get_widget("groupsDeviceLabel", groupsDeviceLabel);
|
||||
builder->get_widget("usersDeviceLabel", usersDeviceLabel);
|
||||
builder->get_widget("headLabel", headLabel);
|
||||
builder->get_widget("btnLoadGlob", btnLoadGlob);
|
||||
builder->get_widget("btnLoadLocal", btnLoadLocal);
|
||||
builder->get_widget("btnSynopsis", btnSynopsis);
|
||||
builder->get_widget("btnAbout", btnAbout);
|
||||
builder->get_widget("btnSaveLocalGlob", btnSaveLocalGlob);
|
||||
builder->get_widget("btnSaveGlob", btnSaveGlob);
|
||||
builder->get_widget("btnSaveLocal", btnSaveLocal);
|
||||
builder->get_widget("GroupsTabLabel", GroupsTabLabel);
|
||||
builder->get_widget("groupsQuotasTree", groupsQuotasTree);
|
||||
builder->get_widget("usersQuotasTree", usersQuotasTree);
|
||||
builder->get_widget("usersDeviceCombo", usersDeviceCombo);
|
||||
builder->get_widget("GroupsTabLabel", GroupsTabLabel);
|
||||
builder->get_widget("generalTabLabel", generalTabLabel);
|
||||
builder->get_widget("groupsDeviceCombo", groupsDeviceCombo);
|
||||
builder->get_widget("generalGroupsSizeWeeksSpi", generalGroupsSizeWeeksSpi);
|
||||
builder->get_widget("generalGroupsFileWeeksSpin", generalGroupsFileWeeksSpin);
|
||||
builder->get_widget("generalGroupsSizeDaySpin", generalGroupsSizeDaySpin);
|
||||
builder->get_widget("generalGroupsFilesDaySpin", generalGroupsFilesDaySpin);
|
||||
builder->get_widget("generalGroupsSizeHourSpin", generalGroupsSizeHourSpin);
|
||||
builder->get_widget("generalGroupsFilesHourSpin", generalGroupsFilesHourSpin);
|
||||
builder->get_widget("generalGroupsSizeMinuteSpin", generalGroupsSizeMinuteSpin);
|
||||
builder->get_widget("generalGroupsFilesMinuteSpin", generalGroupsFilesMinuteSpin);
|
||||
builder->get_widget("generalUsersSizWeeksSpin", generalUsersSizWeeksSpin);
|
||||
builder->get_widget("generalUsersFileWeeksSpin", generalUsersFileWeeksSpin);
|
||||
builder->get_widget("generalUsersSizeDaySpin", generalUsersSizeDaySpin);
|
||||
builder->get_widget("generalUsersFilesDaySpin", generalUsersFilesDaySpin);
|
||||
builder->get_widget("generalUsersSizeHourSpin", generalUsersSizeHourSpin);
|
||||
builder->get_widget("generalUsersFilesHoursSpin", generalUsersFilesHoursSpin);
|
||||
builder->get_widget("generalUsersSizeMinuteSpin", generalUsersSizeMinuteSpin);
|
||||
builder->get_widget("generalUsersFilesMinutesSpin", generalUsersFilesMinutesSpin);
|
||||
builder->get_widget("GeneralQuotasTree", GeneralQuotasTree);
|
||||
builder->get_widget("ProjectQuotasTree", ProjectQuotasTree);
|
||||
builder->get_widget("ProjectTabLabel", ProjectTabLabel);
|
||||
builder->get_widget("usersProjectLabel", usersProjectLabel);
|
||||
builder->get_widget("btnFilterProject", btnFilterProject);
|
||||
builder->get_widget("btnFilterUsers", btnFilterUsers);
|
||||
builder->get_widget("btnFilterGroups", btnFilterGroups);
|
||||
builder->get_widget("chbMangSystemFile", chbMangSystemFile);
|
||||
builder->get_widget("btnDelGroups", btnDelGroups);
|
||||
builder->get_widget("btnDelProject", btnDelProject);
|
||||
builder->get_widget("btnDelUsers", btnDelUsers);
|
||||
builder->get_widget("btnAddGroups", btnAddGroups);
|
||||
builder->get_widget("btnAddUsers", btnAddUsers);
|
||||
builder->get_widget("btnAddProject", btnAddProject);
|
||||
builder->get_widget("btnEditProject", btnEditProject);
|
||||
builder->get_widget("btnEditUsers", btnEditUsers);
|
||||
builder->get_widget("btnEditGroups", btnEditGroups);
|
||||
builder->get_widget("usersProjectCombo", usersProjectCombo);
|
||||
builder->get_widget("boxResize", boxResize);
|
||||
builder->get_widget("boxGroupsWeeks", boxGroupsWeeks);
|
||||
builder->get_widget("boxGroupsDays", boxGroupsDays);
|
||||
builder->get_widget("boxGroupsHours", boxGroupsHours);
|
||||
builder->get_widget("boxGroupsMinutes", boxGroupsMinutes);
|
||||
builder->get_widget("boxUsersWeeks", boxUsersWeeks);
|
||||
builder->get_widget("boxUsersDays", boxUsersDays);
|
||||
builder->get_widget("boxUsersHours", boxUsersHours);
|
||||
builder->get_widget("boxUsersMinutes", boxUsersMinutes);
|
||||
builder->get_widget("boxProjectWeeks", boxProjectWeeks);
|
||||
builder->get_widget("boxProjectDays", boxProjectDays);
|
||||
builder->get_widget("boxProjectHours", boxProjectHours);
|
||||
builder->get_widget("boxProjectMinutes", boxProjectMinutes);
|
||||
}
|
||||
|
||||
void MainWindow::open_browser() {
|
||||
obj_open_browser->open_help();
|
||||
}
|
||||
|
||||
void MainWindow::wrapper_save_system() {
|
||||
int id_mess = obj_wrapper_load_save->wrapper_save_system_cfg();
|
||||
int error_save = obj_wrapper_load_save->get_error_save();
|
||||
int error_load = obj_wrapper_load_save->get_error_load();
|
||||
this->info_warning_error(id_mess, error_save, error_load);
|
||||
}
|
||||
void MainWindow::wrapper_save_global() {
|
||||
int id_mess = obj_wrapper_load_save->wrapper_save_global_cfg();
|
||||
int error_save = obj_wrapper_load_save->get_error_save();
|
||||
int error_load = obj_wrapper_load_save->get_error_load();
|
||||
this->info_warning_error(id_mess, error_save, error_load);
|
||||
}
|
||||
|
||||
void MainWindow::wrapper_save_all() {
|
||||
int id_mess = obj_wrapper_load_save->wrapper_save_all_cfg();
|
||||
int error_save = obj_wrapper_load_save->get_error_save();
|
||||
int error_load = obj_wrapper_load_save->get_error_load();
|
||||
this->info_warning_error(id_mess, error_save, error_load);
|
||||
}
|
||||
|
||||
void MainWindow::wrapper_load_system() {
|
||||
int id_mess = obj_wrapper_load_save->load_system_cfg();
|
||||
int error_save = obj_wrapper_load_save->get_error_save();
|
||||
int error_load = obj_wrapper_load_save->get_error_load();
|
||||
this->info_warning_error(id_mess, error_save, error_load);
|
||||
this->init_work_tv_g_u_p();
|
||||
}
|
||||
|
||||
void MainWindow::wrapper_load_global() {
|
||||
int id_mess = obj_wrapper_load_save->load_global_cfg();
|
||||
int error_save = obj_wrapper_load_save->get_error_save();
|
||||
int error_load = obj_wrapper_load_save->get_error_load();
|
||||
this->info_warning_error(id_mess, error_save, error_load);
|
||||
this->init_work_tv_g_u_p();
|
||||
}
|
||||
|
||||
void MainWindow::event() {
|
||||
boxResize->signal_check_resize().connect(sigc::mem_fun(*this, &MainWindow::resize_widget));
|
||||
btnFilterGroups->signal_clicked().connect([&]() {this->filters_show();});
|
||||
btnFilterUsers->signal_clicked().connect([&]() {this->filters_show();});
|
||||
btnFilterProject->signal_clicked().connect([&]() {this->filters_show();});
|
||||
btnSynopsis->signal_activate().connect([&]() {this->open_browser();});
|
||||
btnAbout->signal_activate().connect([&]() {obj_open_browser->get_about()->aboutWindows->show();});
|
||||
btnSaveLocalGlob->signal_activate().connect([&]() {this->wrapper_save_all();});
|
||||
btnSaveGlob->signal_activate().connect([&]() {this->wrapper_save_global();});
|
||||
btnSaveLocal->signal_activate().connect([&]() {this->wrapper_save_system();});
|
||||
btnLoadGlob->signal_activate().connect([&]() {this->wrapper_load_global();});
|
||||
btnLoadLocal->signal_activate().connect([&]() {this->wrapper_load_system();});
|
||||
btnEditGroups->signal_clicked().connect(sigc::bind<string> (sigc::mem_fun( *this,
|
||||
&MainWindow::edit_quota_show), str_groups));
|
||||
btnEditUsers->signal_clicked().connect(sigc::bind<string> (sigc::mem_fun( *this,
|
||||
&MainWindow::edit_quota_show), str_users));
|
||||
btnEditProject->signal_clicked().connect([&]() {this->edit_quota_project_show();});
|
||||
chbMangSystemFile->signal_toggled().connect([&]() {this->mode_switch_quota();});
|
||||
btnDelGroups->signal_clicked().connect(
|
||||
sigc::bind<Glib::RefPtr<Gtk::ListStore>*, const Gtk::TreeModel::iterator*, bool&> (sigc::mem_fun( *this,
|
||||
&MainWindow::remove_template), &list_store_groups, &iter_groups, flag_validate_del_groups));
|
||||
btnDelUsers->signal_clicked().connect(
|
||||
sigc::bind<Glib::RefPtr<Gtk::ListStore>*, const Gtk::TreeModel::iterator*, bool&> (sigc::mem_fun( *this,
|
||||
&MainWindow::remove_template), &list_store_users, &iter_users, flag_validate_del_users));
|
||||
btnDelProject->signal_clicked().connect(
|
||||
sigc::bind<Glib::RefPtr<Gtk::ListStore>*, const Gtk::TreeModel::iterator*, bool&> (sigc::mem_fun( *this,
|
||||
&MainWindow::remove_template), &list_store_project, &iter_project, flag_validate_del_project));
|
||||
btnAddProject->signal_clicked().connect([&]() {this->obj_view_add_project->show();});
|
||||
btnAddUsers->signal_clicked().connect(
|
||||
sigc::bind<string,Gtk::TreeView*, Gtk::TreeModel::Row&, Glib::RefPtr<Gtk::ListStore>&, struct tv_g_u_p> (sigc::mem_fun( *this,
|
||||
&MainWindow::set_add_tv_g_u_p), str_users, usersQuotasTree, row, list_store_users, obj_tv_g_u_p));
|
||||
btnAddGroups->signal_clicked().connect(
|
||||
sigc::bind<string,Gtk::TreeView*, Gtk::TreeModel::Row&, Glib::RefPtr<Gtk::ListStore>&, struct tv_g_u_p> (sigc::mem_fun( *this,
|
||||
&MainWindow::set_add_tv_g_u_p), str_groups, groupsQuotasTree, row, list_store_groups, obj_tv_g_u_p));
|
||||
}
|
||||
|
||||
void MainWindow::resize_widget() {
|
||||
// boxGroupsWeeks = boxGroupsWeeks(Gtk::ORIENTATION_HORIZONTAL);
|
||||
}
|
||||
|
||||
void MainWindow::add_quota_show(string name) {
|
||||
obj_view_add->set_label_type_quota(name);
|
||||
obj_view_add->show();
|
||||
}
|
||||
|
||||
void MainWindow::edit_quota_show(string name) {
|
||||
obj_view_edit->set_label_type_quota(name);
|
||||
obj_view_edit->show();
|
||||
}
|
||||
void MainWindow::edit_quota_project_show() {
|
||||
obj_view_edit_project->show();
|
||||
}
|
||||
void MainWindow::remove_template(Glib::RefPtr<Gtk::ListStore>* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate_del) {
|
||||
if (flag_validate_del && (*list_store)->iter_is_valid(*(iter))) {
|
||||
Gtk::TreeModel::Row row = *(*iter);
|
||||
if(row) {
|
||||
// string name = row[m_columns.name] + "";
|
||||
// TODO: : check
|
||||
// string key = "GRUB_PASSWORD[" + name + "]";
|
||||
// map_gui_cfg[key] = "";
|
||||
}
|
||||
(*list_store)->erase((*iter));
|
||||
flag_validate_del = false;
|
||||
info_status_app(info_box_ok_css);
|
||||
imgInfo->set_from_icon_name(icon_checked, Gtk::ICON_SIZE_MENU);
|
||||
// lblWarning->set_text("");
|
||||
}
|
||||
flag_validate_del = false;
|
||||
}
|
||||
|
||||
void MainWindow::set_add_tv_g_u_p(string name, Gtk::TreeView* tree_view, Gtk::TreeModel::Row &row, Glib::RefPtr<Gtk::ListStore>& list_store, struct tv_g_u_p obj_tv_g_u_p) {
|
||||
if (this->check_space(tree_view)) {
|
||||
row = *(list_store->append());
|
||||
row[m_columns.name] = obj_tv_g_u_p.name;
|
||||
row[m_columns.quotas] = obj_tv_g_u_p.quotas;
|
||||
row[m_columns.size] = obj_tv_g_u_p.size;
|
||||
row[m_columns.soft_limit_size] = obj_tv_g_u_p.soft_limit_size;
|
||||
row[m_columns.hard_limit_size] = obj_tv_g_u_p.hard_limit_size;
|
||||
row[m_columns.deferring_size] = obj_tv_g_u_p.deferring_size;
|
||||
row[m_columns.files] = obj_tv_g_u_p.files;
|
||||
row[m_columns.soft_limit_files] = obj_tv_g_u_p.soft_limit_files;
|
||||
row[m_columns.hard_limit_delay] = obj_tv_g_u_p.hard_limit_delay;
|
||||
row[m_columns.deferring_files] = obj_tv_g_u_p.deferring_files;
|
||||
this->add_quota_show(name);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::mode_switch_quota() {
|
||||
// Todo: check
|
||||
if (chbMangSystemFile->get_active()) {
|
||||
mode_quota = "filesystem";
|
||||
}
|
||||
else {
|
||||
mode_quota = "ubconfig";
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::filters_show() {
|
||||
obj_view_filters->show();
|
||||
}
|
||||
|
||||
bool MainWindow::check_space(Gtk::TreeView* tree_view) {
|
||||
Glib::RefPtr<Gtk::TreeModel> tree_view_model = tree_view->get_model();
|
||||
Gtk::TreeModel::Children children = tree_view_model->children();
|
||||
string name = "";
|
||||
string quotas = "";
|
||||
for(Gtk::TreeModel::iterator iter = children.begin(); iter != children.end(); ++iter) {
|
||||
Gtk::TreeModel::Row row = *iter;
|
||||
name = row[m_columns.name] + "";
|
||||
quotas = row[m_columns.quotas] + "";
|
||||
if (name.length() == 0 || quotas.length() == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void MainWindow::info_status_app(string stule) {
|
||||
Glib::RefPtr<Gtk::StyleContext> boxInfo = boxInfoError->get_style_context();
|
||||
boxInfo->remove_class(info_box_ok_css);
|
||||
boxInfo->remove_class(info_box_error_css);
|
||||
boxInfo->add_class(stule);
|
||||
}
|
||||
|
||||
void MainWindow::init_work_tv_g_u_p() {
|
||||
// Todo: remove
|
||||
groupsQuotasTree->remove_all_columns();
|
||||
ProjectQuotasTree->remove_all_columns();
|
||||
usersQuotasTree->remove_all_columns();
|
||||
list_store_groups = Gtk::ListStore::create(m_columns);
|
||||
list_store_project = Gtk::ListStore::create(m_columns);
|
||||
list_store_users = Gtk::ListStore::create(m_columns);
|
||||
groupsQuotasTree->set_model(list_store_groups);
|
||||
ProjectQuotasTree->set_model(list_store_project);
|
||||
usersQuotasTree->set_model(list_store_users);
|
||||
Glib::RefPtr<Gtk::TreeModel> groupsQuotasTreeModel = groupsQuotasTree->get_model();
|
||||
groupsQuotasTreeModel->signal_row_changed().connect(sigc::bind<Gtk::TreeModel::iterator&, bool&>
|
||||
(sigc::mem_fun(*this, &MainWindow::remove_line_template), iter_groups, flag_validate_del_groups));
|
||||
Glib::RefPtr<Gtk::TreeModel> ProjectQuotasTreeModel = ProjectQuotasTree->get_model();
|
||||
ProjectQuotasTreeModel->signal_row_changed().connect(sigc::bind<Gtk::TreeModel::iterator&, bool&>
|
||||
(sigc::mem_fun(*this, &MainWindow::remove_line_template), iter_project, flag_validate_del_project));
|
||||
Glib::RefPtr<Gtk::TreeModel> usersQuotasTreeModel = usersQuotasTree->get_model();
|
||||
usersQuotasTreeModel->signal_row_changed().connect(sigc::bind<Gtk::TreeModel::iterator&, bool&>
|
||||
(sigc::mem_fun(*this, &MainWindow::remove_line_template),iter_users, flag_validate_del_users));
|
||||
this->view_add_columns(*groupsQuotasTree);
|
||||
this->view_add_columns(*ProjectQuotasTree);
|
||||
this->view_add_columns(*usersQuotasTree);
|
||||
}
|
||||
|
||||
void MainWindow::remove_line_template(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator& iter, Gtk::TreeModel::iterator& iter_del, bool& flag_del) {
|
||||
iter_del = iter;
|
||||
flag_del = true;
|
||||
}
|
||||
|
||||
void help() {
|
||||
string version = string(str_version) + version_application + "\n";
|
||||
cout << version.c_str();
|
||||
cout << str_help_h;
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow() {}
|
||||
|
||||
#endif
|
||||
|
@ -1,273 +0,0 @@
|
||||
#ifndef UBL_SETTINGS_QUOTAS_H
|
||||
#define UBL_SETTINGS_QUOTAS_H
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include "view_open_browser.h"
|
||||
#include "../project_lib.h"
|
||||
#include "../my_type.h"
|
||||
#include "ubl-util-standard.c"
|
||||
#include "../var.h"
|
||||
#include "model/wrapper_load_save.h"
|
||||
#include "view_filters.h"
|
||||
#include "view_add_user_group.h"
|
||||
#include "view_edit_user_group.h"
|
||||
#include "view_add_project.h"
|
||||
#include "view_edit_project.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
||||
|
||||
extern bool flag_save;
|
||||
extern bool flag_save_local;
|
||||
extern bool flag_save_global;
|
||||
extern bool flag_load_global;
|
||||
extern bool flag_lock_help;
|
||||
|
||||
|
||||
|
||||
class MainWindow {
|
||||
public:
|
||||
class ModelColumns : public Gtk::TreeModel::ColumnRecord {
|
||||
public:
|
||||
ModelColumns() {add(name), add(quotas); add(size),
|
||||
add(soft_limit_size), add(hard_limit_size); add(deferring_size),
|
||||
add(files); add(soft_limit_files),
|
||||
add(hard_limit_delay), add(deferring_files); }
|
||||
Gtk::TreeModelColumn<Glib::ustring> name;
|
||||
Gtk::TreeModelColumn<Glib::ustring> quotas;
|
||||
Gtk::TreeModelColumn<Glib::ustring> size;
|
||||
Gtk::TreeModelColumn<Glib::ustring> soft_limit_size;
|
||||
Gtk::TreeModelColumn<Glib::ustring> hard_limit_size;
|
||||
Gtk::TreeModelColumn<Glib::ustring> deferring_size;
|
||||
Gtk::TreeModelColumn<Glib::ustring> files;
|
||||
Gtk::TreeModelColumn<Glib::ustring> soft_limit_files;
|
||||
Gtk::TreeModelColumn<Glib::ustring> hard_limit_delay;
|
||||
Gtk::TreeModelColumn<Glib::ustring> deferring_files;
|
||||
};
|
||||
class ModelColumnsGeneral : public Gtk::TreeModel::ColumnRecord {
|
||||
public:
|
||||
ModelColumnsGeneral() {add(status), add(type_quotas); add(device),
|
||||
add(user), add(group), add(projects); add(soft_limit_size),
|
||||
add(hard_limit_size); add(soft_limit_files), add(hard_limit_files), add(deferring_size),
|
||||
add(deferring_files); }
|
||||
Gtk::TreeModelColumn<bool> status;
|
||||
Gtk::TreeModelColumn<Glib::ustring> type_quotas;
|
||||
Gtk::TreeModelColumn<Glib::ustring> device;
|
||||
Gtk::TreeModelColumn<Glib::ustring> user;
|
||||
Gtk::TreeModelColumn<Glib::ustring> group;
|
||||
Gtk::TreeModelColumn<Glib::ustring> projects;
|
||||
Gtk::TreeModelColumn<Glib::ustring> soft_limit_size;
|
||||
Gtk::TreeModelColumn<Glib::ustring> hard_limit_size;
|
||||
Gtk::TreeModelColumn<Glib::ustring> soft_limit_files;
|
||||
Gtk::TreeModelColumn<Glib::ustring> hard_limit_files;
|
||||
Gtk::TreeModelColumn<Glib::ustring> deferring_size;
|
||||
Gtk::TreeModelColumn<Glib::ustring> deferring_files;
|
||||
};
|
||||
ModelColumns m_columns;
|
||||
ModelColumnsGeneral m_columnsGeneral;
|
||||
Glib::RefPtr<Gtk::Builder> builder;
|
||||
template<typename Type>
|
||||
struct Result{
|
||||
Type response;
|
||||
int error;
|
||||
};
|
||||
Gtk::Label *headerTopic;
|
||||
Gtk::Overlay *HeadOverlay;
|
||||
Gtk::HeaderBar *headerBar;
|
||||
Gtk::Widget *boxSave;
|
||||
Gtk::Widget *boxButton;
|
||||
Gtk::Box *boxFuncs;
|
||||
Gtk::Box* boxResize;
|
||||
Gtk::MenuButton *btnSave;
|
||||
Gtk::MenuButton *btnLoad;
|
||||
Gtk::MenuButton *btnSettings;
|
||||
Gtk::Image *HeadBackgroundImage;
|
||||
Gtk::Image *imgInfo;
|
||||
Gtk::Box *boxInfoError;
|
||||
Gtk::Label *lblWarning;
|
||||
Gtk::Label *generalTabLabel;
|
||||
Gtk::Label *UsersTabLabel;
|
||||
Gtk::Label *GroupsTabLabel;
|
||||
Gtk::Label *generalGroupsFilesLabel;
|
||||
Gtk::Label *generalUsersSizeLabel;
|
||||
Gtk::Label *generalUsersFilesLabel;
|
||||
Gtk::Label *generalGroupsSizeWeeksLabel;
|
||||
Gtk::Label *generalGroupsFilesWeeksLabel;
|
||||
Gtk::Label *generalUsersSizeWeeksLabel;
|
||||
Gtk::Label *generalUsersFilesWeeksLabel;
|
||||
Gtk::Label *generalGroupsSizeDaysLabel;
|
||||
Gtk::Label *generalGroupsFilesDaysLabel;
|
||||
Gtk::Label *generalUsersSizeDaysLabel;
|
||||
Gtk::Label *generalUsersFilesDaysLabel;
|
||||
Gtk::Label *generalGroupsSizeHoursLabel;
|
||||
Gtk::Label *generalGroupsFilesHoursLabel;
|
||||
Gtk::Label *generalUsersSizeHoursLabel;
|
||||
Gtk::Label *generalUsersFilesHoursLabel;
|
||||
Gtk::Label *generalGroupsSizeMinutesLabel;
|
||||
Gtk::Label *generalGroupsFilesMinutesLabel;
|
||||
Gtk::Label *generalUsersSizeMinutesLabel;
|
||||
Gtk::Label *generalUsersFilesMinutesLabel;
|
||||
Gtk::Label *ProjectTabLabel;
|
||||
Gtk::Label *usersProjectLabel;
|
||||
Gtk::Label *lblLoad;
|
||||
Gtk::Label *lblSave;
|
||||
Gtk::MenuItem *btnLoadGlob;
|
||||
Gtk::MenuItem *btnLoadLocal;
|
||||
Gtk::MenuItem *btnSynopsis;
|
||||
Gtk::MenuItem *btnAbout;
|
||||
Gtk::MenuItem *btnSaveLocalGlob;
|
||||
Gtk::MenuItem *btnSaveGlob;
|
||||
Gtk::MenuItem *btnSaveLocal;
|
||||
Gtk::Label *groupsDeviceLabel;
|
||||
Gtk::Label *usersDeviceLabel;
|
||||
Gtk::Label *headLabel;
|
||||
|
||||
Gtk::TreeView *groupsQuotasTree;
|
||||
Gtk::TreeView *usersQuotasTree;
|
||||
Gtk::TreeView *ProjectQuotasTree;
|
||||
Gtk::TreeView *GeneralQuotasTree;
|
||||
Gtk::Label *quotegroupGroupQuotasLabel;
|
||||
|
||||
|
||||
Gtk::ComboBoxText *usersDeviceCombo;
|
||||
Gtk::ComboBoxText *groupsDeviceCombo;
|
||||
Gtk::ComboBoxText *generalDeviceCombo;
|
||||
Gtk::ComboBoxText *usersProjectCombo;
|
||||
Gtk::Label *lblFstypeGroups;
|
||||
Gtk::SpinButton *generalGroupsSizeWeeksSpi;
|
||||
Gtk::SpinButton *generalGroupsFileWeeksSpin;
|
||||
Gtk::SpinButton *generalGroupsSizeDaySpin;
|
||||
Gtk::SpinButton *generalGroupsFilesDaySpin;
|
||||
Gtk::SpinButton *generalGroupsSizeHourSpin;
|
||||
Gtk::SpinButton *generalGroupsFilesHourSpin;
|
||||
Gtk::SpinButton *generalGroupsSizeMinuteSpin;
|
||||
Gtk::SpinButton *generalGroupsFilesMinuteSpin;
|
||||
Gtk::SpinButton *generalUsersSizWeeksSpin;
|
||||
Gtk::SpinButton *generalUsersFileWeeksSpin;
|
||||
Gtk::SpinButton *generalUsersSizeDaySpin;
|
||||
Gtk::SpinButton *generalUsersFilesDaySpin;
|
||||
Gtk::SpinButton *generalUsersSizeHourSpin;
|
||||
Gtk::SpinButton *generalUsersFilesHoursSpin;
|
||||
Gtk::SpinButton *generalUsersSizeMinuteSpin;
|
||||
Gtk::SpinButton *generalUsersFilesMinutesSpin;
|
||||
|
||||
|
||||
Gtk::Button *btnFilterGroups;
|
||||
Gtk::Button *btnFilterUsers;
|
||||
Gtk::Button *btnFilterProject;
|
||||
Gtk::CheckMenuItem *chbMangSystemFile;
|
||||
Gtk::Button* btnDelGroups;
|
||||
Gtk::Button* btnDelProject;
|
||||
Gtk::Button* btnDelUsers;
|
||||
Gtk::Button* btnAddGroups;
|
||||
Gtk::Button* btnAddUsers;
|
||||
Gtk::Button* btnAddProject;
|
||||
Gtk::Button* btnEditProject;
|
||||
Gtk::Button* btnEditUsers;
|
||||
Gtk::Button* btnEditGroups;
|
||||
|
||||
Gtk::Box* boxGroupsWeeks;
|
||||
Gtk::Box* boxGroupsDays;
|
||||
Gtk::Box* boxGroupsHours;
|
||||
Gtk::Box* boxGroupsMinutes;
|
||||
Gtk::Box* boxUsersWeeks;
|
||||
Gtk::Box* boxUsersDays;
|
||||
Gtk::Box* boxUsersHours;
|
||||
Gtk::Box* boxUsersMinutes;
|
||||
Gtk::Box* boxProjectWeeks;
|
||||
Gtk::Box* boxProjectDays;
|
||||
Gtk::Box* boxProjectHours;
|
||||
Gtk::Box* boxProjectMinutes;
|
||||
|
||||
public:
|
||||
map_str_str* map_gui_cfg = NULL;
|
||||
map_str_str* map_global_cfg = NULL;
|
||||
map_str_str* map_system_cfg = NULL;
|
||||
Wrapper_load_save* obj_wrapper_load_save = NULL;
|
||||
View_edit_user_group* obj_view_edit = NULL;
|
||||
View_filters* obj_view_filters = NULL;
|
||||
View_add_user_group* obj_view_add = NULL;
|
||||
View_add_project* obj_view_add_project = NULL;
|
||||
View_edit_project* obj_view_edit_project = NULL;
|
||||
//Devices::Parted obj_device = Devices::Parted();
|
||||
//Quotas_sys::Quotas_sys obj_quotas_sys = Quotas_sys::Quotas_sys();
|
||||
//Quotas_ubconfig::Quotas_ubconfig obj_quotas_ubconfig = Quotas_ubconfig::Quotas_ubconfig();
|
||||
vector<string> vec_param_names;
|
||||
map_str_str map_device;
|
||||
string str_cmd_error;
|
||||
string save_user_or_group;
|
||||
string sys_or_ubconfig;
|
||||
string hw_or_sw = "";
|
||||
string mode_quota = "ubconfig";
|
||||
Glib::RefPtr<Gtk::ListStore> list_store_groups;
|
||||
Glib::RefPtr<Gtk::ListStore> list_store_users;
|
||||
Glib::RefPtr<Gtk::ListStore> list_store_project;
|
||||
Gtk::TreeModel::iterator iter_groups;
|
||||
Gtk::TreeModel::iterator iter_users;
|
||||
Gtk::TreeModel::iterator iter_project;
|
||||
bool flag_validate_del_groups = false;
|
||||
bool flag_validate_del_users = false;
|
||||
bool flag_validate_del_project = false;
|
||||
Gtk::TreeModel::Row row;
|
||||
int* socket_ext_id_I = NULL;
|
||||
int* socket_trd_id_I = NULL;
|
||||
View_open_browser* obj_open_browser;
|
||||
const struct tv_g_u_p obj_tv_g_u_p {"", "", "", "", "", "", "", "", "",""};
|
||||
public:
|
||||
// MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder);
|
||||
MainWindow(Glib::RefPtr<Gtk::Builder> builder, View_open_browser* obj_open_browser, int* socket_ext_id_I, int* socket_trd_id_I);
|
||||
~MainWindow();
|
||||
void settings();
|
||||
void flag_block_gui();
|
||||
void lacalization();
|
||||
void add_CSS();
|
||||
void resize_widget();
|
||||
void get_builder();
|
||||
void event();
|
||||
void open_browser();
|
||||
void info_warning_error(int mess, int error_save, int error_load);
|
||||
void init_work_tv_g_u_p();
|
||||
void remove_line_template(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator& iter, Gtk::TreeModel::iterator& iter_del, bool& flag_del);
|
||||
void remove_template(Glib::RefPtr<Gtk::ListStore>* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate_del);
|
||||
void init_tree_view_general();
|
||||
void entry_combo_box_temp(Gtk::ComboBoxText *combo_box, Gtk::Label *label);
|
||||
void info_status_app(string stule);
|
||||
void filters_show();
|
||||
void set_obj_wrapper_load_save(Wrapper_load_save* obj_wrapper_load_save);
|
||||
void init_tree_view();
|
||||
void del_columns();
|
||||
void set_obj_browser(View_open_browser* obj_open_browser);
|
||||
void set_add_tv_g_u_p(string name, Gtk::TreeView* tree_view, Gtk::TreeModel::Row &row, Glib::RefPtr<Gtk::ListStore>& list_store, struct tv_g_u_p obj_tv_g_u_p);
|
||||
void off_quota_system(Gtk::ComboBoxText* combo_box, string quota_type);
|
||||
void mode_switch_quota();
|
||||
void save_quotegroupSaveButton();
|
||||
void filling_device_combo_box_template(Gtk::ComboBoxText *combo_box, map_str_str &map_device);
|
||||
void wrapper_settings_quotas_temp(string save_user_or_group);
|
||||
void off_quota_ubconfig(Gtk::ComboBoxText* combo_box, string quota_type);
|
||||
void init_spin_all();
|
||||
void view_add_columns(Gtk::TreeView &treeView);
|
||||
void format_cmd_quotas_system(struct struct_quotas& _struct_quota);
|
||||
void format_cmd_quotas_ubconfig(struct struct_quotas& _struct_quota);
|
||||
struct partition_cmd wrapper_settings_quotas();
|
||||
void set_map_gui(map_str_str* map_gui_cfg);
|
||||
void set_map_global(map_str_str* map_global_cfg);
|
||||
void set_map_local(map_str_str* map_system_cfg);
|
||||
void wrapper_load_system();
|
||||
void wrapper_load_global();
|
||||
void wrapper_save_all();
|
||||
void wrapper_save_system();
|
||||
void wrapper_save_global();
|
||||
void set_obj_view_filters(View_filters* obj_view_filters);
|
||||
bool check_space(Gtk::TreeView* tree_view);
|
||||
void set_obj_view_add(View_add_user_group* obj_view_edit);
|
||||
void add_quota_show(string name);
|
||||
void edit_quota_show(string name);
|
||||
void set_obj_view_edit(View_edit_user_group* obj_view_edit);
|
||||
void set_obj_view_add_project(View_add_project* obj_view_add_project);
|
||||
void set_obj_view_edit_project(View_edit_project* obj_view_edit_project);
|
||||
void edit_quota_project_show();
|
||||
};
|
||||
void wrapper_help_show(GtkWidget *self, char* link, gpointer user_data);
|
||||
void help();
|
||||
#endif
|
@ -1,91 +0,0 @@
|
||||
#include "ubl-util-standard.h"
|
||||
#ifndef __cplusplus
|
||||
#ifndef UBL_GET_STANDARD_UI
|
||||
#define UBL_GET_STANDARD_UI
|
||||
|
||||
|
||||
inline returnstruct *ubl_make_plugs(GtkWidget *LeftWidget, GtkWidget *RightWidget, int left_plug_id, int right_plug_id){
|
||||
returnstruct *ret=(returnstruct*)malloc(sizeof(returnstruct*));
|
||||
if (left_plug_id>0&&LeftWidget){
|
||||
GtkWidget *plug=gtk_plug_new(left_plug_id);
|
||||
GtkWidget *toplug=LeftWidget;
|
||||
if (gtk_widget_get_parent(GTK_WIDGET(toplug))){
|
||||
g_object_ref(G_OBJECT(toplug));
|
||||
GtkWidget *parent=gtk_widget_get_parent(toplug);
|
||||
gtk_container_remove(GTK_CONTAINER(parent),toplug);
|
||||
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
|
||||
} else
|
||||
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
|
||||
gtk_widget_show(GTK_WIDGET(plug));
|
||||
ret->plugLeft=plug;
|
||||
}
|
||||
if (right_plug_id>0&&RightWidget){
|
||||
GtkWidget *plug=gtk_plug_new(right_plug_id);
|
||||
GtkWidget *toplug=RightWidget;
|
||||
if (gtk_widget_get_parent(GTK_WIDGET(toplug))){
|
||||
g_object_ref(G_OBJECT(toplug));
|
||||
GtkWidget *parent=gtk_widget_get_parent(toplug);
|
||||
gtk_container_remove(GTK_CONTAINER(parent),toplug);
|
||||
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
|
||||
} else
|
||||
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
|
||||
gtk_widget_show(GTK_WIDGET(plug));
|
||||
ret->plugRight=plug;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
|
||||
inline void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, int left_plug_id, int right_plug_id){
|
||||
if (left_plug_id>0&&LeftWidget){
|
||||
GtkWidget *plug=gtk_plug_new(left_plug_id);
|
||||
GtkWidget *toplug=GTK_WIDGET(LeftWidget->gobj());
|
||||
{GdkScreen *screen = gtk_widget_get_screen(plug);
|
||||
gtk_widget_set_app_paintable(plug,TRUE);
|
||||
GdkVisual *colormap = gdk_screen_get_rgba_visual(screen);
|
||||
gtk_widget_set_visual(plug, colormap);}
|
||||
{GdkScreen *screen = gtk_widget_get_screen(toplug);
|
||||
gtk_widget_set_app_paintable(toplug,TRUE);
|
||||
GdkVisual *colormap = gdk_screen_get_rgba_visual(screen);
|
||||
gtk_widget_set_visual(toplug, colormap);}
|
||||
if (gtk_widget_get_parent(GTK_WIDGET(toplug))){
|
||||
g_object_ref(G_OBJECT(toplug));
|
||||
GtkWidget *parent=gtk_widget_get_parent(toplug);
|
||||
gtk_container_remove(GTK_CONTAINER(parent),toplug);
|
||||
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
|
||||
} else
|
||||
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
|
||||
gtk_widget_show(GTK_WIDGET(plug));
|
||||
gtk_style_context_add_class(gtk_widget_get_style_context(plug),"bkim");
|
||||
gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"bkim");
|
||||
gtk_style_context_add_class(gtk_widget_get_style_context(plug),"primary-toolbar");
|
||||
}
|
||||
if (right_plug_id>0&&RightWidget){
|
||||
GtkWidget *plug=gtk_plug_new(right_plug_id);
|
||||
GtkWidget *toplug=GTK_WIDGET(RightWidget->gobj());
|
||||
{GdkScreen *screen = gtk_widget_get_screen(plug);
|
||||
gtk_widget_set_app_paintable(plug,TRUE);
|
||||
GdkVisual *colormap = gdk_screen_get_rgba_visual(screen);
|
||||
gtk_widget_set_visual(plug, colormap);}
|
||||
{GdkScreen *screen = gtk_widget_get_screen(toplug);
|
||||
gtk_widget_set_app_paintable(toplug,TRUE);
|
||||
GdkVisual *colormap = gdk_screen_get_rgba_visual(screen);
|
||||
gtk_widget_set_visual(toplug, colormap);}
|
||||
if (gtk_widget_get_parent(GTK_WIDGET(toplug))){
|
||||
g_object_ref(G_OBJECT(toplug));
|
||||
GtkWidget *parent=gtk_widget_get_parent(toplug);
|
||||
gtk_container_remove(GTK_CONTAINER(parent),toplug);
|
||||
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
|
||||
} else
|
||||
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
|
||||
gtk_widget_show(GTK_WIDGET(plug));
|
||||
gtk_style_context_add_class(gtk_widget_get_style_context(plug),"bkim");
|
||||
gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"bkim");
|
||||
gtk_style_context_add_class(gtk_widget_get_style_context(plug),"primary-toolbar");
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,20 +0,0 @@
|
||||
#ifndef __cplusplus
|
||||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtkx.h>
|
||||
|
||||
typedef struct {
|
||||
GtkWidget *plugLeft;
|
||||
GtkWidget *plugRight;
|
||||
|
||||
|
||||
} returnstruct;
|
||||
static returnstruct *ubl_make_plugs(GtkWidget *LeftWidget, GtkWidget *RightWidget, int left_plug_id, int right_plug_id);
|
||||
#else
|
||||
#include <gtkmm.h>
|
||||
#include <gtkmm/stock.h>
|
||||
#include <gtkmm/window.h>
|
||||
#include <gtkmm/plug.h>
|
||||
|
||||
|
||||
static void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, int left_plug_id, int right_plug_id);
|
||||
#endif
|
@ -1,47 +0,0 @@
|
||||
#include "view_about.h"
|
||||
|
||||
|
||||
|
||||
View_about::View_about() {
|
||||
builder = Gtk::Builder::create_from_file(path_glade);
|
||||
this->settings();
|
||||
}
|
||||
|
||||
View_about::~View_about() {
|
||||
}
|
||||
|
||||
void View_about::lacalization() {
|
||||
time_t now = time(0);
|
||||
tm *ltm = localtime(&now);
|
||||
unsigned int year = 1900 + ltm->tm_year;
|
||||
string str_authors = string(copyright) + to_string(year);
|
||||
aboutWindows->set_copyright(str_authors);
|
||||
aboutWindows->set_comments(str_setting_user);
|
||||
aboutWindows->set_website(website);
|
||||
aboutWindows->set_version(_(version_application.c_str()));
|
||||
aboutWindows->set_website_label(project_Home_page);
|
||||
headerAboutTopic->set_label(_(app_name));
|
||||
}
|
||||
|
||||
void View_about::set_version(string version_application) {
|
||||
version_application = version_application;
|
||||
}
|
||||
|
||||
void View_about::show() {
|
||||
aboutWindows->show();
|
||||
}
|
||||
void View_about::get_builder() {
|
||||
builder->get_widget("btnBoxAboutDialog", btnBoxAboutDialog);
|
||||
builder->get_widget("aboutWindows", aboutWindows);
|
||||
builder->get_widget("headerAboutTopic", headerAboutTopic);
|
||||
}
|
||||
|
||||
void View_about::settings() {
|
||||
this->get_builder();
|
||||
this->lacalization();
|
||||
btnBoxAboutDialog->set_visible(false);
|
||||
}
|
||||
|
||||
View_about* View_about::get_self() {
|
||||
return this;
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
#ifndef VIEW_ABOUT_H
|
||||
#define VIEW_ABOUT_H
|
||||
#include "../project_lib.h"
|
||||
#include "model/util.h"
|
||||
#include "../var.h"
|
||||
|
||||
class View_about
|
||||
{
|
||||
private:
|
||||
string version_application;
|
||||
private:
|
||||
Glib::RefPtr<Gtk::Builder> builder;
|
||||
Gtk::Label *headerAboutTopic;
|
||||
Gtk::ButtonBox *btnBoxAboutDialog;
|
||||
public:
|
||||
Gtk::AboutDialog *aboutWindows;
|
||||
public:
|
||||
View_about();
|
||||
~View_about();
|
||||
void lacalization();
|
||||
void event();
|
||||
View_about* get_self();
|
||||
void get_builder();
|
||||
void settings();
|
||||
void show();
|
||||
void set_path_glade(string str_path_glade);
|
||||
void set_version(string version_application);
|
||||
};
|
||||
#endif
|
@ -1,139 +0,0 @@
|
||||
#include "view_add_project.h"
|
||||
|
||||
View_add_project::View_add_project(/* args */) {
|
||||
builder = Gtk::Builder::create_from_file(path_glade);
|
||||
this->setting();
|
||||
}
|
||||
|
||||
View_add_project::~View_add_project()
|
||||
{
|
||||
}
|
||||
|
||||
void View_add_project::setting() {
|
||||
this->get_builder();
|
||||
this->lacalization();
|
||||
check_limit(quotegroupSizeSoftLimitCheckProject
|
||||
,quotegroupSizeSoftLimitSpinProject
|
||||
,quotegroupSizeSoftLimitComboProject);
|
||||
check_limit(quotegroupSizeHardLimitCheckProject
|
||||
,quotegroupSizeHardLimitSpin1
|
||||
,quotegroupSizeHardLimitComboProject);
|
||||
check_limit(quotegroupFilesSoftLimitCheckProject
|
||||
,quotegroupFilesSoftLimitSpinProject
|
||||
,quotegroupFilesSoftLimitlabelProject);
|
||||
check_limit(quotegroupFilesHardLimitCheckProject
|
||||
,quotegroupFilesHardLimitSpinProject
|
||||
,quotegroupFilesHarLimitLabelProject);
|
||||
this->event();
|
||||
}
|
||||
|
||||
void View_add_project::event() {
|
||||
quotegroupSizeSoftLimitCheckProject->signal_toggled().connect([&]() {
|
||||
check_limit(quotegroupSizeSoftLimitCheckProject
|
||||
,quotegroupSizeSoftLimitSpinProject
|
||||
,quotegroupSizeSoftLimitComboProject);
|
||||
});
|
||||
quotegroupSizeHardLimitCheckProject->signal_toggled().connect([&]() {
|
||||
check_limit(quotegroupSizeHardLimitCheckProject
|
||||
,quotegroupSizeHardLimitSpin1
|
||||
,quotegroupSizeHardLimitComboProject);
|
||||
});
|
||||
quotegroupFilesSoftLimitCheckProject->signal_toggled().connect([&]() {
|
||||
check_limit(quotegroupFilesSoftLimitCheckProject
|
||||
,quotegroupFilesSoftLimitSpinProject
|
||||
,quotegroupFilesSoftLimitlabelProject);
|
||||
});
|
||||
quotegroupFilesHardLimitCheckProject->signal_toggled().connect([&]() {
|
||||
check_limit(quotegroupFilesHardLimitCheckProject
|
||||
,quotegroupFilesHardLimitSpinProject
|
||||
,quotegroupFilesHarLimitLabelProject);
|
||||
});
|
||||
quotegroupCancelButtonAdd->signal_clicked().connect([&]() {this->close_wnd();});
|
||||
quotegroupSaveButtonAdd->signal_clicked().connect([&]() {this->save();});
|
||||
btnReviewProject->signal_clicked().connect([&]() {show_file_manager();});
|
||||
btnFilemangerOk->signal_clicked().connect([&]() {save_file_manager();});
|
||||
btnFilemangerExit->signal_clicked().connect([&]() {wndChooseFileWallpaper->hide();});
|
||||
}
|
||||
|
||||
void View_add_project::show_file_manager() {
|
||||
wndChooseFileWallpaper->set_current_folder(open_dir_file_manager);
|
||||
wndChooseFileWallpaper->show();
|
||||
}
|
||||
|
||||
void View_add_project::save_file_manager() {
|
||||
entryCatalogProject->set_text(wndChooseFileWallpaper->get_filename());
|
||||
wndChooseFileWallpaper->hide();
|
||||
}
|
||||
void View_add_project::close_wnd() {
|
||||
wndQuotasAddProject->hide();
|
||||
}
|
||||
|
||||
void View_add_project::save() {
|
||||
wndQuotasAddProject->hide();
|
||||
}
|
||||
|
||||
void View_add_project::show() {
|
||||
wndQuotasAddProject->show();
|
||||
}
|
||||
|
||||
void View_add_project::get_builder() {
|
||||
builder->get_widget("wndQuotasAddProject", wndQuotasAddProject);
|
||||
builder->get_widget("quotegroupSizeFrameLabelProject", quotegroupSizeFrameLabelProject);
|
||||
builder->get_widget("quotegroupFilesFrameLabelProject", quotegroupFilesFrameLabelProject);
|
||||
builder->get_widget("quotegroupSizeCurrentlyLabelProject", quotegroupSizeCurrentlyLabelProject);
|
||||
builder->get_widget("quotegroupFilesCurrentlyLabelProject", quotegroupFilesCurrentlyLabelProject);
|
||||
builder->get_widget("quotegroupSizeSoftLimitLabelProject", quotegroupSizeSoftLimitLabelProject);
|
||||
builder->get_widget("quotegroupFilesSoftLimitLabelProject", quotegroupFilesSoftLimitLabelProject);
|
||||
builder->get_widget("quoteSizeHardLimitLabelProject", quoteSizeHardLimitLabelProject);
|
||||
builder->get_widget("quoteFilesHardLimitLabelProject", quoteFilesHardLimitLabelProject);
|
||||
builder->get_widget("quotegroupFilesSoftLimitlabelProject", quotegroupFilesSoftLimitlabelProject);
|
||||
builder->get_widget("quotegroupFilesHarLimitLabelProject", quotegroupFilesHarLimitLabelProject);
|
||||
builder->get_widget("quotegroupCancelButtonAdd", quotegroupCancelButtonAdd);
|
||||
builder->get_widget("quotegroupSaveButtonAdd", quotegroupSaveButtonAdd);
|
||||
builder->get_widget("lblDeviceProject", lblDeviceProject);
|
||||
builder->get_widget("lblStatusQuotaProject", lblStatusQuotaProject);
|
||||
builder->get_widget("lblCatalogProject", lblCatalogProject);
|
||||
builder->get_widget("lblProjectId", lblProjectId);
|
||||
builder->get_widget("lblProjectName", lblProjectName);
|
||||
builder->get_widget("btnReviewProject", btnReviewProject);
|
||||
builder->get_widget("btnGenerateProject", btnGenerateProject);
|
||||
builder->get_widget("chbAuto", chbAuto);
|
||||
builder->get_widget("entryCatalogProject", entryCatalogProject);
|
||||
builder->get_widget("entryProjectId", entryProjectId);
|
||||
builder->get_widget("entryProjectName", entryProjectName);
|
||||
builder->get_widget("quotegroupSizeSoftLimitCheckProject", quotegroupSizeSoftLimitCheckProject);
|
||||
builder->get_widget("quotegroupSizeHardLimitCheckProject", quotegroupSizeHardLimitCheckProject);
|
||||
builder->get_widget("quotegroupFilesSoftLimitCheckProject", quotegroupFilesSoftLimitCheckProject);
|
||||
builder->get_widget("quotegroupFilesHardLimitCheckProject", quotegroupFilesHardLimitCheckProject);
|
||||
builder->get_widget("quotegroupSizeSoftLimitSpinProject", quotegroupSizeSoftLimitSpinProject);
|
||||
builder->get_widget("quotegroupSizeHardLimitSpin1", quotegroupSizeHardLimitSpin1);
|
||||
builder->get_widget("quotegroupFilesSoftLimitSpinProject", quotegroupFilesSoftLimitSpinProject);
|
||||
builder->get_widget("quotegroupFilesHardLimitSpinProject", quotegroupFilesHardLimitSpinProject);
|
||||
builder->get_widget("quotegroupSizeSoftLimitComboProject", quotegroupSizeSoftLimitComboProject);
|
||||
builder->get_widget("quotegroupSizeHardLimitComboProject", quotegroupSizeHardLimitComboProject);
|
||||
builder->get_widget("wndChooseFileWallpaper", wndChooseFileWallpaper);
|
||||
builder->get_widget("btnFilemangerExit", btnFilemangerExit);
|
||||
builder->get_widget("btnFilemangerOk", btnFilemangerOk);
|
||||
}
|
||||
|
||||
void View_add_project::lacalization() {
|
||||
this->fill_in_pow_memory(quotegroupSizeSoftLimitComboProject);
|
||||
this->fill_in_pow_memory(quotegroupSizeHardLimitComboProject);
|
||||
}
|
||||
|
||||
|
||||
void View_add_project::check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::ComboBoxText *combo_box) {
|
||||
spin->set_sensitive(check_button->get_active());
|
||||
combo_box->set_sensitive(check_button->get_active());
|
||||
}
|
||||
void View_add_project::check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::Label *combo_box) {
|
||||
spin->set_sensitive(check_button->get_active());
|
||||
combo_box->set_sensitive(check_button->get_active());
|
||||
}
|
||||
|
||||
void View_add_project::fill_in_pow_memory(Gtk::ComboBoxText *cb_text) {
|
||||
cb_text->append(str_prefix_KB);
|
||||
cb_text->append(str_prefix_MB);
|
||||
cb_text->append(str_prefix_GB);
|
||||
cb_text->append(str_prefix_TB);
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
#ifndef VIEW_ADD_PROJECT_H
|
||||
#define VIEW_ADD_PROJECT_H
|
||||
#include "../project_lib.h"
|
||||
#include "../var.h"
|
||||
class View_add_project
|
||||
{
|
||||
private:
|
||||
Glib::RefPtr<Gtk::Builder> builder;
|
||||
Gtk::Window* wndQuotasAddProject;
|
||||
Gtk::Label* quotegroupSizeFrameLabelProject;
|
||||
Gtk::Label* quotegroupFilesFrameLabelProject;
|
||||
Gtk::Label* quotegroupSizeCurrentlyLabelProject;
|
||||
Gtk::Label* quotegroupFilesCurrentlyLabelProject;
|
||||
Gtk::Label* quotegroupSizeSoftLimitLabelProject;
|
||||
Gtk::Label* quotegroupFilesSoftLimitLabelProject;
|
||||
Gtk::Label* quoteSizeHardLimitLabelProject;
|
||||
Gtk::Label* quoteFilesHardLimitLabelProject;
|
||||
Gtk::Label* quotegroupFilesSoftLimitlabelProject;
|
||||
Gtk::Label* quotegroupFilesHarLimitLabelProject;
|
||||
Gtk::Label* lblDeviceProject;
|
||||
Gtk::Label* lblStatusQuotaProject;
|
||||
Gtk::Label* lblCatalogProject;
|
||||
Gtk::Label* lblProjectId;
|
||||
Gtk::Label* lblProjectName;
|
||||
Gtk::Button* quotegroupCancelButtonAdd;
|
||||
Gtk::Button* quotegroupSaveButtonAdd;
|
||||
Gtk::Button* btnReviewProject;
|
||||
Gtk::Button* btnGenerateProject;
|
||||
Gtk::Entry* entryCatalogProject;
|
||||
Gtk::Entry* entryProjectId;
|
||||
Gtk::Entry* entryProjectName;
|
||||
Gtk::CheckButton* chbAuto;
|
||||
Gtk::CheckButton* quotegroupSizeSoftLimitCheckProject;
|
||||
Gtk::CheckButton* quotegroupSizeHardLimitCheckProject;
|
||||
Gtk::CheckButton* quotegroupFilesSoftLimitCheckProject;
|
||||
Gtk::CheckButton* quotegroupFilesHardLimitCheckProject;
|
||||
Gtk::SpinButton* quotegroupSizeSoftLimitSpinProject;
|
||||
Gtk::SpinButton* quotegroupSizeHardLimitSpin1;
|
||||
Gtk::SpinButton* quotegroupFilesSoftLimitSpinProject;
|
||||
Gtk::SpinButton* quotegroupFilesHardLimitSpinProject;
|
||||
Gtk::ComboBoxText* quotegroupSizeSoftLimitComboProject;
|
||||
Gtk::ComboBoxText* quotegroupSizeHardLimitComboProject;
|
||||
Gtk::FileChooserDialog* wndChooseFileWallpaper;
|
||||
Gtk::Button* btnFilemangerOk;
|
||||
Gtk::Button* btnFilemangerExit;
|
||||
|
||||
public:
|
||||
View_add_project(/* args */);
|
||||
~View_add_project();
|
||||
void setting();
|
||||
void lacalization();
|
||||
void event();
|
||||
void show();
|
||||
void close_wnd();
|
||||
void save();
|
||||
void get_builder();
|
||||
void check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::ComboBoxText *combo_box);
|
||||
void check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::Label *combo_box);
|
||||
void fill_in_pow_memory(Gtk::ComboBoxText *cb_text);
|
||||
void show_file_manager();
|
||||
void save_file_manager();
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,118 +0,0 @@
|
||||
#include "view_add_user_group.h"
|
||||
|
||||
|
||||
View_add_user_group::View_add_user_group(/* args */) {
|
||||
builder = Gtk::Builder::create_from_file(path_glade);
|
||||
this->settings();
|
||||
}
|
||||
|
||||
View_add_user_group::~View_add_user_group() {
|
||||
}
|
||||
|
||||
void View_add_user_group::settings() {
|
||||
this->get_builder();
|
||||
this->lacalization();
|
||||
check_limit(quotegroupSizeSoftLimitCheck
|
||||
,quotegroupSizeSoftLimitSpin
|
||||
,quotegroupSizeSoftLimitCombo);
|
||||
check_limit(quotegroupSizeHardLimitCheck
|
||||
,quotegroupSizeHardLimitSpin
|
||||
,quotegroupSizeHardLimitCombo);
|
||||
check_limit(quotegroupFilesSoftLimitCheck
|
||||
,quotegroupFilesSoftLimitSpin
|
||||
,quotegroupFilesSoftLimitlabel);
|
||||
check_limit(quotegroupFilesHardLimitCheck
|
||||
,quotegroupFilesHardLimitSpin
|
||||
,quotegroupFilesHarLimitLabel);
|
||||
this->event();
|
||||
}
|
||||
|
||||
void View_add_user_group::event() {
|
||||
quotegroupCancelButton->signal_clicked().connect([&]() {QuotasEditWindow->hide();});
|
||||
quotegroupSaveButton->signal_clicked().connect([&]() {});
|
||||
quotegroupSizeSoftLimitCheck->signal_toggled().connect([&]() {
|
||||
check_limit(quotegroupSizeSoftLimitCheck
|
||||
,quotegroupSizeSoftLimitSpin
|
||||
,quotegroupSizeSoftLimitCombo);
|
||||
});
|
||||
quotegroupSizeHardLimitCheck->signal_toggled().connect([&]() {
|
||||
check_limit(quotegroupSizeHardLimitCheck
|
||||
,quotegroupSizeHardLimitSpin
|
||||
,quotegroupSizeHardLimitCombo);
|
||||
});
|
||||
quotegroupFilesSoftLimitCheck->signal_toggled().connect([&]() {
|
||||
check_limit(quotegroupFilesSoftLimitCheck
|
||||
,quotegroupFilesSoftLimitSpin
|
||||
,quotegroupFilesSoftLimitlabel);
|
||||
});
|
||||
quotegroupFilesHardLimitCheck->signal_toggled().connect([&]() {
|
||||
check_limit(quotegroupFilesHardLimitCheck
|
||||
,quotegroupFilesHardLimitSpin
|
||||
,quotegroupFilesHarLimitLabel);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
void View_add_user_group::get_builder() {
|
||||
builder->get_widget("lblSetDevice", lblSetDevice);
|
||||
builder->get_widget("lblQuotasStatus", lblQuotasStatus);
|
||||
builder->get_widget("lblSetUGP", lblSetUGP);
|
||||
builder->get_widget("lblSetNameDevice", lblSetNameDevice);
|
||||
builder->get_widget("lblSetQuotasStatus", lblSetQuotasStatus);
|
||||
builder->get_widget("cmbSetNameUGP", cmbSetNameUGP);
|
||||
builder->get_widget("quotegroupSizeFrameLabel", quotegroupSizeFrameLabel);
|
||||
builder->get_widget("quotegroupFilesFrameLabel", quotegroupFilesFrameLabel);
|
||||
builder->get_widget("quotegroupSizeCurrentlyLabel", quotegroupSizeCurrentlyLabel);
|
||||
builder->get_widget("quotegroupFilesCurrentlyLabel", quotegroupFilesCurrentlyLabel);
|
||||
builder->get_widget("quotegroupSizeSoftLimitLabel", quotegroupSizeSoftLimitLabel);
|
||||
builder->get_widget("quoteSizeHardLimitLabel", quoteSizeHardLimitLabel);
|
||||
builder->get_widget("quotegroupFilesSoftLimitLabel", quotegroupFilesSoftLimitLabel);
|
||||
builder->get_widget("quoteFilesHardLimitLabel", quoteFilesHardLimitLabel);
|
||||
builder->get_widget("quotegroupFilesHarLimitLabel", quotegroupFilesHarLimitLabel);
|
||||
builder->get_widget("QuotasEditWindow", QuotasEditWindow);
|
||||
builder->get_widget("lblHeadQuotasEditWindow", lblHeadQuotasEditWindow);
|
||||
builder->get_widget("quotegroupCancelButton", quotegroupCancelButton);
|
||||
builder->get_widget("quotegroupSaveButton", quotegroupSaveButton);
|
||||
builder->get_widget("quotegroupSizeSoftLimitSpin", quotegroupSizeSoftLimitSpin);
|
||||
builder->get_widget("quotegroupSizeHardLimitSpin", quotegroupSizeHardLimitSpin);
|
||||
builder->get_widget("quotegroupFilesSoftLimitSpin", quotegroupFilesSoftLimitSpin);
|
||||
builder->get_widget("quotegroupFilesHardLimitSpin", quotegroupFilesHardLimitSpin);
|
||||
builder->get_widget("quotegroupFilesSoftLimitlabel", quotegroupFilesSoftLimitlabel);
|
||||
builder->get_widget("quotegroupSizeSoftLimitCombo", quotegroupSizeSoftLimitCombo);
|
||||
builder->get_widget("quotegroupSizeHardLimitCombo", quotegroupSizeHardLimitCombo);
|
||||
builder->get_widget("quotegroupSizeSoftLimitCheck", quotegroupSizeSoftLimitCheck);
|
||||
builder->get_widget("quotegroupSizeHardLimitCheck", quotegroupSizeHardLimitCheck);
|
||||
builder->get_widget("quotegroupFilesSoftLimitCheck", quotegroupFilesSoftLimitCheck);
|
||||
builder->get_widget("quotegroupFilesHardLimitCheck", quotegroupFilesHardLimitCheck);
|
||||
|
||||
}
|
||||
|
||||
void View_add_user_group::show() {
|
||||
QuotasEditWindow->show();
|
||||
}
|
||||
|
||||
void View_add_user_group::lacalization() {
|
||||
this->fill_in_pow_memory(quotegroupSizeSoftLimitCombo);
|
||||
this->fill_in_pow_memory(quotegroupSizeHardLimitCombo);
|
||||
|
||||
}
|
||||
|
||||
void View_add_user_group::check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::ComboBoxText *combo_box) {
|
||||
spin->set_sensitive(check_button->get_active());
|
||||
combo_box->set_sensitive(check_button->get_active());
|
||||
}
|
||||
void View_add_user_group::check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::Label *combo_box) {
|
||||
spin->set_sensitive(check_button->get_active());
|
||||
combo_box->set_sensitive(check_button->get_active());
|
||||
}
|
||||
|
||||
void View_add_user_group::fill_in_pow_memory(Gtk::ComboBoxText *cb_text) {
|
||||
cb_text->append(str_prefix_KB);
|
||||
cb_text->append(str_prefix_MB);
|
||||
cb_text->append(str_prefix_GB);
|
||||
cb_text->append(str_prefix_TB);
|
||||
}
|
||||
|
||||
void View_add_user_group::set_label_type_quota(string name) {
|
||||
lblSetUGP->set_text(name);
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
#ifndef VIEW_SET_USER_GROUP_H
|
||||
#define VIEW_SET_USER_GROUP_H
|
||||
#include "../project_lib.h"
|
||||
#include "../var.h"
|
||||
|
||||
using namespace std;
|
||||
class View_add_user_group
|
||||
{
|
||||
private:
|
||||
string str_path_glade;
|
||||
private:
|
||||
Glib::RefPtr<Gtk::Builder> builder;
|
||||
Gtk::Label* lblSetDevice;
|
||||
Gtk::Label* lblQuotasStatus;
|
||||
Gtk::Label* lblSetUGP;
|
||||
Gtk::Label* lblSetNameDevice;
|
||||
Gtk::Label* lblSetQuotasStatus;
|
||||
Gtk::ComboBoxText* cmbSetNameUGP;
|
||||
Gtk::Label *quotegroupSizeFrameLabel;
|
||||
Gtk::Label *quotegroupSizeCurrentlyLabel;
|
||||
Gtk::Label *quoteSizeHardLimitLabel;
|
||||
Gtk::Label *quotegroupFilesFrameLabel;
|
||||
Gtk::Label *quotegroupFilesCurrentlyLabel;
|
||||
Gtk::Label *quotegroupFilesSoftLimitLabel;
|
||||
Gtk::Label *quoteFilesHardLimitLabel;
|
||||
Gtk::Label *quotegroupFilesHarLimitLabel;
|
||||
Gtk::Label *quotegroupSizeSoftLimitLabel;
|
||||
Gtk::Window *QuotasEditWindow;
|
||||
Gtk::Label *lblHeadQuotasEditWindow;
|
||||
Gtk::Button *quotegroupCancelButton;
|
||||
Gtk::Button *quotegroupSaveButton;
|
||||
Gtk::SpinButton *quotegroupSizeSoftLimitSpin;
|
||||
Gtk::SpinButton *quotegroupSizeHardLimitSpin;
|
||||
Gtk::SpinButton *quotegroupFilesSoftLimitSpin;
|
||||
Gtk::SpinButton *quotegroupFilesHardLimitSpin;
|
||||
Gtk::Label *quotegroupFilesSoftLimitlabel;
|
||||
Gtk::ComboBoxText *quotegroupSizeSoftLimitCombo;
|
||||
Gtk::ComboBoxText *quotegroupSizeHardLimitCombo;
|
||||
Gtk::CheckButton *quotegroupSizeSoftLimitCheck;
|
||||
Gtk::CheckButton *quotegroupSizeHardLimitCheck;
|
||||
Gtk::CheckButton *quotegroupFilesSoftLimitCheck;
|
||||
Gtk::CheckButton *quotegroupFilesHardLimitCheck;
|
||||
public:
|
||||
View_add_user_group(/* args */);
|
||||
~View_add_user_group();
|
||||
void lacalization();
|
||||
void event();
|
||||
void get_builder();
|
||||
void settings();
|
||||
void show();
|
||||
void set_path_glade(string str_path_glade);
|
||||
void set_label_type_quota(string name);
|
||||
private:
|
||||
void set_change_gui(Glib::RefPtr<Gtk::ListStore>* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate, Gtk::ComboBoxText *combo_box);
|
||||
void fill_in_pow_memory(Gtk::ComboBoxText *cb_text);
|
||||
void check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::ComboBoxText *combo_box);
|
||||
void check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::Label *combo_box);
|
||||
void edit_tree_view_U(Glib::RefPtr<Gtk::ListStore>* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate);
|
||||
void edit_tree_view_G(Glib::RefPtr<Gtk::ListStore>* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate);
|
||||
void edit_tree_view_P(Glib::RefPtr<Gtk::ListStore>* list_store, const Gtk::TreeModel::iterator* iter, bool& flag_validate);
|
||||
};
|
||||
|
||||
#endif
|
@ -1,124 +0,0 @@
|
||||
#include "view_edit_project.h"
|
||||
|
||||
View_edit_project::View_edit_project(/* args */) {
|
||||
builder = Gtk::Builder::create_from_file(path_glade);
|
||||
this->setting();
|
||||
}
|
||||
|
||||
View_edit_project::~View_edit_project()
|
||||
{
|
||||
}
|
||||
|
||||
void View_edit_project::setting() {
|
||||
this->get_builder();
|
||||
this->lacalization();
|
||||
check_limit(quoteSizeSoftLimitCheckProjectEdit
|
||||
,quoteSizeSoftLimitSpinProjectEdit
|
||||
,quoteSizeSoftLimitComboProjectEdit);
|
||||
check_limit(quoteSizeHardLimitCheckProjectEdit
|
||||
,quoteSizeHardLimitSpinEdit
|
||||
,quoteSizeHardLimitComboProjectEdit);
|
||||
check_limit(quoteFilesSoftLimitCheckProjectEdit
|
||||
,quoteFilesSoftLimitSpinProjectEdit
|
||||
,quoteFilesProjectEdit);
|
||||
check_limit(quoteFilesHardLimitCheckProjectEdit
|
||||
,quoteFilesHardLimitSpinProjectEdit
|
||||
,quoteFiles1ProjectEdit);
|
||||
this->event();
|
||||
}
|
||||
|
||||
void View_edit_project::event() {
|
||||
|
||||
quoteCancelButtonEdit->signal_clicked().connect([&]() {this->close_wnd();});
|
||||
quoteSaveButtonEdit->signal_clicked().connect([&]() {this->save();});
|
||||
quoteSizeSoftLimitCheckProjectEdit->signal_toggled().connect([&]() {
|
||||
check_limit(quoteSizeSoftLimitCheckProjectEdit
|
||||
,quoteSizeSoftLimitSpinProjectEdit
|
||||
,quoteSizeSoftLimitComboProjectEdit);
|
||||
});
|
||||
quoteSizeHardLimitCheckProjectEdit->signal_toggled().connect([&]() {
|
||||
check_limit(quoteSizeHardLimitCheckProjectEdit
|
||||
,quoteSizeHardLimitSpinEdit
|
||||
,quoteSizeHardLimitComboProjectEdit);
|
||||
});
|
||||
quoteFilesSoftLimitCheckProjectEdit->signal_toggled().connect([&]() {
|
||||
check_limit(quoteFilesSoftLimitCheckProjectEdit
|
||||
,quoteFilesSoftLimitSpinProjectEdit
|
||||
,quoteFilesProjectEdit);
|
||||
});
|
||||
quoteFilesSoftLimitCheckProjectEdit->signal_toggled().connect([&]() {
|
||||
check_limit(quoteFilesSoftLimitCheckProjectEdit
|
||||
,quoteFilesHardLimitSpinProjectEdit
|
||||
,quoteFiles1ProjectEdit);
|
||||
});
|
||||
}
|
||||
|
||||
void View_edit_project::close_wnd() {
|
||||
wndQuotasEditProject->hide();
|
||||
}
|
||||
|
||||
void View_edit_project::save() {
|
||||
wndQuotasEditProject->hide();
|
||||
}
|
||||
|
||||
void View_edit_project::show() {
|
||||
wndQuotasEditProject->show();
|
||||
}
|
||||
|
||||
void View_edit_project::get_builder() {
|
||||
builder->get_widget("lblDeviceProjectEdit", lblDeviceProjectEdit);
|
||||
builder->get_widget("lblEditDeviceProjectValue", lblEditDeviceProjectValue);
|
||||
builder->get_widget("lblStatusQuotaProjectEdit", lblStatusQuotaProjectEdit);
|
||||
builder->get_widget("lblStatusQuotaProjectValueEdit", lblStatusQuotaProjectValueEdit);
|
||||
builder->get_widget("lblCatalogProjectEdit", lblCatalogProjectEdit);
|
||||
builder->get_widget("lblCatalogProjectEdit", lblCatalogProjectEdit);
|
||||
builder->get_widget("lblProjectIdEdit", lblProjectIdEdit);
|
||||
builder->get_widget("lblProjectIdValueEdit", lblProjectIdValueEdit);
|
||||
builder->get_widget("lblProjectNameEdit", lblProjectNameEdit);
|
||||
builder->get_widget("entryProjectNameEditValue", entryProjectNameEditValue);
|
||||
builder->get_widget("quoteSizeFrameLabelProjectEdit", quoteSizeFrameLabelProjectEdit);
|
||||
builder->get_widget("quoteSizeCurrentlyLabelProjectEdit", quoteSizeCurrentlyLabelProjectEdit);
|
||||
builder->get_widget("quoteSizeSoftLimitLabelProjectEdit", quoteSizeSoftLimitLabelProjectEdit);
|
||||
builder->get_widget("quoteSizeSoftLimitCheckProjectEdit", quoteSizeSoftLimitCheckProjectEdit);
|
||||
builder->get_widget("quoteSizeSoftLimitSpinProjectEdit", quoteSizeSoftLimitSpinProjectEdit);
|
||||
builder->get_widget("quoteSizeSoftLimitComboProjectEdit", quoteSizeSoftLimitComboProjectEdit);
|
||||
builder->get_widget("quoteSizeHardLimitLabelProjectEdit", quoteSizeHardLimitLabelProjectEdit);
|
||||
builder->get_widget("quoteSizeHardLimitCheckProjectEdit", quoteSizeHardLimitCheckProjectEdit);
|
||||
builder->get_widget("quoteSizeHardLimitSpinEdit", quoteSizeHardLimitSpinEdit);
|
||||
builder->get_widget("quoteSizeHardLimitComboProjectEdit", quoteSizeHardLimitComboProjectEdit);
|
||||
builder->get_widget("quoteFilesFrameLabelProjectEdit", quoteFilesFrameLabelProjectEdit);
|
||||
builder->get_widget("quoteFilesCurrentlyLabelProjectEdit", quoteFilesCurrentlyLabelProjectEdit);
|
||||
builder->get_widget("quoteFilesSoftLimitLabelProjectEdit", quoteFilesSoftLimitLabelProjectEdit);
|
||||
builder->get_widget("quoteFilesSoftLimitCheckProjectEdit", quoteFilesSoftLimitCheckProjectEdit);
|
||||
builder->get_widget("quoteFilesSoftLimitSpinProjectEdit", quoteFilesSoftLimitSpinProjectEdit);
|
||||
builder->get_widget("quoteFilesHardLimitCheckProjectEdit", quoteFilesHardLimitCheckProjectEdit);
|
||||
builder->get_widget("quoteFilesHardLimitSpinProjectEdit", quoteFilesHardLimitSpinProjectEdit);
|
||||
builder->get_widget("quoteCancelButtonEdit", quoteCancelButtonEdit);
|
||||
builder->get_widget("quoteSaveButtonEdit", quoteSaveButtonEdit);
|
||||
builder->get_widget("quoteFilesProjectEdit", quoteFilesProjectEdit);
|
||||
builder->get_widget("quoteFiles1ProjectEdit", quoteFiles1ProjectEdit);
|
||||
builder->get_widget("wndQuotasEditProject", wndQuotasEditProject);
|
||||
builder->get_widget("quoteFilesHardLimitLabelProject1", quoteFilesHardLimitLabelProject1);
|
||||
}
|
||||
|
||||
void View_edit_project::lacalization() {
|
||||
this->fill_in_pow_memory(quoteSizeSoftLimitComboProjectEdit);
|
||||
this->fill_in_pow_memory(quoteSizeHardLimitComboProjectEdit);
|
||||
}
|
||||
|
||||
|
||||
void View_edit_project::check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::ComboBoxText *combo_box) {
|
||||
spin->set_sensitive(check_button->get_active());
|
||||
combo_box->set_sensitive(check_button->get_active());
|
||||
}
|
||||
void View_edit_project::check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::Label *combo_box) {
|
||||
spin->set_sensitive(check_button->get_active());
|
||||
combo_box->set_sensitive(check_button->get_active());
|
||||
}
|
||||
|
||||
void View_edit_project::fill_in_pow_memory(Gtk::ComboBoxText *cb_text) {
|
||||
cb_text->append(str_prefix_KB);
|
||||
cb_text->append(str_prefix_MB);
|
||||
cb_text->append(str_prefix_GB);
|
||||
cb_text->append(str_prefix_TB);
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
#ifndef VIEW_EDIT_PROJECT_H
|
||||
#define VIEW_EDIT_PROJECT_H
|
||||
#include "../project_lib.h"
|
||||
#include "../var.h"
|
||||
class View_edit_project
|
||||
{
|
||||
private:
|
||||
Glib::RefPtr<Gtk::Builder> builder;
|
||||
Gtk::Window* wndQuotasEditProject;
|
||||
Gtk::Label* lblDeviceProjectEdit;
|
||||
Gtk::Label* lblEditDeviceProjectValue;
|
||||
Gtk::Label* lblStatusQuotaProjectEdit;
|
||||
Gtk::Label* lblStatusQuotaProjectValueEdit;
|
||||
Gtk::Label* lblCatalogProjectEdit;
|
||||
Gtk::Label* lblProjectIdEdit;
|
||||
Gtk::Label* lblProjectIdValueEdit;
|
||||
Gtk::Label* lblProjectNameEdit;
|
||||
Gtk::Label* quoteSizeFrameLabelProjectEdit;
|
||||
Gtk::Label* quoteFilesFrameLabelProjectEdit;
|
||||
Gtk::Label* quoteSizeCurrentlyLabelProjectEdit;
|
||||
Gtk::Label* quoteSizeSoftLimitLabelProjectEdit;
|
||||
Gtk::Label* quoteSizeHardLimitLabelProjectEdit;
|
||||
Gtk::Label* quoteFilesCurrentlyLabelProjectEdit;
|
||||
Gtk::Label* quoteFilesSoftLimitLabelProjectEdit;
|
||||
Gtk::Label* quoteFilesHardLimitLabelProject1;
|
||||
Gtk::Label* quoteFilesProjectEdit;
|
||||
Gtk::Label* quoteFiles1ProjectEdit;
|
||||
Gtk::CheckButton* quoteSizeSoftLimitCheckProjectEdit;
|
||||
Gtk::CheckButton* quoteSizeHardLimitCheckProjectEdit;
|
||||
Gtk::CheckButton* quoteFilesSoftLimitCheckProjectEdit;
|
||||
Gtk::CheckButton* quoteFilesHardLimitCheckProjectEdit;
|
||||
Gtk::SpinButton* quoteSizeSoftLimitSpinProjectEdit;
|
||||
Gtk::SpinButton* quoteSizeHardLimitSpinEdit;
|
||||
Gtk::SpinButton* quoteFilesSoftLimitSpinProjectEdit;
|
||||
Gtk::SpinButton* quoteFilesHardLimitSpinProjectEdit;
|
||||
Gtk::ComboBoxText* quoteSizeSoftLimitComboProjectEdit;
|
||||
Gtk::ComboBoxText* quoteSizeHardLimitComboProjectEdit;
|
||||
Gtk::Button* quoteSaveButtonEdit;
|
||||
Gtk::Button* quoteCancelButtonEdit;
|
||||
Gtk::Entry* entryProjectNameEditValue;
|
||||
public:
|
||||
View_edit_project(/* args */);
|
||||
~View_edit_project();
|
||||
void setting();
|
||||
void event();
|
||||
void show();
|
||||
void get_builder();
|
||||
void lacalization();
|
||||
void check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::ComboBoxText *combo_box);
|
||||
void check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::Label *combo_box);
|
||||
void fill_in_pow_memory(Gtk::ComboBoxText *cb_text);
|
||||
void close_wnd();
|
||||
void save();
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,115 +0,0 @@
|
||||
#include "view_edit_user_group.h"
|
||||
|
||||
View_edit_user_group::View_edit_user_group(/* args */) {
|
||||
builder = Gtk::Builder::create_from_file(path_glade);
|
||||
this->setting();
|
||||
}
|
||||
|
||||
View_edit_user_group::~View_edit_user_group()
|
||||
{
|
||||
}
|
||||
|
||||
void View_edit_user_group::setting() {
|
||||
this->get_builder();
|
||||
this->lacalization();
|
||||
check_limit(quotegroupSizeSoftLimitCheckUser
|
||||
,quotegroupSizeSoftLimitSpinUser
|
||||
,quotegroupSizeSoftLimitComboUser);
|
||||
check_limit(quotegroupSizeHardLimitCheckUser
|
||||
,quotegroupSizeHardLimitSpinUser
|
||||
,quotegroupSizeHardLimitComboUser);
|
||||
check_limit(quotegroupFilesSoftLimitCheckUser
|
||||
,quotegroupFilesSoftLimitSpinUser
|
||||
,quotegroupFilesSoftLimitlabelUser);
|
||||
check_limit(quotegroupFilesHardLimitCheckUser
|
||||
,quotegroupFilesHardLimitSpinUser
|
||||
,quotegroupFilesHarLimitLabelUser);
|
||||
this->event();
|
||||
}
|
||||
|
||||
void View_edit_user_group::event() {
|
||||
btnCancelEditUser->signal_clicked().connect([&]() {wndQuotasEditUser->hide();});
|
||||
btnSaveEditUser->signal_clicked().connect([&]() {});
|
||||
quotegroupSizeSoftLimitCheckUser->signal_toggled().connect([&]() {
|
||||
check_limit(quotegroupSizeSoftLimitCheckUser
|
||||
,quotegroupSizeSoftLimitSpinUser
|
||||
,quotegroupSizeSoftLimitComboUser);
|
||||
});
|
||||
quotegroupSizeHardLimitCheckUser->signal_toggled().connect([&]() {
|
||||
check_limit(quotegroupSizeHardLimitCheckUser
|
||||
,quotegroupSizeHardLimitSpinUser
|
||||
,quotegroupSizeHardLimitComboUser);
|
||||
});
|
||||
quotegroupFilesSoftLimitCheckUser->signal_toggled().connect([&]() {
|
||||
check_limit(quotegroupFilesSoftLimitCheckUser
|
||||
,quotegroupFilesSoftLimitSpinUser
|
||||
,quotegroupFilesSoftLimitlabelUser);
|
||||
});
|
||||
quotegroupFilesHardLimitCheckUser->signal_toggled().connect([&]() {
|
||||
check_limit(quotegroupFilesHardLimitCheckUser
|
||||
,quotegroupFilesHardLimitSpinUser
|
||||
,quotegroupFilesHarLimitLabelUser);
|
||||
});
|
||||
}
|
||||
|
||||
void View_edit_user_group::get_builder() {
|
||||
builder->get_widget("wndQuotasEditUser", wndQuotasEditUser);
|
||||
builder->get_widget("btnCancelEditUser", btnCancelEditUser);
|
||||
builder->get_widget("btnSaveEditUser", btnSaveEditUser);
|
||||
builder->get_widget("quotegroupSizeSoftLimitCheckUser", quotegroupSizeSoftLimitCheckUser);
|
||||
builder->get_widget("quotegroupSizeHardLimitCheckUser", quotegroupSizeHardLimitCheckUser);
|
||||
builder->get_widget("quotegroupFilesSoftLimitCheckUser", quotegroupFilesSoftLimitCheckUser);
|
||||
builder->get_widget("quotegroupFilesHardLimitCheckUser", quotegroupFilesHardLimitCheckUser);
|
||||
builder->get_widget("quotegroupSizeSoftLimitSpinUser", quotegroupSizeSoftLimitSpinUser);
|
||||
builder->get_widget("quotegroupSizeHardLimitSpinUser", quotegroupSizeHardLimitSpinUser);
|
||||
builder->get_widget("quotegroupFilesSoftLimitSpinUser", quotegroupFilesSoftLimitSpinUser);
|
||||
builder->get_widget("quotegroupFilesHardLimitSpinUser", quotegroupFilesHardLimitSpinUser);
|
||||
builder->get_widget("quotegroupSizeSoftLimitComboUser", quotegroupSizeSoftLimitComboUser);
|
||||
builder->get_widget("quotegroupSizeHardLimitComboUser", quotegroupSizeHardLimitComboUser);
|
||||
builder->get_widget("quotegroupFilesSoftLimitlabelUser", quotegroupFilesSoftLimitlabelUser);
|
||||
builder->get_widget("quotegroupFilesHarLimitLabelUser", quotegroupFilesHarLimitLabelUser);
|
||||
builder->get_widget("quotegroupSizeSoftLimitLabelUser", quotegroupSizeSoftLimitLabelUser);
|
||||
builder->get_widget("quotegroupFilesSoftLimitLabelUser", quotegroupFilesSoftLimitLabelUser);
|
||||
builder->get_widget("quotegroupSizeCurrentlyLabelUser", quotegroupSizeCurrentlyLabelUser);
|
||||
builder->get_widget("quotegroupFilesCurrentlyLabelUser", quotegroupFilesCurrentlyLabelUser);
|
||||
builder->get_widget("quotegroupSizeFrameLabelUser", quotegroupSizeFrameLabelUser);
|
||||
builder->get_widget("quotegroupFilesFrameLabelUser", quotegroupFilesFrameLabelUser);
|
||||
builder->get_widget("lblSetDeviceUser", lblSetDeviceUser);
|
||||
builder->get_widget("lblQuotasStatusUser", lblQuotasStatusUser);
|
||||
builder->get_widget("lblSetUGPUser", lblSetUGPUser);
|
||||
builder->get_widget("lblSetNameDeviceUser", lblSetNameDeviceUser);
|
||||
builder->get_widget("lblSetQuotasStatusUser", lblSetQuotasStatusUser);
|
||||
builder->get_widget("lblSetUGPUserValue", lblSetUGPUserValue);
|
||||
builder->get_widget("lblHeadQuotasEditWindowUser", lblHeadQuotasEditWindowUser);
|
||||
builder->get_widget("quoteSizeHardLimitLabel1", quoteSizeHardLimitLabel1);
|
||||
builder->get_widget("quoteFilesHardLimitLabelUser", quoteFilesHardLimitLabelUser);
|
||||
}
|
||||
|
||||
void View_edit_user_group::lacalization() {
|
||||
this->fill_in_pow_memory(quotegroupSizeSoftLimitComboUser);
|
||||
this->fill_in_pow_memory(quotegroupSizeHardLimitComboUser);
|
||||
}
|
||||
|
||||
|
||||
void View_edit_user_group::check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::ComboBoxText *combo_box) {
|
||||
spin->set_sensitive(check_button->get_active());
|
||||
combo_box->set_sensitive(check_button->get_active());
|
||||
}
|
||||
void View_edit_user_group::check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::Label *combo_box) {
|
||||
spin->set_sensitive(check_button->get_active());
|
||||
combo_box->set_sensitive(check_button->get_active());
|
||||
}
|
||||
|
||||
void View_edit_user_group::fill_in_pow_memory(Gtk::ComboBoxText *cb_text) {
|
||||
cb_text->append(str_prefix_KB);
|
||||
cb_text->append(str_prefix_MB);
|
||||
cb_text->append(str_prefix_GB);
|
||||
cb_text->append(str_prefix_TB);
|
||||
}
|
||||
|
||||
void View_edit_user_group::set_label_type_quota(string name) {
|
||||
lblSetUGPUser->set_text(name);
|
||||
}
|
||||
void View_edit_user_group::show() {
|
||||
wndQuotasEditUser->show();
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
#ifndef VIEW_ADD_USER_GROUP_H
|
||||
#define VIEW_ADD_USER_GROUP_H
|
||||
#include "../project_lib.h"
|
||||
#include "../var.h"
|
||||
using namespace std;
|
||||
|
||||
class View_edit_user_group
|
||||
{
|
||||
private:
|
||||
Glib::RefPtr<Gtk::Builder> builder;
|
||||
private:
|
||||
Gtk::Window* wndQuotasEditUser;
|
||||
Gtk::Button* btnCancelEditUser;
|
||||
Gtk::Button* btnSaveEditUser;
|
||||
Gtk::CheckButton* quotegroupSizeSoftLimitCheckUser;
|
||||
Gtk::CheckButton* quotegroupSizeHardLimitCheckUser;
|
||||
Gtk::CheckButton* quotegroupFilesSoftLimitCheckUser;
|
||||
Gtk::CheckButton* quotegroupFilesHardLimitCheckUser;
|
||||
Gtk::SpinButton* quotegroupSizeSoftLimitSpinUser;
|
||||
Gtk::SpinButton* quotegroupSizeHardLimitSpinUser;
|
||||
Gtk::SpinButton* quotegroupFilesSoftLimitSpinUser;
|
||||
Gtk::SpinButton* quotegroupFilesHardLimitSpinUser;
|
||||
Gtk::ComboBoxText* quotegroupSizeSoftLimitComboUser;
|
||||
Gtk::ComboBoxText* quotegroupSizeHardLimitComboUser;
|
||||
Gtk::Label* quotegroupFilesSoftLimitlabelUser;
|
||||
Gtk::Label* quotegroupFilesHarLimitLabelUser;
|
||||
Gtk::Label* quotegroupSizeSoftLimitLabelUser;
|
||||
Gtk::Label* quotegroupFilesSoftLimitLabelUser;
|
||||
Gtk::Label* quotegroupSizeCurrentlyLabelUser;
|
||||
Gtk::Label* quotegroupFilesCurrentlyLabelUser;
|
||||
Gtk::Label* quotegroupSizeFrameLabelUser;
|
||||
Gtk::Label* quotegroupFilesFrameLabelUser;
|
||||
Gtk::Label* lblSetDeviceUser;
|
||||
Gtk::Label* lblQuotasStatusUser;
|
||||
Gtk::Label* lblSetUGPUser;
|
||||
Gtk::Label* lblSetNameDeviceUser;
|
||||
Gtk::Label* lblSetQuotasStatusUser;
|
||||
Gtk::Label* lblSetUGPUserValue;
|
||||
Gtk::Label* lblHeadQuotasEditWindowUser;
|
||||
Gtk::Label* quoteSizeHardLimitLabel1;
|
||||
Gtk::Label* quoteFilesHardLimitLabelUser;
|
||||
|
||||
|
||||
public:
|
||||
View_edit_user_group(/* args */);
|
||||
~View_edit_user_group();
|
||||
void setting();
|
||||
void event();
|
||||
void show();
|
||||
void get_builder();
|
||||
void check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::ComboBoxText *combo_box);
|
||||
void check_limit(Gtk::CheckButton *check_button, Gtk::SpinButton *spin, Gtk::Label *combo_box);
|
||||
void fill_in_pow_memory(Gtk::ComboBoxText *cb_text);
|
||||
void set_label_type_quota(string name);
|
||||
void lacalization();
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,123 +0,0 @@
|
||||
#include "view_filters.h"
|
||||
|
||||
View_filters::View_filters(/* args */){
|
||||
builder = Gtk::Builder::create_from_file(path_glade);
|
||||
this->settings();
|
||||
}
|
||||
|
||||
View_filters::~View_filters()
|
||||
{
|
||||
}
|
||||
|
||||
void View_filters::settings() {
|
||||
this->get_builder();
|
||||
this->lacalization();
|
||||
this->set_map_flag(chbFilterName);
|
||||
this->set_map_flag(chbFilterQuotas);
|
||||
this->set_map_flag(chbFilterSize);
|
||||
this->set_map_flag(chbFilterSoftLimitSize);
|
||||
this->set_map_flag(chbFilterHardLimitSize);
|
||||
this->set_map_flag(chbFilterHardLimitSizeDelay);
|
||||
this->set_map_flag(chbFilterFiles);
|
||||
this->set_map_flag(chbFilterSoftLimitFile);
|
||||
this->set_map_flag(chbFilterHardLimitFile);
|
||||
this->set_map_flag(chbFilterHardLimitFileDelay);
|
||||
this->event();
|
||||
}
|
||||
|
||||
void View_filters::get_builder() {
|
||||
builder->get_widget("wndFilters", wndFilters);
|
||||
builder->get_widget("chbFilterName", chbFilterName);
|
||||
builder->get_widget("chbFilterQuotas", chbFilterQuotas);
|
||||
builder->get_widget("chbFilterSize", chbFilterSize);
|
||||
builder->get_widget("chbFilterSoftLimitSize", chbFilterSoftLimitSize);
|
||||
builder->get_widget("chbFilterHardLimitSize", chbFilterHardLimitSize);
|
||||
builder->get_widget("chbFilterHardLimitSizeDelay", chbFilterHardLimitSizeDelay);
|
||||
builder->get_widget("chbFilterFiles", chbFilterFiles);
|
||||
builder->get_widget("chbFilterSoftLimitFile", chbFilterSoftLimitFile);
|
||||
builder->get_widget("chbFilterHardLimitFile", chbFilterHardLimitFile);
|
||||
builder->get_widget("chbFilterHardLimitFileDelay", chbFilterHardLimitFileDelay);
|
||||
builder->get_widget("lblFiltersHead", lblFiltersHead);
|
||||
builder->get_widget("btnFiltersSave", btnFiltersSave);
|
||||
builder->get_widget("btnFiltersCancel", btnFiltersCancel);
|
||||
lblFiltersHead->set_label(str_filters);
|
||||
}
|
||||
|
||||
void View_filters::show() {
|
||||
this->set_map_flag_false();
|
||||
wndFilters->show();
|
||||
}
|
||||
|
||||
void View_filters::lacalization() {
|
||||
/*
|
||||
chbFilterName->set_label(str_name);
|
||||
chbFilterQuotas->set_label(str_quotas);
|
||||
chbFilterSize->set_label(str_size);
|
||||
chbFilterSoftLimitSize->set_label(str_soft_limit_size);
|
||||
chbFilterHardLimitSize->set_label(str_hard_limit_size);
|
||||
chbFilterHardLimitSizeDelay->set_label(str_deferring_hard_limit_size);
|
||||
chbFilterFiles->set_label(str_files);
|
||||
chbFilterSoftLimitFile->set_label(str_soft_restriction_files);
|
||||
chbFilterHardLimitFile->set_label(str_severe_limitation_files);
|
||||
chbFilterHardLimitFileDelay->set_label(str_deferring_limit_files);
|
||||
*/
|
||||
}
|
||||
|
||||
void View_filters::event() {
|
||||
chbFilterName->signal_toggled().connect(
|
||||
sigc::bind<Gtk::CheckButton*> (sigc::mem_fun(*this,
|
||||
&View_filters::set_map_flag), chbFilterName));
|
||||
chbFilterQuotas->signal_toggled().connect(
|
||||
sigc::bind<Gtk::CheckButton*> (sigc::mem_fun(*this,
|
||||
&View_filters::set_map_flag), chbFilterQuotas));
|
||||
chbFilterSize->signal_toggled().connect(
|
||||
sigc::bind<Gtk::CheckButton*> (sigc::mem_fun(*this,
|
||||
&View_filters::set_map_flag), chbFilterSize));
|
||||
chbFilterSoftLimitSize->signal_toggled().connect(
|
||||
sigc::bind<Gtk::CheckButton*> (sigc::mem_fun(*this,
|
||||
&View_filters::set_map_flag), chbFilterSoftLimitSize));
|
||||
chbFilterHardLimitSize->signal_toggled().connect(
|
||||
sigc::bind<Gtk::CheckButton*> (sigc::mem_fun(*this,
|
||||
&View_filters::set_map_flag), chbFilterHardLimitSize));
|
||||
chbFilterHardLimitSizeDelay->signal_toggled().connect(
|
||||
sigc::bind<Gtk::CheckButton*> (sigc::mem_fun(*this,
|
||||
&View_filters::set_map_flag), chbFilterHardLimitSizeDelay));
|
||||
chbFilterFiles->signal_toggled().connect(
|
||||
sigc::bind<Gtk::CheckButton*> (sigc::mem_fun(*this,
|
||||
&View_filters::set_map_flag), chbFilterFiles));
|
||||
chbFilterSoftLimitFile->signal_toggled().connect(
|
||||
sigc::bind<Gtk::CheckButton*> (sigc::mem_fun(*this,
|
||||
&View_filters::set_map_flag), chbFilterSoftLimitFile));
|
||||
chbFilterHardLimitFile->signal_toggled().connect(
|
||||
sigc::bind<Gtk::CheckButton*> (sigc::mem_fun(*this,
|
||||
&View_filters::set_map_flag), chbFilterHardLimitFile));
|
||||
chbFilterHardLimitFileDelay->signal_toggled().connect(
|
||||
sigc::bind<Gtk::CheckButton*> (sigc::mem_fun(*this,
|
||||
&View_filters::set_map_flag), chbFilterHardLimitFileDelay));
|
||||
btnFiltersSave->signal_clicked().connect(sigc::mem_fun(*this,
|
||||
&View_filters::btn_save));
|
||||
btnFiltersCancel->signal_clicked().connect(sigc::mem_fun(*this,
|
||||
&View_filters::btn_cancel));
|
||||
}
|
||||
|
||||
void View_filters::set_map_flag(Gtk::CheckButton* check_button) {
|
||||
map_filters_flag[check_button->get_label()] = check_button->get_active();
|
||||
}
|
||||
|
||||
void View_filters::btn_save() {
|
||||
wndFilters->hide();
|
||||
}
|
||||
|
||||
void View_filters::btn_cancel() {
|
||||
wndFilters->hide();
|
||||
}
|
||||
|
||||
map<string, bool> View_filters::get_filters() {
|
||||
return map_filters_flag;
|
||||
}
|
||||
|
||||
void View_filters::set_map_flag_false() {
|
||||
for (auto& [key, value]: map_filters_flag) {
|
||||
map_filters_flag[key] = false;
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
#ifndef VIEW_FILTERS_H
|
||||
#define VIEW_FILTERS_H
|
||||
#include "../project_lib.h"
|
||||
#include "../var.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
class View_filters
|
||||
{
|
||||
private:
|
||||
map<string, bool> map_filters_flag;
|
||||
private:
|
||||
Glib::RefPtr<Gtk::Builder> builder;
|
||||
Gtk::Window *wndFilters;
|
||||
Gtk::CheckButton *chbFilterName;
|
||||
Gtk::CheckButton *chbFilterQuotas;
|
||||
Gtk::CheckButton *chbFilterSize;
|
||||
Gtk::CheckButton *chbFilterSoftLimitSize;
|
||||
Gtk::CheckButton *chbFilterHardLimitSize;
|
||||
Gtk::CheckButton *chbFilterHardLimitSizeDelay;
|
||||
Gtk::CheckButton *filtersHardSizeActivationFilterCheckbox;
|
||||
Gtk::CheckButton *chbFilterFiles;
|
||||
Gtk::CheckButton *chbFilterSoftLimitFile;
|
||||
Gtk::CheckButton *chbFilterHardLimitFile;
|
||||
Gtk::CheckButton *chbFilterHardLimitFileDelay;
|
||||
Gtk::Label *lblFiltersHead;
|
||||
Gtk::Button *btnFiltersSave;
|
||||
Gtk::Button *btnFiltersCancel;
|
||||
public:
|
||||
View_filters(/* args */);
|
||||
~View_filters();
|
||||
void lacalization();
|
||||
void event();
|
||||
void get_builder();
|
||||
void settings();
|
||||
void show();
|
||||
private:
|
||||
void set_map_flag(Gtk::CheckButton* check_button);
|
||||
void btn_save();
|
||||
void btn_cancel();
|
||||
void set_map_flag_false();
|
||||
map<string, bool> get_filters();
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -1,121 +0,0 @@
|
||||
#include "view_open_browser.h"
|
||||
|
||||
|
||||
View_open_browser* obj_open_browser;
|
||||
View_about* obj_about;
|
||||
|
||||
void wrapper_help_show(GtkWidget *self, char* link, gpointer user_data) {
|
||||
if (self && user_data) {}
|
||||
obj_open_browser->global_lick_doc = link;
|
||||
obj_about->aboutWindows->hide();
|
||||
obj_open_browser->temp_help_show();
|
||||
}
|
||||
|
||||
View_open_browser::View_open_browser(/* args */) {
|
||||
builder = Gtk::Builder::create_from_file(path_glade);
|
||||
}
|
||||
|
||||
View_open_browser::~View_open_browser() {
|
||||
}
|
||||
|
||||
void View_open_browser::settings() {
|
||||
obj_open_browser = this;
|
||||
this->get_builder();
|
||||
#ifdef WEBKIT_FOUND
|
||||
my_web_kit = WEBKIT_WEB_VIEW( webkit_web_view_new() );
|
||||
three = Glib::wrap(GTK_WIDGET(my_web_kit));
|
||||
wndWeb->add(*three);
|
||||
#endif
|
||||
this->lacalization();
|
||||
this->event();
|
||||
}
|
||||
|
||||
void View_open_browser::set_obj_about(View_about* obj_view_about) {
|
||||
this->obj_view_about = obj_view_about;
|
||||
obj_about = obj_view_about;
|
||||
}
|
||||
|
||||
void View_open_browser::show() {
|
||||
this->wndShowWeb->show();
|
||||
}
|
||||
void View_open_browser::get_builder() {
|
||||
#ifdef WEBKIT_FOUND
|
||||
builder->get_widget("wndWeb", wndWeb);
|
||||
#endif
|
||||
builder->get_widget("lblHeadeWndWeb", lblHeadeWndWeb);
|
||||
builder->get_widget("lblwebHeaderName", lblwebHeaderName);
|
||||
builder->get_widget("lblhelpText", lblhelpText);
|
||||
builder->get_widget("lblhelpHeader", lblhelpHeader);
|
||||
builder->get_widget("chkAlwaysOpenHelp", chkAlwaysOpenHelp);
|
||||
builder->get_widget("btnReadHelp", btnReadHelp);
|
||||
builder->get_widget("btnCancelHelp", btnCancelHelp);
|
||||
builder->get_widget("wndShowWeb", wndShowWeb);
|
||||
|
||||
}
|
||||
void View_open_browser::lacalization() {
|
||||
lblwebHeaderName->set_label(name_app);
|
||||
lblhelpText->set_text(redirected_documentation);
|
||||
btnReadHelp->set_label(read_online);
|
||||
btnCancelHelp->set_label(cancel);
|
||||
chkAlwaysOpenHelp->set_label(always_redirect);
|
||||
lblhelpHeader->set_text(read_documentation_web);
|
||||
}
|
||||
|
||||
void View_open_browser::event() {
|
||||
g_signal_connect(G_OBJECT(obj_view_about->aboutWindows->gobj()), "activate-link", G_CALLBACK(wrapper_help_show), NULL);
|
||||
btnCancelHelp->signal_clicked().connect([&]() {wndShowWeb->hide();});
|
||||
chkAlwaysOpenHelp->signal_toggled().connect([&]() {flag_open_browser = true;});
|
||||
btnReadHelp->signal_clicked().connect(sigc::mem_fun(*this, &View_open_browser::open_browser));
|
||||
}
|
||||
|
||||
void View_open_browser::temp_help_show() {
|
||||
if (flag_open_browser == true) {
|
||||
this->open_browser();
|
||||
}
|
||||
else {
|
||||
wndShowWeb->show_all();
|
||||
}
|
||||
}
|
||||
|
||||
void View_open_browser::open_browser() {
|
||||
#ifdef WEBKIT_FOUND
|
||||
if (my_web_kit) {
|
||||
gtk_widget_destroy(GTK_WIDGET(my_web_kit));
|
||||
}
|
||||
my_web_kit = WEBKIT_WEB_VIEW(webkit_web_view_new());
|
||||
three = Glib::wrap(GTK_WIDGET(my_web_kit));
|
||||
wndWeb->add(*three);
|
||||
webkit_web_view_load_uri(my_web_kit, _(global_lick_doc.c_str()));
|
||||
wndWeb->show_all();
|
||||
webkit_web_view_load_uri(my_web_kit, _(global_lick_doc.c_str()));
|
||||
wndWeb->show_all();
|
||||
webkit_web_view_load_uri(my_web_kit, _(global_lick_doc.c_str()));
|
||||
wndWeb->show_all();
|
||||
#else
|
||||
this->template_open_browser(global_lick_doc);
|
||||
#endif
|
||||
this->wndShowWeb->hide();
|
||||
}
|
||||
|
||||
int View_open_browser::template_open_browser(string str_link_doc) {
|
||||
string cmd = cmd_xdg + string(_(str_link_doc.c_str())) + " &";
|
||||
string buf = "";
|
||||
if (geteuid() == 0) {
|
||||
string response_user = getlogin();
|
||||
int size_s = std::snprintf(nullptr, 0, cmd_execute, response_user.c_str(), cmd.c_str()) + 1;
|
||||
auto size = static_cast<size_t>(size_s);
|
||||
std::unique_ptr<char[]> buf(new char[ size ]);
|
||||
std::snprintf(buf.get(), size, cmd_execute, response_user.c_str(), cmd.c_str());
|
||||
cmd = string(buf.get(), buf.get() + size - 1);
|
||||
}
|
||||
return system(cmd.c_str());
|
||||
|
||||
}
|
||||
void View_open_browser::open_help() {
|
||||
global_lick_doc = const_link_doc;
|
||||
temp_help_show();
|
||||
}
|
||||
|
||||
View_about* View_open_browser::get_about() {
|
||||
return obj_view_about;
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
#ifndef VIEW_OPEN_BROWSER_H
|
||||
#define VIEW_OPEN_BROWSER_H
|
||||
|
||||
#include "../project_lib.h"
|
||||
#include "view_about.h"
|
||||
#ifdef WEBKIT_FOUND
|
||||
#include <webkit2/webkit2.h>
|
||||
#endif
|
||||
#include "../var.h"
|
||||
|
||||
class View_open_browser {
|
||||
private:
|
||||
bool flag_open_browser = false;
|
||||
View_about* obj_view_about;
|
||||
private:
|
||||
Glib::RefPtr<Gtk::Builder> builder;
|
||||
Gtk::Button *btnReadHelp;
|
||||
Gtk::Button *btnCancelHelp;
|
||||
Gtk::CheckButton *chkAlwaysOpenHelp;
|
||||
Gtk::Label *lblwebHeaderName;
|
||||
Gtk::Label *lblhelpText;
|
||||
Gtk::Label *lblhelpHeader;
|
||||
Gtk::Label *lblHeadeWndWeb;
|
||||
public:
|
||||
string global_lick_doc;
|
||||
Gtk::Window *wndShowWeb;
|
||||
#ifdef WEBKIT_FOUND
|
||||
Gtk::Window *wndWeb;
|
||||
Gtk::Widget *three;
|
||||
WebKitWebView *my_web_kit = NULL;
|
||||
#endif
|
||||
public:
|
||||
View_open_browser(/* args */);
|
||||
~View_open_browser();
|
||||
void lacalization();
|
||||
void event();
|
||||
void get_builder();
|
||||
void settings();
|
||||
void show();
|
||||
void open_help();
|
||||
void temp_help_show();
|
||||
void set_path_glade(string str_path_glade);
|
||||
void set_obj_about(View_about* View_about);
|
||||
View_about* get_about();
|
||||
private:
|
||||
int template_open_browser(string str_link_doc);
|
||||
void open_browser();
|
||||
};
|
||||
void wrapper_help_show(GtkWidget *self, char* link, gpointer user_data);
|
||||
#endif
|
@ -0,0 +1,178 @@
|
||||
#include "view_check_user_table.h"
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
void table_u_g_set_fill_user_group() {
|
||||
int size = 0;
|
||||
g_object_ref(table_widgets->liststoreUsersGroups);
|
||||
gtk_list_store_clear(table_widgets->liststoreUsersGroups);
|
||||
gboolean active1 = !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(table_widgets->chkActivUsersGroup));
|
||||
if (strcmp(flag_u_g, "grpquota")==0) {
|
||||
gtk_button_set_label(GTK_BUTTON(table_widgets->chkActivUsersGroup), STR_CHK_LABEL_WRITE_ALL_GROUPS);
|
||||
gtk_label_set_label(GTK_LABEL(table_widgets->lblHeadQuotaUsersGroups), STR_GROUPS);
|
||||
char** array_groups = philos_list_group(&size,active1);
|
||||
table_u_g_fill_tree_view(array_groups, size);
|
||||
GtkTreeViewColumn* column = gtk_tree_view_get_column(GTK_TREE_VIEW(table_widgets->treeViewCheckUsersGroups), 1);
|
||||
gtk_tree_view_column_set_title(column, STR_GROUPS);
|
||||
}
|
||||
else if (strcmp(flag_u_g, "usrquota") == 0) {
|
||||
gtk_button_set_label(GTK_BUTTON(table_widgets->chkActivUsersGroup), STR_CHK_LABEL_WRITE_ALL_USERS);
|
||||
gtk_label_set_label(GTK_LABEL(table_widgets->lblHeadQuotaUsersGroups), STR_USERS);
|
||||
char** array_user = philos_list_user(&size, active1);
|
||||
table_u_g_fill_tree_view(array_user, size);
|
||||
}
|
||||
set_actors(_actors);
|
||||
}
|
||||
|
||||
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->chkActivUsersGroup = yon_gtk_builder_get_widget(builder,"chkActivUsersGroup");
|
||||
table_widgets->btnCancel = yon_gtk_builder_get_widget(builder,"quotegroupCancelButton1");
|
||||
table_widgets->btnSave = yon_gtk_builder_get_widget(builder,"quotegroupSaveButton1");
|
||||
table_widgets->lblHeadQuotaUsersGroups = yon_gtk_builder_get_widget(builder,"lblHeadQuotaUsersGroups");
|
||||
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"));
|
||||
table_u_g_set_fill_user_group();
|
||||
table_u_g_event();
|
||||
g_signal_connect(G_OBJECT(table_widgets->chkActivUsersGroup), "toggled", G_CALLBACK(table_u_g_set_fill_user_group), NULL);
|
||||
}
|
||||
|
||||
|
||||
void table_u_g_set_glade_path(char* _glade_path) {
|
||||
glade_path = _glade_path;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
void table_u_g_fill_tree_view(char** array, int size) {
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(table_widgets->liststoreUsersGroups);
|
||||
g_object_ref(table_widgets->liststoreUsersGroups);
|
||||
gtk_list_store_clear(table_widgets->liststoreUsersGroups);
|
||||
for (int i=0; i<size; i++){
|
||||
GtkTreeIter iter;
|
||||
gtk_list_store_append(table_widgets->liststoreUsersGroups,&iter);
|
||||
gtk_list_store_set(table_widgets->liststoreUsersGroups,&iter,
|
||||
0,0,
|
||||
1,array[i],
|
||||
-1);
|
||||
}
|
||||
gtk_tree_view_set_model(GTK_TREE_VIEW(table_widgets->treeViewCheckUsersGroups), model);
|
||||
}
|
||||
|
||||
void table_u_g_show(GtkWidget *self, char* glade_path) {
|
||||
if (table_widgets != NULL) {
|
||||
gtk_widget_show(table_widgets->Window);
|
||||
}
|
||||
else {
|
||||
setup_table_u_g(glade_path);
|
||||
gtk_widget_show(table_widgets->Window);
|
||||
}
|
||||
}
|
||||
void chk_toggled_user_group (
|
||||
GtkCellRendererToggle* self,
|
||||
gchar* path,
|
||||
gpointer user_data
|
||||
) {
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(table_widgets->liststoreUsersGroups);
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
vector* get_actors_table(vector* actors) {
|
||||
model_free_vector_string(actors);
|
||||
vectorFree(actors);
|
||||
actors = malloc(sizeof(vector));
|
||||
vector_init(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));
|
||||
}
|
||||
}
|
||||
return actors;
|
||||
}
|
||||
|
||||
void table_u_g_destroy(GtkWidget *self) {
|
||||
table_widgets = NULL;
|
||||
}
|
||||
|
||||
void table_u_g_localization(table_u_g *widgets) {
|
||||
|
||||
}
|
||||
|
||||
void table_u_g_on_hide_subwindow(GtkWidget *self) {
|
||||
gtk_widget_destroy(gtk_widget_get_toplevel(self));
|
||||
table_widgets = NULL;
|
||||
}
|
||||
|
||||
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)){
|
||||
char* user_group;
|
||||
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);
|
||||
}
|
||||
|
||||
void table_btn_block_save() {
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(table_widgets->liststoreUsersGroups);
|
||||
int valid = 1;
|
||||
int flag_activ = 0;
|
||||
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;
|
||||
gtk_tree_model_get(model,&iter,0,&is_active,-1);
|
||||
char* user_group;
|
||||
if (is_active){
|
||||
flag_activ = 1;
|
||||
}
|
||||
}
|
||||
gtk_widget_set_sensitive(table_widgets->btnSave,flag_activ);
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtkx.h>
|
||||
#include "model/ubl-utils.h"
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <libintl.h>
|
||||
#include <getopt.h>
|
||||
#include <libintl.h>
|
||||
#include "../compile/ubl-cmake.h"
|
||||
#include "model/model.h"
|
||||
#include "model/load.h"
|
||||
#include "ubl-strings.h"
|
||||
#include "model/my_device.h"
|
||||
|
||||
typedef struct {
|
||||
GtkWidget* btnCancel;
|
||||
GtkWidget* Window;
|
||||
GtkWidget* btnSave;
|
||||
GtkWidget* treeViewCheckUsersGroups;
|
||||
GtkListStore* liststoreUsersGroups;
|
||||
GtkCellRendererToggle* checkColUserGroup;
|
||||
GtkWidget* chkActivUsersGroup;
|
||||
GtkWidget* lblHeadQuotaUsersGroups;
|
||||
} table_u_g;
|
||||
|
||||
void table_u_g_table_u_g_event(table_u_g *widgets);
|
||||
void table_u_g_on_hide_subwindow(GtkWidget *self);
|
||||
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, 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);
|
||||
vector* 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
|
||||
);
|
||||
void table_btn_block_save();
|
@ -0,0 +1,201 @@
|
||||
#include "view_filters.h"
|
||||
char* flag_filters_u_g_p = NULL;
|
||||
filters_window *filters_widgets = NULL;
|
||||
GtkTreeView* _tree_view = NULL;
|
||||
const int len_user_group = 8;
|
||||
const int len_project = 10;
|
||||
gboolean flag_filters_user[8];
|
||||
gboolean flag_filters_group[8];
|
||||
gboolean flag_filters_project[10];
|
||||
filters_window *filters_setup_window(char* glade_path){
|
||||
if (filters_widgets == NULL) {
|
||||
filters_widgets = malloc(sizeof(filters_window));
|
||||
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
|
||||
filters_widgets->Window = yon_gtk_builder_get_widget(builder,"wndFilters");
|
||||
filters_widgets->chbFilterName = yon_gtk_builder_get_widget(builder,"chbFilterName");
|
||||
filters_widgets->chbFilterSoftLimitFile = yon_gtk_builder_get_widget(builder,"chbFilterSoftLimitFile");
|
||||
filters_widgets->chbFilterFiles = yon_gtk_builder_get_widget(builder,"chbFilterFiles");
|
||||
filters_widgets->chbFilterHardLimitSizeDelay = yon_gtk_builder_get_widget(builder,"chbFilterHardLimitSizeDelay");
|
||||
filters_widgets->chbFilterHardLimitSize = yon_gtk_builder_get_widget(builder,"chbFilterHardLimitSize");
|
||||
filters_widgets->chbFilterSoftLimitSize = yon_gtk_builder_get_widget(builder,"chbFilterSoftLimitSize");
|
||||
filters_widgets->chbFilterQuotas = yon_gtk_builder_get_widget(builder,"chbFilterQuotas");
|
||||
filters_widgets->chbFilterSize = yon_gtk_builder_get_widget(builder,"chbFilterSize");
|
||||
filters_widgets->btnFiltersCancel = yon_gtk_builder_get_widget(builder,"btnFiltersCancel");
|
||||
filters_widgets->btnFiltersSave = yon_gtk_builder_get_widget(builder,"btnFiltersSave");
|
||||
filters_widgets->chbFilterHardLimitFile = yon_gtk_builder_get_widget(builder,"chbFilterHardLimitFile");
|
||||
filters_widgets->chbFilterHardLimitFileDelay = yon_gtk_builder_get_widget(builder,"chbFilterHardLimitFileDelay");
|
||||
filters_widgets->chbProjectName = yon_gtk_builder_get_widget(builder,"chbProjectName");
|
||||
filters_widgets->chbFilterDevice = yon_gtk_builder_get_widget(builder,"chbFilterDevice");
|
||||
filters_widgets->chkFilterID = yon_gtk_builder_get_widget(builder,"chkFilterID");
|
||||
filters_widgets->chbFilterCatalog = yon_gtk_builder_get_widget(builder,"chbFilterCatalog");
|
||||
if (strcmp(flag_filters_u_g_p, "prjquota")==0) {
|
||||
gtk_widget_hide(filters_widgets->chbFilterName);
|
||||
}
|
||||
else {
|
||||
gtk_widget_hide(filters_widgets->chbProjectName);
|
||||
gtk_widget_hide(filters_widgets->chkFilterID);
|
||||
gtk_widget_hide(filters_widgets->chbFilterCatalog);
|
||||
}
|
||||
filters_event(filters_widgets);
|
||||
}
|
||||
filters_set_flag();
|
||||
return filters_widgets;
|
||||
}
|
||||
|
||||
gboolean* filters_get_flag_user() {
|
||||
flag_filters_user[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterName));
|
||||
flag_filters_user[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterDevice));
|
||||
flag_filters_user[2] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterSoftLimitSize));
|
||||
flag_filters_user[3] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitSize));
|
||||
flag_filters_user[4] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterSoftLimitFile));
|
||||
flag_filters_user[5] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitFile));
|
||||
flag_filters_user[6] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitSizeDelay));
|
||||
flag_filters_user[7] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitFileDelay));
|
||||
return flag_filters_user;
|
||||
}
|
||||
|
||||
|
||||
gboolean* filters_get_flag_group() {
|
||||
flag_filters_group[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterName));
|
||||
flag_filters_group[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterDevice));
|
||||
flag_filters_group[2] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterSoftLimitSize));
|
||||
flag_filters_group[3] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitSize));
|
||||
flag_filters_group[4] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterSoftLimitFile));
|
||||
flag_filters_group[5] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitFile));
|
||||
flag_filters_group[6] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitSizeDelay));
|
||||
flag_filters_group[7] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitFileDelay));
|
||||
return flag_filters_group;
|
||||
}
|
||||
|
||||
|
||||
gboolean* filters_get_flag_project() {
|
||||
flag_filters_project[0] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterDevice));
|
||||
flag_filters_project[1] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterCatalog));
|
||||
flag_filters_project[2] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chkFilterID));
|
||||
flag_filters_project[3] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbProjectName));
|
||||
flag_filters_project[4] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterSoftLimitSize));
|
||||
flag_filters_project[5] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitSize));
|
||||
flag_filters_project[6] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterSoftLimitFile));
|
||||
flag_filters_project[7] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitFile));
|
||||
flag_filters_project[8] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitSizeDelay));
|
||||
flag_filters_project[9] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitFileDelay));
|
||||
return flag_filters_project;
|
||||
}
|
||||
|
||||
void filters_set_name(char* _flag_filters_u_g_p) {
|
||||
flag_filters_u_g_p = _flag_filters_u_g_p;
|
||||
|
||||
}
|
||||
|
||||
void filters_get_tree_view(GtkWidget *tree_view) {
|
||||
_tree_view = GTK_TREE_VIEW(tree_view);
|
||||
}
|
||||
|
||||
void filters_tree_view_update() {
|
||||
int n_end = len_user_group;
|
||||
gboolean* array_flags = NULL;
|
||||
if (strcmp(flag_filters_u_g_p, "prjquota")==0) {
|
||||
n_end = len_project;
|
||||
array_flags = filters_get_flag_project();
|
||||
}
|
||||
else {
|
||||
n_end = len_user_group;
|
||||
if (strcmp(flag_filters_u_g_p, "usrquota")==0) {
|
||||
array_flags = filters_get_flag_user();
|
||||
}
|
||||
else {
|
||||
array_flags = filters_get_flag_group();
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < n_end; i++) {
|
||||
GtkTreeViewColumn* column = gtk_tree_view_get_column(_tree_view, i);
|
||||
gtk_tree_view_column_set_visible(column, array_flags[i]);
|
||||
}
|
||||
}
|
||||
void filters_save(GtkWidget *self) {
|
||||
filters_tree_view_update();
|
||||
filters_on_hide_subwindow(self);
|
||||
|
||||
}
|
||||
|
||||
void filters_event(filters_window *widgets) {
|
||||
g_signal_connect(G_OBJECT(widgets->btnFiltersSave), "clicked",G_CALLBACK(filters_save),widgets->Window);
|
||||
g_signal_connect(G_OBJECT(widgets->btnFiltersCancel), "clicked",G_CALLBACK(filters_on_hide_subwindow),widgets->Window);
|
||||
g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(filters_destroy), NULL);
|
||||
}
|
||||
|
||||
void filters_destroy(GtkWidget *self) {
|
||||
filters_widgets = NULL;
|
||||
}
|
||||
|
||||
void filters_localization(filters_window *widgets) {
|
||||
|
||||
}
|
||||
|
||||
void filters_on_hide_subwindow(GtkWidget *self) {
|
||||
gtk_widget_destroy(gtk_widget_get_toplevel(self));
|
||||
filters_widgets = NULL;
|
||||
}
|
||||
|
||||
filters_window *get_widget_filters() {
|
||||
return filters_widgets;
|
||||
}
|
||||
|
||||
void filters_show(GtkWidget *self, char* glade_path) {
|
||||
if (filters_widgets != NULL) {
|
||||
gtk_widget_show(filters_widgets->Window);
|
||||
}
|
||||
else {
|
||||
filters_setup_window(glade_path);
|
||||
gtk_widget_show(filters_widgets->Window);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void filters_init_flag() {
|
||||
for (int i=0; i<len_user_group;i++) {
|
||||
flag_filters_user[i] = 1;
|
||||
flag_filters_group[i] = 1;
|
||||
flag_filters_project[i] = 1;
|
||||
}
|
||||
flag_filters_project[8] = 1;
|
||||
flag_filters_project[9] = 1;
|
||||
}
|
||||
|
||||
void filters_set_flag() {
|
||||
gboolean* array_flags = NULL;
|
||||
if (strcmp(flag_filters_u_g_p, "prjquota")==0) {
|
||||
array_flags = flag_filters_project;
|
||||
}
|
||||
else {
|
||||
if (strcmp(flag_filters_u_g_p, "usrquota")==0) {
|
||||
array_flags = flag_filters_user;
|
||||
}
|
||||
else {
|
||||
array_flags = flag_filters_group;
|
||||
}
|
||||
}
|
||||
if (strcmp(flag_filters_u_g_p,"prjquota")) {
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterName),array_flags[0] );
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterDevice), array_flags[1]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterSoftLimitSize), array_flags[2]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitSize), array_flags[3]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterSoftLimitFile), array_flags[4]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitFile), array_flags[5]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitSizeDelay), array_flags[6]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitFileDelay), array_flags[7]);
|
||||
}
|
||||
else if (strcmp(flag_filters_u_g_p,"prjquota")==0) {
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterDevice),array_flags[0] );
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterCatalog), array_flags[1]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chkFilterID), array_flags[2]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbProjectName), array_flags[3]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterSoftLimitSize), array_flags[4]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitSize), array_flags[5]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterSoftLimitFile), array_flags[6]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitFile), array_flags[7]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitSizeDelay), array_flags[8]);
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filters_widgets->chbFilterHardLimitFileDelay), array_flags[9]);
|
||||
}
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
#ifndef VIEW_FILTERS_H
|
||||
#define VIEW_FILTERS_H
|
||||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtkx.h>
|
||||
#include "model/ubl-utils.h"
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <libintl.h>
|
||||
#include <getopt.h>
|
||||
#include <libintl.h>
|
||||
#include "../compile/ubl-cmake.h"
|
||||
#include "model/model.h"
|
||||
#include "model/load.h"
|
||||
|
||||
// Переменные
|
||||
typedef struct {
|
||||
GtkWidget* Window;
|
||||
GtkWidget* btnFiltersSave;
|
||||
GtkWidget* btnFiltersCancel;
|
||||
GtkWidget* chbFilterName;
|
||||
GtkWidget* chbFilterQuotas;
|
||||
GtkWidget* chbFilterSize;
|
||||
GtkWidget* chbFilterSoftLimitSize;
|
||||
GtkWidget* chbFilterHardLimitSize;
|
||||
GtkWidget* chbFilterHardLimitSizeDelay;
|
||||
GtkWidget* chbFilterFiles;
|
||||
GtkWidget* chbFilterSoftLimitFile;
|
||||
GtkWidget* chbFilterHardLimitFile;
|
||||
GtkWidget* chbFilterHardLimitFileDelay;
|
||||
GtkWidget* chbProjectName;
|
||||
GtkWidget* chbFilterDevice;
|
||||
GtkWidget* chkFilterID;
|
||||
GtkWidget* chbFilterCatalog;
|
||||
char* name;
|
||||
} filters_window;
|
||||
|
||||
// Функции
|
||||
filters_window *filters_setup_window(char* glade_path);
|
||||
void filters_event(filters_window *widgets);
|
||||
void filters_localization(filters_window *widgets);
|
||||
void filters_on_hide_subwindow(GtkWidget *self);
|
||||
filters_window *get_widget_filters();
|
||||
void filters_show(GtkWidget *self, char* glade_path);
|
||||
void filters_destroy(GtkWidget *self);
|
||||
void filters_init_flag();
|
||||
void filters_set_name(char* _flag_u_g_p);
|
||||
void filters_show(GtkWidget *self, char* glade_path);
|
||||
void filters_set_flag();
|
||||
void filters_get_tree_view(GtkWidget *tree_view);
|
||||
#endif
|
@ -0,0 +1,250 @@
|
||||
#include "view_set_disk.h"
|
||||
|
||||
view_device_set_window *obj_view_device_widgets = NULL;
|
||||
char* view_device_glade_path = NULL;
|
||||
int view_device_index = 0;
|
||||
char* view_device_set_add_edit = NULL;
|
||||
vector* vec_device = NULL;
|
||||
config_all* view_device_all_config_temp = NULL;
|
||||
|
||||
void set_view_device_menu(char* _set_add_edit) {
|
||||
view_device_set_add_edit = _set_add_edit;
|
||||
}
|
||||
void view_device_set_vector_device(vector* _vec_device) {
|
||||
vec_device = _vec_device;
|
||||
}
|
||||
view_device_set_window* get_widget_view_device() {
|
||||
return obj_view_device_widgets;
|
||||
}
|
||||
|
||||
void view_device_all_config(config_all* _all_config) {
|
||||
view_device_all_config_temp = _all_config;
|
||||
}
|
||||
|
||||
void view_device_set_index(int _index) {
|
||||
view_device_index = _index;
|
||||
}
|
||||
|
||||
view_device_set_window *view_device_setup_window_base(char* __glade_path) {
|
||||
view_device_glade_path = __glade_path;
|
||||
if (obj_view_device_widgets == NULL) {
|
||||
obj_view_device_widgets = malloc(sizeof(view_device_set_window));
|
||||
GtkBuilder *builder = gtk_builder_new_from_resource(__glade_path);
|
||||
obj_view_device_widgets->Window = yon_gtk_builder_get_widget(builder,"SetDeviceWindow");
|
||||
obj_view_device_widgets->btnSaveTempSave = yon_gtk_builder_get_widget(builder,"SetDeviceSaveButton");
|
||||
obj_view_device_widgets->btnTempCancel = yon_gtk_builder_get_widget(builder,"SetDeviceCancelButton");
|
||||
view_device_setup_window_custom(obj_view_device_widgets, builder);
|
||||
view_device_event(obj_view_device_widgets);
|
||||
}
|
||||
return obj_view_device_widgets;
|
||||
}
|
||||
view_device_set_window *view_device_setup_window_custom(view_device_set_window* view_device_view_device_widgets, GtkBuilder *builder) {
|
||||
obj_view_device_widgets->spinWeeksFile = yon_gtk_builder_get_widget(builder,"spinWeeksFile");
|
||||
obj_view_device_widgets->spinDaysFile = yon_gtk_builder_get_widget(builder,"spinDaysFile");
|
||||
obj_view_device_widgets->spinHoursFile = yon_gtk_builder_get_widget(builder,"spinHoursFile");
|
||||
obj_view_device_widgets->spinMinutesFile = yon_gtk_builder_get_widget(builder,"spinMinutesFile");
|
||||
|
||||
obj_view_device_widgets->spinWeeksSize = yon_gtk_builder_get_widget(builder,"spinWeeksSize");
|
||||
obj_view_device_widgets->spinDaysSize = yon_gtk_builder_get_widget(builder,"spinDaysSize");
|
||||
obj_view_device_widgets->spinHoursSize = yon_gtk_builder_get_widget(builder,"spinHoursSize");
|
||||
obj_view_device_widgets->spinMinutesSize = yon_gtk_builder_get_widget(builder,"spinMinutesSize");
|
||||
obj_view_device_widgets->lblNameDevice = yon_gtk_builder_get_widget(builder,"lblNameDevice");
|
||||
obj_view_device_widgets->cmbDeviceSetStatus = yon_gtk_builder_get_widget(builder,"cmbDeviceSetStatus");
|
||||
obj_view_device_widgets->DeviceCombo = yon_gtk_builder_get_widget(builder,"DeviceCombo");
|
||||
obj_view_device_widgets->lblHeadQuotasEditDeviceWindow = yon_gtk_builder_get_widget(builder,"lblHeadQuotasEditDeviceWindow");
|
||||
obj_view_device_widgets->boxBlockGuiAddEditDevice = yon_gtk_builder_get_widget(builder,"boxBlockGuiAddEditDevice");
|
||||
if (strcmp(view_device_set_add_edit, "add") == 0) {
|
||||
gtk_label_set_label(GTK_LABEL(obj_view_device_widgets->lblHeadQuotasEditDeviceWindow), STR_TITLE_ADD_QUOTAS);
|
||||
gtk_widget_hide(obj_view_device_widgets->lblNameDevice);
|
||||
device_fill_disk(obj_view_device_widgets->DeviceCombo,vec_device);
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(obj_view_device_widgets->cmbDeviceSetStatus),-1);
|
||||
}
|
||||
else {
|
||||
gtk_label_set_label(GTK_LABEL(obj_view_device_widgets->lblHeadQuotasEditDeviceWindow), STR_TITLE_EDIT_QUOTAS);
|
||||
gtk_widget_hide(obj_view_device_widgets->DeviceCombo);
|
||||
}
|
||||
view_device_fill_gui();
|
||||
view_device_set_combo_box_device();
|
||||
}
|
||||
|
||||
void view_device_show(GtkWidget *self, char* __glade_path) {
|
||||
if (obj_view_device_widgets != NULL) {
|
||||
gtk_widget_show(obj_view_device_widgets->Window);
|
||||
}
|
||||
else {
|
||||
view_device_setup_window_base(__glade_path);
|
||||
gtk_widget_show(obj_view_device_widgets->Window);
|
||||
}
|
||||
}
|
||||
|
||||
void view_device_save() {
|
||||
view_device_get_gui_data();
|
||||
view_device_on_destroy_subwindow(obj_view_device_widgets->Window);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void view_device_event(view_device_set_window* view_device_view_device_widgets) {
|
||||
g_signal_connect(G_OBJECT(obj_view_device_widgets->DeviceCombo), "changed", G_CALLBACK(view_device_set_combo_box_device), NULL);
|
||||
g_signal_connect(G_OBJECT(obj_view_device_widgets->Window), "destroy", G_CALLBACK(view_device_destroy), obj_view_device_widgets->Window);
|
||||
g_signal_connect(G_OBJECT(obj_view_device_widgets->btnTempCancel),"clicked",G_CALLBACK(view_device_on_destroy_subwindow), NULL);
|
||||
g_signal_connect(G_OBJECT(obj_view_device_widgets->spinWeeksSize), "value-changed", G_CALLBACK(view_device_update_gui_spin_time), NULL);
|
||||
g_signal_connect(G_OBJECT(obj_view_device_widgets->spinDaysSize), "value-changed", G_CALLBACK(view_device_update_gui_spin_time), NULL);
|
||||
g_signal_connect(G_OBJECT(obj_view_device_widgets->spinHoursSize), "value-changed", G_CALLBACK(view_device_update_gui_spin_time), NULL);
|
||||
g_signal_connect(G_OBJECT(obj_view_device_widgets->spinMinutesSize), "value-changed", G_CALLBACK(view_device_update_gui_spin_time), NULL);
|
||||
g_signal_connect(G_OBJECT(obj_view_device_widgets->spinWeeksFile), "value-changed", G_CALLBACK(view_device_update_gui_spin_time), NULL);
|
||||
g_signal_connect(G_OBJECT(obj_view_device_widgets->spinDaysFile), "value-changed", G_CALLBACK(view_device_update_gui_spin_time), NULL);
|
||||
g_signal_connect(G_OBJECT(obj_view_device_widgets->spinHoursFile), "value-changed", G_CALLBACK(view_device_update_gui_spin_time), NULL);
|
||||
g_signal_connect(G_OBJECT(obj_view_device_widgets->spinMinutesFile), "value-changed", G_CALLBACK(view_device_update_gui_spin_time), NULL);
|
||||
}
|
||||
|
||||
void view_device_set_combo_box_device() {
|
||||
if (strcmp(view_device_set_add_edit, "add")==0) {
|
||||
int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(obj_view_device_widgets->DeviceCombo));
|
||||
if (disk_id == -1) {
|
||||
gtk_widget_set_sensitive(obj_view_device_widgets->boxBlockGuiAddEditDevice, 0);
|
||||
gtk_widget_set_sensitive(obj_view_device_widgets->btnSaveTempSave, 0);
|
||||
}
|
||||
else {
|
||||
gtk_widget_set_sensitive(obj_view_device_widgets->boxBlockGuiAddEditDevice, 1);
|
||||
gtk_widget_set_sensitive(obj_view_device_widgets->btnSaveTempSave, 1);
|
||||
int status_id = gtk_combo_box_get_active(GTK_COMBO_BOX(obj_view_device_widgets->cmbDeviceSetStatus));
|
||||
if (status_id == -1) {
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(obj_view_device_widgets->cmbDeviceSetStatus), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void view_device_on_destroy_subwindow(GtkWidget *self) {
|
||||
if (self) {
|
||||
gtk_widget_destroy(gtk_widget_get_toplevel(self));
|
||||
obj_view_device_widgets = NULL;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void view_device_destroy(GtkWidget *self) {
|
||||
if (self) {
|
||||
obj_view_device_widgets = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void view_device_update_gui_spin_time() {
|
||||
|
||||
}
|
||||
|
||||
void view_device_fill_gui() {
|
||||
size_t second_file = 0;
|
||||
size_t second_size = 0;
|
||||
if (strcmp(view_device_set_add_edit, "edit") == 0) {
|
||||
if (view_device_index != -1) {
|
||||
disk_status* _config = (disk_status*)vec_device->pfVectorGet(vec_device, view_device_index);
|
||||
second_size = _config->deferring_size;
|
||||
second_file = _config->deferring_file;
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(obj_view_device_widgets->cmbDeviceSetStatus), _config->status);
|
||||
gtk_label_set_label(GTK_LABEL(obj_view_device_widgets->lblNameDevice), _config->device);
|
||||
}
|
||||
}
|
||||
view_device_set_time_spin(second_file, second_size);
|
||||
}
|
||||
void view_device_get_spin_time(size_t* second_file, size_t* second_size) {
|
||||
int spin_week_size = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(obj_view_device_widgets->spinWeeksSize));
|
||||
int spin_days_size = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(obj_view_device_widgets->spinDaysSize));
|
||||
int spin_hours_size = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(obj_view_device_widgets->spinHoursSize));
|
||||
int spin_minutes_size = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(obj_view_device_widgets->spinMinutesSize));
|
||||
*second_size = spin_week_size*7*24*3600+spin_days_size*24*3600+spin_hours_size*3600+spin_minutes_size*60;
|
||||
int spin_week_file = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(obj_view_device_widgets->spinWeeksFile));
|
||||
int spin_days_file = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(obj_view_device_widgets->spinDaysFile));
|
||||
int spin_hours_file = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(obj_view_device_widgets->spinHoursFile));
|
||||
int spin_minutes_file = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(obj_view_device_widgets->spinMinutesFile));
|
||||
*second_file = spin_week_file*7*24*3600+spin_days_file*24*3600+spin_hours_file*3600+spin_minutes_file*60;
|
||||
view_device_set_time_spin(*second_file, *second_size);
|
||||
}
|
||||
|
||||
void view_device_get_gui_data() {
|
||||
char* disk = NULL;
|
||||
disk_status* _config = NULL;
|
||||
int status_id = gtk_combo_box_get_active(GTK_COMBO_BOX(obj_view_device_widgets->cmbDeviceSetStatus));
|
||||
if (status_id != -1) {
|
||||
size_t second_file = 0;
|
||||
size_t second_size = 0;
|
||||
view_device_get_spin_time(&second_file, &second_size);
|
||||
if (view_device_index != -1) {
|
||||
_config = (disk_status*)vec_device->pfVectorGet(vec_device, view_device_index);
|
||||
|
||||
}
|
||||
else {
|
||||
_config = malloc(sizeof(disk_status));
|
||||
disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(obj_view_device_widgets->DeviceCombo));
|
||||
if (get_device_vec()->vectorList.total > 0) {
|
||||
for (int index = 0; index < get_device_vec()->vectorList.total; index++)
|
||||
{
|
||||
device_config* obj_device_config = (device_config*)get_device_vec()->pfVectorGet(get_device_vec(), index);
|
||||
if (strstr(disk, obj_device_config->name_disk)) {
|
||||
_config->device = yon_char_new(obj_device_config->name_disk);
|
||||
_config->fs = yon_char_new(obj_device_config->file_system);
|
||||
_config->mount_point = yon_char_new(obj_device_config->mounted);
|
||||
_config->name = yon_char_new(obj_device_config->type_dick);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
_config->deferring_size = second_size;
|
||||
_config->deferring_file = second_file;
|
||||
if (strcmp(view_device_set_add_edit, "add") == 0) {
|
||||
if (status_id == 0) {
|
||||
_config->status = 1;
|
||||
}
|
||||
else {
|
||||
_config->status = status_id;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (status_id == 0) {
|
||||
yon_window_config_erase_custom_parameter(_config->device, "deferring_size");
|
||||
yon_window_config_erase_custom_parameter(_config->device, "deferring_file");
|
||||
yon_window_config_erase_custom_parameter(_config->device, _config->device);
|
||||
model_search_disk_remove(&view_device_all_config_temp->v_user, &view_device_all_config_temp->v_remove, _config->device);
|
||||
model_search_disk_remove(&view_device_all_config_temp->v_group, &view_device_all_config_temp->v_remove, _config->device);
|
||||
model_search_disk_remove_project(&view_device_all_config_temp->v_project,&view_device_all_config_temp->v_disk_status, &view_device_all_config_temp->v_remove, _config->device);
|
||||
_config->status = 1;
|
||||
}
|
||||
else {
|
||||
_config->status = status_id;
|
||||
}
|
||||
}
|
||||
if (view_device_index == -1) {
|
||||
vec_device->pfVectorAdd(vec_device, _config);
|
||||
}
|
||||
}
|
||||
}
|
||||
void view_device_set_time_spin(size_t seconds_file, size_t seconds_size) {
|
||||
me_time t_file = time_convert(seconds_file);
|
||||
me_time t_size = time_convert(seconds_size);
|
||||
if (seconds_file!=-1) {
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinWeeksFile), t_file.weeks);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinDaysFile), t_file.days);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinHoursFile), t_file.hours);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinMinutesFile), t_file.minutes);
|
||||
}
|
||||
else {
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinWeeksFile), 0);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinDaysFile), 0);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinHoursFile), 0);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinMinutesFile), 0);
|
||||
}
|
||||
if (seconds_size!=-1) {
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinWeeksSize), t_size.weeks);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinDaysSize), t_size.days);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinHoursSize), t_size.hours);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinMinutesSize), t_size.minutes);
|
||||
}
|
||||
else {
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinWeeksSize), 0);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinDaysSize), 0);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinHoursSize), 0);
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(obj_view_device_widgets->spinMinutesSize), 0);
|
||||
}
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtkx.h>
|
||||
#include "model/ubl-utils.h"
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <libintl.h>
|
||||
#include <getopt.h>
|
||||
#include <libintl.h>
|
||||
#include "../compile/ubl-cmake.h"
|
||||
#include "model/model.h"
|
||||
#include "model/load.h"
|
||||
#include "model/my_device.h"
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
GtkWidget* Window;
|
||||
GtkWidget* btnSaveTempSave;
|
||||
GtkWidget* btnTempCancel;
|
||||
|
||||
GtkWidget* spinWeeksFile;
|
||||
GtkWidget* spinDaysFile;
|
||||
GtkWidget* spinHoursFile;
|
||||
GtkWidget* spinMinutesFile;
|
||||
|
||||
GtkWidget* spinWeeksSize;
|
||||
GtkWidget* spinDaysSize;
|
||||
GtkWidget* spinHoursSize;
|
||||
GtkWidget* spinMinutesSize;
|
||||
GtkWidget* lblNameDevice;
|
||||
GtkWidget* DeviceCombo;
|
||||
GtkWidget* cmbDeviceSetStatus;
|
||||
GtkWidget* lblHeadQuotasEditDeviceWindow;
|
||||
GtkWidget* boxBlockGuiAddEditDevice;
|
||||
char* name;
|
||||
} view_device_set_window;
|
||||
|
||||
view_device_set_window* get_widget_view_device();
|
||||
void view_device_get_gui_data();
|
||||
void view_device_all_config(config_all* _all_config);
|
||||
void view_device_get_vector_u_g_p(vector* _vec_u_g_p);
|
||||
void view_device_set_time_spin(size_t seconds_file, size_t seconds_size);
|
||||
void view_device_update_gui_spin_time();
|
||||
void view_device_fill_gui();
|
||||
void view_device_set_index(int _index);
|
||||
void set_view_device_menu(char* _set_add_edit);
|
||||
void view_device_set_combo_box_device();
|
||||
void view_device_set_vector_device(vector* _vec_device);
|
||||
void set_view_device_menu(char* _set_add_edit);
|
||||
void view_device_show(GtkWidget *self, char* __glade_path);
|
||||
void view_device_event(view_device_set_window* view_device_view_device_widgets);
|
||||
void view_device_on_destroy_subwindow(GtkWidget *self);
|
||||
void view_device_destroy(GtkWidget *self);
|
||||
view_device_set_window *view_device_setup_window_base(char* __glade_path);
|
||||
view_device_set_window *view_device_setup_window_custom(view_device_set_window* view_device_view_device_widgets, GtkBuilder *builder);
|
@ -0,0 +1,51 @@
|
||||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtkx.h>
|
||||
#include "model/ubl-utils.h"
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <libintl.h>
|
||||
#include <getopt.h>
|
||||
#include <libintl.h>
|
||||
#include "../compile/ubl-cmake.h"
|
||||
#include "model/model.h"
|
||||
#include "model/load.h"
|
||||
#include "view_check_user_table.h"
|
||||
|
||||
void temp_set_index(int _index);
|
||||
temp_set_window* get_widget_temp();
|
||||
void set_disk(char* _disk);
|
||||
temp_set_window *temp_setup_window_base(char* _glade_path);
|
||||
void temp_on_destroy_subwindow(GtkWidget *self);
|
||||
void temp_destroy(GtkWidget *self);
|
||||
void temp_show(GtkWidget *self, char* _glade_path);
|
||||
void temp_init_windows();
|
||||
void temp_event(temp_set_window* temp_widgets);
|
||||
void temp_localization(temp_set_window* temp_widgets);
|
||||
void btn_ok_file_manager(GtkWidget *self);
|
||||
void set_temp_menu(char* _flag_u_g_p, char* _set_add_edit);
|
||||
void destroy_file_manager(GtkWidget *self);
|
||||
void show_file_manger(temp_set_window* temp_widgets, GtkBuilder *builder);
|
||||
temp_set_window *temp_setup_window_custom(temp_set_window* temp_widgets, GtkBuilder *builder);
|
||||
void wrapper_show_file_manager();
|
||||
void event_toggled_all();
|
||||
void set_all_config(config_all* _all_config);
|
||||
void set_widget_config(GtkWidget* check, GtkWidget* spin, GtkWidget* combo, size_t* value, int* mem_size);
|
||||
void set_edit_gui_data_base(config_all* all_config, int index);
|
||||
config_u_g_p* get_temp_gui_data_base(config_u_g_p* _config);
|
||||
void get_add_gui_data_base(config_all* all_config);
|
||||
void get_edit_gui_data_base(config_all* all_config, int index);
|
||||
void set_widget(GtkWidget* check, GtkWidget* spin, GtkWidget* combo, int value_spin, int pow_mem_size);
|
||||
int generate_id(vector* _vec_temp, int max_id);
|
||||
void wrapper_generate_id();
|
||||
int check_generate(vector* _vec_temp, int max_id);
|
||||
void check_generate_id();
|
||||
void set_activ_project_id();
|
||||
int wrapper_check_save();
|
||||
void block_btn_save();
|
||||
int table_check_save();
|
||||
void temp_settings();
|
||||
void show_warning_no_fill(char* text_mess);
|
||||
void update_max_size_spin(GtkWidget *self, int* flag);
|
||||
void temp_on_set_combo_box_device();
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
@ -1,154 +1,108 @@
|
|||||||
.textHead{
|
|||||||
text-shadow: 2px 2px @theme_bg_color;
|
|||||||
color: @theme_text_color;
|
|||||||
}
|
|||||||
.boxInfoMessError{
|
|||||||
background-color: #ea9999;
|
|||||||
}
|
|||||||
.boxInfoMessOK{
|
|||||||
background-color: #f3f0ac;
|
|||||||
}
|
|||||||
.bannerbackground {
|
|||||||
background-color: #404040;
|
|||||||
}
|
|||||||
.view_app {
|
|||||||
background-color: @theme_bg_color;
|
|||||||
}
|
|||||||
.view_app.view.cell:selected {
|
|||||||
background-color:@theme_selected_bg_color;
|
|||||||
color:@theme_selected_text_color;
|
|||||||
transition: 10ms ease-out;
|
|||||||
border-radius: 3px;
|
|||||||
}
|
|||||||
#GnomeIcon{
|
|||||||
border-style:solid;
|
|||||||
border-bottom-width: 1px;
|
|||||||
border-image: linear-gradient(90deg, alpha(@theme_text_color,0.4) 55%, alpha(@theme_bg_color, 0) 100%);
|
|||||||
border-image-slice: 1;
|
|||||||
}
|
|||||||
|
|||||||
#SepIcon{
|
|||||||
background-color: alpha(@theme_text_color, 0.6);
|
|||||||
}
|
|||||||
|
|||||||
#iconlabel {
|
|||||||
font-size:14px;
|
|||||||
font-weight: bold;
|
|||||||
|
|||||||
}
|
|||||||
.roundborder * {
|
|||||||
border-width:0px;
|
|||||||
border-radius:5px;
|
|||||||
.thin {
|
|||||||
margin:0px;
|
|||||||
padding:0px;
|
|||||||
}
|
|||||||
.noborder {
|
|||||||
border: none;
|
|||||||
border:none;
|
|||||||
}
|
|||||||
.menu:hover {
|
|||||||
border-color:alpha(@theme_text_color, 0.01);
|
|||||||
.nobackground {
|
|||||||
background:transparent;
|
|||||||
}
|
|||||||
.menu {
|
|||||||
border-color:alpha(@theme_text_color, 0.01);
|
|||||||
.nobackground:active {
|
|||||||
background:transparent;
|
|||||||
}
|
|||||||
.menu:hover >* {
|
|||||||
border-color:alpha(@theme_text_color, 0.01);
|
|||||||
}
|
|||||||
.menuitembottom{
|
|||||||
margin-top:0px;
|
|||||||
margin-bottom:3px;
|
|||||||
}
|
|||||||
.menuitemmiddle{
|
|||||||
margin-top:0px;
|
|||||||
margin-bottom:0px;
|
|||||||
.textHead{
|
|||||||
text-shadow: 2px 2px @theme_bg_color;
|
|||||||
color: @theme_text_color;
|
|||||||
}
|
|||||||
|
|||||||
.menuitemtop{
|
|||||||
margin-bottom:0px;
|
|||||||
}
|
|||||||
.menuitemtop *{
|
|||||||
margin:2px 2px 0 2px;
|
|||||||
padding: 5px 10px 3px 5px;
|
|||||||
}
|
|||||||
.menuitemmiddle *{
|
|||||||
margin:0 2px 0 2px;
|
|||||||
padding: 3px 10px 3px 5px;
|
|||||||
.inherited>* {
|
|||||||
border:none;
|
|||||||
background:inherit;
|
|||||||
}
|
|||||||
.menuitembottom *{
|
|||||||
margin:0 2px 2px 2px;
|
|||||||
padding: 3px 10px 5px 5px;
|
|||||||
.workingbg {
|
|||||||
background:@theme_base_color;
|
|||||||
}
|
|||||||
.menuitemtop:hover {
|
|||||||
background:@theme_bg_color;
|
|||||||
border-color:inherit;
|
|||||||
border-left-width:inherit;
|
|||||||
border-right-width:inherit;
|
|||||||
}
|
|||||||
.menuitemmiddle:hover {
|
|||||||
background:@theme_bg_color;
|
|||||||
border-color:inherit;
|
|||||||
border-left-width:inherit;
|
|||||||
border-right-width:inherit;
|
|||||||
}
|
|||||||
.menuitembottom:hover {
|
|||||||
background:@theme_bg_color;
|
|||||||
border-color:inherit;
|
|||||||
border-left-width:inherit;
|
|||||||
border-right-width:inherit;
|
|||||||
.menuitembottom{
|
|||||||
margin-top:0px;
|
|||||||
margin-bottom:3px;
|
|||||||
border-color:inherit;
|
|||||||
border-left-width:inherit;
|
|||||||
border-right-width:inherit;
|
|||||||
}
|
|||||||
.menuitemmiddle{
|
|||||||
margin-top:0px;
|
|||||||
margin-bottom:0px;
|
|||||||
border-color:inherit;
|
|||||||
border-left-width:inherit;
|
|||||||
border-right-width:inherit;
|
|||||||
}
|
|||||||
|
|||||||
}
|
|||||||
.menuitemtop:hover* {
|
|||||||
margin:2px 2px 0 2px;
|
|||||||
padding: 5px 10px 3px 5px;
|
|||||||
background:@theme_selected_bg_color;
|
|||||||
border-radius:2px;
|
|||||||
}
|
|||||||
.menuitemmiddle:hover* {
|
|||||||
margin:0 2px 0 2px;
|
|||||||
padding: 3px 10px 3px 5px;
|
|||||||
background:@theme_selected_bg_color;
|
|||||||
border-radius:2px;
|
|||||||
}
|
|||||||
.menuitembottom:hover* {
|
|||||||
margin:0 2px 2px 2px;
|
|||||||
padding: 3px 10px 5px 5px;
|
|||||||
background:@theme_selected_bg_color;
|
|||||||
border-radius:2px;
|
|||||||
}
|
|||||||
|
|||||||
.workingbg, #workingbg {
|
|||||||
background-color:@theme_base_color;
|
|||||||
}
|
|||||||
.workingbg.view.cell:selected {
|
|||||||
background-color:@theme_selected_bg_color;
|
|||||||
}
|
|||||||
.workingbg.view.cell:hover {
|
|||||||
background-color:darker(@theme_selected_bg_color);
|
|||||||
color:@theme_selected_text_color;
|
|||||||
border-radius:3px;
|
|||||||
}
|
|||||||
.bkim {
|
|||||||
transition: 200ms ease-out;
|
|||||||
background-image: none;
|
|||||||
}
|
|||||||
.noborder{
|
|||||||
border:none;
|
|||||||
}
|
|||||||
|
|||||||
.bkim{
|
|||||||
opacity:0.99;
|
|||||||
border:none;
|
|||||||
.menuitemtop{
|
|||||||
margin-bottom:0px;
|
|||||||
border-color:inherit;
|
|||||||
border-top-width:inherit;
|
|||||||
border-left-width:inherit;
|
|||||||
border-right-width:inherit;
|
|||||||
}
|
|||||||
.menuitemtop>*{
|
|||||||
margin:2px 2px 0 2px;
|
|||||||
padding: 3px 10px 3px 5px;
|
|||||||
border:transparent;
|
|||||||
}
|
|||||||
.menuitemmiddle>*{
|
|||||||
margin:0 2px 0 2px;
|
|||||||
padding: 3px 10px 3px 5px;
|
|||||||
border:transparent;
|
|||||||
}
|
|||||||
.menuitembottom>*{
|
|||||||
margin:0 2px 2px 2px;
|
|||||||
padding: 3px 10px 3px 5px;
|
|||||||
}
|
|||||||
.menuitemtop:hover {
|
|||||||
background:@theme_bg_color;
|
|||||||
border-color:inherit;
|
|||||||
border-top-width:inherit;
|
|||||||
border-left-width:inherit;
|
|||||||
border-right-width:inherit;
|
|||||||
}
|
|||||||
.menuitemmiddle:hover {
|
|||||||
background:@theme_bg_color;
|
|||||||
border-color:inherit;
|
|||||||
border-left-width:inherit;
|
|||||||
border-right-width:inherit;
|
|||||||
}
|
|||||||
.menuitembottom:hover {
|
|||||||
background:@theme_bg_color;
|
|||||||
border-color:inherit;
|
|||||||
border-bottom-width:0px;
|
|||||||
border-left-width:inherit;
|
|||||||
border-right-width:inherit;
|
|||||||
|
|||||||
}
|
|||||||
.menuitemtop:hover>* {
|
|||||||
margin:2px 2px 0 2px;
|
|||||||
padding: 3px 10px 3px 5px;
|
|||||||
background:@theme_selected_bg_color;
|
|||||||
border-radius:2px;
|
|||||||
}
|
|||||||
.menuitemmiddle:hover>* {
|
|||||||
user-166
commented 2 years ago
Review
Закомментированные строки свойств стиля. |
|||||||
margin:0 2px 0px 2px;
|
|||||||
padding: 3px 10px 3px 5px;
|
|||||||
background:@theme_selected_bg_color;
|
|||||||
border-radius:2px;
|
|||||||
}
|
|||||||
.menuitembottom:hover>* {
|
|||||||
margin:0 2px 2px 2px;
|
|||||||
padding: 3px 10px 3px 5px;
|
|||||||
background:@theme_selected_bg_color;
|
|||||||
border-radius:2px;
|
|||||||
}
|
|||||||
.boxInfoMessError{
|
|||||||
background-color: #ea9999;
|
|||||||
}
|
|||||||
|
|||||||
.bkim_no_plug{
|
|||||||
background-color: transparent;
|
|||||||
opacity:0.99;
|
|||||||
}
|
|||||||
.thin{
|
|||||||
margin:0px;
|
|||||||
padding: 0px;
|
|||||||
}
|
|||||||
.nobg{
|
|||||||
background: none;
|
|||||||
}
|
|||||||
.addbg * {
|
|||||||
background-color: @theme_bg_color;
|
|||||||
.boxInfoMessOK{
|
|||||||
background-color: #f3f0ac;
|
|||||||
}
|
@ -1,15 +1,15 @@
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Name=Setting user quotas
|
||||
Name[ru]=Настройка квот пользователей
|
||||
GenericName=Setting user quotas
|
||||
GenericName[ru]=Настройка квот пользователей
|
||||
Comment=Configuring disk quota settings for system groups and users
|
||||
Comment[ru]=Настройка параметров дисковых квот для системных групп и пользователей системы
|
||||
Name=ubl-settings-diskquota
|
||||
Name[ru]=Дисковые квоты
|
||||
GenericName=ubl-settings-diskquota
|
||||
GenericName[ru]=Дисковые квоты
|
||||
Comment=Configuring disk quota settings for groups and users of the system
|
||||
Comment[ru]=Настройка параметров дисковых квот для групп и пользователей системы
|
||||
Type=Application
|
||||
Exec=pkexec ubl-settings-diskquota
|
||||
Icon=com.ublinux.ubl-settings-diskquota
|
||||
Terminal=false
|
||||
X-XfcePluggable=true
|
||||
X-UBLPluggable=true
|
||||
Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;X-UBL-SettingsManager;X-UBL-SystemSettings;
|
||||
Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;X-UBL-SettingsManager;X-UBL-Personal-Settings;
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue
Флаг отладки!
От файл нужен для разработки, он при компиляции в прод не участвует.
Понял. Вопрос снят.