Merge pull request 'master' (#59) from YanTheKaller/ubl-settings-update:master into master

Reviewed-on: #59
pull/109/head^2^2 v2.7
Dmitry Razumov 1 year ago
commit f6544983c7

@ -6,6 +6,9 @@ In order to build ubl-settings-manager you will need:
- CMake
- C compiler
- GTK+ 3 & dependencies
- [libublsettings](https://gitea.ublinux.ru/Applications/libublsettings)
- [libublsettings-gtk3](https://gitea.ublinux.ru/Applications/libublsettings-gtk3)
- [libublsettingsui-gtk3](https://gitea.ublinux.ru/Applications/libublsettingsui-gtk3)
Once you have all the necessary dependencies, you can use:
```sh

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 76 KiB

@ -94,10 +94,14 @@ set(LIBRARIES
ublsettingsui-gtk3
)
set (TARGET_DIRS /usr/include/libublsettingsui-gtk3)
add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C})
target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES})
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR})
target_include_directories(${PROJECT_NAME} PUBLIC /usr/include/libublsettingsui-gtk3)
set_source_files_properties(
${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
PROPERTIES GENERATED TRUE

@ -24,6 +24,7 @@ void on_save_done(main_window *, config_str output, int size){
break;
}
textdomain(LocaleName);
yon_config_set_ignore(REPOSITORY_parameter);
}
@ -33,7 +34,7 @@ void on_toggle_button_toggled(GtkWidget *self, main_window *widgets){
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->AutoUpdateCheck))){
yon_config_register(AUTOUPDATE,AUTOUPDATE_command,"enable");
} else {
yon_config_register(AUTOUPDATE,AUTOUPDATE_command,"disable");
yon_config_remove_by_key(AUTOUPDATE);
}
} else if (self == widgets->UpdateModeCombo){
@ -63,11 +64,11 @@ void on_toggle_button_toggled(GtkWidget *self, main_window *widgets){
switch(gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->UpdateIntervalCombo))){
case 0: interval = yon_char_unite(!yon_char_is_empty(interval)?interval:"",!yon_char_is_empty(interval)?",":"",int_str,"min",NULL);
break;
case 1: interval = yon_char_unite(int_str,"h",NULL);
case 1: interval = yon_char_unite(!yon_char_is_empty(interval)?interval:"",!yon_char_is_empty(interval)?",":"",int_str,"h",NULL);
break;
case 2: interval = yon_char_unite(int_str,"d",NULL);
case 2: interval = yon_char_unite(!yon_char_is_empty(interval)?interval:"",!yon_char_is_empty(interval)?",":"",int_str,"d",NULL);
break;
case 3: interval = yon_char_unite(int_str,"M",NULL);
case 3: interval = yon_char_unite(!yon_char_is_empty(interval)?interval:"",!yon_char_is_empty(interval)?",":"",int_str,"M",NULL);
break;
}
yon_config_register(AUTOUPDATE_interval,AUTOUPDATE_interval_command,interval);
@ -159,7 +160,8 @@ void on_toggle_button_toggled(GtkWidget *self, main_window *widgets){
void yon_load_proceed(YON_CONFIG_TYPE type){
yon_config_clean();
if (!yon_char_is_empty(config_get_default_command))
char *default_command = yon_char_unite(config_get_default_command,NULL);
if (!yon_char_is_empty(default_command))
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
if (type==YON_CONFIG_GLOBAL){
yon_config_load_config(type,config_get_global_command,NULL);
@ -246,7 +248,7 @@ void yon_interface_update(main_window *widgets){
gtk_list_store_append(widgets->ReposList,&iter);
char *temp = strstr(parsed[0],",")?yon_char_replace(parsed[0],",","\n"):parsed[0];
parsed[0] = temp;
gtk_list_store_set(widgets->ReposList,&iter,0,cur_size>3&&!strcmp(parsed[3],"")?1:0,1,key,2,parsed[0],3,cur_size>1?parsed[1]:"",4,cur_size>2?parsed[2]:"",-1);
gtk_list_store_set(widgets->ReposList,&iter,0,(cur_size>3&&!strcmp(parsed[3],""))||cur_size<3?1:0,1,key,2,parsed[0],3,cur_size>1?parsed[1]:"",4,cur_size>2?parsed[2]:"",-1);
}
free(key);
@ -289,7 +291,12 @@ void yon_interface_update(main_window *widgets){
yon_char_parsed_free(parsed,cur_size);
}
} else {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->PublicationCheck),1);
for (int i=0;i<repos_size;i++){
yon_char_remove_last_symbol(publish_repos[i],'\n');
gtk_list_store_append(widgets->PublicationList,&iter);
gtk_list_store_set(widgets->PublicationList,&iter,1,publish_repos[i],0,1,-1);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->PublicationCheck),0);
}
}
{
@ -305,6 +312,15 @@ void yon_interface_update(main_window *widgets){
config_str mirror_list = yon_config_get_all_by_key(REPOPUBLIC_CACHE_search,&size);
if (size){
for (int i=0;i<size;i++){
if (yon_char_check_begins_with(mirror_list[i],REPOPUBLIC_CACHE_port)||
yon_char_check_begins_with(mirror_list[i],REPOPUBLIC_CACHE_cache_dir)||
yon_char_check_begins_with(mirror_list[i],REPOPUBLIC_CACHE_purge_files_after)||
yon_char_check_begins_with(mirror_list[i],REPOPUBLIC_CACHE_download_timeout)||
yon_char_check_begins_with(mirror_list[i],REPOPUBLIC_CACHE_http_proxy)||
yon_char_check_begins_with(mirror_list[i],REPOPUBLIC_CACHE_user_agent)||
yon_char_check_begins_with(mirror_list[i],REPOPUBLIC_CACHE_cron)||
yon_char_check_begins_with(mirror_list[i],REPOPUBLIC_CACHE_ttl_unaccessed_in_days)||
yon_char_check_begins_with(mirror_list[i],REPOPUBLIC_CACHE_ttl_unupdated_in_days)) continue;
char *cur = yon_char_new(mirror_list[i]);
char *key = yon_char_divide_search(cur,"=",-1);
if (yon_char_is_empty(key)) continue;
@ -363,18 +379,27 @@ void yon_interface_update(main_window *widgets){
autoupdate_config = config(AUTOUPDATE_interval);
if (!yon_char_is_empty(autoupdate_config)){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->UpdateIntervalDefaultCheck),0);
if (strstr(autoupdate_config,"min")){
int parsed_size;
config_str parsed = yon_char_parse(autoupdate_config,&parsed_size,",");
if (yon_char_parsed_check_exist(parsed,parsed_size,"boot")!=-1){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->BootCheck),1);
}
if (strstr(parsed[parsed_size-1],"min")){
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UpdateIntervalCombo),0);
} else if (autoupdate_config[strlen(autoupdate_config)-1]=='h'){
} else if (parsed[parsed_size-1][strlen(parsed[parsed_size-1])-1]=='h'){
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UpdateIntervalCombo),1);
} else if (autoupdate_config[strlen(autoupdate_config)-1]=='d'){
} else if (parsed[parsed_size-1][strlen(parsed[parsed_size-1])-1]=='d'){
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UpdateIntervalCombo),2);
} else if (autoupdate_config[strlen(autoupdate_config)-1]=='M'){
} else if (parsed[parsed_size-1][strlen(parsed[parsed_size-1])-1]=='M'){
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UpdateIntervalCombo),3);
}
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->UpdateIntervalSpin),atol(autoupdate_config));
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->UpdateIntervalSpin),atol(parsed[parsed_size-1]));
} else {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->UpdateIntervalDefaultCheck),1);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->BootCheck),0);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->UpdateIntervalSpin),0);
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UpdateIntervalCombo),0);
}
}
@ -396,7 +421,27 @@ void yon_interface_update(main_window *widgets){
int repos_size;
config_str repos = yon_char_parse(key,&repos_size,",");
gtk_list_store_set(widgets->WebPublicationList,&iter,1,path,2,yon_char_parsed_to_string(repos,repos_size,"\n"),-1);
char *repos_paths = yon_char_parsed_to_string(repos,repos_size,",");
char *full_path = yon_char_unite(path,!yon_char_is_empty(repos_paths)?":":"",!yon_char_is_empty(repos_paths)?repos_paths:"",NULL);
if (!yon_char_is_empty(repos_paths)) free(repos_paths);
if (!repos_size){
int temp_size;
config_str contents = yon_dir_get_contents(path,&temp_size);
for (int k=0;k<temp_size;k++){
char *full_content_path = yon_char_unite(path,"/",contents[k],NULL);
if (yon_file_is_directory(full_content_path)&&strcmp(contents[k],"pool")&&strcmp(contents[k],".")&&strcmp(contents[k],"..")){
yon_char_parsed_add_or_create_if_exists(repos,&repos_size,contents[k]);
}
free(full_content_path);
}
yon_char_parsed_free(contents,temp_size);
}
repos_paths = yon_char_parsed_to_string(repos,repos_size,"\n");
gtk_list_store_set(widgets->WebPublicationList,&iter,1,path,2,repos_paths,8,full_path,-1);
free(repos_paths);
free(full_path);
int cur_size;
config_str parsed = yon_char_parse(cur,&cur_size,":");
if (cur_size){
@ -415,11 +460,12 @@ void yon_interface_update(main_window *widgets){
gtk_list_store_set(widgets->WebPublicationList,&iter,5,parsed[3],-1);
}
if (cur_size>4&&!yon_char_is_empty(parsed[4])){
if (!strcmp(parsed[4],"sha256")||!strcmp(parsed[4],"sha512")){
gtk_list_store_set(widgets->WebPublicationList,&iter,7,parsed[5],-1);
gtk_list_store_set(widgets->WebPublicationList,&iter,6,parsed[4],-1);
char *hash = yon_char_divide_search(parsed[4],"|",-1);
if (!strcmp(hash,"sha256")||!strcmp(hash,"sha512")){
gtk_list_store_set(widgets->WebPublicationList,&iter,7,"******",-1);
gtk_list_store_set(widgets->WebPublicationList,&iter,6,hash,-1);
} else {
gtk_list_store_set(widgets->WebPublicationList,&iter,6,parsed[4],-1);
gtk_list_store_set(widgets->WebPublicationList,&iter,6,"******",-1);
if (cur_size>5&&!yon_char_is_empty(parsed[5])){
gtk_list_store_set(widgets->WebPublicationList,&iter,7,parsed[5],-1);
}
@ -629,7 +675,6 @@ void on_scrolled_window_size_allocate(GtkWidget *, GdkRectangle *allocation, rep
void on_repo_add(GtkWidget *, main_window *widgets){
gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree)));
repo_add_window *window = yon_repo_add_window_new();
g_signal_connect(G_OBJECT(window->RepoSourceCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),window->RepoSourceButton);
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"add_repo_window");
dictionary *dict = NULL;
@ -651,6 +696,13 @@ void on_mirror_add(GtkWidget *,main_window *widgets){
}
void on_password_encryption_changed(GtkComboBox *self, password_window *dialog){
int active = gtk_combo_box_get_active(self);
gtk_widget_set_sensitive(dialog->NoEncriptionCheck,!!active);
if (!active)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->NoEncriptionCheck),0);
}
void on_password_open(GtkWidget *, web_publication_add_window *window){
password_window *dialog = yon_password_window_new();
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(dialog->PasswordEntry));
@ -660,6 +712,8 @@ void on_password_open(GtkWidget *, web_publication_add_window *window){
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",dialog);
yon_dictionary_add_or_create_if_exists_with_data(dict,"target",window->UserPasswordEntry);
g_signal_connect(G_OBJECT(dialog->AcceptButton),"clicked",G_CALLBACK(on_password_accept),dict);
g_signal_connect(G_OBJECT(dialog->NoEncriptionCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),dialog->PasswordHashEntry);
g_signal_connect(G_OBJECT(dialog->EncryptionCombo),"changed",G_CALLBACK(on_password_encryption_changed),dialog);
}
void on_web_publish_remove(GtkWidget *self,main_window *widgets){
@ -693,19 +747,9 @@ void on_web_publish_remove_accept(GtkWidget *, main_window *widgets){
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->WebPublicationTree)),&model,&iter)) {
return;
}
char *storage;
char *repositories;
gtk_tree_model_get(model,&iter,1,&storage,2,&repositories,-1);
char *full_name = NULL;
if (!yon_char_is_empty(repositories)){
int size;
config_str parsed = yon_char_parse(repositories,&size,"\n");
char *temp = yon_char_parsed_to_string(parsed,size,",");
full_name=yon_char_unite(storage,":",temp);
free(temp);
yon_char_parsed_free(parsed,size);
} else full_name = storage;
yon_config_remove_by_key(full_name);
gtk_tree_model_get(model,&iter,8,&full_name,-1);
yon_config_remove_by_key(REPOPUBLIC_WEB_full(full_name));
yon_interface_update(widgets);
}
@ -717,7 +761,7 @@ void on_mirror_remove_accept(GtkWidget *, main_window *widgets){
}
char *repo;
gtk_tree_model_get(model,&iter,0,&repo,-1);
yon_config_remove_by_key(repo);
yon_config_remove_by_key(REPOPUBLIC_CACHE_full(repo));
yon_interface_update(widgets);
}
@ -764,66 +808,65 @@ void on_repo_edit(GtkWidget *,main_window *widgets){
section->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo");
section->edits=0;
if (strstr(repos[i],"@")){
char *type = yon_char_divide_search(repos[i],"@",-1);
gtk_combo_box_set_active_id(GTK_COMBO_BOX(section->TypeCombo),type);
free(type);
char *path = yon_char_new(repos[i]);
if (strstr(repos[i],"file://")){
gtk_combo_box_set_active(GTK_COMBO_BOX(section->TypeCombo),0);
free(yon_char_divide(path,6));
} else if (strstr(repos[i],"ftp://")){
gtk_combo_box_set_active(GTK_COMBO_BOX(section->TypeCombo),1);
free(yon_char_divide(path,5));
} else if (strstr(repos[i],"http://")){
gtk_combo_box_set_active(GTK_COMBO_BOX(section->TypeCombo),2);
free(yon_char_divide(path,6));
} else if (strstr(repos[i],"https://")){
gtk_combo_box_set_active(GTK_COMBO_BOX(section->TypeCombo),3);
free(yon_char_divide(path,7));
} else
} else {
gtk_combo_box_set_active(GTK_COMBO_BOX(section->TypeCombo),4);
}
gtk_entry_set_text(GTK_ENTRY(section->PathEntry),path);
free(path);
yon_dictionary_add_or_create_if_exists_with_data(window->sections,(char*)target,section);
gtk_entry_set_text(GTK_ENTRY(section->PathEntry),repos[i]);
gtk_box_pack_start(GTK_BOX(window->SourceBox),section->PathRemovalBox,0,0,2);
gtk_box_pack_start(GTK_BOX(window->SourceBox),section->PathRemovalBox,0,0,0);
g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),window);
g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),window);
}
gtk_widget_show(window->SourceListBox);
yon_char_parsed_free(repos,cur_size);
}
if (size>1&&!yon_char_is_empty(parsed[1])){ //siglevel
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->SignDefaultCheck),0);
int cur_size;
config_str siglevel = yon_char_parse(parsed[1],&cur_size,",");
if (!strcmp(siglevel[0],"Never")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->NeverRadio),1);
} else if (!strcmp(siglevel[0],"Optional")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->OptionalRadio),1);
} else if (!strcmp(siglevel[0],"Required")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->RequiredRadio),1);
} else if (!strcmp(siglevel[0],"TrustedOnly")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->TrustedOnlyRadio),1);
} else if (!strcmp(siglevel[0],"TrustAll")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->TrustAllRadio),1);
}
if (!strcmp(siglevel[1],"PackageNever")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PackageNeverRadio),1);
} else if (!strcmp(siglevel[1],"DatabaseNever")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DatabaseNeverRadio),1);
} else if (!strcmp(siglevel[1],"PackageOptional")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PackageOptionalRadio),1);
} else if (!strcmp(siglevel[1],"DatabaseOptional")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DatabaseOptionalRadio),1);
} else if (!strcmp(siglevel[1],"PackageRequired")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PackageRequiredRadio),1);
} else if (!strcmp(siglevel[1],"DatabaseRequired")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DatabaseRequiredRadio),1);
} else if (!strcmp(siglevel[1],"PackageTrustedOnly")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PackageTrustedOnlyRadio),1);
} else if (!strcmp(siglevel[1],"DatabaseTrustedOnly")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DatabaseTrustedOnlyRadio),1);
} else if (!strcmp(siglevel[1],"PackageTrustAll")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PackageTrustAllRadio),1);
} else if (!strcmp(siglevel[1],"DatabaseTrustAll")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DatabaseTrustAllRadio),1);
GtkTreeModel *model = GTK_TREE_MODEL(window->SignList);
GtkTreeIter iter;
for_iter (model,&iter){
char *target;
gtk_tree_model_get(model,&iter,1,&target,-1);
if (yon_char_parsed_check_exist(siglevel,cur_size,target)>-1){
gtk_list_store_set(window->SignList,&iter,0,1,-1);
} else {
gtk_list_store_set(window->SignList,&iter,0,0,-1);
}
}
gtk_entry_set_text(GTK_ENTRY(window->SignLevelCheckEntry),parsed[1]);
}
if (size>2&&!yon_char_is_empty(parsed[2])){
if (size>2&&!yon_char_is_empty(parsed[2])){ //usage
int usage_size;
config_str usage = yon_char_parse(parsed[2],&usage_size,",");
for (int i=0;i<usage_size;i++){
if (!strcmp(usage[i],"All")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsageDefaultCheck),1);
} else {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsageDefaultCheck),0);
if (!strcmp(usage[i],"Sync")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsageEnableUpdateCheck),1);
}
@ -839,7 +882,7 @@ void on_repo_edit(GtkWidget *,main_window *widgets){
}
}
if (usage_size) yon_char_parsed_free(usage,usage_size);
} //usage
}
if (size<3||yon_char_is_empty(parsed[3])||strcmp(parsed[3],"disable")){ //disable
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->EnabledCheck),1);
}
@ -860,14 +903,13 @@ void on_web_publish_edit(GtkWidget *,main_window *widgets){
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->WebPublicationTree)),NULL,&iter)){
char *storage;
char *repos;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->WebPublicationList),&iter,1,&storage,2,&repos,-1);
char *full;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->WebPublicationList),&iter,1,&storage,2,&repos,8,&full,-1);
gtk_entry_set_text(GTK_ENTRY(window->PathEntry),storage);
while(gtk_events_pending()) gtk_main_iteration();
char *full_name = storage;
if(!yon_char_is_empty(repos)){
int size;
config_str parsed = yon_char_parse(repos,&size,"\n");
full_name = yon_char_unite(storage,":",yon_char_replace(repos,"\n",","),NULL);
if (size){
GtkTreeIter itar;
for_iter(GTK_TREE_MODEL(window->list),&itar){
@ -879,8 +921,8 @@ void on_web_publish_edit(GtkWidget *,main_window *widgets){
}
}
}
window->name = full_name;
char *parameter = config(REPOPUBLIC_WEB_full(full_name));
window->name = full;
char *parameter = config(REPOPUBLIC_WEB_full(full));
int size;
config_str parsed = yon_char_parse(parameter,&size,":");
if (size){
@ -891,7 +933,7 @@ void on_web_publish_edit(GtkWidget *,main_window *widgets){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->EnableWebFileBrowserCheck),1);
}
if (size>2&&!yon_char_is_empty(parsed[2])){
gtk_entry_set_text(GTK_ENTRY(window->PortEntry),parsed[2]);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->PortEntry),atol(parsed[2]));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PortCheck),1);
}
if (size>3&&!yon_char_is_empty(parsed[3])){
@ -899,6 +941,7 @@ void on_web_publish_edit(GtkWidget *,main_window *widgets){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsernameCheck),1);
}
if (size>4&&!yon_char_is_empty(parsed[4])){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->UserPasswordCombo),1);
if (!strcmp(parsed[4],"sha256")||!strcmp(parsed[4],"sha512")){
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->UserPasswordCombo),parsed[4]);
gtk_entry_set_text(GTK_ENTRY(window->UserPasswordEntry),parsed[5]);
@ -952,7 +995,7 @@ void on_mirror_edit(GtkWidget *,main_window *widgets){
yon_dictionary_add_or_create_if_exists_with_data(window->sections,(char*)target,section);
gtk_entry_set_text(GTK_ENTRY(section->PathEntry),parsed[i]);
gtk_box_pack_start(GTK_BOX(window->PathBox),section->PathRemovalBox,0,0,2);
gtk_box_pack_start(GTK_BOX(window->PathBox),section->PathRemovalBox,0,0,0);
g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),window);
g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),window);
@ -1024,6 +1067,11 @@ void on_repo_accept_clicked(GtkWidget *, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
if (!window->sections&&yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->RepoSourceEntry)))) {
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->RepoSourceEntry);
return;
}
const char *repo_name = gtk_entry_get_text(GTK_ENTRY(window->RepoNameEntry));
if (yon_char_is_empty(repo_name)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
@ -1033,10 +1081,20 @@ void on_repo_accept_clicked(GtkWidget *, dictionary *dict){
int enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnabledCheck));
char *sources = "";
dictionary *dact = NULL;
for_dictionaries (dact, window->sections){
char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(((path_section*)dact->data)->TypeCombo));
char *cur = yon_char_unite(type?type:"",type?"@":"",(char*)gtk_entry_get_text(GTK_ENTRY(((path_section*)dact->data)->PathEntry)),NULL);
char *temp = yon_char_unite(sources,!yon_char_is_empty(sources)?",":"",cur,NULL);
if (window->sections){
for_dictionaries (dact, window->sections){
char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(((path_section*)dact->data)->TypeCombo));
char *cur = yon_char_unite(type?type:"",(char*)gtk_entry_get_text(GTK_ENTRY(((path_section*)dact->data)->PathEntry)),NULL);
char *temp = yon_char_unite(sources,!yon_char_is_empty(sources)?",":"",cur,NULL);
if (!yon_char_is_empty(sources)) free(sources);
sources = temp;
}
}
char *source_main = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepoSourceEntry));
if (!yon_char_is_empty(source_main)) {
char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSourceCombo));
source_main = yon_char_unite(type?type:"",source_main,NULL);
char *temp = yon_char_unite(sources,!yon_char_is_empty(sources)?",":"",source_main,NULL);
if (!yon_char_is_empty(sources)) free(sources);
sources = temp;
}
@ -1046,40 +1104,9 @@ void on_repo_accept_clicked(GtkWidget *, dictionary *dict){
return;
}
char *sign_level_package = "";
char *sign_level_condiition = "";
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->NeverRadio))){
sign_level_package="Never";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->OptionalRadio))){
sign_level_package="Optional";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->RequiredRadio))){
sign_level_package="Required";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->TrustedOnlyRadio))){
sign_level_package="TrustedOnly";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->TrustAllRadio))){
sign_level_package="TrustAll";
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PackageNeverRadio))){
sign_level_condiition="PackageNever";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DatabaseNeverRadio))){
sign_level_condiition="DatabaseNever";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PackageOptionalRadio))){
sign_level_condiition="PackageOptional";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DatabaseOptionalRadio))){
sign_level_condiition="DatabaseOptional";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PackageRequiredRadio))){
sign_level_condiition="PackageRequired";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DatabaseRequiredRadio))){
sign_level_condiition="DatabaseRequired";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PackageTrustedOnlyRadio))){
sign_level_condiition="PackageTrustedOnly";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DatabaseTrustedOnlyRadio))){
sign_level_condiition="DatabaseTrustedOnly";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PackageTrustAllRadio))){
sign_level_condiition="PackageTrustAll";
} else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DatabaseTrustAllRadio))){
sign_level_condiition="DatabaseTrustAll";
char *sign_level= "";
if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SignDefaultCheck))){
sign_level = (char*)gtk_entry_get_text(GTK_ENTRY(window->SignLevelCheckEntry));
}
char *usage = "";
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsageDefaultCheck))){
@ -1105,10 +1132,10 @@ void on_repo_accept_clicked(GtkWidget *, dictionary *dict){
}
}
char *final = yon_char_unite(sources,";",sign_level_package,",",sign_level_condiition,";",usage,";",enabled?"":"disable",NULL);
char *final = yon_char_unite(sources,";",sign_level,";",usage,";",enabled?"":"disable",NULL);
if (!yon_char_is_empty(window->name)&&strcmp(repo_name,window->name)){
yon_config_remove_by_key(REOSITORY_command(window->name));
yon_config_remove_by_key(REPOSITORY(window->name));
}
yon_config_register(REPOSITORY(repo_name),REOSITORY_command(repo_name),final);
yon_interface_update(widgets);
@ -1123,13 +1150,24 @@ void on_web_publish_accept(GtkWidget *, dictionary *dict){
int enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnablePublishCheck));
int port_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PortCheck));
char *port = (char*)gtk_entry_get_text(GTK_ENTRY(window->PortEntry));
char *port = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->PortEntry)));
int enable_browser = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnableWebFileBrowserCheck));
int username_check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsernameCheck));
char *username = (char*)gtk_entry_get_text(GTK_ENTRY(window->UsernameEntry));
char *user_password = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->UserPasswordEntry)));
char *encryption = user_password[5]=='|'?yon_char_divide(user_password,6):NULL;
char *encryption = user_password[6]=='|'?yon_char_divide(user_password,6):NULL;
if (strpbrk(username,"!@#%^&*\'")){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),ENTRY_RESTRICTED_SYMBOL_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->UsernameEntry);
return;
}
if (strpbrk(user_password,"!@#%^&*\'")){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_RESTRICTED_SYMBOL_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->UserPasswordEntry);
return;
}
if (username_check&&yon_char_is_empty(username)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->UsernameEntry);
@ -1165,12 +1203,17 @@ void on_web_publish_accept(GtkWidget *, dictionary *dict){
return;
}
char *final_name = yon_char_is_empty(full_name)||!disabled ? name : yon_char_unite(name,":",full_name,NULL);
char *final = yon_char_unite(enabled?"enable":"disable",":",enable_browser?"listing":"",":",port_enabled?port:"",":",username_check?username:"",":",username_check?yon_char_is_empty(encryption)? user_password:encryption:"",":",username_check?!yon_char_is_empty(encryption)?user_password:"":"",NULL);
char *final = yon_char_unite(enabled?"enable":"disable",":",
enable_browser?"listing":"",":",
port_enabled?port:"",":",
username_check?username:"",":",
username_check?yon_char_is_empty(encryption)? user_password:encryption:"",":",
username_check?!yon_char_is_empty(encryption)?user_password:"":"",
NULL);
if (!yon_char_is_empty(window->name)&&strcmp(final_name,window->name)){
yon_config_remove_by_key(REPOPUBLIC_WEB_command(window->name));
} else {
yon_config_register(REPOPUBLIC_WEB_full(final_name),REPOPUBLIC_WEB_command(final_name),final);
yon_config_remove_by_key(REPOPUBLIC_WEB_full(window->name));
}
yon_config_register(REPOPUBLIC_WEB_full(final_name),REPOPUBLIC_WEB_command(final_name),final);
yon_interface_update(widgets);
gtk_widget_destroy(window->Window);
}
@ -1178,13 +1221,32 @@ void on_web_publish_accept(GtkWidget *, dictionary *dict){
void on_mirror_accept(GtkWidget *,dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
mirror_add_window *window = yon_dictionary_get_data(dict->first->next,mirror_add_window*);
if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->NameEntry)))){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->NameEntry);
return;
}
if (!window->sections&&yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->TypeEntry)))) {
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->TypeEntry);
return;
}
char *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->NameEntry));
char *paths = "";
dictionary *dact = NULL;
for_dictionaries (dact, window->sections){
char *cur = yon_char_unite(gtk_combo_box_get_active_id(GTK_COMBO_BOX(((path_section*)dact->data)->TypeCombo)),"@",(char*)gtk_entry_get_text(GTK_ENTRY(((path_section*)dact->data)->PathEntry)),NULL);
char *temp = yon_char_unite(paths,!yon_char_is_empty(paths)?",":"",cur,NULL);
if (window->sections){
dictionary *dact = NULL;
for_dictionaries (dact, window->sections){
char *cur = yon_char_unite(gtk_combo_box_get_active_id(GTK_COMBO_BOX(((path_section*)dact->data)->TypeCombo)),"@",(char*)gtk_entry_get_text(GTK_ENTRY(((path_section*)dact->data)->PathEntry)),NULL);
char *temp = yon_char_unite(paths,!yon_char_is_empty(paths)?",":"",cur,NULL);
if (!yon_char_is_empty(paths)) free(paths);
paths = temp;
}
}
char *source_main = (char*)gtk_entry_get_text(GTK_ENTRY(window->TypeEntry));
if (!yon_char_is_empty(source_main)) {
char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->TypeCombo));
source_main = yon_char_unite(type?type:"",type?"@":"",source_main,NULL);
char *temp = yon_char_unite(paths,!yon_char_is_empty(paths)?",":"",source_main,NULL);
if (!yon_char_is_empty(paths)) free(paths);
paths = temp;
}
@ -1280,6 +1342,11 @@ void on_password_accept(GtkWidget *,dictionary *dict){
} else {
char *password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
char *password_check = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry));
if (strpbrk(password,"!@#%^&*\'")){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_RESTRICTED_SYMBOL_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->PasswordEntry);
return;
}
if (strcmp(password,password_check)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_MISMATCH_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->PasswordEntry);
@ -1287,8 +1354,15 @@ void on_password_accept(GtkWidget *,dictionary *dict){
return;
}
char *encryption = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->EncryptionCombo));
char *final_text = yon_char_unite(encryption,"|",password,NULL);
gtk_entry_set_text(GTK_ENTRY(target),final_text);
if (yon_char_is_empty(encryption)){
gtk_entry_set_text(GTK_ENTRY(target),password);
} else {
int size;
config_str hash = yon_config_load(yon_debug_output("%s\n",!strcmp(encryption,"sha512")?sha512_encrypt_command(password):sha256_encrypt_command(password)),&size);
yon_char_remove_last_symbol(hash[0],'\n');
gtk_entry_set_text(GTK_ENTRY(target),hash[0]);
}
}
gtk_widget_destroy(window->Window);
@ -1364,7 +1438,7 @@ void on_mirror_path_add(GtkWidget *, mirror_add_window *window){
gtk_entry_set_text(GTK_ENTRY(section->PathEntry),target);
gtk_entry_set_text(GTK_ENTRY(window->TypeEntry),"");
gtk_box_pack_start(GTK_BOX(window->PathBox),section->PathRemovalBox,0,0,2);
gtk_box_pack_start(GTK_BOX(window->PathBox),section->PathRemovalBox,0,0,0);
g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),window);
g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),window);
@ -1389,12 +1463,17 @@ void on_repo_source_add(GtkWidget *, repo_add_window *window){
section->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo");
section->edits=0;
gtk_combo_box_set_active_id(GTK_COMBO_BOX(section->TypeCombo),gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSourceCombo)));
const char *id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSourceCombo));
if (!yon_char_is_empty(id))
gtk_combo_box_set_active_id(GTK_COMBO_BOX(section->TypeCombo),id);
else
gtk_combo_box_set_active(GTK_COMBO_BOX(section->TypeCombo),4);
yon_dictionary_add_or_create_if_exists_with_data(window->sections,(char*)target,section);
gtk_entry_set_text(GTK_ENTRY(section->PathEntry),target);
gtk_entry_set_text(GTK_ENTRY(window->RepoSourceEntry),"");
gtk_box_pack_start(GTK_BOX(window->SourceBox),section->PathRemovalBox,0,0,2);
gtk_box_pack_start(GTK_BOX(window->SourceBox),section->PathRemovalBox,0,0,0);
gtk_widget_show(window->SourceListBox);
g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),window);
g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),window);
}
@ -1430,23 +1509,46 @@ password_window *yon_password_window_new(){
return window;
}
void on_sign_cell_toggled(GtkWidget *, char *path, repo_add_window *window){
GtkTreeModel *model = GTK_TREE_MODEL(window->SignList);
GtkTreeIter check_iter;
if (gtk_tree_model_get_iter_from_string(model,&check_iter,path)){
int check_status;
char *target;
gtk_tree_model_get(model,&check_iter,0,&check_status,1,&target,-1);
gtk_list_store_set(window->SignList,&check_iter,0,!check_status,-1);
char *active_signs = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->SignLevelCheckEntry)));
if (!check_status){
char *temp = yon_char_unite(active_signs,!yon_char_is_empty(active_signs)?",":"",target,NULL);
gtk_entry_set_text(GTK_ENTRY(window->SignLevelCheckEntry),temp);
} else {
int parsed_size;
config_str parsed = yon_char_parse(active_signs,&parsed_size,",");
if (parsed_size){
int found = yon_char_parsed_check_exist(parsed,parsed_size,target);
if (found>-1){
parsed = yon_char_parsed_rip(parsed,&parsed_size,found);
}
char *temp = yon_char_parsed_to_string(parsed,parsed_size,",");
gtk_entry_set_text(GTK_ENTRY(window->SignLevelCheckEntry),temp);
}
}
}
}
void on_sign_check_toggled(GtkToggleButton *self, repo_add_window *window){
int status = gtk_toggle_button_get_active(self);
gtk_widget_set_sensitive(window->NeverRadio,!status);
gtk_widget_set_sensitive(window->OptionalRadio,!status);
gtk_widget_set_sensitive(window->RequiredRadio,!status);
gtk_widget_set_sensitive(window->TrustedOnlyRadio,!status);
gtk_widget_set_sensitive(window->TrustAllRadio,!status);
gtk_widget_set_sensitive(window->PackageNeverRadio,!status);
gtk_widget_set_sensitive(window->DatabaseNeverRadio,!status);
gtk_widget_set_sensitive(window->PackageOptionalRadio,!status);
gtk_widget_set_sensitive(window->DatabaseOptionalRadio,!status);
gtk_widget_set_sensitive(window->PackageRequiredRadio,!status);
gtk_widget_set_sensitive(window->DatabaseRequiredRadio,!status);
gtk_widget_set_sensitive(window->PackageTrustedOnlyRadio,!status);
gtk_widget_set_sensitive(window->DatabaseTrustedOnlyRadio,!status);
gtk_widget_set_sensitive(window->PackageTrustAllRadio,!status);
gtk_widget_set_sensitive(window->DatabaseTrustAllRadio,!status);
gtk_widget_set_sensitive(window->SignTree,!status);
}
void on_repo_source_changed(GtkComboBox *self, repo_add_window *window){
int active = gtk_combo_box_get_active(self);
if (active ==0 || active == 4){
gtk_widget_set_sensitive(window->RepoSourceButton,1);
} else {
gtk_widget_set_sensitive(window->RepoSourceButton,0);
}
}
repo_add_window *yon_repo_add_window_new(){
@ -1474,21 +1576,10 @@ repo_add_window *yon_repo_add_window_new(){
window->SourceListBox = yon_gtk_builder_get_widget(builder,"SourceListBox");
window->RepoSourceAddButton = yon_gtk_builder_get_widget(builder,"RepoSourceAddButton");
window->SignDefaultCheck = yon_gtk_builder_get_widget(builder,"SignDefaultCheck");
window->NeverRadio = yon_gtk_builder_get_widget(builder,"NeverRadio");
window->OptionalRadio = yon_gtk_builder_get_widget(builder,"OptionalRadio");
window->RequiredRadio = yon_gtk_builder_get_widget(builder,"RequiredRadio");
window->TrustedOnlyRadio = yon_gtk_builder_get_widget(builder,"TrustedOnlyRadio");
window->TrustAllRadio = yon_gtk_builder_get_widget(builder,"TrustAllRadio");
window->PackageNeverRadio = yon_gtk_builder_get_widget(builder,"PackageNeverRadio");
window->DatabaseNeverRadio = yon_gtk_builder_get_widget(builder,"DatabaseNeverRadio");
window->PackageOptionalRadio = yon_gtk_builder_get_widget(builder,"PackageOptionalRadio");
window->DatabaseOptionalRadio = yon_gtk_builder_get_widget(builder,"DatabaseOptionalRadio");
window->PackageRequiredRadio = yon_gtk_builder_get_widget(builder,"PackageRequiredRadio");
window->DatabaseRequiredRadio = yon_gtk_builder_get_widget(builder,"DatabaseRequiredRadio");
window->PackageTrustedOnlyRadio = yon_gtk_builder_get_widget(builder,"PackageTrustedOnlyRadio");
window->DatabaseTrustedOnlyRadio = yon_gtk_builder_get_widget(builder,"DatabaseTrustedOnlyRadio");
window->PackageTrustAllRadio = yon_gtk_builder_get_widget(builder,"PackageTrustAllRadio");
window->DatabaseTrustAllRadio = yon_gtk_builder_get_widget(builder,"DatabaseTrustAllRadio");
window->SignTree = yon_gtk_builder_get_widget(builder,"SignTree");
window->SignLevelCheckEntry = yon_gtk_builder_get_widget(builder,"SignLevelCheckEntry");
window->SignCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"SignCell"));
window->SignList = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
window->sections = NULL;
window->name=NULL;
@ -1499,11 +1590,13 @@ repo_add_window *yon_repo_add_window_new(){
g_signal_connect(G_OBJECT(window->UsageDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UsageEnableSearchCheck);
g_signal_connect(G_OBJECT(window->UsageDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UsageEnableUpdateCheck);
g_signal_connect(G_OBJECT(window->UsageDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UsageSysupgradeCheck);
yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->RepoNameEntry));
yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->RepoSourceEntry));
g_signal_connect(G_OBJECT(window->SignDefaultCheck),"toggled",G_CALLBACK(on_sign_check_toggled),window);
g_signal_connect(G_OBJECT(window->SignCell),"toggled",G_CALLBACK(on_sign_cell_toggled),window);
g_signal_connect(G_OBJECT(window->RepoSourceCombo),"changed",G_CALLBACK(on_repo_source_changed),window);
// g_signal_connect(G_OBJECT(window->SourceListBox),"size-allocate",G_CALLBACK(on_scrolled_window_size_allocate),window);
gtk_widget_show(window->Window);
gtk_label_set_text(GTK_LABEL(window->SignLevelLabel),SIGN_LEVEL_LABEL);
return window;
}
@ -1533,6 +1626,8 @@ web_publication_add_window *yon_web_publication_add_window_new(){
window->SelectionCellRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"SelectionCellRenderer"));
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->UserPasswordEntry));
yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->PathEntry));
yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->UsernameEntry));
window->name=NULL;
g_signal_connect(G_OBJECT(window->SelectionCellRenderer),"toggled",G_CALLBACK(on_cell_renderer_toggle_toggled),window->RepositoriesTree);
g_signal_connect(G_OBJECT(window->PathButton),"clicked",G_CALLBACK(on_file_chooser_open),window->PathEntry);
@ -1540,8 +1635,10 @@ web_publication_add_window *yon_web_publication_add_window_new(){
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->PasswordButton),"clicked",G_CALLBACK(on_password_open),window);
g_signal_connect(G_OBJECT(window->UsernameCheck),"toggled",G_CALLBACK(on_web_user_check),window);
g_signal_connect(G_OBJECT(window->PortCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->PortEntry);
g_signal_connect(G_OBJECT(window->UserPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->PasswordButton);
g_signal_connect(G_OBJECT(window->UserPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->UserPasswordEntry);
g_signal_connect(G_OBJECT(window->PortEntry),"insert-text",G_CALLBACK(yon_on_text_insert_only_digits),NULL);
gtk_widget_show(window->Window);
return window;
@ -1575,20 +1672,30 @@ mirror_configure_window *yon_mirror_configure_window_new(){
window->UpdatesRequestDelaySpin = yon_gtk_builder_get_widget(builder,"UpdatesRequestDelaySpin");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->PortDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->PortSpin);
g_signal_connect(G_OBJECT(window->CacheDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheEntry);
g_signal_connect(G_OBJECT(window->CacheDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheButton);
g_signal_connect(G_OBJECT(window->InactivityDurationDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->InactivityDurationSpin);
g_signal_connect(G_OBJECT(window->CacheTimeoutDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheTimeoutSpin);
g_signal_connect(G_OBJECT(window->ProxyCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->ProxyEntry);
g_signal_connect(G_OBJECT(window->AgentDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->AgentEntry);
g_signal_connect(G_OBJECT(window->UpdatesDelayDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UpdatesDelaySpin);
g_signal_connect(G_OBJECT(window->UpdatesRequestDelayDefaultCheck),"clicked",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UpdatesRequestDelaySpin);
g_signal_connect(G_OBJECT(window->PortDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->PortSpin);
g_signal_connect(G_OBJECT(window->CacheDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheEntry);
g_signal_connect(G_OBJECT(window->CacheDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheButton);
g_signal_connect(G_OBJECT(window->CacheButton),"clicked",G_CALLBACK(on_file_chooser_open),window->CacheEntry);
g_signal_connect(G_OBJECT(window->InactivityDurationDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->InactivityDurationSpin);
g_signal_connect(G_OBJECT(window->CacheTimeoutDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheTimeoutSpin);
g_signal_connect(G_OBJECT(window->ProxyCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->ProxyEntry);
g_signal_connect(G_OBJECT(window->AgentDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->AgentEntry);
g_signal_connect(G_OBJECT(window->UpdatesDelayDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UpdatesDelaySpin);
g_signal_connect(G_OBJECT(window->UpdatesRequestDelayDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UpdatesRequestDelaySpin);
gtk_widget_show(window->Window);
return window;
}
void on_mirror_type_changed(GtkComboBox *self, mirror_add_window *window){
int active = gtk_combo_box_get_active(self);
if (active == 2){
gtk_widget_set_sensitive(window->TypeButton,1);
} else {
gtk_widget_set_sensitive(window->TypeButton,0);
}
}
mirror_add_window *yon_mirror_add_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_add_path);
mirror_add_window *window = malloc(sizeof(mirror_add_window));
@ -1603,6 +1710,8 @@ mirror_add_window *yon_mirror_add_window_new(){
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->PathBox = yon_gtk_builder_get_widget(builder,"PathBox");
yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->NameEntry));
yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->TypeEntry));
window->sections = NULL;
window->name=NULL;
@ -1610,6 +1719,7 @@ mirror_add_window *yon_mirror_add_window_new(){
g_signal_connect(G_OBJECT(window->TypeButton),"clicked",G_CALLBACK(on_file_chooser_open),window->TypeEntry);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_mirror_path_add),window);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->TypeCombo),"changed",G_CALLBACK(on_mirror_type_changed),window);
gtk_widget_show(window->Window);
return window;
@ -1733,7 +1843,61 @@ void yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->UpdateIntervalDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->UpdateIntervalSpin);
g_signal_connect(G_OBJECT(widgets->UpdateIntervalDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->BootCheck);
GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->WebPublicationTree));
for (unsigned int i=0;i<g_list_length(list);i++){
g_signal_connect_after(G_OBJECT(g_list_nth_data(list,i)),"notify::width",G_CALLBACK(on_column_resize),widgets);
yon_window_config_add_listener(g_list_nth_data(list,i),yon_char_append("UserUnitsColumn",yon_char_from_int(i)),"fixed-width",YON_TYPE_INT);
}
}
GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->MirrorTree));
for (guint i=0;i<g_list_length(list);i++){
yon_window_config_add_listener((GtkWidget*)g_list_nth_data(list,i),yon_char_append("MirrorColumn",yon_char_from_int(i)),"fixed-width",YON_TYPE_INT);
}
g_list_free(list);
list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->PublicationTree));
for (guint i=0;i<g_list_length(list);i++){
yon_window_config_add_listener((GtkWidget*)g_list_nth_data(list,i),yon_char_append("PublishColumn",yon_char_from_int(i)),"fixed-width",YON_TYPE_INT);
}
g_list_free(list);
list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->WebPublicationTree));
for (guint i=0;i<g_list_length(list);i++){
yon_window_config_add_listener((GtkWidget*)g_list_nth_data(list,i),yon_char_append("WebColumn",yon_char_from_int(i)),"fixed-width",YON_TYPE_INT);
}
g_list_free(list);
list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->RepositoriesTree));
for (guint i=0;i<g_list_length(list);i++){
yon_window_config_add_listener((GtkWidget*)g_list_nth_data(list,i),yon_char_append("RepoColumn",yon_char_from_int(i)),"fixed-width",YON_TYPE_INT);
}
g_list_free(list);
yon_load_proceed(YON_CONFIG_LOCAL);
list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->UpdateRepoTree));
for (guint i=0;i<g_list_length(list);i++){
yon_window_config_add_listener((GtkWidget*)g_list_nth_data(list,i),yon_char_append("UpdateColumn",yon_char_from_int(i)),"fixed-width",YON_TYPE_INT);
}
g_list_free(list);
{
int size;
config_str parsed = yon_config_load(yon_config_parameter_prepare_command(AUTOUPDATE_mode_command,"default",NULL,NULL),&size);
if (size){
yon_char_remove_last_symbol(parsed[0],'\n');
free(yon_char_divide_search(parsed[0],"=",-1));
char *mode = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->UpdateModeCombo));
if (!strcmp(parsed[0],"modsys")){
mode = yon_char_unite(mode," (",MODSYS_UPDATE_MODE_LABEL,")",NULL);
} else if (!strcmp(parsed[0],"modules")){
mode = yon_char_unite(mode," (",MODULES_UPDATE_MODE_LABEL,")",NULL);
} else if (!strcmp(parsed[0],"system")){
mode = yon_char_unite(mode," (",SYSTEM_UPDATE_MODE_LABEL,")",NULL);
}
gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(widgets->UpdateModeCombo),0);
gtk_combo_box_text_prepend_text(GTK_COMBO_BOX_TEXT(widgets->UpdateModeCombo),mode);
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UpdateModeCombo),0);
}
}
yon_interface_update(widgets);
g_signal_connect(G_OBJECT(widgets->BootCheck),"toggled",G_CALLBACK(on_toggle_button_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->UpdateIntervalSpin),"changed",G_CALLBACK(on_toggle_button_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->UpdateIntervalCombo),"changed",G_CALLBACK(on_toggle_button_toggled),widgets);
@ -1747,12 +1911,6 @@ void yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->RecieveDBFromNetCheck),"toggled",G_CALLBACK(on_toggle_button_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->MirrorPublicCheck),"toggled",G_CALLBACK(on_toggle_button_toggled),widgets);
GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->WebPublicationTree));
for (unsigned int i=0;i<g_list_length(list);i++){
g_signal_connect_after(G_OBJECT(g_list_nth_data(list,i)),"notify::width",G_CALLBACK(on_column_resize),widgets);
yon_window_config_add_listener(g_list_nth_data(list,i),yon_char_append("UserUnitsColumn",yon_char_from_int(i)),"fixed-width",YON_TYPE_INT);
}
}
{
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->MirrorTree));
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UpdateRepoTree));
@ -1761,8 +1919,6 @@ void yon_main_window_complete(main_window *widgets){
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->WebPublicationTree));
}
yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size);
yon_load_proceed(YON_CONFIG_LOCAL);
yon_interface_update(widgets);
yon_save_window_set_postsave_function(on_save_done,widgets);
}

@ -41,11 +41,14 @@
#define LocaleName "ubl-settings-update"
#define icon_path "com.ublinux.ubl-settings-update"
#define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get update REPOPUBLIC_NET REPOPUBLIC_WEB REPOSITORY[*] REPOPUBLIC_WEB REPOPUBLIC_WEB[*] REPOPUBLIC_CACHE REPOPUBLIC_CACHE[*] AUTOUPDATE AUTOUPDATE[mode] AUTOUPDATE[interval] AUTOUPDATE[repos] AUTOUPDATE[timestamp]",NULL)
#define config_get_local_command "ubconfig --source system get update REPOPUBLIC_NET REPOPUBLIC_WEB REPOSITORY[*] REPOPUBLIC_WEB REPOPUBLIC_WEB[*] REPOPUBLIC_CACHE REPOPUBLIC_CACHE[*] AUTOUPDATE AUTOUPDATE[mode] AUTOUPDATE[interval] AUTOUPDATE[repos] AUTOUPDATE[timestamp]"
#define config_get_global_command "ubconfig --source global get update REPOPUBLIC_NET REPOPUBLIC_WEB REPOSITORY[*] REPOPUBLIC_WEB REPOPUBLIC_WEB[*] REPOPUBLIC_CACHE REPOPUBLIC_CACHE[*] AUTOUPDATE AUTOUPDATE[mode] AUTOUPDATE[interval] AUTOUPDATE[repos] AUTOUPDATE[timestamp]"
#define config_get_default_command "ubconfig --source global get update AUTOUPDATE[repos]"
#define config_get_command_no_repos(config,target) yon_char_unite("ubconfig --source ",config," get update ",target,NULL)
#define sha256_encrypt_command(target) yon_char_unite("echo -n \"",target,"\" | sha256sum | cut -f 1 -d ' '",NULL)
#define sha512_encrypt_command(target) yon_char_unite("echo -n \"",target,"\" | sha512sum | cut -f 1 -d ' '",NULL)
#define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get [update] REPOPUBLIC_NET REPOPUBLIC_WEB REPOSITORY REPOSITORY[*] REPOPUBLIC_WEB REPOPUBLIC_WEB[*] REPOPUBLIC_CACHE REPOPUBLIC_CACHE[*] AUTOUPDATE AUTOUPDATE[mode] AUTOUPDATE[interval] AUTOUPDATE[repos] AUTOUPDATE[timestamp]",NULL)
#define config_get_local_command "ubconfig --source system get [update] REPOPUBLIC_NET REPOPUBLIC_WEB REPOSITORY REPOSITORY[*] REPOPUBLIC_WEB REPOPUBLIC_WEB[*] REPOPUBLIC_CACHE REPOPUBLIC_CACHE[*] AUTOUPDATE AUTOUPDATE[mode] AUTOUPDATE[interval] AUTOUPDATE[repos] AUTOUPDATE[timestamp]",NULL
#define config_get_global_command "ubconfig --source global get [update] REPOPUBLIC_NET REPOPUBLIC_WEB REPOSITORY REPOSITORY[*] REPOPUBLIC_WEB REPOPUBLIC_WEB[*] REPOPUBLIC_CACHE REPOPUBLIC_CACHE[*] AUTOUPDATE AUTOUPDATE[mode] AUTOUPDATE[interval] AUTOUPDATE[repos] AUTOUPDATE[timestamp]",NULL
#define config_get_default_command "ubconfig --source default get [update] AUTOUPDATE[repos] AUTOUPDATE[interval] AUTOUPDATE[mode] AUTOUPDATE REPOSITORY REPOSITORY[*]",NULL
#define config_get_command_no_repos(config,target) yon_char_unite("ubconfig --source ",config," get update",target,NULL)
#define config_get_global_only_parameters ""
#define config_get_local_only_parameters ""
@ -69,6 +72,16 @@
#define REPOPUBLIC_CACHE_search "REPOPUBLIC_CACHE["
#define REPOPUBLIC_CACHE_full(target) yon_char_unite("REPOPUBLIC_CACHE[",target,"]",NULL)
#define REPOPUBLIC_CACHE_full_command(target) yon_char_unite("ubconfig --source global get [update] REPOPUBLIC_CACHE[",target,"]",NULL)
#define REPOPUBLIC_CACHE_port "REPOPUBLIC_CACHE[port]"
#define REPOPUBLIC_CACHE_cache_dir "REPOPUBLIC_CACHE[cache_dir]"
#define REPOPUBLIC_CACHE_purge_files_after "REPOPUBLIC_CACHE[purge_files_after]"
#define REPOPUBLIC_CACHE_download_timeout "REPOPUBLIC_CACHE[download_timeout]"
#define REPOPUBLIC_CACHE_http_proxy "REPOPUBLIC_CACHE[http_proxy]"
#define REPOPUBLIC_CACHE_user_agent "REPOPUBLIC_CACHE[user_agent]"
#define REPOPUBLIC_CACHE_cron "REPOPUBLIC_CACHE[prefetch.cron]"
#define REPOPUBLIC_CACHE_ttl_unaccessed_in_days "REPOPUBLIC_CACHE[prefetch.ttl_unaccessed_in_days]"
#define REPOPUBLIC_CACHE_ttl_unupdated_in_days "REPOPUBLIC_CACHE[prefetch.ttl_unupdated_in_days]"
#define AUTOUPDATE "AUTOUPDATE"
#define AUTOUPDATE_command "ubconfig --source global get [update] AUTOUPDATE"
#define AUTOUPDATE_mode "AUTOUPDATE[mode]"
@ -80,6 +93,9 @@
#define AUTOUPDATE_timestamp "AUTOUPDATE[timestamp]"
#define AUTOUPDATE_timestamp_command "ubconfig --source global get [update] AUTOUPDATE[timestamp]"
extern template_app_info template_app_information;
typedef char* string;
string version_application;
@ -169,21 +185,11 @@ typedef struct {
GtkWidget *SignLevelLabel;
GtkWidget *SignDefaultCheck;
GtkWidget *NeverRadio;
GtkWidget *OptionalRadio;
GtkWidget *RequiredRadio;
GtkWidget *TrustedOnlyRadio;
GtkWidget *TrustAllRadio;
GtkWidget *PackageNeverRadio;
GtkWidget *DatabaseNeverRadio;
GtkWidget *PackageOptionalRadio;
GtkWidget *DatabaseOptionalRadio;
GtkWidget *PackageRequiredRadio;
GtkWidget *DatabaseRequiredRadio;
GtkWidget *PackageTrustedOnlyRadio;
GtkWidget *DatabaseTrustedOnlyRadio;
GtkWidget *PackageTrustAllRadio;
GtkWidget *DatabaseTrustAllRadio;
GtkWidget *SignTree;
GtkWidget *SignLevelCheckEntry;
GtkCellRenderer *SignCell;
GtkListStore *SignList;
char *name;
} repo_add_window;
@ -328,8 +334,14 @@ void on_password_open(GtkWidget *, web_publication_add_window *window);
void on_scrolled_window_size_allocate(GtkWidget *, GdkRectangle *allocation, repo_add_window *window);
void on_sign_cell_toggled(GtkWidget *, char *path, repo_add_window *window);
void on_sign_check_toggled(GtkToggleButton *self, repo_add_window *window);
void on_password_encryption_changed(GtkComboBox *self, password_window *dialog);
void on_mirror_type_changed(GtkComboBox *self, mirror_add_window *window);
void on_repo_source_changed(GtkComboBox *self, repo_add_window *window);
password_window *yon_password_window_new();
repo_add_window *yon_repo_add_window_new();
web_publication_add_window *yon_web_publication_add_window_new();

@ -13,7 +13,14 @@
#define ADD_WEB_LABEL _("Add repository for publication")
#define EDIT_WEB_LABEL _("Edit repository for publication")
#define PASSWORD_MISMATCH_LABEL _("passwords do not match")
#define PASSWORD_MISMATCH_LABEL _("Passwords do not match")
#define PASSWORD_RESTRICTED_SYMBOL_LABEL _("Password contains restricted symbols")
#define ENTRY_RESTRICTED_SYMBOL_LABEL _("Entry contains restricted symbols")
#define MODSYS_UPDATE_MODE_LABEL _("First update all modules and then the system")
#define MODULES_UPDATE_MODE_LABEL _("Update only modules")
#define SYSTEM_UPDATE_MODE_LABEL _("Update everything in the order of the specified repositories")
#define REPO_TOOLTIP_LABEL _("file://\t\t- Directory URL prefix for repository\n\
ftp://\t\t- FTP URL prefix for repository\n\
@ -23,22 +30,16 @@ Configuration - configuration path")
#define MIRROR_TOOLTIP_LABEL _("url - web-link for repository. It is allowed to write multiple, separating with comma (,)\n\
http_proxy - proxy-server for repository, replaces 'http_proxy'. Single parameter per repository\n\
mirrorlist - mirrors file, make sure server URL is NOT included in this file! Single parameter per repository")
#define SIGN_LEVEL_LABEL _("• Never - Signature verification will not be performed\n\
Optional - Signatures will be verified if present, but unsigned databases and packages will also be accepted\n\
Required - Signatures will be required for all packages and databases\n\
TrustedOnly - If signature is verified for packages and database, it must be in the keyring and fully trusted; marginal trust not applicable\n\
TrustAll - If signature is verified, it must be in keyring, but does not need to have a trust level assigned (e.g. unknown or marginal trust)\n\
PackageNever - Packages only\n\
DatabaseNever - Database only\n\
PackageOptional - Packages only\n\
DatabaseOptional - Database only\n\
PackageRequired - Packages only\n\
DatabaseRequired - Database only\n\
PackageTrustedOnly - If signature is verified only for packages\n\
DatabaseTrustedOnly - If signature is verified only for database\n\
PackageTrustAll - If signature is verified only for packages\n\
DatabaseTrustAll - If signature is verified only for database\n")
/*
#define _LABEL _("Signature verification will not be performed")
#define _LABEL _("Signatures will be verified if present, but unsigned databases and packages will also be accepted")
#define _LABEL _("Signatures will be required for all packages and databases")
#define _LABEL _("If signature is verified for packages and database, it must be in the keyring and fully trusted; marginal trust not applicable")
#define _LABEL _("If signature is verified, it must be in keyring, but does not need to have a trust level assigned (e.g. unknown or marginal trust)")
#define _LABEL _("Packages only")
#define _LABEL _("Database only")
#define _LABEL _("If signature is verified only for packages")
#define _LABEL _("If signature is verified only for database")
#define _LABEL _("every")
#define _LABEL _("Resource link of file path")
#define _LABEL _("Open file explorer")
@ -48,6 +49,7 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si
#define _LABEL _("Storage path to publish")
#define _LABEL _("The full URL of where to find the database, packages, and signatures (if available) for this repository. Multiple can be specified, separated by commas (,)")
#define _LABEL _("Update")
#define _LABEL _("System update")
#define _LABEL _("Repositories")
#define _LABEL _("Publication")
#define _LABEL _("WEB-publication")
@ -55,9 +57,6 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si
#define _LABEL _("Date of last automatic update:")
#define _LABEL _("Date of last automatic update")
#define _LABEL _("Automatic update")
#define _LABEL _("First update all modules and then the system")
#define _LABEL _("Update only modules")
#define _LABEL _("Update everything in the order of the specified repositories")
#define _LABEL _("Update mode:")
#define _LABEL _("Update interval:")
@ -152,12 +151,16 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si
#define _LABEL _("Days")
#define _LABEL _("Months")
#define _LABEL _("Sign level")
#define _LABEL _("Description")
#define _LABEL _("Password input")
#define _LABEL _("Password:")
#define _LABEL _("Repeat password:")
#define _LABEL _("Entryption:")
#define _LABEL _("Do not encrypt password")
#define _LABEL _("Password hash:")
#define _LABEL _("Default (None)")
#define _LABEL _("Encryption:")
#define _LABEL _("Encryption")
*/
#endif

@ -17,7 +17,9 @@
<property name="width-request">500</property>
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-repomanager</property>
<property name="default-width">800</property>
<property name="default-height">600</property>
<property name="icon-name">com.ublinux.ubl-settings-update</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -40,6 +42,7 @@
</child>
<child>
<object class="GtkBox">
<property name="width-request">800</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
@ -171,6 +174,7 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si
<property name="width-request">28</property>
<property name="height-request">28</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Open file explorer</property>
@ -236,6 +240,7 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<placeholder/>
</child>
@ -251,6 +256,7 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<placeholder/>
</child>
@ -324,7 +330,7 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.ubl-settings-repomanager</property>
<property name="icon-name">com.ublinux.ubl-settings-update</property>
</object>
</child>
<child>

@ -35,10 +35,12 @@
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.zoom-symbolic</property>
</object>
<object class="GtkApplicationWindow" id="MainWindow">
<property name="width-request">500</property>
<property name="width-request">800</property>
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-repomanager</property>
<property name="default-width">800</property>
<property name="default-height">600</property>
<property name="icon-name">com.ublinux.ubl-settings-update</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -110,7 +112,7 @@
<property name="adjustment">adjustment1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
@ -235,7 +237,7 @@
<property name="adjustment">adjustment2</property>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
@ -288,7 +290,7 @@
<property name="adjustment">adjustment3</property>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
@ -467,7 +469,7 @@
<property name="adjustment">adjustment4</property>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
@ -520,7 +522,7 @@
<property name="adjustment">adjustment5</property>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
@ -560,7 +562,7 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.ubl-settings-repomanager</property>
<property name="icon-name">com.ublinux.ubl-settings-update</property>
</object>
</child>
<child>

@ -27,8 +27,7 @@
<property name="tooltip-text" translatable="yes">Remove</property>
<property name="image">image2</property>
<style>
<class name="noborder"/>
<class name="nobg_active"/>
<class name="thin"/>
</style>
</object>
<packing>
@ -81,8 +80,7 @@
<property name="tooltip-text" translatable="yes">Edit</property>
<property name="image">image1</property>
<style>
<class name="noborder"/>
<class name="nobg_active"/>
<class name="thin"/>
</style>
</object>
<packing>

@ -18,7 +18,7 @@
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="default-width">450</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups</property>
<property name="icon-name">com.ublinux.ubl-settings-update</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -173,7 +173,7 @@
<property name="tooltip-text" translatable="yes">Encryption</property>
<property name="active">0</property>
<items>
<item id="sha512" translatable="yes">Default</item>
<item translatable="yes">Default (None)</item>
<item id="sha256" translatable="yes">SHA-512</item>
<item id="sha512" translatable="yes">SHA-256</item>
</items>
@ -212,6 +212,7 @@
<object class="GtkCheckButton" id="NoEncriptionCheck">
<property name="label" translatable="yes">Do not encrypt password</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>

@ -13,12 +13,99 @@
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.increase-symbolic</property>
</object>
<object class="GtkListStore" id="liststore1">
<columns>
<!-- column-name Active -->
<column type="gboolean"/>
<!-- column-name Sign -->
<column type="gchararray"/>
<!-- column-name Desc -->
<column type="gchararray"/>
</columns>
<data>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">Never</col>
<col id="2" translatable="yes">Signature verification will not be performed</col>
</row>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">Optional</col>
<col id="2" translatable="yes">Signatures will be verified if present, but unsigned databases and packages will also be accepted</col>
</row>
<row>
<col id="0">True</col>
<col id="1" translatable="yes">Required</col>
<col id="2" translatable="yes">Signatures will be required for all packages and databases</col>
</row>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">TrustedOnly</col>
<col id="2" translatable="yes">If signature is verified for packages and database, it must be in the keyring and fully trusted; marginal trust not applicable</col>
</row>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">TrustAll</col>
<col id="2" translatable="yes">If signature is verified, it must be in keyring, but does not need to have a trust level assigned (e.g. unknown or marginal trust)</col>
</row>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">PackageNever</col>
<col id="2" translatable="yes">Packages only</col>
</row>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">DatabaseNever</col>
<col id="2" translatable="yes">Database only</col>
</row>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">PackageOptional</col>
<col id="2" translatable="yes">Packages only</col>
</row>
<row>
<col id="0">True</col>
<col id="1" translatable="yes">DatabaseOptional</col>
<col id="2" translatable="yes">Database only</col>
</row>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">PackageRequired</col>
<col id="2" translatable="yes">Packages only</col>
</row>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">DatabaseRequired</col>
<col id="2" translatable="yes">Database only</col>
</row>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">PackageTrustedOnly</col>
<col id="2" translatable="yes">If signature is verified only for packages</col>
</row>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">DatabaseTrustedOnly</col>
<col id="2" translatable="yes">If signature is verified only for database</col>
</row>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">PackageTrustAll</col>
<col id="2" translatable="yes">If signature is verified only for packages</col>
</row>
<row>
<col id="0">False</col>
<col id="1" translatable="yes">DatabaseTrustAll</col>
<col id="2" translatable="yes">If signature is verified only for database</col>
</row>
</data>
</object>
<object class="GtkApplicationWindow" id="MainWindow">
<property name="width-request">500</property>
<property name="height-request">300</property>
<property name="width-request">800</property>
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-repomanager</property>
<property name="default-height">600</property>
<property name="icon-name">com.ublinux.ubl-settings-update</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -77,7 +164,6 @@
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">3</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
@ -121,10 +207,6 @@
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="top-padding">5</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -135,7 +217,6 @@
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">3</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label1">
@ -232,7 +313,6 @@ Configuration - configuration path</property>
</child>
<child>
<object class="GtkBox" id="SourceListBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
@ -304,559 +384,119 @@ Configuration - configuration path</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<object class="GtkCheckButton" id="SignDefaultCheck">
<property name="label" translatable="yes">Default</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-start">3</property>
<property name="margin-end">3</property>
<property name="shadow-type">in</property>
<property name="min-content-height">200</property>
<child>
<object class="GtkCheckButton" id="SignDefaultCheck">
<property name="label" translatable="yes">Default</property>
<object class="GtkTreeView" id="SignTree">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkRadioButton" id="NeverRadio">
<property name="label" translatable="yes">Never</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">Signature verification will not be performed</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">RequiredRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="PackageNeverRadio">
<property name="label" translatable="yes">PackageNever</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">For packages only</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">DatabaseOptionalRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkRadioButton" id="OptionalRadio">
<property name="label" translatable="yes">Optional</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">Signatures will be checked if present, but unsigned databases and packages will also be accepted</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">RequiredRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
<property name="model">liststore1</property>
<property name="search-column">0</property>
<property name="enable-grid-lines">both</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkRadioButton" id="DatabaseNeverRadio">
<property name="label" translatable="yes">DatabaseNever</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">For database only</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">DatabaseOptionalRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkRadioButton" id="RequiredRadio">
<property name="label" translatable="yes">Required</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">Signatures will be required for all packages and databases</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="PackageOptionalRadio">
<property name="label" translatable="yes">PackageOptional</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">For packages only</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">DatabaseOptionalRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkRadioButton" id="TrustedOnlyRadio">
<property name="label" translatable="yes">TrustedOnly</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">Signatures will be required for all packages and databases</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">RequiredRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="DatabaseOptionalRadio">
<property name="label" translatable="yes">DatabaseOptional</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">For database only</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkRadioButton" id="TrustAllRadio">
<property name="label" translatable="yes">TrustAll</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">If the signature is verified for packages and the database, it must be in the keyring and be fully trusted</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">RequiredRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="PackageRequiredRadio">
<property name="label" translatable="yes">PackageRequired</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">For packages only</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">DatabaseOptionalRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="box2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<object class="GtkTreeViewColumn">
<child>
<placeholder/>
<object class="GtkCellRendererToggle" id="SignCell"/>
<attributes>
<attribute name="active">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="DatabaseRequiredRadio">
<property name="label" translatable="yes">DatabaseRequired</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">For database only</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">DatabaseOptionalRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="box3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Sign level</property>
<child>
<placeholder/>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="markup">1</attribute>
</attributes>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="PackageTrustedOnlyRadio">
<property name="label" translatable="yes">PackageTrustedOnly</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">For packages only</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">DatabaseOptionalRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">7</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="box4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Description</property>
<child>
<placeholder/>
<object class="GtkCellRendererText">
<property name="wrap-width">350</property>
</object>
<attributes>
<attribute name="markup">2</attribute>
</attributes>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="DatabaseTrustedOnlyRadio">
<property name="label" translatable="yes">DatabaseTrustedOnly</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">For database only</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">DatabaseOptionalRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">8</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="box5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="PackageTrustAllRadio">
<property name="label" translatable="yes">PackageTrustAll</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">If the signature is verified only for packets</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">DatabaseOptionalRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<property name="label" translatable="yes">Sign level:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">9</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<object class="GtkEntry" id="SignLevelCheckEntry">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="box6">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="DatabaseTrustAllRadio">
<property name="label" translatable="yes">DatabaseTrustAll</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="tooltip-text" translatable="yes">If the signature is verified only for the database</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<property name="group">DatabaseOptionalRadio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<property name="text" translatable="yes">Required,DatabaseOptional</property>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">10</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="top-padding">5</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hscrollbar-policy">never</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="SignLevelLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="label" translatable="yes">- Never - Signature verification will not be performed. Primary
\t- PackageNever - Packages only. Secondary
\t- DatabaseNever - Database only. Secondary
- Optional - Signatures will be verified if present, but unsigned databases and packages will also be accepted. Primary
\t- PackageOptional - Packages only. Secondary
\t- DatabaseOptional - Database only.
- Required - Signatures will be required for all packages and databases. Primary
\t- PackageRequired - Packages only. Secondary
\t- DatabaseRequired - Database only. Secondary
- TrustedOnly - If signature is verified for packages and database, it must be in the keyring and fully trusted; marginal trust not applicable
\t- PackageTrustedOnly - If signature is verified only for packages
\t- DatabaseTrustedOnly - If signature is verified only for database
- TrustAll - If signature is verified, it must be in keyring, but does not need to have a trust level assigned (e.g. unknown or marginal trust)
\t- PackageTrustAll - If signature is verified only for packages
\t- DatabaseTrustAll - If signature is verified only for database</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<attributes>
<attribute name="size" value="8192"/>
</attributes>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
</object>
@ -872,7 +512,7 @@ Configuration - configuration path</property>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
@ -901,6 +541,7 @@ Configuration - configuration path</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
<child>
<object class="GtkLabel">
@ -920,6 +561,7 @@ Configuration - configuration path</property>
<child>
<object class="GtkCheckButton" id="UsageEnableUpdateCheck">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
@ -942,6 +584,7 @@ Configuration - configuration path</property>
<child>
<object class="GtkCheckButton" id="UsageEnableSearchCheck">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
@ -964,6 +607,7 @@ Configuration - configuration path</property>
<child>
<object class="GtkCheckButton" id="UsageEnableInsallCheck">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
@ -989,6 +633,7 @@ Configuration - configuration path</property>
<child>
<object class="GtkCheckButton" id="UsageSysupgradeCheck">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
@ -1024,7 +669,7 @@ Configuration - configuration path</property>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
@ -1061,7 +706,7 @@ Configuration - configuration path</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.ubl-settings-repomanager</property>
<property name="icon-name">com.ublinux.ubl-settings-update</property>
</object>
</child>
<child>
@ -1096,18 +741,4 @@ Configuration - configuration path</property>
<widget name="box1"/>
</widgets>
</object>
<object class="GtkSizeGroup">
<widgets>
<widget name="NeverRadio"/>
<widget name="OptionalRadio"/>
<widget name="RequiredRadio"/>
<widget name="TrustedOnlyRadio"/>
<widget name="TrustAllRadio"/>
<widget name="box2"/>
<widget name="box3"/>
<widget name="box4"/>
<widget name="box5"/>
<widget name="box6"/>
</widgets>
</object>
</interface>

@ -27,8 +27,7 @@
<property name="tooltip-text" translatable="yes">Remove</property>
<property name="image">image2</property>
<style>
<class name="noborder"/>
<class name="nobg_active"/>
<class name="thin"/>
</style>
</object>
<packing>
@ -83,8 +82,7 @@
<property name="tooltip-text" translatable="yes">Edit</property>
<property name="image">image1</property>
<style>
<class name="noborder"/>
<class name="nobg_active"/>
<class name="thin"/>
</style>
</object>
<packing>

@ -3,6 +3,11 @@
<interface domain="ubl-settings-update">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-update.css -->
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">65535</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -22,10 +27,12 @@
</columns>
</object>
<object class="GtkApplicationWindow" id="MainWindow">
<property name="width-request">500</property>
<property name="width-request">800</property>
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-repomanager</property>
<property name="default-width">800</property>
<property name="default-height">600</property>
<property name="icon-name">com.ublinux.ubl-settings-update</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -62,6 +69,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="margin-end">3</property>
<property name="draw-indicator">True</property>
</object>
<packing>
@ -74,7 +82,6 @@
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">3</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
@ -130,7 +137,6 @@
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-start">3</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkTreeView" id="RepositoriesTree">
@ -177,7 +183,6 @@
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">3</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
@ -208,14 +213,15 @@
</packing>
</child>
<child>
<object class="GtkEntry" id="PortEntry">
<object class="GtkSpinButton" id="PortEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="tooltip-text" translatable="yes">Port</property>
<property name="placeholder-text" translatable="yes">8080</property>
<property name="adjustment">adjustment1</property>
<property name="value">8080</property>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
@ -374,7 +380,7 @@
<object class="GtkEntry" id="UserPasswordEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="can-focus">False</property>
<property name="tooltip-text" translatable="yes">User password</property>
<property name="visibility">False</property>
<property name="invisible-char">*</property>
@ -459,7 +465,7 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.ubl-settings-repomanager</property>
<property name="icon-name">com.ublinux.ubl-settings-update</property>
</object>
</child>
<child>

@ -83,6 +83,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<column type="gchararray"/>
<!-- column-name PasswordHash -->
<column type="gchararray"/>
<!-- column-name FullName -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkSizeGroup"/>
@ -608,6 +610,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="RepositoriesMoveUpButton">
<property name="width-request">26</property>
@ -641,7 +654,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
<child>
@ -676,7 +689,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
@ -695,7 +719,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
<property name="position">5</property>
</packing>
</child>
<child>
@ -715,7 +739,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
<property name="position">6</property>
</packing>
</child>
<child>
@ -735,7 +759,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
<property name="position">7</property>
</packing>
</child>
</object>
@ -1115,6 +1139,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="WebPublicationAddButton">
<property name="width-request">26</property>
@ -1131,7 +1166,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
<child>
@ -1151,7 +1186,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">3</property>
</packing>
</child>
<child>
@ -1171,7 +1206,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
<property name="position">4</property>
</packing>
</child>
</object>
@ -1438,6 +1473,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="MirrorAddButton">
<property name="width-request">26</property>
@ -1454,7 +1500,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
<child>
@ -1474,7 +1520,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">3</property>
</packing>
</child>
<child>
@ -1494,7 +1540,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
@ -1513,7 +1570,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
<property name="position">6</property>
</packing>
</child>
</object>

@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: source/ubl-strings.h:4
#: source/ubl-strings.h:4 source/ubl-strings.h:45
msgid "System update"
msgstr ""
@ -58,7 +58,15 @@ msgid "Edit repository for publication"
msgstr ""
#: source/ubl-strings.h:16
msgid "passwords do not match"
msgid "Passwords do not match"
msgstr ""
#: source/ubl-strings.h:17
msgid "Password contains restricted symbols"
msgstr ""
#: source/ubl-strings.h:17
msgid "Entry contains restricted symbols"
msgstr ""
#: source/ubl-strings.h:18
@ -80,477 +88,513 @@ msgid ""
"file! Single parameter per repository"
msgstr ""
#: source/ubl-strings.h:26
#: source/ubl-strings.h:27
msgid "Signature verification will not be performed"
msgstr ""
#: source/ubl-strings.h:28
msgid ""
"• Never - Signature verification will not be performed\n"
"• Optional - Signatures will be verified if present, but unsigned databases "
"and packages will also be accepted\n"
"• Required - Signatures will be required for all packages and databases\n"
"• TrustedOnly - If signature is verified for packages and database, it must "
"be in the keyring and fully trusted; marginal trust not applicable\n"
"• TrustAll - If signature is verified, it must be in keyring, but does not "
"need to have a trust level assigned (e.g. unknown or marginal trust)\n"
"• PackageNever - Packages only\n"
"• DatabaseNever - Database only\n"
"• PackageOptional - Packages only\n"
"• DatabaseOptional - Database only\n"
"• PackageRequired - Packages only\n"
"• DatabaseRequired - Database only\n"
"• PackageTrustedOnly - If signature is verified only for packages\n"
"• DatabaseTrustedOnly - If signature is verified only for database\n"
"• PackageTrustAll - If signature is verified only for packages\n"
"• DatabaseTrustAll - If signature is verified only for database\n"
"Signatures will be verified if present, but unsigned databases and packages "
"will also be accepted"
msgstr ""
#: source/ubl-strings.h:42
#: source/ubl-strings.h:29
msgid "Signatures will be required for all packages and databases"
msgstr ""
#: source/ubl-strings.h:30
msgid ""
"If signature is verified for packages and database, it must be in the "
"keyring and fully trusted; marginal trust not applicable"
msgstr ""
#: source/ubl-strings.h:31
msgid ""
"If signature is verified, it must be in keyring, but does not need to have a "
"trust level assigned (e.g. unknown or marginal trust)"
msgstr ""
#: source/ubl-strings.h:32
msgid "Packages only"
msgstr ""
#: source/ubl-strings.h:33
msgid "Database only"
msgstr ""
#: source/ubl-strings.h:34
msgid "If signature is verified only for packages"
msgstr ""
#: source/ubl-strings.h:35
msgid "If signature is verified only for database"
msgstr ""
#: source/ubl-strings.h:36
msgid "every"
msgstr ""
#: source/ubl-strings.h:43
#: source/ubl-strings.h:37
msgid "Resource link of file path"
msgstr ""
#: source/ubl-strings.h:44
#: source/ubl-strings.h:38
msgid "Open file explorer"
msgstr ""
#: source/ubl-strings.h:45
#: source/ubl-strings.h:39
msgid "Add source"
msgstr ""
#: source/ubl-strings.h:46
#: source/ubl-strings.h:40
msgid "Username"
msgstr ""
#: source/ubl-strings.h:47
#: source/ubl-strings.h:41
msgid "User password"
msgstr ""
#: source/ubl-strings.h:48
#: source/ubl-strings.h:42
msgid "Storage path to publish"
msgstr ""
#: source/ubl-strings.h:49
#: source/ubl-strings.h:43
msgid ""
"The full URL of where to find the database, packages, and signatures (if "
"available) for this repository. Multiple can be specified, separated by "
"commas (,)"
msgstr ""
#: source/ubl-strings.h:50 source/ubl-strings.h:80
#: source/ubl-strings.h:44 source/ubl-strings.h:75
msgid "Update"
msgstr ""
#: source/ubl-strings.h:51
#: source/ubl-strings.h:46
msgid "Repositories"
msgstr ""
#: source/ubl-strings.h:52
#: source/ubl-strings.h:47
msgid "Publication"
msgstr ""
#: source/ubl-strings.h:53
#: source/ubl-strings.h:48
msgid "WEB-publication"
msgstr ""
#: source/ubl-strings.h:54
#: source/ubl-strings.h:49
msgid "Mirror publication"
msgstr ""
#: source/ubl-strings.h:55
#: source/ubl-strings.h:50
msgid "Date of last automatic update:"
msgstr ""
#: source/ubl-strings.h:56
#: source/ubl-strings.h:51
msgid "Date of last automatic update"
msgstr ""
#: source/ubl-strings.h:57
#: source/ubl-strings.h:52
msgid "Automatic update"
msgstr ""
#: source/ubl-strings.h:58
#: source/ubl-strings.h:53
msgid "First update all modules and then the system"
msgstr ""
#: source/ubl-strings.h:59
#: source/ubl-strings.h:54
msgid "Update only modules"
msgstr ""
#: source/ubl-strings.h:60
#: source/ubl-strings.h:55
msgid "Update everything in the order of the specified repositories"
msgstr ""
#: source/ubl-strings.h:61
#: source/ubl-strings.h:56
msgid "Update mode:"
msgstr ""
#: source/ubl-strings.h:62
#: source/ubl-strings.h:57
msgid "Update interval:"
msgstr ""
#: source/ubl-strings.h:64
#: source/ubl-strings.h:59
msgid "Update mode"
msgstr ""
#: source/ubl-strings.h:65
#: source/ubl-strings.h:60
msgid "Update interval"
msgstr ""
#: source/ubl-strings.h:66
#: source/ubl-strings.h:61
msgid "Boot"
msgstr ""
#: source/ubl-strings.h:67 source/ubl-strings.h:150
#: source/ubl-strings.h:62 source/ubl-strings.h:145
msgid "Minutes"
msgstr ""
#: source/ubl-strings.h:68 source/ubl-strings.h:151
#: source/ubl-strings.h:63 source/ubl-strings.h:146
msgid "Hours"
msgstr ""
#: source/ubl-strings.h:69 source/ubl-strings.h:152
#: source/ubl-strings.h:64 source/ubl-strings.h:147
msgid "Days"
msgstr ""
#: source/ubl-strings.h:70 source/ubl-strings.h:153
#: source/ubl-strings.h:65 source/ubl-strings.h:148
msgid "Months"
msgstr ""
#: source/ubl-strings.h:71
#: source/ubl-strings.h:66
msgid "Repositories from which the update will occur"
msgstr ""
#: source/ubl-strings.h:72 source/ubl-strings.h:95
#: source/ubl-strings.h:67 source/ubl-strings.h:90
msgid "Repositories list:"
msgstr ""
#: source/ubl-strings.h:73
#: source/ubl-strings.h:68
msgid "Repositories list"
msgstr ""
#: source/ubl-strings.h:74
#: source/ubl-strings.h:69
msgid "Default"
msgstr ""
#: source/ubl-strings.h:75 source/ubl-strings.h:97
#: source/ubl-strings.h:70 source/ubl-strings.h:92
msgid "Choose"
msgstr ""
#: source/ubl-strings.h:76
#: source/ubl-strings.h:71
msgid "Chosen"
msgstr ""
#: source/ubl-strings.h:77
#: source/ubl-strings.h:72
msgid "Repository"
msgstr ""
#: source/ubl-strings.h:78
#: source/ubl-strings.h:73
msgid "Manage repository list"
msgstr ""
#: source/ubl-strings.h:79
#: source/ubl-strings.h:74
msgid "Disable system repositories"
msgstr ""
#: source/ubl-strings.h:81
#: source/ubl-strings.h:76
msgid "Move up"
msgstr ""
#: source/ubl-strings.h:82
#: source/ubl-strings.h:77
msgid "Move down"
msgstr ""
#: source/ubl-strings.h:83
#: source/ubl-strings.h:78
msgid "Add"
msgstr ""
#: source/ubl-strings.h:84
#: source/ubl-strings.h:79
msgid "Edit"
msgstr ""
#: source/ubl-strings.h:85
#: source/ubl-strings.h:80
msgid "Remove"
msgstr ""
#: source/ubl-strings.h:86
#: source/ubl-strings.h:81
msgid "Enabled"
msgstr ""
#: source/ubl-strings.h:87
#: source/ubl-strings.h:82
msgid "Source"
msgstr ""
#: source/ubl-strings.h:88
#: source/ubl-strings.h:83
msgid "Signature level"
msgstr ""
#: source/ubl-strings.h:89
#: source/ubl-strings.h:84
msgid "Usage level"
msgstr ""
#: source/ubl-strings.h:90
#: source/ubl-strings.h:85
msgid "Repository connection configuration"
msgstr ""
#: source/ubl-strings.h:91
#: source/ubl-strings.h:86
msgid ""
"Setting up a connection to a distributed repository network and publishing "
"your repositories"
msgstr ""
#: source/ubl-strings.h:92
#: source/ubl-strings.h:87
msgid "Connect and publish"
msgstr ""
#: source/ubl-strings.h:93
#: source/ubl-strings.h:88
msgid "Recieve DB packages from shared network"
msgstr ""
#: source/ubl-strings.h:94
#: source/ubl-strings.h:89
msgid "Repositories for publishing"
msgstr ""
#: source/ubl-strings.h:96
#: source/ubl-strings.h:91
msgid "All repositories"
msgstr ""
#: source/ubl-strings.h:98
#: source/ubl-strings.h:93
msgid "Accept"
msgstr ""
#: source/ubl-strings.h:99
#: source/ubl-strings.h:94
msgid "Repository name"
msgstr ""
#: source/ubl-strings.h:100
#: source/ubl-strings.h:95
msgid ""
"Setting up publication of storage and/or repositories as a local WEB resource"
msgstr ""
#: source/ubl-strings.h:101 source/ubl-strings.h:142
#: source/ubl-strings.h:96 source/ubl-strings.h:137
msgid "Authorization parameters"
msgstr ""
#: source/ubl-strings.h:102
#: source/ubl-strings.h:97
msgid "Storage"
msgstr ""
#: source/ubl-strings.h:103
#: source/ubl-strings.h:98
msgid "Chosen repositories"
msgstr ""
#: source/ubl-strings.h:104
#: source/ubl-strings.h:99
msgid "Reviewer"
msgstr ""
#: source/ubl-strings.h:105
#: source/ubl-strings.h:100
msgid "Port"
msgstr ""
#: source/ubl-strings.h:106
#: source/ubl-strings.h:101
msgid "Name"
msgstr ""
#: source/ubl-strings.h:107
#: source/ubl-strings.h:102
msgid "Password/Hash type"
msgstr ""
#: source/ubl-strings.h:108
#: source/ubl-strings.h:103
msgid "Password/Password hash"
msgstr ""
#: source/ubl-strings.h:109
#: source/ubl-strings.h:104
msgid ""
"Setting up publication of a lazy mirror of connected repositories as a local "
"WEB resource"
msgstr ""
#: source/ubl-strings.h:110
#: source/ubl-strings.h:105
msgid "Publish lazy mirror"
msgstr ""
#: source/ubl-strings.h:111
#: source/ubl-strings.h:106
msgid "Type"
msgstr ""
#: source/ubl-strings.h:112
#: source/ubl-strings.h:107
msgid "Resource URL"
msgstr ""
#: source/ubl-strings.h:113
#: source/ubl-strings.h:108
msgid "Configure"
msgstr ""
#: source/ubl-strings.h:114
#: source/ubl-strings.h:109
msgid "Mirror publish configuration"
msgstr ""
#: source/ubl-strings.h:115
#: source/ubl-strings.h:110
msgid "Service port:"
msgstr ""
#: source/ubl-strings.h:116
#: source/ubl-strings.h:111
msgid "Cache directory:"
msgstr ""
#: source/ubl-strings.h:117
#: source/ubl-strings.h:112
msgid "Duration of inactivity (in seconds):"
msgstr ""
#: source/ubl-strings.h:118
#: source/ubl-strings.h:113
msgid "Timeout (in seconds) for loading internel cache:"
msgstr ""
#: source/ubl-strings.h:119
#: source/ubl-strings.h:114
msgid "Work through proxy:"
msgstr ""
#: source/ubl-strings.h:120
#: source/ubl-strings.h:115
msgid "User agent:"
msgstr ""
#: source/ubl-strings.h:121
#: source/ubl-strings.h:116
msgid "Standard expression for cron:"
msgstr ""
#: source/ubl-strings.h:122
#: source/ubl-strings.h:117
msgid ""
"The number of consecutie days that systems on the network have not been "
"updated:"
msgstr ""
#: source/ubl-strings.h:123
#: source/ubl-strings.h:118
msgid "The number of consecutive days wthout an update requested:"
msgstr ""
#: source/ubl-strings.h:124
#: source/ubl-strings.h:119
msgid "Add mirror"
msgstr ""
#: source/ubl-strings.h:125
#: source/ubl-strings.h:120
msgid "Repository name:"
msgstr ""
#: source/ubl-strings.h:126
#: source/ubl-strings.h:121
msgid "Repository type:"
msgstr ""
#: source/ubl-strings.h:127
#: source/ubl-strings.h:122
msgid "WEB link"
msgstr ""
#: source/ubl-strings.h:128
#: source/ubl-strings.h:123
msgid "Proxy server"
msgstr ""
#: source/ubl-strings.h:129
#: source/ubl-strings.h:124
msgid "Mirrors file"
msgstr ""
#: source/ubl-strings.h:130
#: source/ubl-strings.h:125
msgid "Source:"
msgstr ""
#: source/ubl-strings.h:131
#: source/ubl-strings.h:126
msgid "Configuration"
msgstr ""
#: source/ubl-strings.h:132
#: source/ubl-strings.h:127
msgid "Sign level:"
msgstr ""
#: source/ubl-strings.h:133
#: source/ubl-strings.h:128
msgid "Enable repository update"
msgstr ""
#: source/ubl-strings.h:134
#: source/ubl-strings.h:129
msgid "Enable repository search"
msgstr ""
#: source/ubl-strings.h:135
#: source/ubl-strings.h:130
msgid ""
"Enable installation of packages from this repository during --sync operation"
msgstr ""
#: source/ubl-strings.h:136
#: source/ubl-strings.h:131
msgid ""
"Allow this repository to be a valid source of packages when running --"
"sysupgrade"
msgstr ""
#: source/ubl-strings.h:137
#: source/ubl-strings.h:132
msgid "Enable publishing of local repository as WEB resource"
msgstr ""
#: source/ubl-strings.h:138
#: source/ubl-strings.h:133
msgid "Path to publication directory:"
msgstr ""
#: source/ubl-strings.h:139
#: source/ubl-strings.h:134
msgid "Port:"
msgstr ""
#: source/ubl-strings.h:140
#: source/ubl-strings.h:135
msgid "Publishing parameters"
msgstr ""
#: source/ubl-strings.h:141
#: source/ubl-strings.h:136
msgid "Enable WEB file browser"
msgstr ""
#: source/ubl-strings.h:143
#: source/ubl-strings.h:138
msgid "Set"
msgstr ""
#: source/ubl-strings.h:144
#: source/ubl-strings.h:139
msgid "Username:"
msgstr ""
#: source/ubl-strings.h:145
#: source/ubl-strings.h:140
msgid "User password:"
msgstr ""
#: source/ubl-strings.h:146
#: source/ubl-strings.h:141
msgid "Not encrypted"
msgstr ""
#: source/ubl-strings.h:147
#: source/ubl-strings.h:142
msgid "Encrypted with SHA256"
msgstr ""
#: source/ubl-strings.h:148
#: source/ubl-strings.h:143
msgid "Encrypted with SHA512"
msgstr ""
#: source/ubl-strings.h:149
#: source/ubl-strings.h:144
msgid "System"
msgstr ""
#: source/ubl-strings.h:154
#: source/ubl-strings.h:149
msgid "Sign level"
msgstr ""
#: source/ubl-strings.h:155
#: source/ubl-strings.h:150
msgid "Description"
msgstr ""
#: source/ubl-strings.h:151
msgid "Password input"
msgstr ""
#: source/ubl-strings.h:156
#: source/ubl-strings.h:152
msgid "Password:"
msgstr ""
#: source/ubl-strings.h:157
#: source/ubl-strings.h:153
msgid "Repeat password:"
msgstr ""
#: source/ubl-strings.h:158
#: source/ubl-strings.h:154
msgid "Entryption:"
msgstr ""
#: source/ubl-strings.h:159
#: source/ubl-strings.h:155
msgid "Do not encrypt password"
msgstr ""
#: source/ubl-strings.h:160
#: source/ubl-strings.h:156
msgid "Password hash:"
msgstr ""
#: source/ubl-strings.h:157
msgid "Default (None)"
msgstr ""
#: source/ubl-strings.h:158
msgid "Encryption:"
msgstr ""
#: source/ubl-strings.h:159
msgid "Encryption"
msgstr ""

@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: source/ubl-strings.h:4
#: source/ubl-strings.h:4 source/ubl-strings.h:45
msgid "System update"
msgstr "Обновление системы"
@ -58,9 +58,17 @@ msgid "Edit repository for publication"
msgstr "Редактирование репозитория для публикации"
#: source/ubl-strings.h:16
msgid "passwords do not match"
msgid "Passwords do not match"
msgstr "Пароли не совпадают"
#: source/ubl-strings.h:17
msgid "Password contains restricted symbols"
msgstr "Пароль содержит запрещённые символы"
#: source/ubl-strings.h:17
msgid "Entry contains restricted symbols"
msgstr "Поле содержит запрещённые символы"
#: source/ubl-strings.h:18
msgid ""
"file://\t\t- Directory URL prefix for repository\n"
@ -90,78 +98,84 @@ msgstr ""
"mirrorlist - файл зерка, убедитесь что URL текущего сервера НЕ включен в "
"этот файл! Допускается только один параметр на репозиторий"
#: source/ubl-strings.h:26
#, fuzzy
#: source/ubl-strings.h:27
msgid "Signature verification will not be performed"
msgstr "Проверка подписи выполняться не будет"
#: source/ubl-strings.h:28
msgid ""
"• Never - Signature verification will not be performed\n"
"• Optional - Signatures will be verified if present, but unsigned databases "
"and packages will also be accepted\n"
"• Required - Signatures will be required for all packages and databases\n"
"• TrustedOnly - If signature is verified for packages and database, it must "
"be in the keyring and fully trusted; marginal trust not applicable\n"
"• TrustAll - If signature is verified, it must be in keyring, but does not "
"need to have a trust level assigned (e.g. unknown or marginal trust)\n"
"• PackageNever - Packages only\n"
"• DatabaseNever - Database only\n"
"• PackageOptional - Packages only\n"
"• DatabaseOptional - Database only\n"
"• PackageRequired - Packages only\n"
"• DatabaseRequired - Database only\n"
"• PackageTrustedOnly - If signature is verified only for packages\n"
"• DatabaseTrustedOnly - If signature is verified only for database\n"
"• PackageTrustAll - If signature is verified only for packages\n"
"• DatabaseTrustAll - If signature is verified only for database\n"
"Signatures will be verified if present, but unsigned databases and packages "
"will also be accepted"
msgstr ""
"• Never - Проверка подписи выполняться не будет\n"
"• Optional - Подписи будут проверяться при их наличии, но неподписанные "
"базы данных и пакеты также будут приниматься\n"
"• Required - Подписи будут необходимы для всех пакетов и баз данных.\n"
"• TrustedOnly - Если подпись проверяется для пакетов и базы, она должна "
"находиться в связке ключей и быть полностью доверенной; маргинальное доверие "
"не применимо\n"
"• TrustAll - Если подпись проверена, она должна находиться в связке ключей, "
"но ей не требуется назначать уровень доверия (например, неизвестное или "
"предельное доверие)\n"
"• PackageNever - Только для пакетов\n"
"• DatabaseNever - Только для базы данных\n"
"• PackageOptional - Только для пакетов\n"
"• DatabaseOptional - Только для базы данных\n"
"• PackageRequired - Только для пакетов\n"
"• DatabaseRequired - Только для базы данных\n"
"• PackageTrustedOnly - Если подпись проверяется только для пакетов\n"
"• DatabaseTrustedOnly - Если подпись проверяется только для базы данных\n"
"• PackageTrustAll - Если подпись проверена только для пакетов\n"
"• DatabaseTrustAll - Если подпись проверена только для базы данных\n"
"Подписи будут проверяться при их наличии, но неподписанные базы данных и "
"пакеты также будут приниматься"
#: source/ubl-strings.h:42
#: source/ubl-strings.h:29
msgid "Signatures will be required for all packages and databases"
msgstr "Подписи будут необходимы для всех пакетов и баз данных"
#: source/ubl-strings.h:30
msgid ""
"If signature is verified for packages and database, it must be in the "
"keyring and fully trusted; marginal trust not applicable"
msgstr ""
"Если подпись проверяется для пакетов и базы, она должна находиться в связке "
"ключей и быть полностью доверенной"
#: source/ubl-strings.h:31
msgid ""
"If signature is verified, it must be in keyring, but does not need to have a "
"trust level assigned (e.g. unknown or marginal trust)"
msgstr ""
"Если подпись проверена, она должна находиться в связке ключей, но ей не "
"требуется назначать уровень доверия (например, неизвестное или предельное "
"доверие)"
#: source/ubl-strings.h:32
msgid "Packages only"
msgstr "Только для пакетов"
#: source/ubl-strings.h:33
msgid "Database only"
msgstr "Только для базы данных"
#: source/ubl-strings.h:34
msgid "If signature is verified only for packages"
msgstr "Если подпись проверяется только для пакетов"
#: source/ubl-strings.h:35
msgid "If signature is verified only for database"
msgstr "Если подпись проверяется только для базы данных"
#: source/ubl-strings.h:36
msgid "every"
msgstr "каждые"
#: source/ubl-strings.h:43
#: source/ubl-strings.h:37
msgid "Resource link of file path"
msgstr "Ссылка на ресурс или путь до файла"
#: source/ubl-strings.h:44
#: source/ubl-strings.h:38
msgid "Open file explorer"
msgstr "Открыть в файловом менеджере"
#: source/ubl-strings.h:45
#: source/ubl-strings.h:39
msgid "Add source"
msgstr "Добавить источник"
#: source/ubl-strings.h:46
#: source/ubl-strings.h:40
msgid "Username"
msgstr "Имя пользователя"
#: source/ubl-strings.h:47
#: source/ubl-strings.h:41
msgid "User password"
msgstr "Пароль"
#: source/ubl-strings.h:48
#: source/ubl-strings.h:42
msgid "Storage path to publish"
msgstr "Путь до каталога хранилища, который будет опубликован"
#: source/ubl-strings.h:49
#: source/ubl-strings.h:43
msgid ""
"The full URL of where to find the database, packages, and signatures (if "
"available) for this repository. Multiple can be specified, separated by "
@ -170,163 +184,163 @@ msgstr ""
"Полный адрес места, где можно найти базу данных, пакеты и подписа (если "
"доступны) для этого репозитория. Возможно указать несколько через запятую (,)"
#: source/ubl-strings.h:50 source/ubl-strings.h:80
#: source/ubl-strings.h:44 source/ubl-strings.h:75
msgid "Update"
msgstr "Обновить"
msgstr "Обновление"
#: source/ubl-strings.h:51
#: source/ubl-strings.h:46
msgid "Repositories"
msgstr "Репозитории"
#: source/ubl-strings.h:52
#: source/ubl-strings.h:47
msgid "Publication"
msgstr "Публикация"
#: source/ubl-strings.h:53
#: source/ubl-strings.h:48
msgid "WEB-publication"
msgstr "WEB-публикация"
#: source/ubl-strings.h:54
#: source/ubl-strings.h:49
msgid "Mirror publication"
msgstr "Публикация зеркала"
#: source/ubl-strings.h:55
#: source/ubl-strings.h:50
msgid "Date of last automatic update:"
msgstr "Дата последнего автообновления:"
#: source/ubl-strings.h:56
#: source/ubl-strings.h:51
msgid "Date of last automatic update"
msgstr "Дата последнего автообновления"
#: source/ubl-strings.h:57
#: source/ubl-strings.h:52
msgid "Automatic update"
msgstr "Автоматическое обновление"
#: source/ubl-strings.h:58
#: source/ubl-strings.h:53
msgid "First update all modules and then the system"
msgstr "Вначале обновлять все модули и после систему"
#: source/ubl-strings.h:59
#: source/ubl-strings.h:54
msgid "Update only modules"
msgstr "Обновлять только модули"
#: source/ubl-strings.h:60
#: source/ubl-strings.h:55
msgid "Update everything in the order of the specified repositories"
msgstr "Обновлять всё в порядке указанных репозиториев"
#: source/ubl-strings.h:61
#: source/ubl-strings.h:56
msgid "Update mode:"
msgstr "Режим обновления:"
#: source/ubl-strings.h:62
#: source/ubl-strings.h:57
msgid "Update interval:"
msgstr "Интервал обновлений:"
#: source/ubl-strings.h:64
#: source/ubl-strings.h:59
msgid "Update mode"
msgstr "Режим обновления"
#: source/ubl-strings.h:65
#: source/ubl-strings.h:60
msgid "Update interval"
msgstr "Интервал обновлений"
#: source/ubl-strings.h:66
#: source/ubl-strings.h:61
msgid "Boot"
msgstr "Запуск"
#: source/ubl-strings.h:67 source/ubl-strings.h:150
#: source/ubl-strings.h:62 source/ubl-strings.h:145
msgid "Minutes"
msgstr "минут"
#: source/ubl-strings.h:68 source/ubl-strings.h:151
#: source/ubl-strings.h:63 source/ubl-strings.h:146
msgid "Hours"
msgstr "часов"
#: source/ubl-strings.h:69 source/ubl-strings.h:152
#: source/ubl-strings.h:64 source/ubl-strings.h:147
msgid "Days"
msgstr "дней"
#: source/ubl-strings.h:70 source/ubl-strings.h:153
#: source/ubl-strings.h:65 source/ubl-strings.h:148
msgid "Months"
msgstr "месяцев"
#: source/ubl-strings.h:71
#: source/ubl-strings.h:66
msgid "Repositories from which the update will occur"
msgstr "Репозитории с которых будет происходить обновление"
#: source/ubl-strings.h:72 source/ubl-strings.h:95
#: source/ubl-strings.h:67 source/ubl-strings.h:90
msgid "Repositories list:"
msgstr "Список репозиториев:"
#: source/ubl-strings.h:73
#: source/ubl-strings.h:68
msgid "Repositories list"
msgstr "Список репозиториев"
#: source/ubl-strings.h:74
#: source/ubl-strings.h:69
msgid "Default"
msgstr "По умолчанию"
#: source/ubl-strings.h:75 source/ubl-strings.h:97
#: source/ubl-strings.h:70 source/ubl-strings.h:92
msgid "Choose"
msgstr "Выбрать"
#: source/ubl-strings.h:76
#: source/ubl-strings.h:71
msgid "Chosen"
msgstr "Выбран"
#: source/ubl-strings.h:77
#: source/ubl-strings.h:72
msgid "Repository"
msgstr "Репозиторий"
#: source/ubl-strings.h:78
#: source/ubl-strings.h:73
msgid "Manage repository list"
msgstr "Управление списком репозиториев"
#: source/ubl-strings.h:79
#: source/ubl-strings.h:74
msgid "Disable system repositories"
msgstr "Отключить системные репозитории"
#: source/ubl-strings.h:81
#: source/ubl-strings.h:76
msgid "Move up"
msgstr "Переместить выше"
#: source/ubl-strings.h:82
#: source/ubl-strings.h:77
msgid "Move down"
msgstr "Переместить ниже"
#: source/ubl-strings.h:83
#: source/ubl-strings.h:78
msgid "Add"
msgstr "Добавить"
#: source/ubl-strings.h:84
#: source/ubl-strings.h:79
msgid "Edit"
msgstr "Изменить"
#: source/ubl-strings.h:85
#: source/ubl-strings.h:80
msgid "Remove"
msgstr "Удалить"
#: source/ubl-strings.h:86
#: source/ubl-strings.h:81
msgid "Enabled"
msgstr "Включен"
#: source/ubl-strings.h:87
#: source/ubl-strings.h:82
msgid "Source"
msgstr "Источник"
#: source/ubl-strings.h:88
#: source/ubl-strings.h:83
msgid "Signature level"
msgstr "Уровень подписи"
#: source/ubl-strings.h:89
#: source/ubl-strings.h:84
msgid "Usage level"
msgstr "Уровень использования"
#: source/ubl-strings.h:90
#: source/ubl-strings.h:85
msgid "Repository connection configuration"
msgstr "Настройки подключения репозитория"
#: source/ubl-strings.h:91
#: source/ubl-strings.h:86
msgid ""
"Setting up a connection to a distributed repository network and publishing "
"your repositories"
@ -334,70 +348,70 @@ msgstr ""
"Настройки подключения к распределённой сети репозиториев и публикация своих "
"репозиториев"
#: source/ubl-strings.h:92
#: source/ubl-strings.h:87
msgid "Connect and publish"
msgstr "Подключиться и опубликовать"
#: source/ubl-strings.h:93
#: source/ubl-strings.h:88
msgid "Recieve DB packages from shared network"
msgstr "Получать БД пакетов из распределённой сети"
#: source/ubl-strings.h:94
#: source/ubl-strings.h:89
msgid "Repositories for publishing"
msgstr "Репозитории для публикации"
#: source/ubl-strings.h:96
#: source/ubl-strings.h:91
msgid "All repositories"
msgstr "Все репозитории"
#: source/ubl-strings.h:98
#: source/ubl-strings.h:93
msgid "Accept"
msgstr "Принять"
#: source/ubl-strings.h:99
#: source/ubl-strings.h:94
msgid "Repository name"
msgstr "Имя репозитория"
#: source/ubl-strings.h:100
#: source/ubl-strings.h:95
msgid ""
"Setting up publication of storage and/or repositories as a local WEB resource"
msgstr ""
"Настройка публикации хранилища и/или репозиториев в виде локального WEB "
"ресурса"
#: source/ubl-strings.h:101 source/ubl-strings.h:142
#: source/ubl-strings.h:96 source/ubl-strings.h:137
msgid "Authorization parameters"
msgstr "Параметры авторизации"
#: source/ubl-strings.h:102
#: source/ubl-strings.h:97
msgid "Storage"
msgstr "Хранилище"
#: source/ubl-strings.h:103
#: source/ubl-strings.h:98
msgid "Chosen repositories"
msgstr "Выбранные репозитории"
#: source/ubl-strings.h:104
#: source/ubl-strings.h:99
msgid "Reviewer"
msgstr "Обозреватель"
#: source/ubl-strings.h:105
#: source/ubl-strings.h:100
msgid "Port"
msgstr "Порт"
#: source/ubl-strings.h:106
#: source/ubl-strings.h:101
msgid "Name"
msgstr "Имя пользователя"
#: source/ubl-strings.h:107
#: source/ubl-strings.h:102
msgid "Password/Hash type"
msgstr "Пароль/Тип хэша"
#: source/ubl-strings.h:108
#: source/ubl-strings.h:103
msgid "Password/Password hash"
msgstr "Пароль/Хэш пароля"
#: source/ubl-strings.h:109
#: source/ubl-strings.h:104
msgid ""
"Setting up publication of a lazy mirror of connected repositories as a local "
"WEB resource"
@ -405,117 +419,117 @@ msgstr ""
"Настройка публикации ленивого зеркала подключенных репозиториев в виде "
"локального WEB ресурса"
#: source/ubl-strings.h:110
#: source/ubl-strings.h:105
msgid "Publish lazy mirror"
msgstr "Опубликовать ленивое зеркало"
#: source/ubl-strings.h:111
#: source/ubl-strings.h:106
msgid "Type"
msgstr "Тип"
#: source/ubl-strings.h:112
#: source/ubl-strings.h:107
msgid "Resource URL"
msgstr "Ресурс URL"
#: source/ubl-strings.h:113
#: source/ubl-strings.h:108
msgid "Configure"
msgstr "Настроить"
#: source/ubl-strings.h:114
#: source/ubl-strings.h:109
msgid "Mirror publish configuration"
msgstr "Параметры публикации зеркала"
#: source/ubl-strings.h:115
#: source/ubl-strings.h:110
msgid "Service port:"
msgstr "Порт сервиса:"
#: source/ubl-strings.h:116
#: source/ubl-strings.h:111
msgid "Cache directory:"
msgstr "Каталог кеша:"
#: source/ubl-strings.h:117
#: source/ubl-strings.h:112
msgid "Duration of inactivity (in seconds):"
msgstr "Продолжительность бездействия (в секундах):"
#: source/ubl-strings.h:118
#: source/ubl-strings.h:113
msgid "Timeout (in seconds) for loading internel cache:"
msgstr "Таймаут (в секундах) для загрузки интернет-кэша:"
#: source/ubl-strings.h:119
#: source/ubl-strings.h:114
msgid "Work through proxy:"
msgstr "Работать через прокси:"
#: source/ubl-strings.h:120
#: source/ubl-strings.h:115
msgid "User agent:"
msgstr "Пользовательский агент:"
#: source/ubl-strings.h:121
#: source/ubl-strings.h:116
msgid "Standard expression for cron:"
msgstr "Стандартное выражение cron:"
#: source/ubl-strings.h:122
#: source/ubl-strings.h:117
msgid ""
"The number of consecutie days that systems on the network have not been "
"updated:"
msgstr ""
"Количество дней подряд, в течение которых не обновляются системы в сети:"
#: source/ubl-strings.h:123
#: source/ubl-strings.h:118
msgid "The number of consecutive days wthout an update requested:"
msgstr ""
"Количество дней подряд, в течение которых не было запрошено обновление:"
#: source/ubl-strings.h:124
#: source/ubl-strings.h:119
msgid "Add mirror"
msgstr "Добавить зеркало"
#: source/ubl-strings.h:125
#: source/ubl-strings.h:120
msgid "Repository name:"
msgstr "Имя репозитория:"
#: source/ubl-strings.h:126
#: source/ubl-strings.h:121
msgid "Repository type:"
msgstr "Тип репозитория:"
#: source/ubl-strings.h:127
#: source/ubl-strings.h:122
msgid "WEB link"
msgstr "Вэб ссылка"
#: source/ubl-strings.h:128
#: source/ubl-strings.h:123
msgid "Proxy server"
msgstr "Прокси-сервер"
#: source/ubl-strings.h:129
#: source/ubl-strings.h:124
msgid "Mirrors file"
msgstr "Файл зеркал"
#: source/ubl-strings.h:130
#: source/ubl-strings.h:125
msgid "Source:"
msgstr "Источник:"
#: source/ubl-strings.h:131
#: source/ubl-strings.h:126
msgid "Configuration"
msgstr "Конфигурация"
#: source/ubl-strings.h:132
#: source/ubl-strings.h:127
msgid "Sign level:"
msgstr "Уровень подписи:"
#: source/ubl-strings.h:133
#: source/ubl-strings.h:128
msgid "Enable repository update"
msgstr "Включать обновления для этого репозитория"
#: source/ubl-strings.h:134
#: source/ubl-strings.h:129
msgid "Enable repository search"
msgstr "Включать поиск этого репозитория"
#: source/ubl-strings.h:135
#: source/ubl-strings.h:130
msgid ""
"Enable installation of packages from this repository during --sync operation"
msgstr ""
"Включать установку пакетов из этого репозитория во время операции --sync"
#: source/ubl-strings.h:136
#: source/ubl-strings.h:131
msgid ""
"Allow this repository to be a valid source of packages when running --"
"sysupgrade"
@ -523,82 +537,98 @@ msgstr ""
"Позволить этому репозиторию быть действительным источником пакетов при "
"выполнении --sysupgrade"
#: source/ubl-strings.h:137
#: source/ubl-strings.h:132
msgid "Enable publishing of local repository as WEB resource"
msgstr "Включить публикацию локального репозитория в виде WEB ресурса"
#: source/ubl-strings.h:138
#: source/ubl-strings.h:133
msgid "Path to publication directory:"
msgstr "Хранилище:"
#: source/ubl-strings.h:139
#: source/ubl-strings.h:134
msgid "Port:"
msgstr "Порт:"
#: source/ubl-strings.h:140
#: source/ubl-strings.h:135
msgid "Publishing parameters"
msgstr "Параметры публикации"
#: source/ubl-strings.h:141
#: source/ubl-strings.h:136
msgid "Enable WEB file browser"
msgstr "Включить WEB обозреватель файлов"
#: source/ubl-strings.h:143
#: source/ubl-strings.h:138
msgid "Set"
msgstr "Задать"
#: source/ubl-strings.h:144
#: source/ubl-strings.h:139
msgid "Username:"
msgstr "Имя пользователя:"
#: source/ubl-strings.h:145
#: source/ubl-strings.h:140
msgid "User password:"
msgstr "Пароль:"
#: source/ubl-strings.h:146
#: source/ubl-strings.h:141
msgid "Not encrypted"
msgstr "Пароль не требуется"
#: source/ubl-strings.h:147
#: source/ubl-strings.h:142
msgid "Encrypted with SHA256"
msgstr "Шфировать с SHA256"
#: source/ubl-strings.h:148
#: source/ubl-strings.h:143
msgid "Encrypted with SHA512"
msgstr "Шифровать с SHA512"
#: source/ubl-strings.h:149
#: source/ubl-strings.h:144
msgid "System"
msgstr "Система"
#: source/ubl-strings.h:154
#: source/ubl-strings.h:149
msgid "Sign level"
msgstr "Уровень подписи:"
msgstr "Уровень подписи"
#: source/ubl-strings.h:155
#: source/ubl-strings.h:150
msgid "Description"
msgstr "Описание"
#: source/ubl-strings.h:151
msgid "Password input"
msgstr "Ввод пароля"
#: source/ubl-strings.h:156
#: source/ubl-strings.h:152
msgid "Password:"
msgstr "Пароль:"
#: source/ubl-strings.h:157
#: source/ubl-strings.h:153
msgid "Repeat password:"
msgstr "Подтвердите ввод пароля:"
#: source/ubl-strings.h:158
#: source/ubl-strings.h:154
msgid "Entryption:"
msgstr "Алгоритм шифрования пароля:"
#: source/ubl-strings.h:159
#: source/ubl-strings.h:155
msgid "Do not encrypt password"
msgstr "Не шифровать пароль"
#: source/ubl-strings.h:160
#: source/ubl-strings.h:156
msgid "Password hash:"
msgstr "Пароль/Хэш пароля"
#: source/ubl-strings.h:157
msgid "Default (None)"
msgstr "По умолчанию (Отсутствует)"
#: source/ubl-strings.h:158
msgid "Encryption:"
msgstr "Алгоритм шифрования пароля:"
#: source/ubl-strings.h:159
msgid "Encryption"
msgstr "Алгоритм шифрования пароля"
msgid "Check system updates at system startup"
msgstr "Проверять обновления при загрузке системы"
@ -607,35 +637,3 @@ msgstr "дней"
msgid "Cancel"
msgstr "Отмена"
msgid "Signature verification will not be performed"
msgstr "Проверка подписи выполняться не будет"
msgid "For packages only"
msgstr "Только для пакетов"
msgid "For database only"
msgstr "Только для базы данных"
msgid ""
"Signatures will be checked if present, but unsigned databases and "
"packages will also be accepted"
msgstr ""
"Подписи будут проверяться при их наличии, но неподписанные базы данных и "
"пакеты также будут приниматься"
msgid "Signatures will be required for all packages and databases"
msgstr "Подписи будут необходимы для всех пакетов и баз данных"
msgid ""
"If the signature is verified for packages and the database, it must be in "
"the keyring and be fully trusted"
msgstr ""
"Если подпись проверяется для пакетов и базы, она должна находиться в "
"связке ключей и быть полностью доверенной"
msgid "If the signature is verified only for packets"
msgstr "Если подпись проверяется только для пакетов"
msgid "If the signature is verified only for the database"
msgstr "Если подпись проверяется только для базы данных"

Loading…
Cancel
Save