Added package information to package/modules information windows

pull/366/head
parent f0814bd3b3
commit a21a886e50

@ -40,7 +40,6 @@ int yon_kernel_save(main_window *widgets){
if (!main_config.configure_mode){
yon_debug_output("%s\n",yon_config_save_args_simple(main_config.config_load_path,packages_parameter, KERNEL_BOOT_parameter,NULL));
}
return 1;
}
@ -181,6 +180,10 @@ int yon_os_components_save(main_window *widgets){
return 1;
}
void on_os_components_info(GtkWidget *, char *, os_row *row){
yon_package_info_window_create(row->modules);
}
os_row *yon_os_row_new(){
os_row *row = new(os_row);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_os_row);
@ -196,6 +199,7 @@ os_row *yon_os_row_new(){
row->modules=NULL;
row->version=NULL;
g_signal_connect(G_OBJECT(row->NameLabel),"activate-link",G_CALLBACK(on_os_components_info),row);
row->row = yon_gtk_builder_get_widget(builder,"MainRow");
gtk_widget_show(row->row);
@ -242,6 +246,7 @@ void *yon_modules_list_load(main_window *widgets){
void yon_os_row_setup(os_row *row, char *name, char *version,char *tags, char *description,char *source, char *size){
row->name = yon_char_new(name);
row->source = yon_char_new(source);
row->modules = yon_char_new(name);
char *description_full = yon_char_new(description);
if (yon_char_is_empty(source)||yon_char_check_begins_with(source,"(local)/")){
@ -250,7 +255,8 @@ void yon_os_row_setup(os_row *row, char *name, char *version,char *tags, char *d
gtk_label_set_text(GTK_LABEL(row->SourceLabel),source);
}
gtk_label_set_label(GTK_LABEL(row->NameLabel),name);
char *label_markup = yon_char_unite("<a href=\"\">",name,"</a>",NULL);
gtk_label_set_markup(GTK_LABEL(row->NameLabel),label_markup);
gtk_label_set_label(GTK_LABEL(row->VersionLabel),version);
gtk_label_set_label(GTK_LABEL(row->DescriptionLabel),description_full);
gtk_label_set_label(GTK_LABEL(row->SizeLabel),size);
@ -258,6 +264,7 @@ void yon_os_row_setup(os_row *row, char *name, char *version,char *tags, char *d
yon_kernel_row_setup_tags((kernel_row*)row,tags);
free(size);
free(description_full);
free(label_markup);
}
gboolean yon_os_component_insert(struct row_data *row_input){

@ -18,6 +18,10 @@ gboolean on_kernel_enabled_toggled(GtkWidget *self, GdkEventButton *, kernel_row
return 0;
}
void on_kernel_info(GtkWidget *, char *, kernel_row *row){
yon_package_info_window_create(row->package);
}
kernel_row *yon_kernel_row_new(){
kernel_row *row = new(kernel_row);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_kernel_row);
@ -37,6 +41,7 @@ kernel_row *yon_kernel_row_new(){
g_signal_connect(G_OBJECT(row->InstallCheck),"toggled",G_CALLBACK(on_kernel_install_enabled),row);
g_signal_connect(G_OBJECT(row->EnableRadio),"button-release-event",G_CALLBACK(on_kernel_enabled_toggled),row);
g_signal_connect(G_OBJECT(row->NameLabel),"activate-link",G_CALLBACK(on_kernel_info),row);
row->row = gtk_list_box_row_new();
gtk_container_add(GTK_CONTAINER(row->row),row->RowBox);
@ -117,13 +122,15 @@ void yon_kernel_row_setup(kernel_row *row, char *name, char *modules,char *packa
yon_char_parsed_free(description_wrapped,size);
}
char *modules_parsed = yon_char_replace(modules," ","\n");
gtk_label_set_label(GTK_LABEL(row->NameLabel),name);
char *label_markup = yon_char_unite("<a href=\"\">",name,"</a>",NULL);
gtk_label_set_markup(GTK_LABEL(row->NameLabel),label_markup);
gtk_label_set_label(GTK_LABEL(row->ModulesLabel),modules_parsed);
gtk_label_set_label(GTK_LABEL(row->DescriptionLabel),description_full);
yon_kernel_row_setup_tags(row,tags);
free(description_full);
free(modules_parsed);
free(label_markup);
}
void yon_kernel_resize(main_window *widgets){
@ -262,7 +269,6 @@ void on_kernel_addon_install_enabled(GtkWidget *, kernel_addon_row *row){
}
}
void yon_gtk_label_set_font(GtkLabel *label);
void yon_gtk_label_set_font(GtkLabel *label){
g_return_if_fail(GTK_IS_LABEL(label));
PangoAttrList *attributes = pango_attr_list_new();
@ -273,13 +279,6 @@ void yon_gtk_label_set_font(GtkLabel *label){
gtk_label_set_attributes(GTK_LABEL(label),attributes);
}
typedef struct {
GtkWidget *MainBox;
GtkWidget *InfoTree;
GtkListStore *InfoList;
} info_element;
info_element *yon_package_info_element_new();
info_element *yon_package_info_element_new(){
info_element *element = malloc(sizeof(info_element));
memset(element,0,sizeof(info_element));

@ -66,6 +66,20 @@ GtkTreeIter *yon_subcategory_check(GtkTreeStore *target, GtkTreeIter *parent_ite
return ret_iter;
}
void on_software_info(GtkWidget*, main_window *widgets){
char *packages;
GtkTreeIter iter;
GtkTreeModel *model;
gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->PackagesTree)),&model,&iter);
gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&iter,5,&packages,-1);
int size=0;
config_str parsed = yon_char_parse(packages,&size,",");
for (int i=0;i<size;i++){
yon_package_info_window_create(parsed[i]);
}
yon_char_parsed_free(parsed,size);
}
void yon_packages_tab_init(main_window *widgets){
on_status_update(NULL,widgets);
if (!main_config.configure_mode){
@ -125,7 +139,7 @@ void yon_packages_tab_init(main_window *widgets){
GtkTreeIter subcatiter;
GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&subcatiter,category_iter);
gtk_tree_store_set(widgets->PackagesList,&subcatiter,1,parsed[1],2,_(parsed[3]),3,0,-1);
gtk_tree_store_set(widgets->PackagesList,&subcatiter,1,parsed[1],2,_(parsed[1]),3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter);
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),5,parsed[2],-1);
@ -150,7 +164,7 @@ void yon_packages_tab_init(main_window *widgets){
gtk_tree_store_set(widgets->PackagesList,&subcategory_iter,1,parsed[1],2,_(parsed[1]),3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcategory_iter);
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),-1);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),5,parsed[2],-1);
free(full_string);
} else {
GtkTreeIter package_iter;

@ -51,7 +51,7 @@ void yon_startup_apps_init(main_window *widgets){
config_str apps_ret = yon_resource_open_file(apps_list_path,&size);
apps_ret = yon_char_parsed_rip(apps_ret,&size,0);
if (!size) return;
qsort(apps_ret,(size_t)size,sizeof(char *),(__compar_fn_t)yon_char_parsed_compare);
// qsort(apps_ret,(size_t)size,sizeof(char *),(__compar_fn_t)yon_char_parsed_compare);
for (int i=0;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(apps_ret[i],&parsed_size,";");

@ -59,7 +59,7 @@ void yon_startup_services_init(main_window *widgets){
config_str services = yon_resource_open_file(services_list_path,&size);
services = yon_char_parsed_rip(services,&size,0);
if (!size) return;
qsort(services,(size_t)size,sizeof(char *),(__compar_fn_t)yon_char_parsed_compare);
// qsort(services,(size_t)size,sizeof(char *),(__compar_fn_t)yon_char_parsed_compare);
for (int i=0;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(services[i],&parsed_size,";");

@ -310,6 +310,11 @@ void yon_update_translation(main_window *widgets){
list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->ConfigurationModeMenuItem),"Label"));
list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->EnableVNCMenuItem),"Label"));
list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->EnableRDPMenuItem),"Label"));
dictionary *diter = NULL;
for_dictionaries (diter,widgets->PackagesMenu->buttons){
GtkWidget *label = g_object_get_data(G_OBJECT(diter->data),"Label");
list = g_slist_append(list,label);
}
GSList *iter;
for (iter = list; iter; iter = iter->next){
@ -380,4 +385,5 @@ void yon_update_translation(main_window *widgets){
g_list_free(list);
g_list_free(container);
}
}

@ -7,6 +7,46 @@ void yon_license_init(main_window *widgets){
gtk_widget_set_sensitive(widgets->NextButton,0);
}
yon_window *yon_package_info_window_create(const char *package_str){
if (yon_char_is_empty(package_str)) return NULL;
yon_window *window = yon_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,PACKAGE_INFO_LABEL,icon_path,"info-label");
int size=0;
char *package = yon_char_new(package_str);
if (strstr(package,",")){
char *temp = yon_char_replace(package,","," ");
free(package);
package = temp;
}
GtkWidget *label = NULL;
yon_packages_info *info_struct = yon_packages_get_info_struct(YON_PACKAGES_ALL,package);
if (!info_struct) return NULL;
char* info_string = yon_packages_get_info_string(info_struct);
config_str info = yon_char_parse(info_string,&size,"\n");
if (size>0){
info_element *element = yon_package_info_element_new();
gtk_box_pack_start(GTK_BOX(window->MainBox),element->MainBox,1,1,0);
for (int i=0;i<size;i++){
yon_char_remove_last_symbol(info[i],'\n');
GtkTreeIter iter;
int parsed_size;
config_str parsed = yon_char_parse(info[i],&parsed_size,":");
gtk_list_store_append(element->InfoList,&iter);
gtk_list_store_set(element->InfoList,&iter,0,parsed[0],1,!yon_char_is_empty(parsed[1])?_(parsed[1]):"",-1);
}
} else {
label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL);
yon_gtk_label_set_font(GTK_LABEL(label));
gtk_widget_show(label);
gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0);
gtk_label_set_xalign(GTK_LABEL(label),0);
}
gtk_widget_show(window->Window);
return window;
}
double yon_password_check_func(yon_password_window *window, const char *password_string){
pwquality_settings_t *settings = pwquality_default_settings();
int strength = pwquality_check(settings,password_string,NULL,NULL,NULL);
@ -904,6 +944,12 @@ void yon_main_window_create(main_window *widgets){
yon_root_button_init(widgets->root_button,GTK_WINDOW(widgets->MainWindow));
}
widgets->PackagesMenu = yon_rmb_menu_setup(widgets->PackagesTree,NULL,NULL,INFO_LABEL,info_icon_path,G_CALLBACK(on_software_info),widgets,NULL);
dictionary *iter = NULL;
for_dictionaries (iter,widgets->PackagesMenu->buttons){
yon_gtk_widget_set_translation(g_object_get_data(G_OBJECT(iter->data),"Label"));
}
yon_startup_language_init();
yon_locale_init();
yon_main_window_update_locale(widgets);

@ -49,6 +49,7 @@
#define add_icon_path "com.ublinux.libublsettingsui-gtk3.increase-symbolic"
#define active_icon_path "com.ublinux.libublsettingsui-gtk3.active-symbolic"
#define inactive_icon_path "com.ublinux.libublsettingsui-gtk3.inactive-symbolic"
#define info_icon_path "com.ublinux.libublsettingsui-gtk3.important-symbolic"
#define LocalePath "/usr/share/locale"
#define LocaleName "ubinstall-gtk"
@ -826,6 +827,7 @@ typedef struct
GtkTreeStore *PackagesList;
GtkCellRenderer *PackagesChosenCell;
GtkWidget *PackagesTree;
rmb_menu_window *PackagesMenu;
// Configuration hub slide section
GtkWidget *ConfigHubRebootCombo;
@ -1227,6 +1229,12 @@ typedef struct
GtkWidget *TextLabel;
} slider_object;
typedef struct {
GtkWidget *MainBox;
GtkWidget *InfoTree;
GtkListStore *InfoList;
} info_element;
void config_init();
main_window *yon_main_window_complete();
ubinstall_language_window *yon_ubinstall_language_new();
@ -1621,4 +1629,10 @@ gboolean on_kernel_addon_menu_block(GObject *self, GdkEventButton *event);
void on_os_components_uncheck_all(GtkWidget *,main_window *widgets);
gboolean yon_os_components_load(main_window *widgets);
gboolean on_user_autoloin_switch(GtkWidget *, int status, main_window *);
void on_locale_selected(GtkTreeView *self,main_window *widgets);
void on_locale_selected(GtkTreeView *self,main_window *widgets);
yon_window *yon_package_info_window_create(const char *package);
info_element *yon_package_info_element_new();
void yon_gtk_label_set_font(GtkLabel *label);
void on_kernel_info(GtkWidget *, char *link, kernel_row *row);
void on_os_components_info(GtkWidget *, char *, os_row *row);
void on_software_info(GtkWidget*, main_window *widgets);

@ -303,6 +303,7 @@ NULL)
#define EDIT_USER_LABEL _("Edit user")
#define ACCESSED_LABEL _("Accessed")
#define UNACCESSED_LABEL _("Unaccessed")
#define INFO_LABEL _("Package information")
// #define _LABEL _("Chosen size:")
// #define _LABEL _("Overall size:")

Loading…
Cancel
Save