diff --git a/source/ubl-settings-repomanager.c b/source/ubl-settings-repomanager.c index 6a19262..8388af9 100644 --- a/source/ubl-settings-repomanager.c +++ b/source/ubl-settings-repomanager.c @@ -108,6 +108,44 @@ void on_load(){ 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,3,path,4,0,5,0,-1); + char *parameter_string = NULL; + yon_window_config_get_parameter("repos",repos[i],(void*)¶meter_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; + 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); + } + gtk_tree_store_append(main_config.tree_store,&packIter,&iter); + gtk_tree_store_set(main_config.tree_store,&packIter,0,document_no_edits,1,parameter_string,3,path,4,0,5,0,11,packname,12,packver,13,packarch,-1); + } + else + for (int j=0;j #include -#include "ubl-utils.h" +#include #include #include #include @@ -38,6 +38,8 @@ typedef char* string; #define get_package_info_command(filename) yon_char_unite("LC_ALL=EN pacman -Q --info --file ",filename," |grep -E \"Name|Version|Architecture\" |sed -e 's/ *//g'",NULL) +#define get_saved_package_info_command(path,filename) yon_char_unite("LC_ALL=EN pacman -Q --info --file $(find \"",path,"\" -name \"",filename,"\")|grep -E \"Name|Version|Architecture\" |sed -e 's/ *//g'",NULL) + string version_application; char *local; diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 0810a44..de47801 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -645,19 +645,18 @@ char **yon_char_parse(char *parameters, int *size, char *divider){ string=malloc(sizeof(char*)); char *paramline=yon_char_new(parameters); char *param; + if (!strstr(parameters,divider)) return NULL; while ((param=yon_char_divide_search(paramline,divider,1))){ + if (strcmp(param,paramline)==0||param[0]=='\0') break; string=realloc(string,sizeof(char*)*i); string[i-1]=yon_char_new(param); i++; - if (strcmp(param,paramline)==0) break; } string=realloc(string,sizeof(char*)*i); string[i-1]=yon_char_new(paramline); i++; - // printf("%d\n",i); *size=i-1; return string; - } /**yon_char_parsed_rip(char **char_string, int *size, int item_to_delete) @@ -1582,7 +1581,7 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end return key; } - /**yon_window_config_add_custom_parameter(GtkWidget *widget, char *param_name, char *widget_property) + /**yon_window_config_add_listener(GtkWidget *widget, char *param_name, char *widget_property, enum YON_TYPE val_type) * [EN] * * [RU] @@ -1616,6 +1615,31 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end yon_dictionary_add_or_create_if_exists_with_data(__yon_main_window_config.deleted_parameters,param->parameter_name,param); } + int yon_window_config_get_parameter(char *section, char *config_parameter, void *return_value, enum YON_TYPE type){ + GError *err=NULL; + switch (type){ + case YON_TYPE_BOOLEAN: + *((int*)return_value) = g_key_file_get_boolean(__yon_window_config_file,section,config_parameter,&err); + if (err) return 0; else return 1; + break; + case YON_TYPE_INT: + *((int*)return_value) = g_key_file_get_integer(__yon_window_config_file,section,config_parameter,&err); + if (err) return 0; else return 1; + break; + case YON_TYPE_STRING: + *((char**)return_value) = g_key_file_get_string(__yon_window_config_file,section,config_parameter,&err); + if (err) return 0; else return 1; + break; + case YON_TYPE_STRING_LIST: + gsize size=0; + *((char***)return_value) = g_key_file_get_string_list(__yon_window_config_file,section,config_parameter,&size,&err); + *((char***)return_value)=yon_remalloc(return_value,size+1); + *((char***)return_value)[size]=NULL; + if (err) return 0; else return 1; + break; + } + } + GtkWidget *yon_ubl_menu_item_about_new(char *buttonname){ GtkWidget *menu_item = gtk_menu_item_new(); gtk_style_context_add_class(gtk_widget_get_style_context(menu_item),"menuitembottom"); diff --git a/source/ubl-utils.h b/source/ubl-utils.h index bbda940..e9b7e0a 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -218,6 +218,7 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end enum YON_TYPE{ YON_TYPE_STRING, + YON_TYPE_STRING_LIST, YON_TYPE_INT, YON_TYPE_BOOLEAN, YON_TYPE_OTHER