|
|
|
@ -486,7 +486,11 @@ void on_save_done(main_window *widgets, config_str output, int size){
|
|
|
|
free(final_output);
|
|
|
|
free(final_output);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
yon_char_parsed_free(output,size);
|
|
|
|
yon_char_parsed_free(output,size);
|
|
|
|
on_config_update(NULL,widgets);
|
|
|
|
if (main_config.load_mode==YON_CONFIG_GLOBAL){
|
|
|
|
|
|
|
|
on_config_global_load(NULL,widgets);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
on_config_local_load(NULL,widgets);
|
|
|
|
|
|
|
|
}
|
|
|
|
if (main_config.load_mode==YON_CONFIG_LOCAL){
|
|
|
|
if (main_config.load_mode==YON_CONFIG_LOCAL){
|
|
|
|
yon_accept_changes();
|
|
|
|
yon_accept_changes();
|
|
|
|
yon_samba_sync_proceed();
|
|
|
|
yon_samba_sync_proceed();
|
|
|
|
@ -1355,12 +1359,12 @@ void yon_system_load(main_window *window){
|
|
|
|
if (yon_gtk_list_store_find_text(window->liststore1,&iter,2,parsed[0])){
|
|
|
|
if (yon_gtk_list_store_find_text(window->liststore1,&iter,2,parsed[0])){
|
|
|
|
GDateTime *date = g_date_time_new_from_unix_local(atol(parsed[2])*24*60*60);
|
|
|
|
GDateTime *date = g_date_time_new_from_unix_local(atol(parsed[2])*24*60*60);
|
|
|
|
char *date_string;
|
|
|
|
char *date_string;
|
|
|
|
date_string = g_date_time_format(date,"%Y-%m-%d");
|
|
|
|
date_string = g_date_time_format(date,yon_settings_configuration_get(date_format_parameter));
|
|
|
|
g_date_time_unref(date);
|
|
|
|
g_date_time_unref(date);
|
|
|
|
char *expiration_string="";
|
|
|
|
char *expiration_string="";
|
|
|
|
if (parsed_size>7&&!yon_char_is_empty(parsed[7])){
|
|
|
|
if (parsed_size>7&&!yon_char_is_empty(parsed[7])){
|
|
|
|
date = g_date_time_new_from_unix_local(atol(parsed[7])*24*60*60);
|
|
|
|
date = g_date_time_new_from_unix_local(atol(parsed[7])*24*60*60);
|
|
|
|
expiration_string = g_date_time_format(date,"%Y-%m-%d");
|
|
|
|
expiration_string = g_date_time_format(date,yon_settings_configuration_get(date_format_parameter));
|
|
|
|
g_date_time_unref(date);
|
|
|
|
g_date_time_unref(date);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -1461,23 +1465,27 @@ void on_toggle_button_set_active_from_toggle_button_inversed(GtkToggleButton *,
|
|
|
|
void on_date_selected(GtkWidget *, ubl_settings_usergroups_user_window *window){
|
|
|
|
void on_date_selected(GtkWidget *, ubl_settings_usergroups_user_window *window){
|
|
|
|
guint year=0, month=0, day=0;
|
|
|
|
guint year=0, month=0, day=0;
|
|
|
|
gtk_calendar_get_date(GTK_CALENDAR(window->ExpirationCalendar),&year,&month,&day);
|
|
|
|
gtk_calendar_get_date(GTK_CALENDAR(window->ExpirationCalendar),&year,&month,&day);
|
|
|
|
time_t t = time(NULL);
|
|
|
|
GDateTime *nowdate = g_date_time_new_now_local();
|
|
|
|
struct tm tm = *localtime(&t);
|
|
|
|
GDateTime *chosendate = g_date_time_new_local(year,month+1,day,23,59,59);
|
|
|
|
if ((1900+tm.tm_year)>(int)year||((1900+tm.tm_year)==(int)year&&tm.tm_mon>(int)month)||((1900+tm.tm_year)==(int)year&&tm.tm_mon==(int)month&&tm.tm_mday>(int)day)) {
|
|
|
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->userPasswordExpirationEntry), "");
|
|
|
|
if (g_date_time_compare(nowdate,chosendate)>0){
|
|
|
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->userPasswordExpirationEntry), "");
|
|
|
|
|
|
|
|
goto comperr;
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
char *dy = yon_char_from_int(day);
|
|
|
|
char *dy = yon_char_from_int(day);
|
|
|
|
char *mn = yon_char_from_int(month+1);
|
|
|
|
char *mn = yon_char_from_int(month+1);
|
|
|
|
char *yr = yon_char_from_int(year);
|
|
|
|
char *yr = yon_char_from_int(year);
|
|
|
|
if (month+1<10) mn = yon_char_append("0",mn);
|
|
|
|
GDateTime *datetime = g_date_time_new_local(year,month+1,day,0,0,0);
|
|
|
|
if (day<10) dy = yon_char_append("0",dy);
|
|
|
|
char *date_string = g_date_time_format(datetime,yon_settings_configuration_get(date_format_parameter));
|
|
|
|
char *date_string = yon_char_unite(yr,"-",mn,"-",dy,NULL);
|
|
|
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->userPasswordExpirationEntry), date_string);
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(window->userPasswordExpirationEntry), date_string);
|
|
|
|
window->expiration_unix=date_string;
|
|
|
|
window->expiration_unix=date_string;
|
|
|
|
free(dy);
|
|
|
|
free(dy);
|
|
|
|
free(mn);
|
|
|
|
free(mn);
|
|
|
|
free(yr);
|
|
|
|
free(yr);
|
|
|
|
|
|
|
|
comperr:
|
|
|
|
|
|
|
|
g_date_time_unref(nowdate);
|
|
|
|
|
|
|
|
g_date_time_unref(chosendate);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_remove_expired(GtkWidget *, GtkEntryIconPosition icon_pos, GdkEvent *, GtkEntry *target){
|
|
|
|
void on_remove_expired(GtkWidget *, GtkEntryIconPosition icon_pos, GdkEvent *, GtkEntry *target){
|
|
|
|
@ -1960,6 +1968,19 @@ void on_user_info(GtkWidget *,main_window *widgets){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_config_update(GtkWidget *, main_window *widgets){
|
|
|
|
void on_config_update(GtkWidget *, main_window *widgets){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int size;
|
|
|
|
|
|
|
|
config_str parameters = yon_config_get_save_parameters(&size);
|
|
|
|
|
|
|
|
if (size){
|
|
|
|
|
|
|
|
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data->action_text = UPDATE_CONFIRMATION_LABEL;
|
|
|
|
|
|
|
|
data->title = UPDATE_LABEL;
|
|
|
|
|
|
|
|
if (yon_confirmation_dialog_call(widgets->Window,data)!=GTK_RESPONSE_ACCEPT)
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
yon_char_parsed_free(parameters,size);
|
|
|
|
|
|
|
|
}
|
|
|
|
if (main_config.load_mode==YON_CONFIG_GLOBAL){
|
|
|
|
if (main_config.load_mode==YON_CONFIG_GLOBAL){
|
|
|
|
on_config_global_load(NULL,widgets);
|
|
|
|
on_config_global_load(NULL,widgets);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
@ -2159,50 +2180,6 @@ void config_init(){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_selection_changed(GtkWidget *, main_window *widgets){
|
|
|
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
|
|
|
int page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook));
|
|
|
|
|
|
|
|
if (page==0){
|
|
|
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->UsersList);
|
|
|
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&model,&iter)){
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->EditButton,1);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->DeleteButton,1);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->EditButton,0);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->DeleteButton,0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else if (page==1){
|
|
|
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->GroupsList);
|
|
|
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model,&iter)){
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->EditButton,1);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->DeleteButton,1);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->EditButton,0);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->DeleteButton,0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else if (page == 2){
|
|
|
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore1);
|
|
|
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemTree)),&model,&iter)){
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->UserAddToConfigButton,1);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->DeleteButton,1);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->UserAddToConfigButton,0);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->DeleteButton,0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else if (page == 3){
|
|
|
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->liststore2);
|
|
|
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SystemGroupsTree)),&model,&iter)){
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->UserAddToConfigButton,1);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->DeleteButton,1);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->UserAddToConfigButton,0);
|
|
|
|
|
|
|
|
gtk_widget_set_sensitive(widgets->DeleteButton,0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_notebook_page_changed(GtkWidget *, GtkWidget *, int num, main_window *widgets){
|
|
|
|
void on_notebook_page_changed(GtkWidget *, GtkWidget *, int num, main_window *widgets){
|
|
|
|
GtkTreeIter iter;
|
|
|
|
GtkTreeIter iter;
|
|
|
|
if (num==0){
|
|
|
|
if (num==0){
|
|
|
|
@ -2296,6 +2273,10 @@ gboolean on_system_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_win
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void on_date_format_changed(GtkWidget *, main_window *widgets){
|
|
|
|
|
|
|
|
yon_interface_update(widgets);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**yon_main_window_complete(main_window *widgets)
|
|
|
|
/**yon_main_window_complete(main_window *widgets)
|
|
|
|
* [EN]
|
|
|
|
* [EN]
|
|
|
|
*
|
|
|
|
*
|
|
|
|
@ -2361,11 +2342,7 @@ template_main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
g_signal_connect(G_OBJECT(widgets->UserInfoButton),"clicked",G_CALLBACK(on_user_info),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->UserInfoButton),"clicked",G_CALLBACK(on_user_info),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SavingSettingsButton),"clicked",G_CALLBACK(on_saving_settings_open),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SavingSettingsButton),"clicked",G_CALLBACK(on_saving_settings_open),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_save),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_save),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->UsersTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->UsersTree),"row-activated",G_CALLBACK(on_main_edit_activate),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->UsersTree),"row-activated",G_CALLBACK(on_main_edit_activate),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->GroupsTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SystemTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SystemGroupsTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->GroupsTree),"row-activated",G_CALLBACK(on_main_edit_activate),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->GroupsTree),"row-activated",G_CALLBACK(on_main_edit_activate),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->MainNotebook),"switch-page",G_CALLBACK(on_notebook_page_changed),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->MainNotebook),"switch-page",G_CALLBACK(on_notebook_page_changed),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets);
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets);
|
|
|
|
@ -2399,7 +2376,6 @@ template_main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
gtk_tree_view_column_clicked(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->SystemTree),1));
|
|
|
|
gtk_tree_view_column_clicked(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->SystemTree),1));
|
|
|
|
gtk_tree_view_column_clicked(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->SystemGroupsTree),0));
|
|
|
|
gtk_tree_view_column_clicked(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->SystemGroupsTree),0));
|
|
|
|
|
|
|
|
|
|
|
|
yon_system_load(widgets);
|
|
|
|
|
|
|
|
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->ConfigUsersFilter),(GtkTreeModelFilterVisibleFunc)on_filter,widgets,NULL);
|
|
|
|
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->ConfigUsersFilter),(GtkTreeModelFilterVisibleFunc)on_filter,widgets,NULL);
|
|
|
|
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->ConfigGroupsFilter),(GtkTreeModelFilterVisibleFunc)on_filter,widgets,NULL);
|
|
|
|
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->ConfigGroupsFilter),(GtkTreeModelFilterVisibleFunc)on_filter,widgets,NULL);
|
|
|
|
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->SystemUsersFilter),(GtkTreeModelFilterVisibleFunc)on_filter,widgets,NULL);
|
|
|
|
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->SystemUsersFilter),(GtkTreeModelFilterVisibleFunc)on_filter,widgets,NULL);
|
|
|
|
@ -2408,8 +2384,6 @@ template_main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
|
|
|
|
|
|
|
|
yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size);
|
|
|
|
yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size);
|
|
|
|
|
|
|
|
|
|
|
|
yon_load_proceed(YON_CONFIG_LOCAL);
|
|
|
|
|
|
|
|
yon_interface_update((main_window*)widgets);
|
|
|
|
|
|
|
|
gtk_widget_realize(GTK_WIDGET(widgets->UsersTree));
|
|
|
|
gtk_widget_realize(GTK_WIDGET(widgets->UsersTree));
|
|
|
|
gtk_widget_realize(GTK_WIDGET(widgets->GroupsTree));
|
|
|
|
gtk_widget_realize(GTK_WIDGET(widgets->GroupsTree));
|
|
|
|
|
|
|
|
|
|
|
|
@ -2440,6 +2414,29 @@ template_main_window *yon_main_window_complete(main_window *widgets){
|
|
|
|
|
|
|
|
|
|
|
|
yon_window_config_load(config_path);
|
|
|
|
yon_window_config_load(config_path);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
yon_ubl_settings_window_init(GTK_MENU(gtk_widget_get_parent(widgets->DocumentationMenuItem)));
|
|
|
|
|
|
|
|
GList *menu_items = gtk_container_get_children(GTK_CONTAINER(gtk_widget_get_parent(widgets->DocumentationMenuItem)));
|
|
|
|
|
|
|
|
for (guint i=0;i<g_list_length(menu_items);i++){
|
|
|
|
|
|
|
|
if (i==0){
|
|
|
|
|
|
|
|
gtk_style_context_remove_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(menu_items,i)),"menuitemmiddle");
|
|
|
|
|
|
|
|
gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(menu_items,i)),"menuitemtop");
|
|
|
|
|
|
|
|
} else if (i==g_list_length(menu_items)-1){
|
|
|
|
|
|
|
|
gtk_style_context_remove_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(menu_items,i)),"menuitemmiddle");
|
|
|
|
|
|
|
|
gtk_style_context_remove_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(menu_items,i)),"menuitemtop");
|
|
|
|
|
|
|
|
gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(menu_items,i)),"menuitembottom");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
gtk_style_context_remove_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(menu_items,i)),"menuitembottom");
|
|
|
|
|
|
|
|
gtk_style_context_remove_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(menu_items,i)),"menuitemtop");
|
|
|
|
|
|
|
|
gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(menu_items,i)),"menuitemmiddle");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
g_list_free(menu_items);
|
|
|
|
|
|
|
|
yon_configuration_window_add_combo_box_parameter(CONFIGURATION_PARAMETER_BOOL,date_format_parameter,DATE_FORMAT_SETTINGS_LABEL,G_CALLBACK(on_date_format_changed),widgets,"%d.%m.%Y",DMY_FORMAT_LABEL,"%d-%m-%Y",DMY_MINUS_FORMAT_LABEL,"%d/%m/%Y",DMY_SLASH_FORMAT_LABEL,"%m-%d-%Y",MDY_FORMAT_LABEL,NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
yon_system_load(widgets);
|
|
|
|
|
|
|
|
yon_load_proceed(YON_CONFIG_LOCAL);
|
|
|
|
|
|
|
|
yon_interface_update((main_window*)widgets);
|
|
|
|
yon_save_window_set_postsave_function(on_save_done,widgets);
|
|
|
|
yon_save_window_set_postsave_function(on_save_done,widgets);
|
|
|
|
yon_save_window_set_postsave_failure_function(on_save_failed,widgets);
|
|
|
|
yon_save_window_set_postsave_failure_function(on_save_failed,widgets);
|
|
|
|
return (template_main_window*)widgets;
|
|
|
|
return (template_main_window*)widgets;
|
|
|
|
|