|
|
|
@ -125,9 +125,27 @@ int yon_size_get_int_from_letter(char size){
|
|
|
|
|
|
|
|
|
|
//functions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void update_loaded_logrotate(){
|
|
|
|
|
int size=0;
|
|
|
|
|
gtk_list_store_clear(main_config.logrotate_list);
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
config_str loaded = yon_config_get_all_by_key("LOGROTATE[",&size);
|
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
|
char *paths = yon_char_divide_search(loaded[i],"=",-1);
|
|
|
|
|
yon_char_divide(paths,strlen("LOGROTATE"));
|
|
|
|
|
yon_char_divide_search_self(paths,"]",-1);
|
|
|
|
|
yon_char_replace(loaded[i],",","\n");
|
|
|
|
|
gtk_list_store_append(main_config.logrotate_list,&iter);
|
|
|
|
|
gtk_list_store_set(main_config.logrotate_list,&iter,1,paths,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int yon_load_proceed(YON_CONFIG_TYPE type){
|
|
|
|
|
if (yon_config_load_register(type,"logging",LOGROTATE("*"),JOURNALD("*"),NULL))
|
|
|
|
|
if (yon_config_load_register(type,"logging",LOGROTATE("*"),JOURNALD("*"),NULL)){
|
|
|
|
|
update_loaded_logrotate();
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -343,7 +361,9 @@ void on_logrotate_configuration_path_remove(GtkWidget *self, logrotate_configure
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_logrotate_save(GtkWidget *self, logrotate_configure_window *window){
|
|
|
|
|
void on_logrotate_save(GtkWidget *self, dictionary *dict){
|
|
|
|
|
logrotate_window *dialog = yon_dictionary_get_data(dict->first,logrotate_window*);
|
|
|
|
|
logrotate_configure_window *window = yon_dictionary_get_data(dict->first->next,logrotate_configure_window*);
|
|
|
|
|
char *paths="";
|
|
|
|
|
char *period="";
|
|
|
|
|
char *size="";
|
|
|
|
@ -548,13 +568,17 @@ void on_logrotate_save(GtkWidget *self, logrotate_configure_window *window){
|
|
|
|
|
if(!yon_char_is_empty(paths)){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
yon_config_register(LOGROTATE(paths),"logging",commandline);
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(main_config.logrotate_list);
|
|
|
|
|
if (!dialog||!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->MainTree)),&model,&iter)){
|
|
|
|
|
gtk_list_store_append(main_config.logrotate_list,&iter);
|
|
|
|
|
}
|
|
|
|
|
paths=yon_char_replace(paths,",","\n");
|
|
|
|
|
gtk_list_store_set(main_config.logrotate_list,&iter,0,gtk_entry_get_text(GTK_ENTRY(window->LogNameEntry)),1,paths,2,gtk_entry_get_text(GTK_ENTRY(window->LogDescriptionEntry)),-1);
|
|
|
|
|
on_close_subwindow(window->MainWindow);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
logrotate_configure_window *yon_logrotate_window_new(char *paths){
|
|
|
|
|
logrotate_configure_window *yon_logrotate_window_new(char *paths, logrotate_window *dialog){
|
|
|
|
|
logrotate_configure_window *window = malloc(sizeof(logrotate_configure_window));
|
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_logrotate_path);
|
|
|
|
|
window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow");
|
|
|
|
@ -619,8 +643,12 @@ logrotate_configure_window *yon_logrotate_window_new(char *paths){
|
|
|
|
|
window->CommandAfterEntry=yon_gtk_builder_get_widget(builder,"CommandAfterEntry");
|
|
|
|
|
window->EndworkCommandEntry=yon_gtk_builder_get_widget(builder,"EndworkCommandEntry");
|
|
|
|
|
gtk_window_set_title(GTK_WINDOW(window->MainWindow),TITLE_LABEL);
|
|
|
|
|
|
|
|
|
|
dictionary *dict=NULL;
|
|
|
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"dialog",dialog);
|
|
|
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_logrotate_save),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_logrotate_save),dict);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->PathCell),"edited",G_CALLBACK(on_path_editing_done),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->PathCell),"editing-canceled",G_CALLBACK(on_path_editing_cancel),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->LogPathAddButton),"clicked",G_CALLBACK(on_logrotate_configuration_path_add),window);
|
|
|
|
@ -653,6 +681,11 @@ logrotate_configure_window *yon_logrotate_window_new(char *paths){
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CreateLogCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->CreateLogEntry);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CreateLogCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->CreateLogButton);
|
|
|
|
|
|
|
|
|
|
int usize=0;
|
|
|
|
|
config_str users = yon_ubl_get_all_users(&usize);
|
|
|
|
|
yon_gtk_combo_box_fill(window->CreateLogUserCombo,users,usize);
|
|
|
|
|
yon_gtk_combo_box_fill(window->RotationAtUserCombo,users,usize);
|
|
|
|
|
|
|
|
|
|
if (paths){
|
|
|
|
|
int size;
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
@ -799,31 +832,34 @@ logrotate_configure_window *yon_logrotate_window_new(char *paths){
|
|
|
|
|
return window;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_logrotate_add(GtkWidget *self, main_window *widgets){
|
|
|
|
|
logrotate_configure_window *window = yon_logrotate_window_new(NULL);
|
|
|
|
|
void on_logrotate_add(GtkWidget *self, logrotate_window *dialog){
|
|
|
|
|
logrotate_configure_window *window = yon_logrotate_window_new(NULL,NULL);
|
|
|
|
|
gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->MainTree)));
|
|
|
|
|
gtk_widget_show(window->MainWindow);
|
|
|
|
|
gtk_widget_set_sensitive(window->LogNameEntry,1);
|
|
|
|
|
gtk_widget_set_sensitive(window->LogDescriptionEntry,1);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(window->LogSizeLabel),"");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_logrotate_edit(GtkWidget *self, logrotate_tab_window *window){
|
|
|
|
|
void on_logrotate_edit(GtkWidget *self, logrotate_window *window){
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(main_config.logrotate_list);
|
|
|
|
|
GtkTreeIter iter,itar;
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),&model, &iter)){
|
|
|
|
|
char *name;
|
|
|
|
|
int size=0;
|
|
|
|
|
char *paths;
|
|
|
|
|
char *description;
|
|
|
|
|
gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(window->MainTree)),&iter,1,&paths,-1);
|
|
|
|
|
config_str path_parsed = yon_char_parse(paths,&size,"\n");
|
|
|
|
|
paths=NULL;
|
|
|
|
|
for (int i=0;i<size;i++){
|
|
|
|
|
paths=yon_char_unite(paths ? yon_char_append(paths,","):"",path_parsed[i],NULL);
|
|
|
|
|
}
|
|
|
|
|
logrotate_configure_window *dialog = yon_logrotate_window_new(paths);
|
|
|
|
|
logrotate_configure_window *dialog = yon_logrotate_window_new(paths,window);
|
|
|
|
|
gtk_widget_show(dialog->MainWindow);
|
|
|
|
|
gtk_tree_model_get(model,&iter,0,&name,1,&paths,-1);
|
|
|
|
|
gtk_tree_model_get(model,&iter,0,&name,1,&paths,2,&description,-1);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(dialog->LogNameEntry),name);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(dialog->LogDescriptionEntry),description);
|
|
|
|
|
gtk_widget_set_can_focus(dialog->LogNameEntry,0);
|
|
|
|
|
gtk_widget_set_can_focus(dialog->LogDescriptionEntry,0);
|
|
|
|
|
gtk_entry_set_has_frame(GTK_ENTRY(dialog->LogNameEntry),0);
|
|
|
|
@ -834,11 +870,15 @@ void on_logrotate_edit(GtkWidget *self, logrotate_tab_window *window){
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_logrotate_remove(GtkWidget *self, logrotate_tab_window *window){
|
|
|
|
|
void on_logrotate_remove(GtkWidget *self, logrotate_window *window){
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(main_config.logrotate_list);
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),&model, &iter)){
|
|
|
|
|
char *paths;
|
|
|
|
|
gtk_tree_model_get(model,&iter,1,&paths,-1);
|
|
|
|
|
gtk_list_store_remove(main_config.logrotate_list,&iter);
|
|
|
|
|
yon_char_replace(paths,"\n",",");
|
|
|
|
|
yon_config_remove_by_key(paths);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -871,7 +911,7 @@ void on_log_edit_logrotate_settings(GtkWidget *self, dictionary *dict){
|
|
|
|
|
GList *paths = gtk_container_get_children((GtkContainer*)g_list_nth_data(list,i));
|
|
|
|
|
pathse=yon_char_unite(pathse ? yon_char_append(pathse,","):"",gtk_entry_get_text((GtkEntry*)g_list_nth_data(paths,1)),NULL);
|
|
|
|
|
}
|
|
|
|
|
logrotate_configure_window *dialog = yon_logrotate_window_new(pathse);
|
|
|
|
|
logrotate_configure_window *dialog = yon_logrotate_window_new(pathse,NULL);
|
|
|
|
|
gtk_widget_show(dialog->MainWindow);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(dialog->LogNameEntry),name);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(dialog->LogDescriptionEntry),description);
|
|
|
|
@ -1611,6 +1651,7 @@ int main(int argc, char *argv[]){
|
|
|
|
|
yon_window_config_setup(GTK_WINDOW(widgets->Window));
|
|
|
|
|
yon_load_proceed(YON_CONFIG_LOCAL);
|
|
|
|
|
yon_window_config_load(config_path);
|
|
|
|
|
update_loaded_logrotate();
|
|
|
|
|
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(),
|
|
|
|
|