Merge pull request 'master' (#366) from YanTheKaller/ubinstall-gtk:master into master

Reviewed-on: #366
pull/368/head v2.6
Dmitry Razumov 3 weeks ago
commit d0dcb5c534

@ -1947,7 +1947,7 @@ msgid ""
"network or the Internet (even over slow connection channels)." "network or the Internet (even over slow connection channels)."
msgstr "" msgstr ""
msgid "No modules were found.\nSelect a different installation source." msgid "No modules were found.\nSelect a different installation sources."
msgstr "" msgstr ""
msgid "File system label" msgid "File system label"
@ -5352,3 +5352,9 @@ msgstr ""
msgid "Close installer" msgid "Close installer"
msgstr "" msgstr ""
msgid "Application is already running"
msgstr ""
msgid "Select installation sources"
msgstr ""

@ -2085,9 +2085,9 @@ msgstr ""
"Позволяет загрузку системы для бездисковых и обычных рабочих станций через " "Позволяет загрузку системы для бездисковых и обычных рабочих станций через "
"локальную сеть или Интернет (даже используя \"слабые\" каналы связи)" "локальную сеть или Интернет (даже используя \"слабые\" каналы связи)"
msgid "No modules were found.\nSelect a different installation source." msgid "No modules were found.\nSelect a different installation sources."
msgstr "Модули не найдены.\n" msgstr "Модули не найдены.\n"
"Выберите другой источник установки." "Выберите другие источники установки."
msgid "About" msgid "About"
msgstr "О программе" msgstr "О программе"
@ -5547,3 +5547,9 @@ msgstr "Снять всё"
msgid "Close installer" msgid "Close installer"
msgstr "Закрыть установщик" msgstr "Закрыть установщик"
msgid "Application is already running"
msgstr "Приложение уже запущено"
msgid "Select installation sources"
msgstr "Выберите источники для "

@ -46,6 +46,7 @@ void on_advanced_part_remove_part(GtkWidget *self, main_window *widgets){
if (data->partition&&!strcmp(data->partition,target)){ if (data->partition&&!strcmp(data->partition,target)){
gtk_list_store_set(widgets->PartitionsList,&iter,7,0,-1); gtk_list_store_set(widgets->PartitionsList,&iter,7,0,-1);
free(part); free(part);
gtk_widget_show(widgets->AdvancedAddButton);
} }
} }
} }
@ -61,6 +62,7 @@ void on_advanced_part_remove_device(GtkWidget *self, main_window *widgets){
if (!strcmp(data->device,target)){ if (!strcmp(data->device,target)){
gtk_widget_destroy(part->MainBox); gtk_widget_destroy(part->MainBox);
free(part); free(part);
gtk_widget_show(widgets->AdvancedAddButton);
} }
} }
} }
@ -291,6 +293,11 @@ int yon_advanced_part_check_count(main_window *widgets){
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox)); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdvancedPartitionAddBox));
int len = g_list_length(list); int len = g_list_length(list);
g_list_free(list); g_list_free(list);
if (len<1) {
gtk_widget_show(widgets->AdvancedAddButton);
} else {
gtk_widget_hide(widgets->AdvancedAddButton);
}
if (len<2) return 1; if (len<2) return 1;
return 0; return 0;
} }

@ -40,7 +40,6 @@ int yon_kernel_save(main_window *widgets){
if (!main_config.configure_mode){ 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)); yon_debug_output("%s\n",yon_config_save_args_simple(main_config.config_load_path,packages_parameter, KERNEL_BOOT_parameter,NULL));
} }
return 1; return 1;
} }
@ -181,12 +180,18 @@ int yon_os_components_save(main_window *widgets){
return 1; return 1;
} }
gboolean on_os_components_info(GtkWidget *, GdkEventButton *, os_row *row){
yon_package_info_window_create(row->modules);
return 1;
}
os_row *yon_os_row_new(){ os_row *yon_os_row_new(){
os_row *row = new(os_row); os_row *row = new(os_row);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_os_row); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_os_row);
row->RowBox = yon_gtk_builder_get_widget(builder,"TableRow"); row->RowBox = yon_gtk_builder_get_widget(builder,"TableRow");
row->InstallCheck = yon_gtk_builder_get_widget(builder,"InstallCheck"); row->InstallCheck = yon_gtk_builder_get_widget(builder,"InstallCheck");
row->NameLabel = yon_gtk_builder_get_widget(builder,"NameLabel"); row->NameLabel = yon_gtk_builder_get_widget(builder,"NameLabel");
row->NameEvent = yon_gtk_builder_get_widget(builder,"NameEvent");
row->TagsBox = yon_gtk_builder_get_widget(builder,"TagsBox"); row->TagsBox = yon_gtk_builder_get_widget(builder,"TagsBox");
row->VersionLabel = yon_gtk_builder_get_widget(builder,"VersionLabel"); row->VersionLabel = yon_gtk_builder_get_widget(builder,"VersionLabel");
row->DescriptionLabel = yon_gtk_builder_get_widget(builder,"DescriptionLabel"); row->DescriptionLabel = yon_gtk_builder_get_widget(builder,"DescriptionLabel");
@ -196,9 +201,9 @@ os_row *yon_os_row_new(){
row->modules=NULL; row->modules=NULL;
row->version=NULL; row->version=NULL;
g_signal_connect(G_OBJECT(row->NameEvent),"button-press-event",G_CALLBACK(on_os_components_info),row);
row->row = yon_gtk_builder_get_widget(builder,"MainRow"); row->row = yon_gtk_builder_get_widget(builder,"MainRow");
gtk_widget_show(row->row); gtk_widget_show(row->row);
g_object_set_data(G_OBJECT(row->InstallCheck),"kernel_row",row); g_object_set_data(G_OBJECT(row->InstallCheck),"kernel_row",row);
g_object_set_data(G_OBJECT(row->row),"kernel_row",row); g_object_set_data(G_OBJECT(row->row),"kernel_row",row);
@ -215,6 +220,9 @@ void *yon_modules_list_load(main_window *widgets){
int parsed_size=0; int parsed_size=0;
config_str parsed = NULL; config_str parsed = NULL;
parsed = yon_char_parse(modules[i],&parsed_size,";"); parsed = yon_char_parse(modules[i],&parsed_size,";");
if (parsed_size<5){
continue;
}
struct row_data *row = malloc(sizeof(struct row_data)); struct row_data *row = malloc(sizeof(struct row_data));
row->version = parsed[3]; row->version = parsed[3];
row->name = parsed[1]; row->name = parsed[1];
@ -242,6 +250,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){ 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->name = yon_char_new(name);
row->source = yon_char_new(source); row->source = yon_char_new(source);
row->modules = yon_char_new(name);
char *description_full = yon_char_new(description); char *description_full = yon_char_new(description);
if (yon_char_is_empty(source)||yon_char_check_begins_with(source,"(local)/")){ if (yon_char_is_empty(source)||yon_char_check_begins_with(source,"(local)/")){
@ -250,7 +259,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_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->VersionLabel),version);
gtk_label_set_label(GTK_LABEL(row->DescriptionLabel),description_full); gtk_label_set_label(GTK_LABEL(row->DescriptionLabel),description_full);
gtk_label_set_label(GTK_LABEL(row->SizeLabel),size); gtk_label_set_label(GTK_LABEL(row->SizeLabel),size);
@ -258,6 +268,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); yon_kernel_row_setup_tags((kernel_row*)row,tags);
free(size); free(size);
free(description_full); free(description_full);
free(label_markup);
} }
gboolean yon_os_component_insert(struct row_data *row_input){ gboolean yon_os_component_insert(struct row_data *row_input){
@ -283,6 +294,12 @@ gboolean yon_spinner_switch_off(GtkSpinner *target){
gboolean yon_os_components_load(main_window *widgets){ gboolean yon_os_components_load(main_window *widgets){
int size=0; int size=0;
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
if (!list){
gtk_widget_show(widgets->OSSoftwareEmptyLabel);
return G_SOURCE_REMOVE;
} else {
gtk_widget_hide(widgets->OSSoftwareEmptyLabel);
}
GList *iter; GList *iter;
for(iter = list;iter;iter=iter->next){ for(iter = list;iter;iter=iter->next){
os_row *row = g_object_get_data(iter->data,"kernel_row"); os_row *row = g_object_get_data(iter->data,"kernel_row");

@ -18,6 +18,10 @@ gboolean on_kernel_enabled_toggled(GtkWidget *self, GdkEventButton *, kernel_row
return 0; 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 *yon_kernel_row_new(){
kernel_row *row = new(kernel_row); kernel_row *row = new(kernel_row);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_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->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->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(); row->row = gtk_list_box_row_new();
gtk_container_add(GTK_CONTAINER(row->row),row->RowBox); 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); yon_char_parsed_free(description_wrapped,size);
} }
char *modules_parsed = yon_char_replace(modules," ","\n"); 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->ModulesLabel),modules_parsed);
gtk_label_set_label(GTK_LABEL(row->DescriptionLabel),description_full); gtk_label_set_label(GTK_LABEL(row->DescriptionLabel),description_full);
yon_kernel_row_setup_tags(row,tags); yon_kernel_row_setup_tags(row,tags);
free(description_full); free(description_full);
free(modules_parsed); free(modules_parsed);
free(label_markup);
} }
void yon_kernel_resize(main_window *widgets){ 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){ void yon_gtk_label_set_font(GtkLabel *label){
g_return_if_fail(GTK_IS_LABEL(label)); g_return_if_fail(GTK_IS_LABEL(label));
PangoAttrList *attributes = pango_attr_list_new(); 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); 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 *yon_package_info_element_new(){
info_element *element = malloc(sizeof(info_element)); info_element *element = malloc(sizeof(info_element));
memset(element,0,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; 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){ void yon_packages_tab_init(main_window *widgets){
on_status_update(NULL,widgets); on_status_update(NULL,widgets);
if (!main_config.configure_mode){ if (!main_config.configure_mode){
@ -125,7 +139,7 @@ void yon_packages_tab_init(main_window *widgets){
GtkTreeIter subcatiter; GtkTreeIter subcatiter;
GtkTreeIter package_iter; GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&subcatiter,category_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); gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter);
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL); 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); 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_set(widgets->PackagesList,&subcategory_iter,1,parsed[1],2,_(parsed[1]),3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcategory_iter); gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcategory_iter);
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL); 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); free(full_string);
} else { } else {
GtkTreeIter package_iter; GtkTreeIter package_iter;

@ -268,7 +268,7 @@ int yon_page_save(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_CONFIG_HUB: case YON_PAGE_CONFIG_HUB:
return yon_configuration_hub_save(widgets); return yon_configuration_hub_save(widgets);
case YON_PAGE_OS_COMPONENTS: case YON_PAGE_OS_COMPONENTS:
return yon_os_components_save(widgets); // return yon_os_components_save(widgets);
break; break;
case YON_PAGE_KERNEL: case YON_PAGE_KERNEL:
return yon_kernel_save(widgets); return yon_kernel_save(widgets);
@ -432,8 +432,8 @@ void yon_configuration_mode_check(main_window *widgets){
void yon_page_update(main_window *widgets){ void yon_page_update(main_window *widgets){
// yon_resize_images_update(widgets); // yon_resize_images_update(widgets);
yon_navigation_buttons_set_sensetiveness(widgets); yon_navigation_buttons_set_sensetiveness(widgets);
yon_switch_page_render(widgets); // yon_switch_page_render(widgets);
yon_configuration_mode_check(widgets); // yon_configuration_mode_check(widgets);
} }
enum YON_PAGES yon_sections_get_next_page(main_window *widgets){ enum YON_PAGES yon_sections_get_next_page(main_window *widgets){

@ -13,11 +13,15 @@ int yon_region_save(main_window *widgets){
yon_ubl_status_highlight_incorrect(widgets->ZoneCombo); yon_ubl_status_highlight_incorrect(widgets->ZoneCombo);
return 0; return 0;
} }
const char *region = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo)); if (gtk_switch_get_active(GTK_SWITCH(widgets->RegionSensitiveSwitch))){
const char *zone = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo)); const char *region = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo));
char *final = yon_char_unite(region,"/",zone,NULL); const char *zone = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo));
yon_config_register(zone_parameter,zone_parameter_command,final); char *final = yon_char_unite(region,"/",zone,NULL);
free(final); yon_config_register(zone_parameter,zone_parameter_command,final);
free(final);
} else {
yon_config_remove_by_key(zone_parameter);
}
if (!main_config.configure_mode){ if (!main_config.configure_mode){
yon_debug_output("%s\n",yon_config_save_args_simple(main_config.config_load_path,zone_parameter,NULL)); yon_debug_output("%s\n",yon_config_save_args_simple(main_config.config_load_path,zone_parameter,NULL));
} }
@ -122,7 +126,6 @@ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_wind
char *timezone = (char*)cc_timezone_location_get_zone(location); char *timezone = (char*)cc_timezone_location_get_zone(location);
GtkTreeIter iter; GtkTreeIter iter;
// int found = 0;
for_iter(widgets->RegionTimezoneCompletionList,&iter){ for_iter(widgets->RegionTimezoneCompletionList,&iter){
char *render, *tz; char *render, *tz;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->RegionTimezoneCompletionList),&iter,0,&render,1,&tz,-1); gtk_tree_model_get(GTK_TREE_MODEL(widgets->RegionTimezoneCompletionList),&iter,0,&render,1,&tz,-1);
@ -133,21 +136,10 @@ void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_wind
gtk_entry_set_text(GTK_ENTRY(widgets->RegionEntry),render); gtk_entry_set_text(GTK_ENTRY(widgets->RegionEntry),render);
char *utc = yon_timezone_get_utc(tz); char *utc = yon_timezone_get_utc(tz);
yon_map_status_show(widgets,NULL,MAP_TITLE_LABEL(utc),render); yon_map_status_show(widgets,NULL,MAP_TITLE_LABEL(utc),render);
// found = 1;
break; break;
} }
} }
// if (!found){
// const char *region = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo));
// const char *zone = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo));
// char *timezone = yon_char_unite(region,"/",zone,NULL);
// g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets);
// cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone);
// g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets);
// free(timezone);
// }
if (!yon_char_is_empty(region)) free(region); if (!yon_char_is_empty(region)) free(region);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets); g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets);

@ -51,7 +51,7 @@ void yon_startup_apps_init(main_window *widgets){
config_str apps_ret = yon_resource_open_file(apps_list_path,&size); config_str apps_ret = yon_resource_open_file(apps_list_path,&size);
apps_ret = yon_char_parsed_rip(apps_ret,&size,0); apps_ret = yon_char_parsed_rip(apps_ret,&size,0);
if (!size) return; 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++){ for (int i=0;i<size;i++){
int parsed_size; int parsed_size;
config_str parsed = yon_char_parse(apps_ret[i],&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); config_str services = yon_resource_open_file(services_list_path,&size);
services = yon_char_parsed_rip(services,&size,0); services = yon_char_parsed_rip(services,&size,0);
if (!size) return; 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++){ for (int i=0;i<size;i++){
int parsed_size; int parsed_size;
config_str parsed = yon_char_parse(services[i],&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->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->EnableVNCMenuItem),"Label"));
list = g_slist_append(list,g_object_get_data(G_OBJECT(widgets->EnableRDPMenuItem),"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; GSList *iter;
for (iter = list; iter; iter = iter->next){ 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(list);
g_list_free(container); g_list_free(container);
} }
} }

@ -7,6 +7,46 @@ void yon_license_init(main_window *widgets){
gtk_widget_set_sensitive(widgets->NextButton,0); 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){ double yon_password_check_func(yon_password_window *window, const char *password_string){
pwquality_settings_t *settings = pwquality_default_settings(); pwquality_settings_t *settings = pwquality_default_settings();
int strength = pwquality_check(settings,password_string,NULL,NULL,NULL); int strength = pwquality_check(settings,password_string,NULL,NULL,NULL);
@ -46,8 +86,8 @@ void on_open_documentation_confirmation(GtkWidget *self, char *link){
window->CloseButton = yon_gtk_builder_get_widget(builder,"CancelHelpButton"); window->CloseButton = yon_gtk_builder_get_widget(builder,"CancelHelpButton");
window->HeaderLabel = yon_gtk_builder_get_widget(builder,"webHeaderNameLabel"); window->HeaderLabel = yon_gtk_builder_get_widget(builder,"webHeaderNameLabel");
window->AlwaysOpenCheck = yon_gtk_builder_get_widget(builder,"AlwaysOpenDocumentationCheckbox"); window->AlwaysOpenCheck = yon_gtk_builder_get_widget(builder,"AlwaysOpenDocumentationCheckbox");
gtk_label_set_text(GTK_LABEL(window->HeaderLabel),TITLE_LABEL); gtk_label_set_text(GTK_LABEL(window->HeaderLabel),DOCUMENTATION_LABEL);
gtk_window_set_title(GTK_WINDOW(window->Window),TITLE_LABEL); gtk_window_set_title(GTK_WINDOW(window->Window),DOCUMENTATION_LABEL);
gtk_window_set_icon_name(GTK_WINDOW(window->Window),yon_char_append("com.ublinux.",LocaleName)); gtk_window_set_icon_name(GTK_WINDOW(window->Window),yon_char_append("com.ublinux.",LocaleName));
gtk_widget_show_all(window->Window); gtk_widget_show_all(window->Window);
g_signal_connect(G_OBJECT(window->CloseButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->CloseButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
@ -563,6 +603,7 @@ void yon_main_window_create(main_window *widgets){
widgets->OSSoftwareNameLabel = yon_gtk_builder_get_widget(builder,"OSSoftwareNameLabel"); widgets->OSSoftwareNameLabel = yon_gtk_builder_get_widget(builder,"OSSoftwareNameLabel");
widgets->OSSoftwareTagsLabel = yon_gtk_builder_get_widget(builder,"OSSoftwareTagsLabel"); widgets->OSSoftwareTagsLabel = yon_gtk_builder_get_widget(builder,"OSSoftwareTagsLabel");
widgets->OSSoftwareDescriptionLabel = yon_gtk_builder_get_widget(builder,"OSSoftwareDescriptionLabel"); widgets->OSSoftwareDescriptionLabel = yon_gtk_builder_get_widget(builder,"OSSoftwareDescriptionLabel");
widgets->OSSoftwareEmptyLabel = yon_gtk_builder_get_widget(builder,"OSSoftwareEmptyLabel");
widgets->PacmanSoftwareSearchEntry = yon_gtk_builder_get_widget(builder,"PacmanSoftwareSearchEntry"); widgets->PacmanSoftwareSearchEntry = yon_gtk_builder_get_widget(builder,"PacmanSoftwareSearchEntry");
widgets->PacmanSoftwareStatusImage = yon_gtk_builder_get_widget(builder,"PacmanSoftwareStatusImage"); widgets->PacmanSoftwareStatusImage = yon_gtk_builder_get_widget(builder,"PacmanSoftwareStatusImage");
@ -904,6 +945,12 @@ void yon_main_window_create(main_window *widgets){
yon_root_button_init(widgets->root_button,GTK_WINDOW(widgets->MainWindow)); 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_startup_language_init();
yon_locale_init(); yon_locale_init();
yon_main_window_update_locale(widgets); yon_main_window_update_locale(widgets);
@ -982,6 +1029,10 @@ main_window *yon_main_window_complete(){
} }
int main(int argc, char *argv[]){ int main(int argc, char *argv[]){
GApplication *app = (GApplication*)gtk_application_new("com.ublinux.ubinstall-gtk",G_APPLICATION_DEFAULT_FLAGS);
GError *err = NULL;
int reg = g_application_register(app,NULL,&err);
int remote = g_application_get_is_remote(app);
main_config.argv=argv; main_config.argv=argv;
main_config.argc = argc; main_config.argc = argc;
config_str unfound = NULL; config_str unfound = NULL;
@ -991,6 +1042,25 @@ int main(int argc, char *argv[]){
textdomain(LocaleName); textdomain(LocaleName);
config_init(); config_init();
gtk_init(&argc,&argv); gtk_init(&argc,&argv);
if (!reg||remote){
yon_window *window = yon_window_new();
gtk_widget_set_size_request(window->Window,300,125);
yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,WARNING_TITLE_LABEL,icon_path,NULL);
GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
GtkWidget *image = gtk_image_new();
GtkWidget *label = gtk_label_new(ALREADY_RUNNING_LABEL);
gtk_image_set_from_icon_name(GTK_IMAGE(image),warning_icon_path,0);
gtk_image_set_pixel_size(GTK_IMAGE(image),48);
gtk_box_pack_start(GTK_BOX(box),image,1,1,0);
gtk_box_pack_start(GTK_BOX(box),label,1,1,0);
gtk_box_pack_start(GTK_BOX(window->MainBox),box,1,1,0);
gtk_widget_show_all(box);
g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
gtk_widget_show(window->Window);
gtk_main();
exit(1);
}
yon_ubl_window_init(TITLE_LABEL,"",LocaleName,CssPath,LocaleName,version_application,WIKI_LINK); yon_ubl_window_init(TITLE_LABEL,"",LocaleName,CssPath,LocaleName,version_application,WIKI_LINK);
yon_ubl_setup_arguments(argc,argv,&unfound,&size,ADDITIONAL_ARGS); yon_ubl_setup_arguments(argc,argv,&unfound,&size,ADDITIONAL_ARGS);
if (size) { if (size) {

@ -49,6 +49,8 @@
#define add_icon_path "com.ublinux.libublsettingsui-gtk3.increase-symbolic" #define add_icon_path "com.ublinux.libublsettingsui-gtk3.increase-symbolic"
#define active_icon_path "com.ublinux.libublsettingsui-gtk3.active-symbolic" #define active_icon_path "com.ublinux.libublsettingsui-gtk3.active-symbolic"
#define inactive_icon_path "com.ublinux.libublsettingsui-gtk3.inactive-symbolic" #define inactive_icon_path "com.ublinux.libublsettingsui-gtk3.inactive-symbolic"
#define info_icon_path "com.ublinux.libublsettingsui-gtk3.important-symbolic"
#define warning_icon_path "com.ublinux.libublsettingsui-gtk3.warning-symbolic"
#define LocalePath "/usr/share/locale" #define LocalePath "/usr/share/locale"
#define LocaleName "ubinstall-gtk" #define LocaleName "ubinstall-gtk"
@ -732,6 +734,7 @@ typedef struct
GtkWidget *OSSoftwareNameLabel; GtkWidget *OSSoftwareNameLabel;
GtkWidget *OSSoftwareTagsLabel; GtkWidget *OSSoftwareTagsLabel;
GtkWidget *OSSoftwareDescriptionLabel; GtkWidget *OSSoftwareDescriptionLabel;
GtkWidget *OSSoftwareEmptyLabel;
GtkWidget *PacmanSoftwareSearchEntry; GtkWidget *PacmanSoftwareSearchEntry;
GtkWidget *PacmanSoftwareStatusImage; GtkWidget *PacmanSoftwareStatusImage;
@ -826,6 +829,7 @@ typedef struct
GtkTreeStore *PackagesList; GtkTreeStore *PackagesList;
GtkCellRenderer *PackagesChosenCell; GtkCellRenderer *PackagesChosenCell;
GtkWidget *PackagesTree; GtkWidget *PackagesTree;
rmb_menu_window *PackagesMenu;
// Configuration hub slide section // Configuration hub slide section
GtkWidget *ConfigHubRebootCombo; GtkWidget *ConfigHubRebootCombo;
@ -1058,6 +1062,7 @@ typedef struct
char *version; char *version;
char *tags; char *tags;
char *description; char *description;
GtkWidget *NameEvent;
} os_row; } os_row;
typedef struct typedef struct
@ -1227,6 +1232,12 @@ typedef struct
GtkWidget *TextLabel; GtkWidget *TextLabel;
} slider_object; } slider_object;
typedef struct {
GtkWidget *MainBox;
GtkWidget *InfoTree;
GtkListStore *InfoList;
} info_element;
void config_init(); void config_init();
main_window *yon_main_window_complete(); main_window *yon_main_window_complete();
ubinstall_language_window *yon_ubinstall_language_new(); ubinstall_language_window *yon_ubinstall_language_new();
@ -1622,3 +1633,9 @@ void on_os_components_uncheck_all(GtkWidget *,main_window *widgets);
gboolean yon_os_components_load(main_window *widgets); gboolean yon_os_components_load(main_window *widgets);
gboolean on_user_autoloin_switch(GtkWidget *, int status, main_window *); 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);
gboolean on_os_components_info(GtkWidget *, GdkEventButton *, os_row *row);
void on_software_info(GtkWidget*, main_window *widgets);

@ -303,6 +303,8 @@ NULL)
#define EDIT_USER_LABEL _("Edit user") #define EDIT_USER_LABEL _("Edit user")
#define ACCESSED_LABEL _("Accessed") #define ACCESSED_LABEL _("Accessed")
#define UNACCESSED_LABEL _("Unaccessed") #define UNACCESSED_LABEL _("Unaccessed")
#define INFO_LABEL _("Package information")
#define ALREADY_RUNNING_LABEL _("Application is already running")
// #define _LABEL _("Chosen size:") // #define _LABEL _("Chosen size:")
// #define _LABEL _("Overall size:") // #define _LABEL _("Overall size:")
@ -477,6 +479,7 @@ NULL)
// #define _LABEL _("Source:") // #define _LABEL _("Source:")
// #define _LABEL _("Version:") // #define _LABEL _("Version:")
// #define _LABEL _("Size:") // #define _LABEL _("Size:")
// #define _LABEL _("Select installation sources")
#define slide_1_title _("Product ecosystem") #define slide_1_title _("Product ecosystem")
#define slide_1_text _("Developed by a team of professionals and successfully presented on the market.\n\ #define slide_1_text _("Developed by a team of professionals and successfully presented on the market.\n\
@ -584,5 +587,5 @@ For more information, visit our website the \"Support Levels\" section.")
#define slide_22_title _("Network Boot") #define slide_22_title _("Network Boot")
#define slide_22_text _("Allows system booting for diskless and standard workstations over a local network or the Internet (even over slow connection channels).") #define slide_22_text _("Allows system booting for diskless and standard workstations over a local network or the Internet (even over slow connection channels).")
#define MAIN_COMPONENTS_NOT_FOUND_LABEL _("No modules were found.\nSelect a different installation source") #define MAIN_COMPONENTS_NOT_FOUND_LABEL _("No modules were found.\nSelect a different installation sources")
#define MAIN_COMPONENTS_ALL_SELECTED_LABEL _("All local modules of the system are selected") #define MAIN_COMPONENTS_ALL_SELECTED_LABEL _("All local modules of the system are selected")

@ -44,16 +44,23 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">7</property> <property name="spacing">7</property>
<child> <child>
<object class="GtkLabel" id="NameLabel"> <object class="GtkEventBox" id="NameEvent">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Name</property> <property name="above-child">True</property>
<property name="width-chars">0</property> <child>
<property name="track-visited-links">False</property> <object class="GtkLabel" id="NameLabel">
<property name="xalign">0</property> <property name="visible">True</property>
<attributes> <property name="can-focus">True</property>
<attribute name="weight" value="bold"/> <property name="label" translatable="yes">Name</property>
</attributes> <property name="width-chars">0</property>
<property name="track-visited-links">False</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>

@ -51,7 +51,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="valign">start</property> <property name="valign">start</property>
<property name="icon-name">com.ublinux.ubinstall-gtk</property> <property name="icon-name">com.ublinux.ubinstall-gtk.source</property>
<property name="icon_size">6</property> <property name="icon_size">6</property>
</object> </object>
<packing> <packing>
@ -70,7 +70,7 @@
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Choose a path for configuration file</property> <property name="label" translatable="yes">Select installation sources</property>
<property name="xalign">0</property> <property name="xalign">0</property>
</object> </object>
<packing> <packing>

@ -2105,7 +2105,7 @@ agreement</property>
<object class="GtkLabel" id="OSSoftwareEmptyLabel"> <object class="GtkLabel" id="OSSoftwareEmptyLabel">
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">No modules were found. <property name="label" translatable="yes">No modules were found.
Select a different installation source.</property> Select a different installation sources.</property>
<property name="justify">center</property> <property name="justify">center</property>
<property name="wrap">True</property> <property name="wrap">True</property>
</object> </object>
@ -7428,9 +7428,7 @@ Select a different installation source.</property>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="title" translatable="yes">column</property> <property name="title" translatable="yes">column</property>
<child> <child>
<object class="GtkCellRendererToggle" id="PackagesChosenCell"> <object class="GtkCellRendererToggle" id="PackagesChosenCell"/>
<property name="yalign">0</property>
</object>
<attributes> <attributes>
<attribute name="sensitive">4</attribute> <attribute name="sensitive">4</attribute>
<attribute name="visible">3</attribute> <attribute name="visible">3</attribute>
@ -7438,7 +7436,9 @@ Select a different installation source.</property>
</attributes> </attributes>
</child> </child>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText">
<property name="wrap-width">500</property>
</object>
<attributes> <attributes>
<attribute name="markup">2</attribute> <attribute name="markup">2</attribute>
</attributes> </attributes>
@ -14435,7 +14435,6 @@ separately into the selected partition.</property>
<object class="GtkButton" id="CancelInstallButton"> <object class="GtkButton" id="CancelInstallButton">
<property name="label" translatable="yes">Cancel</property> <property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="image">image7</property> <property name="image">image7</property>

Loading…
Cancel
Save