You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
375 lines
15 KiB
375 lines
15 KiB
#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 = 0;
|
|
|
|
void wrapper_filters_user_show() {
|
|
filters_set_name("user");
|
|
filters_show(NULL, glade_path);
|
|
}
|
|
void wrapper_filters_group_show() {
|
|
filters_set_name("group");
|
|
|
|
filters_show(NULL, glade_path);
|
|
}
|
|
void wrapper_filters_project_show() {
|
|
filters_set_name("project");
|
|
filters_show(NULL, glade_path);
|
|
}
|
|
|
|
void wrapper_add_user_show() {
|
|
set_temp_menu("user", "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("user", "edit");
|
|
temp_set_index(index_selected);
|
|
set_all_config(all_config);
|
|
temp_show(NULL, glade_path);
|
|
set_vector(&all_config->v_user);
|
|
set_edit_gui_data_base(all_config, index);
|
|
int i = 0;
|
|
g_signal_connect(G_OBJECT(get_widget_temp()->btnSaveTempSave),"clicked",G_CALLBACK(entry_user_disk),&i);
|
|
}
|
|
|
|
void wrapper_add_group_show() {
|
|
set_temp_menu("group", "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("group", "edit");
|
|
temp_set_index(index_selected);
|
|
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("project", "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() {
|
|
int index = wrapper_select_tree_view(&cfg_custom_gui.project);
|
|
set_temp_menu("project", "edit");
|
|
temp_set_index(index_selected);
|
|
set_all_config(all_config);
|
|
temp_show(NULL, glade_path);
|
|
set_vector(&all_config->v_project);
|
|
set_edit_gui_data_base(all_config, index);
|
|
int i = 0;
|
|
g_signal_connect(G_OBJECT(get_widget_temp()->btnSaveTempSave),"clicked",G_CALLBACK(entry_project_disk),&i);
|
|
}
|
|
|
|
|
|
|
|
void entry_user_disk(GtkWidget *self,int* flag_update) {
|
|
char* activ_text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(cfg_custom_gui.user.comboBox));
|
|
activ_text= yon_char_divide_search(activ_text, " ", -1);
|
|
int find = fill_tree_view_user_group(all_config, activ_text, &cfg_custom_gui.user,"usrquota", 0);
|
|
if (find >= 0) {
|
|
g_object_ref(cfg_custom_gui.user.liststore);
|
|
gtk_list_store_clear(cfg_custom_gui.user.liststore);
|
|
}
|
|
if (flag_update) {
|
|
temp_on_destroy_subwindow(self);
|
|
}
|
|
}
|
|
void entry_groups_disk(GtkWidget *self,int* flag_update) {
|
|
char* activ_text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(cfg_custom_gui.group.comboBox));
|
|
activ_text= yon_char_divide_search(activ_text, " ", -1);
|
|
int find = fill_tree_view_user_group(all_config, activ_text, &cfg_custom_gui.group,"grpquota", 0);
|
|
if (find >= 0) {
|
|
g_object_ref(cfg_custom_gui.group.liststore);
|
|
gtk_list_store_clear(cfg_custom_gui.group.liststore);
|
|
}
|
|
if (flag_update) {
|
|
temp_on_destroy_subwindow(self);
|
|
}
|
|
|
|
}
|
|
void entry_project_disk(GtkWidget *self,int* flag_update) {
|
|
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);
|
|
}
|
|
if (flag_update) {
|
|
temp_on_destroy_subwindow(self);
|
|
}
|
|
}
|
|
|
|
void tree_view_select_user(GtkWidget* self) {
|
|
tree_view_select(NULL,&all_config->v_user , &cfg_custom_gui.user);
|
|
}
|
|
void tree_view_select_group(GtkWidget* sel) {
|
|
tree_view_select(NULL,&all_config->v_group ,&cfg_custom_gui.group);
|
|
}
|
|
void tree_view_select_project(GtkWidget* self) {
|
|
tree_view_select(NULL,&all_config->v_project , &cfg_custom_gui.project);
|
|
}
|
|
|
|
|
|
void tree_view_select(GtkWidget* self, vector* vec_temp, hotebook* widgets) {
|
|
if (self) {}
|
|
tree_view_edit(all_config, vec_temp, widgets);
|
|
GtkTreeIter iter;
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore);
|
|
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->tree_view));
|
|
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);
|
|
}
|
|
}
|
|
|
|
|
|
int wrapper_select_tree_view(hotebook* widgets) {
|
|
int index = 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)) {
|
|
char* str_iter = gtk_tree_model_get_string_from_iter(model, &iter);
|
|
index = atoi(str_iter);
|
|
index_selected = index;
|
|
return index;
|
|
}
|
|
else {
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
void wrapper_all_save() {
|
|
/*
|
|
int flag_mess_save = 0;
|
|
|
|
if (main_config.flag_load == 0) {
|
|
flag_mess_save = template_format_str_save(CMD_ALL_SAVE, CMD_ALL_REMOVE);
|
|
}
|
|
else {
|
|
flag_mess_save = template_format_str_save(CMD_ALL_SAVE, CMD_ALL_REMOVE);
|
|
}
|
|
if (flag_mess_save) {
|
|
yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
main_config.flag_save=0;
|
|
}
|
|
else {
|
|
yon_ubl_status_box_render(MESS_NOTHING_SAVE, BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
}
|
|
*/
|
|
}
|
|
void wrapper_global_save() {
|
|
/*
|
|
if (template_format_str_save(CMD_SAVE_GLOBAL, CMD_REMOVE_GLOBAL)) {
|
|
yon_ubl_status_box_render(GLOBAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
main_config.flag_save-=1;
|
|
}
|
|
else {
|
|
yon_ubl_status_box_render(MESS_NOTHING_SAVE, BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
}*/
|
|
}
|
|
void wrapper_system_save() {
|
|
/*
|
|
if (template_format_str_save(CMD_SAVE_SYSTEM, CMD_REMOVE_SYSTEM)) {
|
|
yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
main_config.flag_save-=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_project_disk(0, 0);
|
|
}
|
|
|
|
void load_global_cfg() {
|
|
all_config->flag_load = 1;
|
|
load_template_load_cfg(all_config, CMD_LOAD_GLOBAL);
|
|
yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
entry_project_disk(0, 0);
|
|
}
|
|
|
|
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->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->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->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.comboBox),"changed",G_CALLBACK(entry_user_disk), NULL);
|
|
g_signal_connect(G_OBJECT(_config_custom_gui->group.comboBox),"changed",G_CALLBACK(entry_groups_disk), NULL);
|
|
|
|
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);
|
|
}
|
|
|
|
/*
|
|
void main_visible_columns(GtkWidget *self) {
|
|
gboolean *flags_filters = filters_get_flag();
|
|
gtk_tree_view_column_set_visible(widgets->tvc0, flags_filters[0]);
|
|
gtk_tree_view_column_set_visible(widgets->tvc1, flags_filters[1]);
|
|
gtk_tree_view_column_set_visible(widgets->tvc2, flags_filters[2]);
|
|
gtk_tree_view_column_set_visible(widgets->tvc3, flags_filters[3]);
|
|
gtk_tree_view_column_set_visible(widgets->tvc4, flags_filters[4]);
|
|
gtk_tree_view_column_set_visible(widgets->tvc5, flags_filters[5]);
|
|
gtk_tree_view_column_set_visible(widgets->tvc6, flags_filters[6]);
|
|
gtk_tree_view_column_set_visible(widgets->tvc7, flags_filters[7]);
|
|
filters_on_hide_subwindow(self);
|
|
}
|
|
*/
|
|
|
|
|
|
|
|
int main(int argc, char *argv[]){
|
|
all_config = malloc(sizeof(config_all));
|
|
all_config->flag_not_data = 0;
|
|
local=setlocale(LC_ALL, "");
|
|
bindtextdomain(LocaleName, yon_char_unite(LocalePath, "/", NULL));
|
|
//bind_textdomain_codeset(LocaleName, "UTF-8");
|
|
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.load_socket_id=atoi(optarg);
|
|
break;
|
|
case 't':
|
|
if(optarg)
|
|
main_config.save_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("project");
|
|
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);
|
|
if (getuid()!=0) {
|
|
load_global_cfg();
|
|
yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
}
|
|
else {
|
|
load_system_cfg();
|
|
yon_ubl_status_box_render(TITLE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
}
|
|
yon_ubl_setup_sockets(widgets->PlugBox,widgets->LeftBox,widgets->RightBox,main_config.socket_id,main_config.load_socket_id,main_config.save_socket_id);
|
|
yon_window_config_setup(GTK_WINDOW(widgets->Window));
|
|
yon_window_config_load(config_path);
|
|
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);
|
|
gtk_main();
|
|
} |