@ -835,7 +835,9 @@ void on_quotas_edit(GtkWidget *self, dictionary *windows){
if ( dict - > data & & yon_dictionary_get_data ( dict , device_limits * ) - > read )
if ( dict - > data & & yon_dictionary_get_data ( dict , device_limits * ) - > read )
read_devices = yon_char_unite ( read_devices ? read_devices : " " , " " , dict - > key , " " , yon_dictionary_get_data ( dict , device_limits * ) - > read , " \n " , NULL ) ;
read_devices = yon_char_unite ( read_devices ? read_devices : " " , " " , dict - > key , " " , yon_dictionary_get_data ( dict , device_limits * ) - > read , " \n " , NULL ) ;
}
}
if ( read_devices [ strlen ( read_devices ) - 1 ] = = ' \n ' ) read_devices [ strlen ( read_devices ) - 1 ] = ' \0 ' ;
if ( ! yon_char_is_empty ( read_devices ) ) {
yon_char_remove_last_symbol ( read_devices , ' \n ' ) ;
}
read_limit = yon_char_unite ( read_limit ? read_limit : " " , read_devices , NULL ) ;
read_limit = yon_char_unite ( read_limit ? read_limit : " " , read_devices , NULL ) ;
@ -845,7 +847,9 @@ void on_quotas_edit(GtkWidget *self, dictionary *windows){
if ( dict - > data & & yon_dictionary_get_data ( dict , device_limits * ) - > write )
if ( dict - > data & & yon_dictionary_get_data ( dict , device_limits * ) - > write )
write_devices = yon_char_unite ( write_devices ? write_devices : " " , " " , dict - > key , " " , yon_dictionary_get_data ( dict , device_limits * ) - > write , " \n " , NULL ) ;
write_devices = yon_char_unite ( write_devices ? write_devices : " " , " " , dict - > key , " " , yon_dictionary_get_data ( dict , device_limits * ) - > write , " \n " , NULL ) ;
}
}
if ( write_devices [ strlen ( write_devices ) - 1 ] = = ' \n ' ) write_devices [ strlen ( write_devices ) - 1 ] = ' \0 ' ;
if ( ! yon_char_is_empty ( write_devices ) ) {
yon_char_remove_last_symbol ( write_devices , ' \n ' ) ;
}
write_limit = yon_char_unite ( write_limit ? write_limit : " " , write_devices , NULL ) ;
write_limit = yon_char_unite ( write_limit ? write_limit : " " , write_devices , NULL ) ;
gtk_list_store_set ( main_config . list , & iter , 1 , target , 2 , soft , 3 , hard , 4 , paging , 5 , cpu , 6 , read_limit , 7 , write_limit , 8 , string , - 1 ) ;
gtk_list_store_set ( main_config . list , & iter , 1 , target , 2 , soft , 3 , hard , 4 , paging , 5 , cpu , 6 , read_limit , 7 , write_limit , 8 , string , - 1 ) ;
yon_config_register ( CGROUP_QUOTA ( target ) , CGROUP_QUOTA_comd ( target ) , ( char * ) string ) ;
yon_config_register ( CGROUP_QUOTA ( target ) , CGROUP_QUOTA_comd ( target ) , ( char * ) string ) ;
@ -1260,89 +1264,86 @@ void yon_main_window_complete(main_window *widgets){
gtk_box_pack_start ( GTK_BOX ( widgets - > InterfaceBox ) , yon_gtk_builder_get_widget ( builder , " BoxMain " ) , 1 , 1 , 0 ) ;
gtk_box_pack_start ( GTK_BOX ( widgets - > InterfaceBox ) , yon_gtk_builder_get_widget ( builder , " BoxMain " ) , 1 , 1 , 0 ) ;
// Custom widgets configuration
// Custom widgets configuration
{
{
widgets - > FiltersButton = yon_gtk_builder_get_widget ( builder , " FiltersButton " ) ;
widgets - > FiltersButton = yon_gtk_builder_get_widget ( builder , " FiltersButton " ) ;
widgets - > InformationButton = yon_gtk_builder_get_widget ( builder , " InformationButton " ) ;
widgets - > InformationButton = yon_gtk_builder_get_widget ( builder , " InformationButton " ) ;
widgets - > RemoveButton = yon_gtk_builder_get_widget ( builder , " RemoveButton " ) ;
widgets - > RemoveButton = yon_gtk_builder_get_widget ( builder , " RemoveButton " ) ;
widgets - > EditButton = yon_gtk_builder_get_widget ( builder , " EditButton " ) ;
widgets - > EditButton = yon_gtk_builder_get_widget ( builder , " EditButton " ) ;
widgets - > AddButton = yon_gtk_builder_get_widget ( builder , " AddButton " ) ;
widgets - > AddButton = yon_gtk_builder_get_widget ( builder , " AddButton " ) ;
widgets - > MainTree = yon_gtk_builder_get_widget ( builder , " QuotasTreeView " ) ;
widgets - > MainTree = yon_gtk_builder_get_widget ( builder , " QuotasTreeView " ) ;
widgets - > MainNotebook = yon_gtk_builder_get_widget ( builder , " MainNotebook " ) ;
widgets - > MainNotebook = yon_gtk_builder_get_widget ( builder , " MainNotebook " ) ;
widgets - > DispatcherUpdateCheck = yon_gtk_builder_get_widget ( builder , " DispatcherUpdateCheck " ) ;
widgets - > DispatcherUpdateCheck = yon_gtk_builder_get_widget ( builder , " DispatcherUpdateCheck " ) ;
widgets - > DispatcherUpdateSpin = yon_gtk_builder_get_widget ( builder , " DispatcherUpdateSpin " ) ;
widgets - > DispatcherUpdateSpin = yon_gtk_builder_get_widget ( builder , " DispatcherUpdateSpin " ) ;
widgets - > DispatcherUpdateButton = yon_gtk_builder_get_widget ( builder , " DispatcherUpdateButton " ) ;
widgets - > DispatcherUpdateButton = yon_gtk_builder_get_widget ( builder , " DispatcherUpdateButton " ) ;
widgets - > DispatcherTerminal = yon_gtk_builder_get_widget ( builder , " DispatcherTerminal " ) ;
widgets - > DispatcherTerminal = yon_gtk_builder_get_widget ( builder , " DispatcherTerminal " ) ;
widgets - > ShowAllCheck = yon_gtk_builder_get_widget ( builder , " ShowAllCheck " ) ;
widgets - > ShowAllCheck = yon_gtk_builder_get_widget ( builder , " ShowAllCheck " ) ;
widgets - > ShowCoreCheck = yon_gtk_builder_get_widget ( builder , " ShowCoreCheck " ) ;
widgets - > ShowCoreCheck = yon_gtk_builder_get_widget ( builder , " ShowCoreCheck " ) ;
widgets - > ProcessesUpdateButton = yon_gtk_builder_get_widget ( builder , " ProcessesUpdateButton " ) ;
widgets - > ProcessesUpdateButton = yon_gtk_builder_get_widget ( builder , " ProcessesUpdateButton " ) ;
widgets - > ProcessesTerminal = yon_gtk_builder_get_widget ( builder , " ProcessesTerminal " ) ;
widgets - > ProcessesTerminal = yon_gtk_builder_get_widget ( builder , " ProcessesTerminal " ) ;
widgets - > TargetTypeCombo = yon_gtk_builder_get_widget ( builder , " TargetTypeCombo " ) ;
widgets - > TargetTypeCombo = yon_gtk_builder_get_widget ( builder , " TargetTypeCombo " ) ;
widgets - > TargetCombo = yon_gtk_builder_get_widget ( builder , " TargetCombo " ) ;
widgets - > TargetCombo = yon_gtk_builder_get_widget ( builder , " TargetCombo " ) ;
widgets - > InformationUpdateButton = yon_gtk_builder_get_widget ( builder , " InformationUpdateButton " ) ;
widgets - > InformationUpdateButton = yon_gtk_builder_get_widget ( builder , " InformationUpdateButton " ) ;
widgets - > InformationTerminal = yon_gtk_builder_get_widget ( builder , " InformationTerminal " ) ;
widgets - > InformationTerminal = yon_gtk_builder_get_widget ( builder , " InformationTerminal " ) ;
main_config . list = GTK_LIST_STORE ( gtk_builder_get_object ( builder , " liststore " ) ) ;
main_config . list = GTK_LIST_STORE ( gtk_builder_get_object ( builder , " liststore " ) ) ;
/* Widget registration for config monitoring | Регистрация виджетов для мониторинга конфига */
/* Widget registration for config monitoring | Регистрация виджетов для мониторинга конфига */
// yon_window_config_add_custom_parameter(widgets->HeadInfoLabel,"head-text","label",YON_TYPE_STRING);
// yon_window_config_add_custom_parameter(widgets->HeadInfoLabel,"head-text","label",YON_TYPE_STRING);
/* Signal connection | Присоединение сигналов */
/* Signal connection | Присоединение сигналов */
g_signal_connect ( G_OBJECT ( widgets - > FiltersButton ) , " clicked " , G_CALLBACK ( on_filters_opened ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > DocumentationMenuItem ) , " activate " , G_CALLBACK ( on_open_documentation_confirmation ) , WIKI_LINK ) ;
g_signal_connect ( G_OBJECT ( widgets - > InformationButton ) , " clicked " , G_CALLBACK ( on_information ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > FiltersButton ) , " clicked " , G_CALLBACK ( on_filters_opened ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > RemoveButton ) , " clicked " , G_CALLBACK ( on_remove ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > InformationButton ) , " clicked " , G_CALLBACK ( on_information ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > EditButton ) , " clicked " , G_CALLBACK ( on_edit_open ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > RemoveButton ) , " clicked " , G_CALLBACK ( on_remove ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > AddButton ) , " clicked " , G_CALLBACK ( on_add_open ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > EditButton ) , " clicked " , G_CALLBACK ( on_edit_open ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > MainNotebook ) , " switch-page " , G_CALLBACK ( on_tab_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > AddButton ) , " clicked " , G_CALLBACK ( on_add_open ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > DispatcherUpdateCheck ) , " toggled " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , widgets - > DispatcherUpdateSpin ) ;
g_signal_connect ( G_OBJECT ( widgets - > MainNotebook ) , " switch-page " , G_CALLBACK ( on_tab_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > DispatcherUpdateCheck ) , " toggled " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button_inversed ) , widgets - > DispatcherUpdateButton ) ;
g_signal_connect ( G_OBJECT ( widgets - > DispatcherUpdateCheck ) , " toggled " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button ) , widgets - > DispatcherUpdateSpin ) ;
g_signal_connect ( G_OBJECT ( widgets - > DispatcherUpdateCheck ) , " toggled " , G_CALLBACK ( on_dispatcher_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > DispatcherUpdateCheck ) , " toggled " , G_CALLBACK ( yon_gtk_widget_set_sensitive_from_toggle_button_inversed ) , widgets - > DispatcherUpdateButton ) ;
g_signal_connect ( G_OBJECT ( widgets - > DispatcherUpdateSpin ) , " output " , G_CALLBACK ( on_dispatcher_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > DispatcherUpdateCheck ) , " toggled " , G_CALLBACK ( on_dispatcher_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > DispatcherUpdateButton ) , " clicked " , G_CALLBACK ( on_dispatcher_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > DispatcherUpdateSpin ) , " output " , G_CALLBACK ( on_dispatcher_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ShowAllCheck ) , " toggled " , G_CALLBACK ( on_processes_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > DispatcherUpdateButton ) , " clicked " , G_CALLBACK ( on_dispatcher_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ShowCoreCheck ) , " toggled " , G_CALLBACK ( on_processes_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ShowAllCheck ) , " toggled " , G_CALLBACK ( on_processes_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > TargetTypeCombo ) , " changed " , G_CALLBACK ( on_info_target_type_switched ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ShowCoreCheck ) , " toggled " , G_CALLBACK ( on_processes_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > TargetCombo ) , " changed " , G_CALLBACK ( on_information_chosen_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > TargetTypeCombo ) , " changed " , G_CALLBACK ( on_info_target_type_switched ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ProcessesUpdateButton ) , " clicked " , G_CALLBACK ( on_processes_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > TargetCombo ) , " changed " , G_CALLBACK ( on_information_chosen_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > InformationUpdateButton ) , " clicked " , G_CALLBACK ( on_information_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ProcessesUpdateButton ) , " clicked " , G_CALLBACK ( on_processes_update ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > InformationUpdateButton ) , " clicked " , G_CALLBACK ( on_information_update ) , 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 - > SaveMenuItem ) , " activate " , G_CALLBACK ( on_config_global_local_save ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > SaveLocalMenuItem ) , " activate " , G_CALLBACK ( on_config_local_save ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > SaveGlobalMenuItem ) , " activate " , G_CALLBACK ( on_config_global_save ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > SaveCustomMenuItem ) , " activate " , G_CALLBACK ( on_config_custom_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 - > LoadGlobalMenuItem ) , " activate " , G_CALLBACK ( on_config_global_load ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > LoadCustomMenuItem ) , " activate " , G_CALLBACK ( on_config_custom_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 ) ;
on_dispatcher_update ( NULL , widgets ) ;
on_processes_update ( NULL , widgets ) ;
yon_window_config_add_listener ( widgets - > DispatcherUpdateCheck , " DispatcherAutoupdate " , " active " , YON_TYPE_BOOLEAN ) ;
on_dispatcher_update ( NULL , widgets ) ;
yon_window_config_add_listener ( widgets - > ShowAllCheck , " ProcessShowAll " , " active " , YON_TYPE_BOOLEAN ) ;
on_processes_update ( NULL , widgets ) ;
yon_window_config_add_listener ( widgets - > ShowCoreCheck , " ProcessShowCore " , " active " , YON_TYPE_BOOLEAN ) ;
yon_window_config_add_listener ( widgets - > DispatcherUpdateCheck , " DispatcherAutoupdate " , " active " , YON_TYPE_BOOLEAN ) ;
yon_gtk_tree_view_minimal_fixed_size_set_full ( GTK_TREE_VIEW ( widgets - > MainTree ) ) ;
yon_window_config_add_listener ( widgets - > ShowAllCheck , " ProcessShowAll " , " active " , YON_TYPE_BOOLEAN ) ;
GList * list = gtk_tree_view_get_columns ( GTK_TREE_VIEW ( widgets - > MainTree ) ) ;
yon_window_config_add_listener ( widgets - > ShowCoreCheck , " ProcessShowCore " , " active " , YON_TYPE_BOOLEAN ) ;
for ( guint i = 0 ; i < g_list_length ( list ) ; i + + ) {
yon_gtk_tree_view_minimal_fixed_size_set_full ( GTK_TREE_VIEW ( widgets - > MainTree ) ) ;
yon_window_config_add_listener ( ( GtkWidget * ) g_list_nth_data ( list , i ) , yon_char_append ( " column " , yon_char_from_int ( i ) ) , " fixed-width " , YON_TYPE_INT ) ;
GList * list = gtk_tree_view_get_columns ( GTK_TREE_VIEW ( widgets - > MainTree ) ) ;
}
for ( guint i = 0 ; i < g_list_length ( list ) ; i + + ) {
main_config . users = yon_ubl_get_all_users ( & main_config . users_size ) ;
yon_window_config_add_listener ( ( GtkWidget * ) g_list_nth_data ( list , i ) , yon_char_append ( " column " , yon_char_from_int ( i ) ) , " fixed-width " , YON_TYPE_INT ) ;
main_config . processes = yon_config_load ( get_processes_command , & main_config . processes_size ) ;
}
main_config . slices = yon_config_load ( get_slices_command , & main_config . slices_size ) ;
main_config . users = yon_ubl_get_all_users ( & main_config . users_size ) ;
for ( int i = 0 ; i < main_config . users_size ; i + + ) {
main_config . processes = yon_config_load ( get_processes_command , & main_config . processes_size ) ;
yon_char_remove_last_symbol ( main_config . users [ i ] , ' \n ' ) ;
main_config . slices = yon_config_load ( get_slices_command , & main_config . slices_size ) ;
}
for ( int i = 0 ; i < main_config . users_size ; i + + ) {
for ( int i = 0 ; i < main_config . processes_size ; i + + ) {
yon_char_remove_last_symbol ( main_config . users [ i ] , ' \n ' ) ;
yon_char_remove_last_symbol ( main_config . processes [ i ] , ' \n ' ) ;
}
}
for ( int i = 0 ; i < main_config . processes_size ; i + + ) {
for ( int i = 0 ; i < main_config . slices_size ; i + + ) {
yon_char_remove_last_symbol ( main_config . processes [ i ] , ' \n ' ) ;
yon_char_remove_last_symbol ( main_config . slices [ i ] , ' \n ' ) ;
}
}
for ( int i = 0 ; i < main_config . slices_size ; i + + ) {
on_info_target_type_switched ( widgets - > TargetTypeCombo , widgets ) ;
yon_char_remove_last_symbol ( main_config . slices [ i ] , ' \n ' ) ;
}
on_info_target_type_switched ( widgets - > TargetTypeCombo , widgets ) ;
}
}
on_config_local_load ( NULL , widgets ) ;
on_config_local_load ( NULL , 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 ) ;