Information output for packages, localisation updates

pull/41/head
parent 3c0c3f0bd4
commit b3e483f26f

@ -1,7 +1,7 @@
KEY_NAME;KEY_DESCRIPTION
RSA;RSA/RSA
DSA ElGamal;DSA/ELG
DSA (sign only);DSA
RSA (sign only);RSA
GOST R 34.10-2012;GOST3410-2012
GOST R 34.10-2001;GOST3410-2001
KEY_NAME;KEY_DESCRIPTION;KEY_ALGO_NAME
RSA;RSA/RSA;RSA
DSA ElGamal;DSA/ELG;ELG
DSA (sign only);DSA;DSA
RSA (sign only);RSA;RSA
GOST R 34.10-2012;GOST3410-2012;GOST3410-2012
GOST R 34.10-2001;GOST3410-2001;GOST3410-2001
1 KEY_NAME KEY_DESCRIPTION KEY_ALGO_NAME
2 RSA RSA/RSA RSA
3 DSA ElGamal DSA/ELG ELG
4 DSA (sign only) DSA DSA
5 RSA (sign only) RSA RSA
6 GOST R 34.10-2012 GOST3410-2012 GOST3410-2012
7 GOST R 34.10-2001 GOST3410-2001 GOST3410-2001

@ -51,7 +51,7 @@ void on_repo_sign_changed(GtkWidget *self, storage_config_window *window){
if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->storages_copy),&itar,child_id)){
if (!yon_char_is_empty(sign)){
gtk_tree_store_set(window->storages_copy,&itar,6,1,5,sign,-1);
if (!system(yon_sign_repo(storage_path,target_repo,sign))){
if (system(yon_sign_repo(storage_path,target_repo,sign))){
gtk_combo_box_set_active(GTK_COMBO_BOX((GtkWidget*)g_list_nth_data(list,2)),0);
}
}else
@ -61,7 +61,7 @@ void on_repo_sign_changed(GtkWidget *self, storage_config_window *window){
}
}
void yon_storage_config_update(storage_config_window *window){
void yon_storage_config_update(storage_config_window *window){
GList *children = gtk_container_get_children(GTK_CONTAINER(window->ReposBox));
for (int i=0;i<g_list_length(children);i++){
gtk_widget_destroy((GtkWidget*)g_list_nth_data(children,i));
@ -1101,6 +1101,32 @@ void on_main_tree_selection_changed(GtkWidget *self, main_window *widgets){
}
}
void on_package_selection_changed(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(widgets->InformationLabel),"");
GtkTreeIter iter,itar;
GtkTreeModel *model, *model2;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&model,&iter)){
gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model2,&itar);
switch (gtk_tree_store_iter_depth(widgets->RepoList,&itar)){
case 0:
break;
case 1:
break;
case 2:
char *path, *filename;
gtk_tree_model_get(model,&iter,3,&filename,-1);
gtk_tree_model_get(model2,&itar,3,&path,-1);
int size;
config_str parsed = yon_config_load(get_package_info_command(yon_char_unite(path,"/",filename,NULL)),&size);
char *full = yon_char_parsed_to_string(parsed,size,"");
gtk_label_set_text(GTK_LABEL(widgets->InformationLabel),full);
yon_char_parsed_free(parsed,size);
free(full);
break;
}
}
}
void yon_combo_box_text_set_signs(GtkComboBoxText *target){
g_return_if_fail(GTK_IS_COMBO_BOX_TEXT(target));
gtk_combo_box_text_remove_all(target);
@ -1130,6 +1156,30 @@ void on_calendar_open(GtkWidget *self,key_creation_window *window){
yon_calendar_popover_open(GTK_ENTRY(window->ExpireEntry),self);
}
void on_key_generate_accept(GtkWidget *self, key_creation_window* window){
const char *name = gtk_entry_get_text(GTK_ENTRY(window->NameEntry));
const char *type = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->EncryptionCombo));
const char *email = gtk_entry_get_text(GTK_ENTRY(window->EmailEntry));
char *strength = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->KeyStrengthSpin)));
const char *comment = gtk_entry_get_text(GTK_ENTRY(window->CommentsEntry));
char *expire = NULL;
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ExpireCombo))==1){
expire = yon_char_from_int(yon_calendar_get_last_date());
}
const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
const char *password_confirm = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
if (yon_char_is_empty(password)&&yon_char_is_empty(password_confirm)){
system(yon_generate_key_no_password_command(type,name,email,strength,comment,expire,password));
} else if (!strcmp(password,password_confirm)){
system(yon_generate_key_command(type,name,email,strength,comment,expire,password));
} else {
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_INCORRECT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
return;
}
gtk_widget_destroy(window->Window);
yon_sign_list_update();
}
key_creation_window *yon_key_creation_window_new(){
key_creation_window *window = malloc(sizeof(key_creation_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_key);
@ -1146,18 +1196,22 @@ key_creation_window *yon_key_creation_window_new(){
window->ExpireButton = yon_gtk_builder_get_widget(builder,"ExpireButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
window->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
window->PasswordConfirmationEntry = yon_gtk_builder_get_widget(builder,"PasswordConfirmationEntry");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->ExpireButton),"clicked",G_CALLBACK(on_calendar_open),window);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_key_generate_accept),window);
int size;
config_str encription_keys = yon_file_open(key_encription_path,&size);
window->expire_time=0;
for (int i=1;i<size;i++){
yon_char_remove_last_symbol(encription_keys[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(encription_keys[i],&parsed_size,";");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->EncryptionCombo),parsed[0]);
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->EncryptionCombo),parsed[2],parsed[0]);
yon_char_parsed_free(parsed,parsed_size);
}
return window;
@ -1214,6 +1268,7 @@ main_window *yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_remove_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->ReposTree),"cursor-changed",G_CALLBACK(on_main_tree_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->CloudButton),"clicked",G_CALLBACK(on_ubl_settings_update_launch),widgets);
g_signal_connect(G_OBJECT(widgets->RepoFileTree),"cursor-changed",G_CALLBACK(on_package_selection_changed),widgets);
yon_calendar_set_date_orientation(1);
gtk_window_set_title(GTK_WINDOW(widgets->Window),TITLE_LABEL);

@ -67,9 +67,39 @@ typedef char* string;
#define get_gpg_keys_command yon_char_unite(yon_ubl_check_root()==1 ? yon_char_unite("su - ",yon_ubl_root_user_get()," -c \"gpg --list-signatures\"",NULL):"gpg --list-signatures"," | grep '^sig 3' | cut -d' ' -f10,11,13- | sort -u |sed -e 's/[0-9]*-[0-9]*-[0-9]* //g'",NULL)
#define yon_sign_package(storage,repo,arch,target,sign) yon_char_unite("repo-manager add -r '",repo,"' -a '",arch,"' -d '", storage,"' -S '",sign,"' ",target,NULL)
#define yon_sign_repo(storage,repo,sign) yon_char_unite("repo-manager add -r '",repo,"' -d '", storage,"' -S '",sign,"'",NULL)
#define get_package_info_command(filename) yon_char_unite("pacman -Q --info --file ",filename," |sed -e 's/ */ /g' -e 's/ : /:/g' -e 's/\\n/ /g'",NULL)
#define yon_sign_repo(storage,repo,sign) yon_char_unite("repo-manager add -f -r '",repo,"' -d '", storage,"' --sign-repo='",sign,"'",NULL)
#define get_package_info_command(filename) yon_char_unite("pacman -Q --info --file ",filename," |sed -e 's/ */ /g' -e 's/ : /:/g' -e 's/\\n/ /g' -e 's/^ /\\t/g'",NULL)
#define yon_generate_key_command(type,name,email,strength,comment,expire,password) yon_char_unite("gpg --batch --gen-key <<EOF\n\
%echo Generating a basic OpenPGP key\n\
Key-Type: ",type,"\n\
Key-Length: 1024\n\
Subkey-Type: ELG-E\n\
Subkey-Length: ",strength,"\n\
Name-Real: ",name,"\n\
Name-Comment: ",comment,"\n\
Name-Email: ",email,"\n\
Expire-Date: ",expire,"\n\
Passphrase: ",password,"\n\
%commit\n\
%echo done\n\
EOF",NULL)
#define yon_generate_key_no_password_command(type,name,email,strength,comment,expire,password) yon_char_unite("gpg --batch --gen-key <<EOF\n\
%echo Generating a basic OpenPGP key\n\
Key-Type: ",type,"\n\
Key-Length: 1024\n\
Subkey-Type: ELG-E\n\
Subkey-Length: ",strength,"\n\
Name-Real: ",name,"\n\
Name-Comment: ",comment,"\n\
Name-Email: ",email,"\n\
Expire-Date: ",expire,"\n\
%no-protection\n\
%commit\n\
%echo done\n\
EOF",NULL)
string version_application;
@ -181,6 +211,9 @@ typedef struct {
GtkWidget *ExpireButton;
GtkWidget *CancelButton;
GtkWidget *AddButton;
GtkWidget *PasswordEntry;
GtkWidget *PasswordConfirmationEntry;
unsigned long expire_time;
} key_creation_window;
main_window *setup_window();

@ -9,6 +9,29 @@
#define PROJECT_HOME_LABEL _("Project Home Page")
#define NOTHING_CHOSEN_LABEL _("Nothing were chosen")
#define INFORMATION_LABEL _("Information")
#define KEY_CREATION_TITLE_LABEL _("Key creation")
#define EMAIL_LABEL _("Email:")
#define KEY_ADDITIONAL_CONFIGURATION_LABEL _("Key additional configuration")
#define COMMENTS_LABEL _("Commentary:")
#define ENCRYPTION_LABEL _("Encryption type:")
#define KEY_LENGTH_LABEL _("key strength (in bits):")
#define EXPIRE_LABEL _("Expires:")
#define PASSWORD_LABEL _("Password:")
#define PASSWORD_CONFIRMATION_LABEL _("Password confirmation:")
#define TIMELESS_LABEL _("Timeless")
#define UNTIL_LABEL _("Until")
#define ADD_LABEL _("Add")
#define UPDATE_LABEL _("Update")
#define STORAGE_CONFIGURE_TOOLTIP_LABEL _("Configure storages")
#define ADD_PACKAGES_TOOLTP_LABEL _("Add packages")
#define MOVE_PACKAGES_TOOLTIP_LABEL _("Move packages")
#define REMOVE_PACKAGES_TOOLTIP_LABEL _("Remove packages")
#define LAUNCH_UBL_SETTINGS_UPDATE_TOOLTIP_LABEL _("Open ubl-settings-update")
#define KEY_LABEL _("Key creation")
#define LOAD_SUCCESS_LABEL _("Repository data has been loaded successfully")
@ -29,6 +52,36 @@
#define SIGNATURE_LABEL _("Signature:")
#define SIGN_LABEL _("Sign")
#define STORAGE_SIGN_REPO_LABEL _("Sign repo")
#define STORAGE_REMOVE_REPO_LABEL _("Remove repo")
#define MANAGE_STORAGES_TITLE_LABEL _("Manage storages")
#define STORAGE_LABEL _("Storage:")
#define OPEN_EXISTING_TOOLTIP_LABEL _("Open existing")
#define CREATE_NEW_TOOLTIP_LABEL _("Create new")
#define DISABLE_TOOLTIP_LABEL _("Disable")
#define DELETE_TOOLTIP_LABEL _("Delete")
#define ADD_REPO_TOOLTIP_LABEL _("Add repo")
#define REPOSITORIES_LABEL _("Repository (-ies)")
#define ACCEPT_LABEL _("Accept")
#define ACCEPT_LABEL _("Repository:")
#define ACCEPT_LABEL _("Architecture:")
#define ACCEPT_LABEL _("Source")
#define ACCEPT_LABEL _("Target")
#define ACCEPT_LABEL _("Packages sign:")
#define ACCEPT_LABEL _("Repository sign:")
#define ACCEPT_LABEL _("Package (-s) to add")
#define ACCEPT_LABEL _("Name")
#define ACCEPT_LABEL _("Path")
#define ACCEPT_LABEL _("Remove package")
#define ACCEPT_LABEL _("Add package")
#define ACCEPT_LABEL _("Accept")
#define ACCEPT_LABEL _("Accept")
#define ACCEPT_LABEL _("Accept")
#define CHOOSE_LABEL _("Choose")
#define CREATE_REPO_LABEL _("Open or create repository")
#define OPEN_REPO_LABEL _("Open existing repository")
#define CONFIGURE_REPO_LABEL _("Configure repository")
@ -75,4 +128,6 @@
#define DO_NOT_SIGN_LABEL _("Do not sign")
#define PACKAGE_NAME_ERROR_LABEL _("Package name error - package has incorrect name pattern")
#define PACKAGE_NAME_ERROR_LABEL _("Package name error - package has incorrect name pattern")
#define PASSWORD_INCORRECT_LABEL _("Passwords do not match")

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
<interface domain="ubl-settings-repomanager">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-repomanager.css -->
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>

@ -4,9 +4,11 @@
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-repomanager.css -->
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">99999999</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
<property name="lower">1024</property>
<property name="upper">4096</property>
<property name="value">2048</property>
<property name="step-increment">512</property>
<property name="page-increment">512</property>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
@ -235,6 +237,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjustment1</property>
<property name="value">2048</property>
</object>
<packing>
<property name="expand">True</property>
@ -272,8 +275,8 @@
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">timeless</item>
<item translatable="yes">until</item>
<item translatable="yes">Timeless</item>
<item translatable="yes">Until</item>
</items>
</object>
<packing>
@ -318,6 +321,78 @@
<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="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Password:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="PasswordEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</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="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Password confirmation:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="PasswordConfirmationEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
</object>
</child>
</object>
@ -360,7 +435,7 @@
<object class="GtkLabel" id="HeadLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Repository manager</property>
<property name="label" translatable="yes">Key creation</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
@ -400,4 +475,10 @@
</object>
</child>
</object>
<object class="GtkSizeGroup">
<widgets>
<widget name="label1"/>
<widget name="label2"/>
</widgets>
</object>
</interface>

@ -57,6 +57,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Sign repo</property>
<property name="image">image1</property>
<style>
<class name="thin"/>
@ -73,6 +74,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Remove repo</property>
<property name="image">image2</property>
<style>
<class name="thin"/>

@ -93,6 +93,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Update</property>
<property name="image">image1</property>
<style>
<class name="thin"/>
@ -109,6 +110,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Configure storages</property>
<property name="image">image2</property>
<style>
<class name="thin"/>
@ -125,6 +127,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Add packages</property>
<property name="image">image3</property>
<style>
<class name="thin"/>
@ -141,6 +144,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Move packages</property>
<property name="image">image4</property>
<style>
<class name="thin"/>
@ -157,6 +161,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Remove packages</property>
<property name="image">image5</property>
<style>
<class name="thin"/>
@ -173,6 +178,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Open ubl-settings-update</property>
<property name="image">image6</property>
<style>
<class name="thin"/>
@ -389,13 +395,28 @@
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="InformationLabel">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xalign">0</property>
<property name="can-focus">True</property>
<property name="min-content-width">0</property>
<property name="max-content-width">250</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel" id="InformationLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>

Loading…
Cancel
Save