@ -98,43 +98,205 @@ void on_about(){
gtk_widget_show ( window ) ;
}
void on_load ( ) {
gsize size = 0 ;
config_str repos = yon_window_config_get_section ( " repos " , & size ) ;
gtk_tree_store_clear ( main_config . tree_store ) ;
for ( int i = 0 ; i < size ; i + + ) {
char * name = yon_char_new ( repos [ i ] ) ;
char * path = yon_char_new ( name ) ;
yon_char_divide ( name , yon_char_find_last ( name , ' / ' ) ) ;
GtkTreeIter iter ;
gtk_tree_store_append ( main_config . tree_store , & iter , NULL ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 0 , folder_no_edits , 1 , name , 2 , path , 3 , 0 , 4 , 0 , 9 , name , - 1 ) ;
char * parameter_string = NULL ;
yon_window_config_get_parameter ( " repos " , repos [ i ] , ( void * ) & parameter_string , YON_TYPE_STRING ) ;
if ( parameter_string ) {
int packsize = 0 ;
config_str packs = yon_char_parse ( parameter_string , & packsize , " " ) ;
GtkTreeIter packIter ;
if ( ! packs ) {
FILE * file = popen ( get_saved_package_info_command ( path , parameter_string ) , " r " ) ;
char * cur_string = g_malloc0 ( sizeof ( char ) * 4096 ) ;
char * packname = NULL , * packver = NULL , * packarch = NULL , * packdepends = NULL ;
while ( fgets ( cur_string , 4096 , file ) ) {
char * steer = yon_char_divide_search ( cur_string , " \n " , - 1 ) ;
char * p = yon_char_divide_search ( steer , " : " , - 1 ) ;
if ( strstr ( p , " Name " ) ) packname = yon_char_new ( steer ) ;
else if ( strstr ( p , " Version " ) ) packver = yon_char_new ( steer ) ;
else if ( strstr ( p , " Architecture " ) ) packarch = yon_char_new ( steer ) ;
else if ( strstr ( p , " Depends On " ) ) packdepends = yon_char_new ( steer ) ;
}
gtk_tree_store_append ( main_config . tree_store , & packIter , & iter ) ;
gtk_tree_store_set ( main_config . tree_store , & packIter , 0 , document_no_edits , 1 , yon_char_unite ( packname , " - " , packver , " - " , packarch , NULL ) , 2 , yon_char_unite ( path , " /pool/overlay/ " , parameter_string , NULL ) , 3 , 0 , 4 , 0 , 9 , packname , 10 , packver , 11 , packarch , 12 , packdepends , - 1 ) ;
}
else
for ( int j = 0 ; j < packsize ; j + + ) {
char * command = get_saved_package_info_command ( path , packs [ j ] ) ;
FILE * file = popen ( command , " r " ) ;
char * cur_string = g_malloc0 ( sizeof ( char ) * 4096 ) ;
char * packname = NULL , * packver = NULL , * packarch = NULL , * packdepends = NULL ;
while ( fgets ( cur_string , 4096 , file ) ) {
char * steer = yon_char_divide_search ( cur_string , " \n " , - 1 ) ;
char * p = yon_char_divide_search ( steer , " : " , - 1 ) ;
if ( strstr ( p , " Name " ) ) packname = yon_char_new ( steer ) ;
else if ( strstr ( p , " Version " ) ) packver = yon_char_new ( steer ) ;
else if ( strstr ( p , " Architecture " ) ) packarch = yon_char_new ( steer ) ;
else if ( strstr ( p , " Depends On " ) ) packdepends = yon_char_new ( steer ) ;
}
gtk_tree_store_append ( main_config . tree_store , & packIter , & iter ) ;
gtk_tree_store_set ( main_config . tree_store , & packIter , 0 , document_no_edits , 1 , yon_char_unite ( packname , " - " , packver , " - " , packarch , NULL ) , 2 , yon_char_unite ( path , " /pool/overlay/ " , parameter_string , NULL ) , 3 , 0 , 4 , 0 , 9 , packname , 10 , packver , 11 , packarch , 12 , packdepends , - 1 ) ;
}
}
}
}
void on_save ( ) {
char * command = " repo-manager " ;
char * remove_command = NULL ;
char * add_command = NULL ;
char * remove_flagged = NULL ;
char * add_flagged = NULL ;
char * origin_flagged = NULL ;
char * name_flagged = NULL ;
GtkTreeIter iter , childIter ;
dictionary * pack_groups = NULL ;
GtkTreeIter iter , childIter , * deleteIter ;
int valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( main_config . tree_store ) , & iter ) ;
for ( ; valid ; valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( main_config . tree_store ) , & iter ) ) {
remove_flagged = NULL ;
add_flagged = NULL ;
char * remove_command = NULL ;
char * add_signed_command = NULL ;
char * add_command = NULL ;
char * remove_flagged = NULL ;
char * add_flagged = NULL ;
char * origin_flagged = NULL ;
char * name_flagged = NULL ;
char * packnames = NULL ;
char * sign_flagged = NULL ;
char * repo_sign_flagged = NULL ;
int repostatus = 0 ;
gboolean renamed = 0 ;
char * old_name = NULL ;
gtk_tree_model_get ( GTK_TREE_MODEL ( main_config . tree_store ) , & iter , 1 , & name_flagged , 3 , & origin_flagged , 4 , & repostatus , 6 , & old_name , 7 , & renamed , - 1 ) ;
// if (!strstr(name_flagged,".db.tar.gz")) name_flagged = yon_char_append(name_flagged,".db.tar.gz");
remove_command = yon_char_unite ( command , " remove -d " , origin_flagged , " -r " , name_flagged , NULL ) ;
add_command = yon_char_unite ( command , " add -d " , origin_flagged , " -r " , name_flagged , NULL ) ;
int valid_child = gtk_tree_model_iter_children ( GTK_TREE_MODEL ( main_config . tree_store ) , & childIter , & iter ) ;
char * add_packages = NULL ;
char * signed_packages = NULL ;
char * remove_packages = NULL ;
gtk_tree_model_get ( GTK_TREE_MODEL ( main_config . tree_store ) , & iter , 1 , & name_flagged , 2 , & origin_flagged , 3 , & repostatus , 4 , & old_name , 5 , & renamed , 13 , & repo_sign_flagged , - 1 ) ;
yon_char_divide_search ( repo_sign_flagged , " < " , - 1 ) ;
repo_sign_flagged = yon_char_divide_search ( repo_sign_flagged , " > " , - 1 ) ;
if ( repostatus = = 1 ) gtk_tree_store_set ( main_config . tree_store , & iter , 0 , folder_no_edits , 3 , 0 , - 1 ) ;
else if ( repostatus = = - 1 ) {
system ( yon_char_unite ( " rm -rfd " , origin_flagged , NULL ) ) ;
yon_window_config_erase_custom_parameter ( origin_flagged , " repos " ) ;
GtkTreeIter * deleteIter = gtk_tree_iter_copy ( & iter ) ;
if ( ! gtk_tree_model_iter_previous ( GTK_TREE_MODEL ( main_config . tree_store ) , deleteIter ) ) {
gtk_tree_iter_free ( deleteIter ) ;
deleteIter = gtk_tree_iter_copy ( & iter ) ;
if ( ! gtk_tree_model_iter_next ( GTK_TREE_MODEL ( main_config . tree_store ) , deleteIter ) ) {
gtk_tree_iter_free ( deleteIter ) ;
deleteIter = gtk_tree_iter_copy ( & iter ) ;
gtk_tree_store_remove ( main_config . tree_store , deleteIter ) ;
break ;
} else {
gtk_tree_store_remove ( main_config . tree_store , & iter ) ;
}
} else {
gtk_tree_store_remove ( main_config . tree_store , & iter ) ;
}
continue ;
}
gboolean valid_child = gtk_tree_model_iter_children ( GTK_TREE_MODEL ( main_config . tree_store ) , & childIter , & iter ) ;
for ( ; valid_child ; valid_child = gtk_tree_model_iter_next ( GTK_TREE_MODEL ( main_config . tree_store ) , & childIter ) ) {
int status = 0 , deleted = 0 ;
char * path = NULL ;
gtk_tree_model_get ( GTK_TREE_MODEL ( main_config . tree_store ) , & childIter , 3 , & path , 4 , & status , 5 , & deleted , - 1 ) ;
gtk_tree_store_set ( main_config . tree_store , & childIter , 4 , 0 , 5 , 0 , - 1 ) ;
if ( status = = - 1 ) { remove_flagged = yon_char_unite ( remove_flagged ? yon_char_append ( remove_flagged , " , " ) : " -p " , path , NULL ) ; /*gtk_tree_store_remove(main_config.tree_store,&childIter);*/ }
else if ( status = = 1 & & deleted = = 0 ) { add_flagged = yon_char_unite ( add_flagged ? yon_char_append ( add_flagged , " , " ) : " -p " , path , NULL ) ; gtk_tree_store_set ( main_config . tree_store , & childIter , 0 , " com.ublinux.ubl-settings-repomanager.document-symbolic " , - 1 ) ; }
char * pack_name , * pack_path ;
char * pack_old_repo , * pack_new_repo ;
char * pack_code_name , * pack_version , * pack_arch , * pack_depends ;
int pack_status = 0 ;
gboolean moved = 0 ;
char * pack_sign ;
gboolean pack_signed = 0 ;
gtk_tree_model_get ( GTK_TREE_MODEL ( main_config . tree_store ) , & childIter , 1 , & pack_name , 2 , & pack_path , 3 , & pack_status , 4 , & pack_old_repo , 5 , & pack_new_repo , 6 , & moved , 9 , & pack_code_name , 10 , & pack_version , 11 , & pack_arch , 12 , & pack_depends , 13 , & pack_sign , 14 , & pack_signed , - 1 ) ;
if ( ! pack_path ) continue ;
char * pack_sign_paths ;
pack_sign_paths = yon_char_new ( pack_path ) ;
yon_char_divide ( pack_sign_paths , yon_char_find_last ( pack_sign_paths , ' / ' ) ) ;
packnames = yon_char_unite ( packnames ? yon_char_append ( packnames , " " ) : " " , pack_sign_paths , NULL ) ;
if ( pack_sign & & pack_signed = = 1 ) {
yon_char_divide_search ( pack_sign , " < " , - 1 ) ;
pack_sign = yon_char_divide_search ( pack_sign , " > " , - 1 ) ;
if ( ! pack_groups | | ! ( yon_dictionary_get ( & pack_groups , pack_sign ) ) ) {
dictionary * dict = yon_dictionary_new ( ) ;
dict - > key = pack_sign_paths ;
yon_dictionary_add_or_create_if_exists_with_data ( pack_groups , yon_char_new ( pack_sign ) , dict ) ;
} else {
dictionary * dict = yon_dictionary_new ( ) ;
dict - > key = pack_sign_paths ;
yon_dictionary_add_or_create_if_exists_with_data ( pack_groups - > data , yon_char_new ( pack_sign ) , dict ) ;
}
}
if ( pack_status = = 1 ) {
add_packages = yon_char_unite ( add_packages ? yon_char_append ( add_packages , " , " ) : " " , pack_path , NULL ) ;
pack_path = yon_char_unite ( origin_flagged , " /pool/overlay/ " , yon_char_divide ( pack_path , yon_char_find_last ( pack_path , ' / ' ) ) ) ;
gtk_tree_store_set ( main_config . tree_store , & childIter , 2 , pack_path , - 1 ) ;
} else if ( pack_status = = - 1 ) {
remove_packages = yon_char_unite ( remove_packages ? yon_char_append ( remove_packages , " , " ) : " " , pack_code_name , NULL ) ;
}
if ( pack_status = = 1 ) gtk_tree_store_set ( main_config . tree_store , & childIter , 0 , document_no_edits , 3 , 0 , - 1 ) ;
if ( pack_status = = - 1 ) {
GtkTreeIter * deleteIter = gtk_tree_iter_copy ( & childIter ) ;
if ( ! gtk_tree_model_iter_previous ( GTK_TREE_MODEL ( main_config . tree_store ) , deleteIter ) ) {
gtk_tree_iter_free ( deleteIter ) ;
deleteIter = gtk_tree_iter_copy ( & childIter ) ;
if ( ! gtk_tree_model_iter_next ( GTK_TREE_MODEL ( main_config . tree_store ) , deleteIter ) ) {
gtk_tree_iter_free ( deleteIter ) ;
deleteIter = gtk_tree_iter_copy ( & childIter ) ;
gtk_tree_store_remove ( main_config . tree_store , deleteIter ) ;
break ;
} else {
gtk_tree_store_remove ( main_config . tree_store , & childIter ) ;
}
} else {
gtk_tree_store_remove ( main_config . tree_store , & childIter ) ;
}
}
}
if ( origin_flagged & & name_flagged ) {
if ( add_packages ) {
char * sign_check = repo_sign_flagged ? yon_char_new ( repo_sign_flagged ) : NULL ;
repo_sign_flagged = NULL ;
add_command = yon_char_unite ( command , " add -d \" " , origin_flagged , " \" -r \" " , name_flagged , sign_flagged ? yon_char_append ( " \" --sign-repo " , sign_flagged ) : " \" " , " -p " , add_packages , NULL ) ;
}
if ( remove_packages ) {
char * sign_check = repo_sign_flagged ? yon_char_new ( repo_sign_flagged ) : NULL ;
repo_sign_flagged = NULL ;
remove_command = yon_char_unite ( command , " remove -d \" " , origin_flagged , " \" -r \" " , name_flagged , sign_flagged ? yon_char_append ( " \" --sign-repo " , sign_flagged ) : " \" " , " -p " , remove_packages , NULL ) ;
}
if ( repostatus = = 1 ) {
yon_window_config_add_custom_parameter ( yon_char_unite ( origin_flagged , NULL ) , " repos " , packnames , YON_TYPE_STRING ) ;
}
if ( ! add_packages & & ! signed_packages & & ! remove_packages & & repostatus = = 1 )
add_command = yon_char_unite ( command , " add -d \" " , origin_flagged , " \" -r \" " , name_flagged , sign_flagged ? yon_char_append ( " \" --sign-repo " , sign_flagged ) : " \" " , NULL ) ;
if ( add_signed_command ) { /*printf("%s\n",add_signed_command);*/ system ( add_signed_command ) ;
yon_ubl_status_box_render ( OPERATION_DONE_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ; }
if ( add_command ) { /*printf("%s\n",add_command);*/ system ( add_command ) ;
yon_ubl_status_box_render ( OPERATION_DONE_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ; }
if ( remove_command ) { /*printf("%s\n",remove_command);*/ system ( remove_command ) ;
yon_ubl_status_box_render ( OPERATION_DONE_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ; }
if ( pack_groups ) {
dictionary * dct ;
for_dictionaries ( dct , pack_groups ) {
char * signed_packs = NULL ;
dictionary * pck ;
for_dictionaries ( pck , yon_dictionary_get_data ( dct , dictionary * ) ) {
signed_packs = yon_char_unite ( signed_packs ? yon_char_append ( signed_packs , " , " ) : " " , pck - > key , NULL ) ;
} char * sign_check = repo_sign_flagged ? yon_char_new ( repo_sign_flagged ) : NULL ;
repo_sign_flagged = NULL ;
char * sign_command = yon_char_unite ( command , " add -f -d " , origin_flagged , " -r " , name_flagged , " --sign-pkg " , dct - > key , " -p $(find " , origin_flagged , " /pool/overlay -name " , signed_packs , " ) " , NULL ) ;
printf ( " %s \n " , sign_command ) ;
system ( sign_command ) ;
}
}
}
if ( origin_flagged )
remove_command = remove_flagged ? yon_char_unite ( remove_command , remove_flagged , NULL ) : NULL ;
add_command = add_flagged ? yon_char_unite ( add_command , add_flagged , NULL ) : add_command ;
printf ( " %s \n %s \n " , remove_command , add_command ) ;
if ( remove_command ) system ( remove_command ) ;
if ( add_command ) system ( add_command ) ;
}
}
@ -160,28 +322,50 @@ void on_search(GtkCellEditable *self, main_window *widgets){
}
gtk_tree_view_expand_row ( GTK_TREE_VIEW ( widgets - > RepoTree ) , gtk_tree_model_get_path ( GTK_TREE_MODEL ( main_config . tree_store ) , & iter ) , 0 ) ;
}
yon_ubl_status_box_render ( OPERATION_DONE_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
}
void on_tree_selection_changed ( GtkWidget * self , main_window * widgets ) {
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . tree_store ) ;
GtkTreeIter iter ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > RepoTree ) ) , & model , & iter ) ) {
char * codeName = NULL , * version = NULL , * architecture = NULL ;
char * codeName = NULL , * version = NULL , * architecture = NULL , * dependeces = NULL , * signature = NULL ;
int serverType = 0 , trusted = 0 , published = 0 ;
gtk_tree_model_get ( model , & iter , 11, & codeName , 12 , & version , 13 , & architec ture, - 1 ) ;
gtk_tree_model_get ( model , & iter , 9, & codeName , 10 , & version , 11 , & architecture , 12 , & dependeces , 13 , & signa ture, - 1 ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > CodeNameInfoLabel ) , codeName ? codeName : " " ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > VersionInfoLabel ) , version ? version : " " ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > ArchitectureInfoLabel ) , architecture ? architecture : " " ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > DependencesInfoLabel ) , dependeces ? dependeces : " " ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > SignatureInfoLabel ) , signature ? signature : ABSENT_LABEL ) ;
int depth = gtk_tree_store_iter_depth ( main_config . tree_store , & iter ) ;
if ( depth = = 0 ) {
gtk_widget_set_sensitive ( widgets - > CreateButton , 1 ) ;
gtk_widget_set_sensitive ( widgets - > LoadFromLocalButton , 1 ) ;
gtk_widget_set_sensitive ( widgets - > ConfigureButton , 1 ) ;
gtk_widget_set_sensitive ( widgets - > DeleteButton , 1 ) ;
gtk_widget_set_sensitive ( widgets - > AddPackageButton , 1 ) ;
gtk_widget_set_sensitive ( widgets - > RemovePackageButton , 0 ) ;
gtk_widget_set_visible ( widgets - > NameBox , 1 ) ;
gtk_widget_set_visible ( widgets - > DependenceBox , 0 ) ;
gtk_widget_set_visible ( widgets - > VersionBox , 0 ) ;
gtk_widget_set_visible ( widgets - > ArchitectureBox , 0 ) ;
gtk_widget_set_visible ( widgets - > SignatureBox , 1 ) ;
} else if ( depth = = 1 ) {
gtk_widget_set_sensitive ( widgets - > CreateButton , 1 ) ;
gtk_widget_set_sensitive ( widgets - > LoadFromLocalButton , 1 ) ;
gtk_widget_set_sensitive ( widgets - > ConfigureButton , 0 ) ;
gtk_widget_set_sensitive ( widgets - > DeleteButton , 0 ) ;
gtk_widget_set_sensitive ( widgets - > AddPackageButton , 1 ) ;
gtk_widget_set_sensitive ( widgets - > RemovePackageButton , 1 ) ;
gtk_widget_set_visible ( widgets - > NameBox , 1 ) ;
gtk_widget_set_visible ( widgets - > DependenceBox , 1 ) ;
gtk_widget_set_visible ( widgets - > VersionBox , 1 ) ;
gtk_widget_set_visible ( widgets - > ArchitectureBox , 1 ) ;
gtk_widget_set_visible ( widgets - > SignatureBox , 1 ) ;
}
}
}
int yon_char_find_last ( char * source , char find ) {
int size = strlen ( source ) ;
int i = size ;
for ( ; source [ i ] ! = find & & i > 0 ; i - - ) ;
return i ;
}
void on_repo_add_new ( GtkWidget * self , dictionary * dict ) {
main_window * widgets = yon_dictionary_get_data ( dict - > first , main_window * ) ;
repo_create_window * window = yon_dictionary_get_data ( dict - > first - > next , repo_create_window * ) ;
@ -189,35 +373,18 @@ void on_repo_add_new(GtkWidget *self, dictionary *dict){
char * name = NULL ;
name = window - > path ;
window - > path = yon_char_divide ( name , yon_char_find_last ( window - > path , ' / ' ) ) ;
if ( ! name | | strcmp ( name , " " ) ! = 0 ) {
GtkTreeIter * iter = yon_repo_append ( widgets , name , YON_REPO_LINE_REPO_TYPE ) ;
gtk_tree_store_set ( main_config . tree_store , iter , 0 , " com.ublinux.ubl-settings-repomanager.folder-green-symbolic " , 2 , window - > BranchesListStore , 3 , window - > path , - 1 ) ;
gtk_tree_store_set ( main_config . tree_store , iter , 0 , folder_added , 2 , window - > path , 3 , 1 , - 1 ) ;
yon_ubl_status_box_render ( OPERATION_DONE_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
} else {
yon_ubl_status_box_render ( EMPTY_NAME_LABEL , BACKGROUND_IMAGE_FAIL_TYPE ) ;
}
}
void on_branch_add ( GtkCellRendererText * self , char * path , char * new_text , repo_create_window * window ) {
if ( new_text & & strcmp ( new_text , " " ) ! = 0 ) {
GtkTreeIter iter ;
gboolean used , use = 1 ;
gtk_tree_model_get_iter_from_string ( GTK_TREE_MODEL ( window - > BranchesListStore ) , & iter , path ) ;
gtk_tree_model_get ( GTK_TREE_MODEL ( window - > BranchesListStore ) , & iter , 1 , & used , - 1 ) ;
used ;
gtk_list_store_set ( window - > BranchesListStore , & iter , 0 , new_text , 1 , & use , - 1 ) ;
if ( used = = 0 )
gtk_list_store_append ( window - > BranchesListStore , & iter ) ;
}
}
char * on_choose_repo_folder ( GtkWidget * self , repo_create_window * window ) {
GtkFileFilter * file_filter = gtk_file_filter_new ( ) ;
gtk_file_filter_add_pattern ( file_filter , " *db.tar.gz " ) ;
GtkWidget * chooser = gtk_file_chooser_dialog_new ( ADD_PACKAGE_REPO_LABEL , NULL , GTK_FILE_CHOOSER_ACTION_SAVE , CANCEL_LABEL , GTK_RESPONSE_CANCEL , OPEN_LABEL , GTK_RESPONSE_ACCEPT , NULL ) ;
gtk_file_chooser_add_filter ( GTK_FILE_CHOOSER ( chooser ) , file_filter ) ;
GtkWidget * chooser = gtk_file_chooser_dialog_new ( ADD_REPO_LABEL , NULL , GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER , CANCEL_LABEL , GTK_RESPONSE_CANCEL , OPEN_LABEL , GTK_RESPONSE_ACCEPT , NULL ) ;
gtk_window_set_icon_name ( GTK_WINDOW ( chooser ) , icon_path ) ;
int res = gtk_dialog_run ( GTK_DIALOG ( chooser ) ) ;
if ( res = = GTK_RESPONSE_ACCEPT ) {
@ -234,6 +401,7 @@ void on_repo_new (GtkWidget *self, main_window *widgets){
dictionary * dict = yon_dictionary_new_with_data ( " " , widgets ) ;
dict = yon_dictionary_append_with_data ( dict , " " , window ) ;
on_repo_add_new ( self , dict ) ;
yon_ubl_status_box_render ( OPERATION_DONE_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
}
void on_repo_add_file ( GtkWidget * self , main_window * widgets ) {
@ -248,6 +416,54 @@ void on_repo_remove(GtkWidget *self, main_window *widgets){
yon_repo_remove ( widgets ) ;
}
void on_sign_save ( GtkWidget * self , dictionary * dict ) {
GtkTreeIter iter ;
main_window * widgets = yon_dictionary_get_data ( dict - > first , main_window * ) ;
repo_sign_window * window = yon_dictionary_get_data ( dict - > first - > next , repo_sign_window * ) ;
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . tree_store ) ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > RepoTree ) ) , & model , & iter ) ) {
char * key = ( char * ) gtk_combo_box_text_get_active_text ( GTK_COMBO_BOX_TEXT ( window - > KeysCombo ) ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 13 , key , 14 , 1 , - 1 ) ;
}
on_tree_selection_changed ( self , widgets ) ;
yon_ubl_status_box_render ( OPERATION_DONE_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
on_close_subwindow ( self ) ;
}
void on_repo_sign ( GtkWidget * self , main_window * widgets ) {
repo_sign_window * window = g_malloc ( sizeof ( repo_sign_window ) ) ;
GtkBuilder * builder = gtk_builder_new_from_resource ( glade_sign_path ) ;
window - > Window = yon_gtk_builder_get_widget ( builder , " repoSignWindow " ) ;
window - > HeaderLabel = yon_gtk_builder_get_widget ( builder , " signHeaderNameLabel " ) ;
window - > KeysCombo = yon_gtk_builder_get_widget ( builder , " repoSignKeysCombo " ) ;
window - > SaveButton = yon_gtk_builder_get_widget ( builder , " repoSignSaveButton " ) ;
window - > CloseButton = yon_gtk_builder_get_widget ( builder , " repoSignCancelButton " ) ;
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . tree_store ) ;
GtkTreeIter iter ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > RepoTree ) ) , & model , & iter ) ) {
if ( gtk_tree_store_iter_depth ( main_config . tree_store , & iter ) = = 1 )
gtk_label_set_text ( GTK_LABEL ( window - > HeaderLabel ) , yon_char_unite ( DIGITAL_SIGNATURE_LABEL , " - " , PACKAGE_LABEL , NULL ) ) ;
else
gtk_label_set_text ( GTK_LABEL ( window - > HeaderLabel ) , yon_char_unite ( DIGITAL_SIGNATURE_LABEL , " - " , REPOSITORY_LABEL , NULL ) ) ;
int size = 0 ;
config_str ret = yon_config_load ( get_gpg_keys_command , & size ) ;
for ( int i = 0 ; i < size ; i + + ) {
ret [ i ] = yon_char_divide_search ( ret [ i ] , " \n " , - 1 ) ;
if ( ! strstr ( ret [ i ] , " ] " ) & & ! strstr ( ret [ i ] , " [ " ) )
gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT ( window - > KeysCombo ) , ret [ i ] ) ;
}
dictionary * dict = yon_dictionary_new_with_data ( " " , widgets ) ;
dict = yon_dictionary_append_with_data ( dict , " " , window ) ;
g_signal_connect ( G_OBJECT ( window - > SaveButton ) , " clicked " , G_CALLBACK ( on_sign_save ) , dict ) ;
g_signal_connect ( G_OBJECT ( window - > CloseButton ) , " clicked " , G_CALLBACK ( on_close_subwindow ) , NULL ) ;
gtk_widget_show ( window - > Window ) ;
} else {
yon_ubl_status_box_render ( SIGN_CHOOSE_LABEL , BACKGROUND_IMAGE_FAIL_TYPE ) ;
}
}
void on_repo_configure ( GtkWidget * self , main_window * widgets ) {
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . tree_store ) ;
GtkTreeIter iter ;
@ -280,19 +496,21 @@ void on_repo_configure_done(GtkWidget *self, dictionary *dict){
char * oldname = NULL ;
int status = 0 ;
char * name = ( char * ) gtk_entry_get_text ( GTK_ENTRY ( window - > NameEntry ) ) ;
gtk_tree_model_get ( model , & iter , 1 , & oldname , 4 , & status , - 1 ) ;
gtk_tree_model_get ( model , & iter , 1 , & oldname , 3 , & status , - 1 ) ;
if ( status = = 0 )
gtk_tree_store_set ( main_config . tree_store , & iter , 1 , name , 6, oldname , 7 , 1 , - 1 ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 1 , name , 4, oldname , 6 , 1 , - 1 ) ;
else if ( status = = 1 )
gtk_tree_store_set ( main_config . tree_store , & iter , 1 , name , - 1 ) ;
}
yon_ubl_status_box_render ( OPERATION_DONE_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
on_close_subwindow ( self ) ;
}
void on_repo_load_local ( GtkWidget * self , main_window * widgets ) {
GtkFileFilter * file_filter = gtk_file_filter_new ( ) ;
GtkWidget * chooser = gtk_file_chooser_dialog_new ( LOAD_REPO_LABEL , NULL , GTK_FILE_CHOOSER_ACTION_OPEN , CANCEL_LABEL , GTK_RESPONSE_CANCEL , OPEN_LABEL , GTK_RESPONSE_ACCEPT , NULL ) ;
gtk_file_filter_add_pattern ( file_filter , " *db.tar.gz " ) ;
GtkWidget * chooser = gtk_file_chooser_dialog_new ( ADD_PACKAGE_REPO_LABEL , NULL , GTK_FILE_CHOOSER_ACTION_OPEN , CANCEL_LABEL , GTK_RESPONSE_CANCEL , OPEN_LABEL , GTK_RESPONSE_ACCEPT , NULL ) ;
gtk_file_filter_set_name ( file_filter , " *db.tar.gz " ) ;
gtk_file_chooser_add_filter ( GTK_FILE_CHOOSER ( chooser ) , file_filter ) ;
int res = gtk_dialog_run ( GTK_DIALOG ( chooser ) ) ;
if ( res = = GTK_RESPONSE_ACCEPT ) {
@ -310,7 +528,6 @@ void on_repo_load_local(GtkWidget *self, main_window *widgets){
GtkTreeIter * yon_repo_append ( main_window * widgets , char * name , YON_REPO_LINE_TYPE type ) {
GtkTreeIter * retIter = g_malloc0 ( sizeof ( GtkTreeIter ) ) ;
GtkTreeIter iter , parentIter ;
GdkPixbuf * icon = NULL ;
GtkIconTheme * theme = gtk_icon_theme_get_default ( ) ;
char * name_short = yon_char_new ( name ) ;
gboolean fls = 0 ;
@ -321,23 +538,21 @@ GtkTreeIter *yon_repo_append(main_window *widgets, char *name, YON_REPO_LINE_TYP
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . tree_store ) ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > RepoTree ) ) , & model , & parentIter ) ) {
if ( type = = YON_REPO_LINE_REPO_TYPE ) {
icon = gtk_icon_theme_load_icon_for_scale ( theme , " com.ublinux.ubl-settings-repomanager.folder-symbolic " , 16 , 1 , GTK_ICON_LOOKUP_FORCE_SIZE , NULL ) ;
gtk_tree_store_append ( main_config . tree_store , & iter , NULL ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 0 , " com.ublinux.ubl-settings-repomanager.folder-symbolic " , 1 , name_short , 3 , name , 4 , 1 , 5 , fls , - 1 ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 0 , folder_no_edits , 1 , name_short , 2 , name , 3 , 1 , 4 , fls , - 1 ) ;
retIter = gtk_tree_iter_copy ( & iter ) ;
}
else if ( type = = YON_REPO_LINE_FILE_TYPE ) {
GtkTreeIter branch ;
icon = gtk_icon_theme_load_icon_for_scale ( theme , " com.ublinux.ubl-settings-repomanager.follder-symbolic " , 16 , 1 , GTK_ICON_LOOKUP_FORCE_SIZE , NULL ) ;
if ( gtk_tree_model_iter_parent ( model , & branch , & parentIter ) ) {
GtkTreeIter repo ;
gtk_tree_store_append ( main_config . tree_store , & iter , & branch ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 0 , " com.ublinux.ubl-settings-repomanager.document-symbolic " , 1 , name_short , 3 , name , 4 , 1 , 5 , fls , - 1 ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 0 , document_no_edits , 1 , name_short , 2 , name , 3 , 1 , 4 , fls , - 1 ) ;
retIter = gtk_tree_iter_copy ( & iter ) ;
} else {
gtk_tree_store_append ( main_config . tree_store , & iter , & parentIter ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 0 , " com.ublinux.ubl-settings-repomanager.document-symbolic " , 1 , name_short , 3 , name , 4 , 1 , 5 , fls , - 1 ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 0 , document_no_edits , 1 , name_short , 2 , name , 3 , 1 , 4 , fls , - 1 ) ;
retIter = gtk_tree_iter_copy ( & iter ) ;
}
yon_ubl_status_box_render ( OPERATION_DONE_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
@ -345,9 +560,8 @@ GtkTreeIter *yon_repo_append(main_window *widgets, char *name, YON_REPO_LINE_TYP
gtk_tree_selection_select_iter ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > RepoTree ) ) , & iter ) ;
}
else if ( type = = YON_REPO_LINE_REPO_TYPE ) {
icon = gtk_icon_theme_load_icon_for_scale ( theme , " com.ublinux.ubl-settings-repomanager.folder-symbolic " , 16 , 1 , GTK_ICON_LOOKUP_FORCE_SIZE , NULL ) ;
gtk_tree_store_append ( main_config . tree_store , & iter , NULL ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 0 , " com.ublinux.ubl-settings-repomanager.folder-symbolic " , 1 , name_short , 3 , name , 4 , 1 , 5 , fls , - 1 ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 0 , folder_no_edits , 1 , name_short , 2 , name , 3 , 1 , 4 , fls , - 1 ) ;
retIter = gtk_tree_iter_copy ( & iter ) ;
gtk_tree_selection_select_iter ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > RepoTree ) ) , & iter ) ;
} else {
@ -362,12 +576,11 @@ void yon_repo_remove_package(main_window *widgets){
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > RepoTree ) ) , & model , & iter ) ) {
GtkTreeIter iterparent ;
if ( gtk_tree_model_iter_parent ( model , & iterparent , & iter ) ) {
// gtk_tree_store_remove(main_config.tree_store,&iter);
int status = 0 ;
gtk_tree_model_get ( GTK_TREE_MODEL ( main_config . tree_store ) , & iter , 4 , & status , - 1 ) ;
gtk_tree_model_get ( GTK_TREE_MODEL ( main_config . tree_store ) , & iter , 3 , & status , - 1 ) ;
if ( status ! = 1 ) {
gtk_tree_store_set ( main_config . tree_store , & iter , 4 , - 1 , - 1 ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 0 , " com.ublinux.ubl-settings-repomanager.document-red-symbolic " , - 1 ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 3 , - 1 , - 1 ) ;
gtk_tree_store_set ( main_config . tree_store , & iter , 0 , document_deleted , - 1 ) ;
} else gtk_tree_store_remove ( main_config . tree_store , & iter ) ;
yon_ubl_status_box_render ( OPERATION_DONE_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
} else yon_ubl_status_box_render ( CHOOSE_PACK_LABEL , BACKGROUND_IMAGE_FAIL_TYPE ) ;
@ -375,41 +588,67 @@ void yon_repo_remove_package(main_window *widgets){
}
void yon_repo_remove ( main_window * widgets ) {
GtkTreeIter iter ;
GtkTreeIter iter , childIter , * deletecopy ;
GtkTreeModel * model = GTK_TREE_MODEL ( main_config . tree_store ) ;
if ( gtk_tree_selection_get_selected ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > RepoTree ) ) , & model , & iter ) ) {
if ( gtk_tree_store_iter_depth ( main_config . tree_store , & iter ) = = 0 ) {
gtk_tree_store_set ( main_config . tree_store , & iter , 4 , - 1 , 0 , " com.ublinux.ubl-settings-repomanager.folder-red-symbolic " , - 1 ) ;
int repostatus = 0 ;
gtk_tree_model_get ( GTK_TREE_MODEL ( main_config . tree_store ) , & iter , 3 , & repostatus , - 1 ) ;
if ( repostatus = = 0 ) {
gtk_tree_store_set ( main_config . tree_store , & iter , 3 , - 1 , 0 , folder_deleted , - 1 ) ;
int valid = gtk_tree_model_iter_children ( model , & childIter , & iter ) ;
for ( ; valid ; valid = gtk_tree_model_iter_next ( model , & childIter ) ) {
int status = 5 ;
gtk_tree_model_get ( model , & childIter , 3 , & status , - 1 ) ;
if ( status = = 1 ) {
deletecopy = gtk_tree_iter_copy ( & childIter ) ;
gtk_tree_model_iter_previous ( model , & childIter ) ;
gtk_tree_store_remove ( main_config . tree_store , deletecopy ) ;
} else if ( status = = 0 ) {
gtk_tree_store_set ( main_config . tree_store , & childIter , 0 , document_deleted , 3 , - 1 , - 1 ) ;
}
}
} else if ( repostatus = = 1 ) {
gtk_tree_store_remove ( main_config . tree_store , & iter ) ;
}
} else yon_ubl_status_box_render ( CHOOSE_REPO_LABEL , BACKGROUND_IMAGE_FAIL_TYPE ) ;
} else yon_ubl_status_box_render ( NOTHING_CHOSEN_LABEL , BACKGROUND_IMAGE_FAIL_TYPE ) ;
}
void yon_add_file ( main_window * widgets ) {
GtkWidget * chooser = gtk_file_chooser_dialog_new ( ADD_PACKAGE_REPO_LABEL , NULL , GTK_FILE_CHOOSER_ACTION_OPEN , CANCEL_LABEL , GTK_RESPONSE_CANCEL , OPEN_LABEL , GTK_RESPONSE_ACCEPT , NULL ) ;
GtkFileFilter * file_filter = gtk_file_filter_new ( ) ;
file_filter = gtk_file_filter_new ( ) ;
gtk_file_filter_add_pattern ( file_filter , " *.pkg.tar.* " ) ;
gtk_file_filter_set_name ( file_filter , " *.pkg.tar.* " ) ;
GtkWidget * chooser = gtk_file_chooser_dialog_new ( ADD_PACKAGE_REPO_LABEL , NULL , GTK_FILE_CHOOSER_ACTION_OPEN , CANCEL_LABEL , GTK_RESPONSE_CANCEL , OPEN_LABEL , GTK_RESPONSE_ACCEPT , NULL ) ;
gtk_file_filter_set_name ( file_filter , " .pkg.tar.* " ) ;
gtk_file_chooser_add_filter ( GTK_FILE_CHOOSER ( chooser ) , file_filter ) ;
file_filter = gtk_file_filter_new ( ) ;
gtk_file_filter_add_pattern ( file_filter , " * " ) ;
gtk_file_filter_set_name ( file_filter , " All " ) ;
gtk_file_chooser_add_filter ( GTK_FILE_CHOOSER ( chooser ) , file_filter ) ;
int res = gtk_dialog_run ( GTK_DIALOG ( chooser ) ) ;
if ( res = = GTK_RESPONSE_ACCEPT ) {
char * filename = gtk_file_chooser_get_filename ( GTK_FILE_CHOOSER ( chooser ) ) ;
FILE * file = popen ( get_package_info_command ( filename ) , " r " ) ;
char * cur_string = g_malloc0 ( sizeof ( char ) * 4096 ) ;
char * packname = NULL , * packver = NULL , * packarch = NULL ;
char * packname = NULL , * packver = NULL , * packarch = NULL , * packdepends = NULL ;
while ( fgets ( cur_string , 4096 , file ) ) {
cur_string = yon_char_divide_search ( cur_string , " \n " , - 1 ) ;
char * p = yon_char_divide_search ( cur_string , " : " , - 1 ) ;
if ( strstr ( p , " Name " ) ) packname = yon_char_new ( cur_string ) ;
else if ( strstr ( p , " Version " ) ) packver = yon_char_new ( cur_string ) ;
else if ( strstr ( p , " Architecture " ) ) packarch = yon_char_new ( cur_string ) ;
char * stringe = yon_char_divide_search ( cur_string , " \n " , - 1 ) ;
char * p = yon_char_divide_search ( stringe , " : " , - 1 ) ;
if ( strstr ( p , " Name " ) ) packname = yon_char_new ( stringe ) ;
else if ( strstr ( p , " Version " ) ) packver = yon_char_new ( stringe ) ;
else if ( strstr ( p , " Architecture " ) ) packarch = yon_char_new ( stringe ) ;
else if ( strstr ( p , " Depends On " ) ) packdepends = yon_char_new ( stringe ) ;
else if ( strstr ( p , " Depends On " ) ) packdepends = yon_char_new ( stringe ) ;
}
GtkTreeIter * iter = yon_repo_append ( widgets , filename , YON_REPO_LINE_FILE_TYPE ) ;
gtk_tree_store_set ( main_config . tree_store , iter , 0 , " com.ublinux.ubl-settings-repomanager.document-green-symbolic " , 11 , packname , 12 , packver , 13 , packarch , - 1 ) ;
gtk_tree_view_expand_to_path ( GTK_TREE_VIEW ( widgets - > RepoTree ) , gtk_tree_model_get_path ( GTK_TREE_MODEL ( main_config . tree_store ) , iter ) ) ;
gtk_tree_store_set ( main_config . tree_store , iter , 0 , document_added , 1 , yon_char_unite ( packname , " - " , packver , " - " , packarch , NULL ) , 2 , filename , 9 , packname , 10 , packver , 11 , packarch , 12 , packdepends , - 1 ) ;
}
on_close_subwindow ( chooser ) ;
on_tree_selection_changed ( NULL , widgets ) ;
yon_ubl_status_box_render ( OPERATION_DONE_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
on_close_subwindow ( chooser ) ;
}
@ -440,6 +679,7 @@ main_window *setup_window(){
widgets - > Window = yon_gtk_builder_get_widget ( builder , " MainWindow " ) ;
widgets - > HatLabel = yon_gtk_builder_get_widget ( builder , " headerTopic " ) ;
widgets - > PlugBox = yon_gtk_builder_get_widget ( builder , " plugBox " ) ;
widgets - > MovePaned = yon_gtk_builder_get_widget ( builder , " MovePaned " ) ;
widgets - > HeadOverlay = yon_gtk_builder_get_widget ( builder , " HeadOverlay " ) ;
widgets - > HeadImage = yon_gtk_builder_get_widget ( builder , " HeadBackgroundImage " ) ;
@ -462,9 +702,6 @@ main_window *setup_window(){
widgets - > LoadLocalMenuItem = yon_gtk_builder_get_widget ( builder , " LoadLocalConfigurationMenuItem " ) ;
widgets - > LeftBox = yon_gtk_builder_get_widget ( builder , " HeaderLeftBox " ) ;
// widgets->DocumentationMenuItem = yon_gtk_builder_get_widget(builder,"DocumentationMenuItem");
// widgets->AboutMenuItem = yon_gtk_builder_get_widget(builder,"AboutMenuItem");
widgets - > GeneralTabLabel = yon_gtk_builder_get_widget ( builder , " GeneralTabLabel " ) ;
widgets - > PublicationTabLabel = yon_gtk_builder_get_widget ( builder , " PublicationTabLabel " ) ;
widgets - > CreateButton = yon_gtk_builder_get_widget ( builder , " CreateButton " ) ;
@ -497,15 +734,20 @@ main_window *setup_window(){
widgets - > ArchitectureLabel = yon_gtk_builder_get_widget ( builder , " ArchitectureLabel " ) ;
widgets - > ArchitectureInfoLabel = yon_gtk_builder_get_widget ( builder , " ArchitectureInfoLabel " ) ;
widgets - > ComponentsLabel = yon_gtk_builder_get_widget ( builder , " ComponentsLabel " ) ;
widgets - > Component sInfoLabel = yon_gtk_builder_get_widget ( builder , " Component sInfoLabel" ) ;
widgets - > Dependence sInfoLabel = yon_gtk_builder_get_widget ( builder , " Dependence sInfoLabel" ) ;
widgets - > SignatureLabel = yon_gtk_builder_get_widget ( builder , " SignatureLabel " ) ;
widgets - > SignatureInfoLabel = yon_gtk_builder_get_widget ( builder , " SignatureInfoLabel " ) ;
widgets - > Finder = yon_gtk_builder_get_widget ( builder , " RepoFinder " ) ;
widgets - > NameBox = yon_gtk_builder_get_widget ( builder , " nameBox " ) ;
widgets - > VersionBox = yon_gtk_builder_get_widget ( builder , " versionBox " ) ;
widgets - > ArchitectureBox = yon_gtk_builder_get_widget ( builder , " archBox " ) ;
widgets - > DependenceBox = yon_gtk_builder_get_widget ( builder , " dependBox " ) ;
widgets - > SignatureBox = yon_gtk_builder_get_widget ( builder , " signatureBox " ) ;
widgets - > SaveButton = yon_gtk_builder_get_widget ( builder , " mainSaveButton " ) ;
main_config . tree_store = GTK_TREE_STORE ( gtk_builder_get_object ( builder , " RepoStore " ) ) ;
widgets - > DocumentationMenuItem = yon_ubl_menu_item_documentation_new ( DOCUMENTATION_LABEL ) ; // yon_gtk_builder_get_widget(builder,"DocumentationMenuItem");
widgets - > AboutMenuItem = yon_ubl_menu_item_about_new ( ABOUT_LABEL ) ; // yon_gtk_builder_get_widget(builder,"AboutMenuItem");
widgets - > DocumentationMenuItem = yon_ubl_menu_item_documentation_new ( DOCUMENTATION_LABEL ) ;
widgets - > AboutMenuItem = yon_ubl_menu_item_about_new ( ABOUT_LABEL ) ;
gtk_window_set_title ( GTK_WINDOW ( widgets - > Window ) , TITLE_LABEL ) ;
@ -529,6 +771,10 @@ main_window *setup_window(){
}
}
/* Widget registration for config monitoring | Регистрация виджетов для мониторинга конфига */
yon_window_config_add_listener ( widgets - > MovePaned , " pane_position " , " position " , YON_TYPE_INT ) ;
/* Signal connection | Присоединение сигналов */
g_signal_connect ( G_OBJECT ( widgets - > Window ) , " destroy " , G_CALLBACK ( gtk_main_quit ) , NULL ) ;
g_signal_connect ( G_OBJECT ( widgets - > DocumentationMenuItem ) , " activate " , G_CALLBACK ( on_open_documentation_confirmation ) , WIKI_LINK ) ;
@ -539,6 +785,7 @@ main_window *setup_window(){
g_signal_connect ( G_OBJECT ( widgets - > DeleteButton ) , " clicked " , G_CALLBACK ( on_repo_remove ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > LoadFromLocalButton ) , " clicked " , G_CALLBACK ( on_repo_load_local ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > ConfigureButton ) , " clicked " , G_CALLBACK ( on_repo_configure ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > SignButton ) , " clicked " , G_CALLBACK ( on_repo_sign ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > SaveButton ) , " clicked " , G_CALLBACK ( on_save ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > RepoTree ) , " cursor-changed " , G_CALLBACK ( on_tree_selection_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > Finder ) , " changed " , G_CALLBACK ( on_search ) , widgets ) ;
@ -623,18 +870,30 @@ int main(int argc, char *argv[]){
main_config . lock_load_global = 1 ;
main_config . lock_save_global = 1 ;
main_config . lock_save_local = 1 ;
main_config . lock_root = 1 ;
}
gtk_init ( & argc , & argv ) ;
main_window * widgets = setup_window ( ) ;
yon_ubl_header_setup_resource ( widgets - > HeadOverlay , widgets - > HeadBox , widgets - > HeadImage , banner_path ) ;
yon_ubl_status_box_setup ( widgets - > StatusIcon , widgets - > StatusBox , widgets - > StatusLabel ) ;
yon_ubl_status_box_render ( TIT LE_LABEL, BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
yon_ubl_status_box_render ( LOAD_SUCC ESS _LABEL, BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
yon_ubl_setup_sockets ( widgets - > PlugBox , widgets - > LeftBox , widgets - > RightBox , main_config . socket_id , main_config . load_socket_id , main_config . save_socket_id ) ;
yon_window_config_setup ( GTK_WINDOW ( widgets - > Window ) ) ;
yon_window_config_load ( config_path ) ;
/*Check for null config parameter | Проверка на отсутствующий в конфигурации параметр */
GValue * val = g_malloc0 ( sizeof ( GValue ) ) ;
g_object_get_property ( G_OBJECT ( widgets - > MovePaned ) , " position " , val ) ;
int paned_size = g_value_get_int ( val ) ;
if ( paned_size < 100 )
gtk_paned_set_position ( GTK_PANED ( widgets - > MovePaned ) , 400 ) ;
on_load ( ) ;
GtkTreeIter * iter = g_malloc0 ( sizeof ( GtkTreeIter ) ) ;
if ( gtk_tree_model_get_iter_first ( GTK_TREE_MODEL ( main_config . tree_store ) , iter ) )
gtk_tree_selection_select_iter ( gtk_tree_view_get_selection ( GTK_TREE_VIEW ( widgets - > RepoTree ) ) , iter ) ;
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 ( ) ,