|
|
|
|
@ -67,7 +67,9 @@ void yon_save_parameters(GtkWidget *self, main_window *widgets){
|
|
|
|
|
|
|
|
|
|
if (!yon_window_config_check_init()) return;
|
|
|
|
|
|
|
|
|
|
GTimeZone *tz = g_time_zone_new_identifier(config(ZONE_parameter));
|
|
|
|
|
char *parameter = config(ZONE_parameter);
|
|
|
|
|
GTimeZone *tz = g_time_zone_new_identifier(parameter);
|
|
|
|
|
if (!tz) return;
|
|
|
|
|
GDateTime *datetime = g_date_time_new_now(tz);
|
|
|
|
|
long hours = atol(g_date_time_format(datetime,"%H"));
|
|
|
|
|
long minutes = atol(g_date_time_format(datetime,"%M"));
|
|
|
|
|
@ -97,75 +99,22 @@ int check_input(main_window *widgets){
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_save(GtkWidget *,main_window *widgets){
|
|
|
|
|
if (!check_input(widgets)) return;
|
|
|
|
|
main_config.save_config=2;
|
|
|
|
|
yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_global_command,NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_save_global(GtkWidget *,main_window *widgets){
|
|
|
|
|
if (!check_input(widgets)) return;
|
|
|
|
|
main_config.save_config=0;
|
|
|
|
|
yon_save_proceed(NULL,YON_CONFIG_GLOBAL,config_get_global_command,NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_save_local(GtkWidget *,main_window *widgets){
|
|
|
|
|
if (!check_input(widgets)) return;
|
|
|
|
|
main_config.save_config=1;
|
|
|
|
|
yon_save_proceed(NULL,YON_CONFIG_LOCAL,config_get_local_command,NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_save_custom(GtkWidget *,main_window *widgets){
|
|
|
|
|
if (!check_input(widgets)) return;
|
|
|
|
|
main_config.save_config=3;
|
|
|
|
|
yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_global_command,NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_load_global(GtkWidget *,main_window *widgets){
|
|
|
|
|
main_config.load_mode=YON_CONFIG_GLOBAL;
|
|
|
|
|
textdomain(template_ui_LocaleName);
|
|
|
|
|
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
textdomain(LocaleName);
|
|
|
|
|
yon_load_proceed(YON_CONFIG_GLOBAL);
|
|
|
|
|
yon_interface_update(widgets);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_load_local(GtkWidget *,main_window *widgets){
|
|
|
|
|
main_config.load_mode=YON_CONFIG_LOCAL;
|
|
|
|
|
textdomain(template_ui_LocaleName);
|
|
|
|
|
yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
textdomain(LocaleName);
|
|
|
|
|
yon_load_proceed(YON_CONFIG_LOCAL);
|
|
|
|
|
yon_interface_update(widgets);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_load_custom(GtkWidget *,main_window *widgets){
|
|
|
|
|
main_config.load_mode=YON_CONFIG_CUSTOM;
|
|
|
|
|
textdomain(template_ui_LocaleName);
|
|
|
|
|
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
textdomain(LocaleName);
|
|
|
|
|
yon_load_proceed(YON_CONFIG_CUSTOM);
|
|
|
|
|
yon_interface_update(widgets);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void yon_load_proceed(YON_CONFIG_TYPE type){
|
|
|
|
|
void yon_load_proceed(YON_CONFIG_TYPE type){
|
|
|
|
|
if (type!=YON_CONFIG_CUSTOM){
|
|
|
|
|
yon_config_clean();
|
|
|
|
|
if (!yon_char_is_empty(config_get_default_command))
|
|
|
|
|
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
|
|
|
|
|
}
|
|
|
|
|
if (!yon_char_is_empty(config_get_default_command))
|
|
|
|
|
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
|
|
|
|
|
if (type==YON_CONFIG_GLOBAL){
|
|
|
|
|
yon_config_load_config(type,config_get_global_command,NULL);
|
|
|
|
|
yon_config_load_config(type,config_get_command("global"),NULL);
|
|
|
|
|
} else if (type==YON_CONFIG_LOCAL){
|
|
|
|
|
yon_config_load_config(type,config_get_local_command,NULL);
|
|
|
|
|
yon_config_load_config(type,config_get_command("system"),NULL);
|
|
|
|
|
} else if (type==YON_CONFIG_CUSTOM){
|
|
|
|
|
char *path="";
|
|
|
|
|
textdomain(template_ui_LocaleName);
|
|
|
|
|
GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
|
|
|
|
|
textdomain(LocaleName);
|
|
|
|
|
gtk_window_set_icon_name(GTK_WINDOW(dialog),icon_name);
|
|
|
|
|
gtk_window_set_icon_name(GTK_WINDOW(dialog),"com.ublinux.ubl-settings-services");
|
|
|
|
|
gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL);
|
|
|
|
|
GtkFileFilter *filter = gtk_file_filter_new();
|
|
|
|
|
gtk_file_filter_add_pattern(filter,"*.ini");
|
|
|
|
|
@ -179,7 +128,9 @@ void yon_load_proceed(YON_CONFIG_TYPE type){
|
|
|
|
|
path=file;
|
|
|
|
|
}
|
|
|
|
|
yon_config_clean();
|
|
|
|
|
char *command = yon_config_get_custom_command(path);
|
|
|
|
|
if (!yon_char_is_empty(config_get_default_command))
|
|
|
|
|
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
|
|
|
|
|
char *command = config_get_command(path);
|
|
|
|
|
yon_config_load_config(type,command,NULL);
|
|
|
|
|
gtk_widget_destroy(dialog);
|
|
|
|
|
} else {
|
|
|
|
|
@ -188,6 +139,49 @@ void yon_load_proceed(YON_CONFIG_TYPE type){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_local_load(GtkWidget *self,main_window *widgets){
|
|
|
|
|
if (self){};
|
|
|
|
|
yon_load_proceed(YON_CONFIG_LOCAL);
|
|
|
|
|
main_config.load_mode=1;
|
|
|
|
|
yon_interface_update(widgets);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_global_load(GtkWidget *self,main_window *widgets){
|
|
|
|
|
if (self){}
|
|
|
|
|
yon_load_proceed(YON_CONFIG_GLOBAL);
|
|
|
|
|
main_config.load_mode=0;
|
|
|
|
|
yon_interface_update(widgets);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_custom_load(GtkWidget *self,main_window *widgets){
|
|
|
|
|
if (self){}
|
|
|
|
|
yon_load_proceed(YON_CONFIG_CUSTOM);
|
|
|
|
|
main_config.load_mode=3;
|
|
|
|
|
yon_interface_update(widgets);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_global_local_save(){
|
|
|
|
|
main_config.save_config=YON_CONFIG_BOTH;
|
|
|
|
|
yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_command("global"),NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_local_save(){
|
|
|
|
|
main_config.save_config=YON_CONFIG_LOCAL;
|
|
|
|
|
yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_command("system"),NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_global_save(){
|
|
|
|
|
main_config.save_config=YON_CONFIG_GLOBAL;
|
|
|
|
|
yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_command("global"),NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_config_custom_save(GtkWidget *self, main_window *widgets){
|
|
|
|
|
if (self&&widgets){}
|
|
|
|
|
main_config.save_config=YON_CONFIG_CUSTOM;
|
|
|
|
|
template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,config_get_command("system"),NULL);
|
|
|
|
|
if (window){};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_save_done(main_window *widgets, config_str output, int size){
|
|
|
|
|
char *final_output = yon_char_parsed_to_string(output,size,"");
|
|
|
|
|
if (final_output){
|
|
|
|
|
@ -272,39 +266,41 @@ void yon_interface_update(main_window *widgets){
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GTimeZone *tz = g_time_zone_new_identifier(config(ZONE_parameter));
|
|
|
|
|
GDateTime *datetime = g_date_time_new_now(tz);
|
|
|
|
|
char *time = g_date_time_format(datetime,"%H %M");
|
|
|
|
|
char *format = yon_settings_configuration_get(date_format_parameter);
|
|
|
|
|
char *date = g_date_time_format(datetime,format?format:"%d.%m.%Y");
|
|
|
|
|
gtk_calendar_select_month(GTK_CALENDAR(widgets->DateCalendar),g_date_time_get_month(datetime)-1,g_date_time_get_year(datetime));
|
|
|
|
|
gtk_calendar_select_day(GTK_CALENDAR(widgets->DateCalendar),g_date_time_get_day_of_month(datetime));
|
|
|
|
|
g_date_time_unref(datetime);
|
|
|
|
|
g_time_zone_unref(tz);
|
|
|
|
|
if (tz){
|
|
|
|
|
GDateTime *datetime = g_date_time_new_now(tz);
|
|
|
|
|
char *time = g_date_time_format(datetime,"%H %M");
|
|
|
|
|
char *format = yon_settings_configuration_get(date_format_parameter);
|
|
|
|
|
char *date = g_date_time_format(datetime,format?format:"%d.%m.%Y");
|
|
|
|
|
gtk_calendar_select_month(GTK_CALENDAR(widgets->DateCalendar),g_date_time_get_month(datetime)-1,g_date_time_get_year(datetime));
|
|
|
|
|
gtk_calendar_select_day(GTK_CALENDAR(widgets->DateCalendar),g_date_time_get_day_of_month(datetime));
|
|
|
|
|
g_date_time_unref(datetime);
|
|
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(time)){
|
|
|
|
|
char *hour = yon_char_divide_search(time," ",-1);
|
|
|
|
|
double hours = atof(hour);
|
|
|
|
|
double minutes = atof(time);
|
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->HourSpin),hours);
|
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->MinuteSpin),minutes);
|
|
|
|
|
free(hour);
|
|
|
|
|
free(time);
|
|
|
|
|
} else {
|
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->HourSpin),0.0f);
|
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->MinuteSpin),0.0f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(time)){
|
|
|
|
|
char *hour = yon_char_divide_search(time," ",-1);
|
|
|
|
|
double hours = atof(hour);
|
|
|
|
|
double minutes = atof(time);
|
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->HourSpin),hours);
|
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->MinuteSpin),minutes);
|
|
|
|
|
free(hour);
|
|
|
|
|
free(time);
|
|
|
|
|
} else {
|
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->HourSpin),0.0f);
|
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->MinuteSpin),0.0f);
|
|
|
|
|
}
|
|
|
|
|
if (!yon_char_is_empty(date)){
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),date);
|
|
|
|
|
} else {
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),"");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!yon_char_is_empty(date)){
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),date);
|
|
|
|
|
} else {
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),"");
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->NTPEntry),G_CALLBACK(yon_save_parameters),widgets);
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->DHCPCombo),G_CALLBACK(yon_save_parameters),widgets);
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->TimeSyncTypeCombo),G_CALLBACK(yon_save_parameters),widgets);
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionCombo),G_CALLBACK(yon_save_parameters),widgets);
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(yon_save_parameters),widgets);
|
|
|
|
|
g_time_zone_unref(tz);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->NTPEntry),G_CALLBACK(yon_save_parameters),widgets);
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->DHCPCombo),G_CALLBACK(yon_save_parameters),widgets);
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->TimeSyncTypeCombo),G_CALLBACK(yon_save_parameters),widgets);
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionCombo),G_CALLBACK(yon_save_parameters),widgets);
|
|
|
|
|
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(yon_save_parameters),widgets);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_date_clicked(GtkWidget *,main_window *widgets){
|
|
|
|
|
@ -321,13 +317,17 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){
|
|
|
|
|
config_str parsed_sorted = yon_char_parsed_sort(parsed,size);
|
|
|
|
|
yon_char_parsed_free(parsed,size);
|
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
|
char *tzone = yon_char_unite(active_name,"/",parsed_sorted[i],NULL);
|
|
|
|
|
GTimeZone *tz = g_time_zone_new_identifier(tzone);
|
|
|
|
|
if (!tz)
|
|
|
|
|
continue;
|
|
|
|
|
g_time_zone_unref(tz);
|
|
|
|
|
char *name_string = NULL;
|
|
|
|
|
char *utc_string = parsed_sorted[i];
|
|
|
|
|
if (strstr(parsed_sorted[i],"GMT")){
|
|
|
|
|
char *temp = yon_char_unite("UTC",parsed_sorted[i]+3," (",parsed_sorted[i],")",NULL);
|
|
|
|
|
free(parsed_sorted[i]);
|
|
|
|
|
parsed_sorted[i]=temp;
|
|
|
|
|
utc_string = yon_char_unite("UTC",parsed_sorted[i]+3," (",parsed_sorted[i],")",NULL);
|
|
|
|
|
} else if (strcmp(active_name,"Etc")){
|
|
|
|
|
char *zonereg = yon_char_unite(active,"/",parsed_sorted[i],NULL);
|
|
|
|
|
char *zonereg = yon_char_unite(active,"/",utc_string,NULL);
|
|
|
|
|
if (g_setenv("TZ",zonereg,1)){
|
|
|
|
|
time_t curtime = time(NULL);
|
|
|
|
|
struct tm *local = localtime(&curtime);
|
|
|
|
|
@ -337,7 +337,7 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){
|
|
|
|
|
free(zonereg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->ZoneCombo),parsed_sorted[i],name_string?name_string:_(parsed_sorted[i]));
|
|
|
|
|
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->ZoneCombo),parsed_sorted[i],name_string?name_string:_(utc_string));
|
|
|
|
|
}
|
|
|
|
|
if (size) yon_char_parsed_free(parsed_sorted,size);
|
|
|
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0);
|
|
|
|
|
@ -621,14 +621,14 @@ void yon_main_window_complete(main_window **window){
|
|
|
|
|
main_config.widgets=widgets;
|
|
|
|
|
// Signal configuration
|
|
|
|
|
{
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_save),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_save_global),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_save_local),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_save_custom),widgets);
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_load_global),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_load_local),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_load_custom),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_global_local_save),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),widgets);
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets);
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->DHCPCombo),"changed",G_CALLBACK(on_ntp_sync),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->SyncButton),"clicked",G_CALLBACK(on_sync_clicked),widgets);
|
|
|
|
|
|