@ -108,6 +108,8 @@ void yon_load_proceed(char *command){
}
}
// Inspector functions
void on_inspector_update ( GtkWidget * self , inspector_window * window ) {
void on_inspector_update ( GtkWidget * self , inspector_window * window ) {
int size ;
int size ;
GtkTextIter titer , titerend ;
GtkTextIter titer , titerend ;
@ -207,14 +209,79 @@ void on_log_choose(GtkWidget *self,add_log_window *window){
// Logrotate window
// Logrotate window
void on_logrotate_configuration_path_add ( GtkWidget * self , logrotate_configure_window * window ) {
GtkTreeModel * model = GTK_TREE_MODEL ( window - > list ) ;
GtkTreeIter iter ;
gtk_list_store_append ( window - > list , & iter ) ;
GtkTreeViewColumn * column = gtk_tree_view_get_column ( GTK_TREE_VIEW ( window - > LogPathsTree ) , 0 ) ;
GList * list = gtk_cell_layout_get_cells ( GTK_CELL_LAYOUT ( column ) ) ;
GValue * val = g_malloc0 ( sizeof ( GValue ) ) ;
g_object_get_property ( G_OBJECT ( list - > data ) , " editable " , val ) ;
g_value_set_boolean ( val , 1 ) ;
g_object_set_property ( G_OBJECT ( list - > data ) , " editable " , val ) ;
free ( val ) ;
gtk_tree_view_set_cursor ( GTK_TREE_VIEW ( window - > LogPathsTree ) , gtk_tree_model_get_path ( model , & iter ) , column , 1 ) ;
}
void on_path_editing_done ( GtkCellRendererText * self , gchar * path , gchar * new_text , logrotate_configure_window * window ) {
GtkTreeIter iter ;
char * cur_path ;
gtk_tree_model_get_iter ( GTK_TREE_MODEL ( window - > list ) , & iter , gtk_tree_path_new_from_string ( path ) ) ;
gtk_tree_model_get ( GTK_TREE_MODEL ( window - > list ) , & iter , 0 , & cur_path , - 1 ) ;
if ( cur_path & & ! strcmp ( cur_path , " " ) & & ! strcmp ( new_text , " " ) )
gtk_list_store_remove ( window - > list , & iter ) ;
else if ( new_text & & strcmp ( new_text , " " ) )
gtk_list_store_set ( window - > list , & iter , 0 , new_text , - 1 ) ;
GValue * val = g_malloc0 ( sizeof ( GValue ) ) ;
g_object_get_property ( G_OBJECT ( self ) , " editable " , val ) ;
g_value_set_boolean ( val , 0 ) ;
g_object_set_property ( G_OBJECT ( self ) , " editable " , val ) ;
free ( val ) ;
}
void on_path_editing_cancel ( GtkCellRendererText * self , logrotate_configure_window * window ) {
GtkTreeModel * model = GTK_TREE_MODEL ( window - > list ) ;
GtkTreeIter iter ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( window - > LogPathsTree ) ) , & model , & iter ) ) {
char * path ;
gtk_tree_model_get ( model , & iter , 0 , & path , - 1 ) ;
if ( ! path | | ! strcmp ( path , " " ) )
gtk_list_store_remove ( window - > list , & iter ) ;
}
}
void on_logrotate_configuration_path_edit ( GtkWidget * self , logrotate_configure_window * window ) {
GtkTreeModel * model = GTK_TREE_MODEL ( window - > list ) ;
GtkTreeIter iter ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( window - > LogPathsTree ) ) , & model , & iter ) ) {
GtkTreeViewColumn * column = gtk_tree_view_get_column ( GTK_TREE_VIEW ( window - > LogPathsTree ) , 0 ) ;
GList * list = gtk_cell_layout_get_cells ( GTK_CELL_LAYOUT ( column ) ) ;
GValue * val = g_malloc0 ( sizeof ( GValue ) ) ;
g_object_get_property ( G_OBJECT ( list - > data ) , " editable " , val ) ;
g_value_set_boolean ( val , 1 ) ;
g_object_set_property ( G_OBJECT ( list - > data ) , " editable " , val ) ;
free ( val ) ;
gtk_tree_view_set_cursor ( GTK_TREE_VIEW ( window - > LogPathsTree ) , gtk_tree_model_get_path ( model , & iter ) , column , 1 ) ;
}
}
void on_logrotate_configuration_path_remove ( GtkWidget * self , logrotate_configure_window * window ) {
GtkTreeModel * model = GTK_TREE_MODEL ( window - > list ) ;
GtkTreeIter iter ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( window - > LogPathsTree ) ) , & model , & iter ) ) {
gtk_list_store_remove ( window - > list , & iter ) ;
}
}
logrotate_configure_window * yon_logrotate_window_new ( ) {
logrotate_configure_window * yon_logrotate_window_new ( ) {
logrotate_configure_window * window = malloc ( sizeof ( logrotate_configure_window ) ) ;
logrotate_configure_window * window = malloc ( sizeof ( logrotate_configure_window ) ) ;
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_logrotate_path ) ;
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_logrotate_path ) ;
window - > MainWindow = yon_gtk_builder_get_widget ( builder , " MainWindow " ) ;
window - > MainWindow = yon_gtk_builder_get_widget ( builder , " MainWindow " ) ;
window - > CancelButton = yon_gtk_builder_get_widget ( builder , " CancelButton " ) ;
window - > CancelButton = yon_gtk_builder_get_widget ( builder , " CancelButton " ) ;
window - > SaveButton = yon_gtk_builder_get_widget ( builder , " SaveButton " ) ;
window - > SaveButton = yon_gtk_builder_get_widget ( builder , " SaveButton " ) ;
window - > LogNamelabel = yon_gtk_builder_get_widget ( builder , " LogNamelabel " ) ;
window - > LogName Entry = yon_gtk_builder_get_widget ( builder , " LogName Entry " ) ;
window - > LogNameButton = yon_gtk_builder_get_widget ( builder , " LogNameButton " ) ;
window - > Log DescriptionEntry = yon_gtk_builder_get_widget ( builder , " Log DescriptionEntry " ) ;
window - > RotationPeriodCheck = yon_gtk_builder_get_widget ( builder , " RotationPeriodCheck " ) ;
window - > RotationPeriodCheck = yon_gtk_builder_get_widget ( builder , " RotationPeriodCheck " ) ;
window - > RotationPeriodMainCombo = yon_gtk_builder_get_widget ( builder , " RotationPeriodMainCombo " ) ;
window - > RotationPeriodMainCombo = yon_gtk_builder_get_widget ( builder , " RotationPeriodMainCombo " ) ;
window - > RotationPeriodAdditionalCombo = yon_gtk_builder_get_widget ( builder , " RotationPeriodAdditionalCombo " ) ;
window - > RotationPeriodAdditionalCombo = yon_gtk_builder_get_widget ( builder , " RotationPeriodAdditionalCombo " ) ;
@ -259,12 +326,46 @@ logrotate_configure_window *yon_logrotate_window_new(){
window - > ManualInputEntry = yon_gtk_builder_get_widget ( builder , " ManualInputEntry " ) ;
window - > ManualInputEntry = yon_gtk_builder_get_widget ( builder , " ManualInputEntry " ) ;
window - > LogSizeLabel = yon_gtk_builder_get_widget ( builder , " LogSizeLabel " ) ;
window - > LogSizeLabel = yon_gtk_builder_get_widget ( builder , " LogSizeLabel " ) ;
window - > headerTopic = yon_gtk_builder_get_widget ( builder , " headerTopic " ) ;
window - > headerTopic = yon_gtk_builder_get_widget ( builder , " headerTopic " ) ;
window - > LogNameDescriptionLabel = yon_gtk_builder_get_widget ( builder , " LogNameDescriptionLabel " ) ;
window - > LogPathsTree = yon_gtk_builder_get_widget ( builder , " LogPathsTree " ) ;
window - > LogPathEditButton = yon_gtk_builder_get_widget ( builder , " LogPathEditButton " ) ;
window - > LogPathAddButton = yon_gtk_builder_get_widget ( builder , " LogPathAddButton " ) ;
window - > LogPathRemoveButton = yon_gtk_builder_get_widget ( builder , " LogPathRemoveButton " ) ;
window - > list = GTK_LIST_STORE ( gtk_builder_get_object ( builder , " liststore1 " ) ) ;
window - > list = GTK_LIST_STORE ( gtk_builder_get_object ( builder , " liststore1 " ) ) ;
window - > PathCell = GTK_CELL_RENDERER ( gtk_builder_get_object ( builder , " PathCell " ) ) ;
gtk_window_set_title ( GTK_WINDOW ( window - > MainWindow ) , TITLE_LABEL ) ;
gtk_window_set_title ( GTK_WINDOW ( window - > MainWindow ) , TITLE_LABEL ) ;
g_signal_connect ( G_OBJECT ( window - > CancelButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
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_close_subwindow ) , NULL ) ;
g_signal_connect ( G_OBJECT ( window - > SaveButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
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 ) ;
g_signal_connect ( G_OBJECT ( window - > LogPathEditButton ) , " clicked " , G_CALLBACK ( on_logrotate_configuration_path_edit ) , window ) ;
g_signal_connect ( G_OBJECT ( window - > LogPathRemoveButton ) , " clicked " , G_CALLBACK ( on_logrotate_configuration_path_remove ) , window ) ;
g_signal_connect ( G_OBJECT ( window - > RotationPeriodCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > RotationPeriodAdditionalCombo ) ;
g_signal_connect ( G_OBJECT ( window - > RotationPeriodCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > RotationPeriodMainCombo ) ;
g_signal_connect ( G_OBJECT ( window - > JournalMaxSizeCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > JournalMaxSizeCombo ) ;
g_signal_connect ( G_OBJECT ( window - > JournalMaxSizeCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > JournalMaxSizeSpin ) ;
g_signal_connect ( G_OBJECT ( window - > FileAmountCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > FileAmountSpin ) ;
g_signal_connect ( G_OBJECT ( window - > FileAmountCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > FileAmountCombo ) ;
g_signal_connect ( G_OBJECT ( window - > FileAmountCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > FileAmountEntry ) ;
g_signal_connect ( G_OBJECT ( window - > FileAmountCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > FileAmountButton ) ;
g_signal_connect ( G_OBJECT ( window - > DoNotRotateYoungerCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > DoNotRotateYoungerSpin ) ;
g_signal_connect ( G_OBJECT ( window - > DeleteOlderCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > DeleteOlderSpin ) ;
g_signal_connect ( G_OBJECT ( window - > RotateSizeMaxAfterTimeCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > RotateSizeMaxAfterTimeSpin ) ;
g_signal_connect ( G_OBJECT ( window - > RotateSizeMaxAfterTimeCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > RotateSizeMaxAfterTimeCombo ) ;
g_signal_connect ( G_OBJECT ( window - > RotateSizeMaxBeforeTimeCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > RotateSizeMaxBeforeTimeSpin ) ;
g_signal_connect ( G_OBJECT ( window - > RotateSizeMaxBeforeTimeCheck ) , " clicked " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , window - > RotateSizeMaxBeforeTimeCombo ) ;
g_signal_connect ( G_OBJECT ( window - > CreateLogCombo ) , " changed " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_combo_box_inversed ) , window - > CreateLogUserCombo ) ;
g_signal_connect ( G_OBJECT ( window - > CreateLogCombo ) , " changed " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_combo_box_inversed ) , window - > CreateGroupCombo ) ;
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 ) ;
return window ;
return window ;
}
}
@ -297,6 +398,38 @@ void on_logrotate_apps_configure(){
}
}
void on_log_edit_logrotate_settings ( GtkWidget * self , dictionary * dict ) {
main_window * widgets = yon_dictionary_get_data ( dict - > first , main_window * ) ;
add_log_window * window = yon_dictionary_get_data ( dict - > first - > next , add_log_window * ) ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > list ) ;
GtkTreeIter iter , itar ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > MainTree ) ) , & model , & iter ) ) {
char * name ;
char * description ;
logrotate_configure_window * dialog = yon_logrotate_window_new ( ) ;
gtk_widget_show ( dialog - > MainWindow ) ;
gtk_tree_model_get ( model , & iter , 0 , & name , 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 ) ;
gtk_entry_set_has_frame ( GTK_ENTRY ( dialog - > LogDescriptionEntry ) , 0 ) ;
gtk_style_context_add_class ( gtk_widget_get_style_context ( dialog - > LogNameEntry ) , " nobackground " ) ;
gtk_style_context_add_class ( gtk_widget_get_style_context ( dialog - > LogDescriptionEntry ) , " nobackground " ) ;
GList * list = gtk_container_get_children ( GTK_CONTAINER ( window - > LogPathsBox ) ) ;
for ( int i = 0 ; i < g_list_length ( list ) ; i + + ) {
gtk_list_store_append ( dialog - > list , & itar ) ;
GList * paths = gtk_container_get_children ( ( GtkContainer * ) g_list_nth_data ( list , i ) ) ;
gtk_list_store_set ( dialog - > list , & itar , 0 , gtk_entry_get_text ( ( GtkEntry * ) g_list_nth_data ( paths , 1 ) ) , - 1 ) ;
g_list_free ( paths ) ;
}
}
}
// Logrotate tab window
void on_logrotate_tab_open ( GtkWidget * self , main_window * widgets ) {
void on_logrotate_tab_open ( GtkWidget * self , main_window * widgets ) {
logrotate_window * window = malloc ( sizeof ( logrotate_window ) ) ;
logrotate_window * window = malloc ( sizeof ( logrotate_window ) ) ;
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_logrotate_table_path ) ;
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_logrotate_table_path ) ;
@ -394,14 +527,11 @@ add_log_window *on_add_open(){
window - > LogPathsBox = yon_gtk_builder_get_widget ( builder , " LogPathsBox " ) ;
window - > LogPathsBox = yon_gtk_builder_get_widget ( builder , " LogPathsBox " ) ;
gtk_window_set_title ( GTK_WINDOW ( window - > MainWindow ) , TITLE_LABEL ) ;
gtk_window_set_title ( GTK_WINDOW ( window - > MainWindow ) , TITLE_LABEL ) ;
g_signal_connect ( G_OBJECT ( window - > CancelButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
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_close_subwindow ) , NULL ) ;
g_signal_connect ( G_OBJECT ( window - > SaveButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
return window ;
return window ;
}
}
void on_log_edit_logrotate_settings ( GtkWidget * self , add_log_window * window ) {
}
void on_log_add ( GtkWidget * self , main_window * widgets ) {
void on_log_add ( GtkWidget * self , main_window * widgets ) {
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > list ) ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > list ) ;
GtkTreeIter iter ;
GtkTreeIter iter ;
@ -409,7 +539,6 @@ void on_log_add(GtkWidget *self, main_window *widgets){
gtk_widget_show ( window - > MainWindow ) ;
gtk_widget_show ( window - > MainWindow ) ;
gtk_widget_hide ( window - > StatisticsFrame ) ;
gtk_widget_hide ( window - > StatisticsFrame ) ;
gtk_widget_hide ( window - > ControlSectionBox ) ;
gtk_widget_hide ( window - > ControlSectionBox ) ;
g_signal_connect ( G_OBJECT ( window - > SaveButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
}
}
void on_log_path_choose ( GtkWidget * self , add_log_window * window ) {
void on_log_path_choose ( GtkWidget * self , add_log_window * window ) {
@ -486,10 +615,14 @@ void on_log_edit(GtkWidget *self,main_window *widgets){
g_signal_connect ( G_OBJECT ( window - > JournaldButton ) , " clicked " , G_CALLBACK ( on_journald_open ) , widgets ) ;
g_signal_connect ( G_OBJECT ( window - > JournaldButton ) , " clicked " , G_CALLBACK ( on_journald_open ) , widgets ) ;
} else {
} else {
gtk_widget_hide ( window - > JournaldButton ) ;
gtk_widget_hide ( window - > JournaldButton ) ;
g_signal_connect ( G_OBJECT ( window - > LogrotateButton ) , " clicked " , G_CALLBACK ( on_log_edit_logrotate_settings ) , widgets ) ;
dictionary * dict = NULL ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " widgets " , widgets ) ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " window " , window ) ;
g_signal_connect ( G_OBJECT ( window - > LogrotateButton ) , " clicked " , G_CALLBACK ( on_log_edit_logrotate_settings ) , dict ) ;
// g_signal_connect(G_OBJECT(window->MetalogButton),"clicked", G_CALLBACK(on_log),widgets);
// g_signal_connect(G_OBJECT(window->MetalogButton),"clicked", G_CALLBACK(on_log),widgets);
// g_signal_connect(G_OBJECT(window->SyslogButton),"clicked", G_CALLBACK(on_journald_open),widgets);
// g_signal_connect(G_OBJECT(window->SyslogButton),"clicked", G_CALLBACK(on_journald_open),widgets);
}
}
window - > log_name = name ;
gtk_entry_set_text ( GTK_ENTRY ( window - > LogDescriptionEntry ) , description ) ;
gtk_entry_set_text ( GTK_ENTRY ( window - > LogDescriptionEntry ) , description ) ;
config_str paths_parsed = yon_char_parse ( paths , & size , " \n " ) ;
config_str paths_parsed = yon_char_parse ( paths , & size , " \n " ) ;
GtkWidget * last = NULL ;
GtkWidget * last = NULL ;
@ -510,7 +643,6 @@ void on_log_edit(GtkWidget *self,main_window *widgets){
g_signal_connect ( G_OBJECT ( last ) , " clicked " , G_CALLBACK ( on_log_path_append ) , window ) ;
g_signal_connect ( G_OBJECT ( last ) , " clicked " , G_CALLBACK ( on_log_path_append ) , window ) ;
gtk_widget_set_sensitive ( window - > LogTypeCombo , 0 ) ;
gtk_widget_set_sensitive ( window - > LogTypeCombo , 0 ) ;
gtk_widget_set_sensitive ( window - > LogDescriptionEntry , 0 ) ;
gtk_widget_set_sensitive ( window - > LogDescriptionEntry , 0 ) ;
g_signal_connect ( G_OBJECT ( window - > SaveButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
}
}
}
}