Added password tooltip

pull/85/head
parent 83ce0947cf
commit fdee6ebefd

@ -2,6 +2,28 @@
<!-- Generated with glade 3.40.0 --> <!-- Generated with glade 3.40.0 -->
<interface domain="libublsettingsui-gtk3"> <interface domain="libublsettingsui-gtk3">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<object class="GtkPopover" id="PasswordTooltipPopover">
<property name="can-focus">False</property>
<property name="position">right</property>
<property name="modal">False</property>
<property name="constrain-to">none</property>
<child>
<object class="GtkLabel" id="PassowordTooltipLabel">
<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="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="label" translatable="yes">- Latin characters only
- Maximum 256 characters</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
</child>
</object>
<object class="GtkImage" id="image4"> <object class="GtkImage" id="image4">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -76,7 +98,6 @@
<object class="GtkEntry" id="PasswordEntry"> <object class="GtkEntry" id="PasswordEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="tooltip-text" translatable="yes">Password</property>
<property name="visibility">False</property> <property name="visibility">False</property>
<property name="invisible-char">*</property> <property name="invisible-char">*</property>
<property name="truncate-multiline">True</property> <property name="truncate-multiline">True</property>

@ -519,6 +519,10 @@ msgstr ""
msgid "Repeat password:" msgid "Repeat password:"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:728
msgid "Repeat password"
msgstr ""
#: source/libublsettingsui-gtk3.h:728 #: source/libublsettingsui-gtk3.h:728
msgid "Encryption:" msgid "Encryption:"
msgstr "" msgstr ""
@ -530,3 +534,7 @@ msgstr ""
#: source/libublsettingsui-gtk3.h:728 #: source/libublsettingsui-gtk3.h:728
msgid "Password hash:" msgid "Password hash:"
msgstr "" msgstr ""
#: source/libublsettingsui-gtk3.h:728
msgid "- Latin characters only\n- Maximum 256 characters"
msgstr ""

@ -528,6 +528,10 @@ msgstr "Пароль:"
msgid "Repeat password:" msgid "Repeat password:"
msgstr "Подтверждение пароля:" msgstr "Подтверждение пароля:"
#: source/libublsettingsui-gtk3.h:728
msgid "Repeat password"
msgstr "Подтверждение пароля"
#: source/libublsettingsui-gtk3.h:728 #: source/libublsettingsui-gtk3.h:728
msgid "Encryption:" msgid "Encryption:"
msgstr "Шифрование:" msgstr "Шифрование:"
@ -539,3 +543,7 @@ msgstr "Не шифровать пароль"
#: source/libublsettingsui-gtk3.h:728 #: source/libublsettingsui-gtk3.h:728
msgid "Password hash:" msgid "Password hash:"
msgstr "Хэш пароля" msgstr "Хэш пароля"
#: source/libublsettingsui-gtk3.h:728
msgid "- Latin characters only\n- Maximum 256 characters"
msgstr "- Только латинские символы.\n- Максимум 256 символов."

@ -4,6 +4,44 @@
#define sha512_encrypt_command(target) yon_char_unite("echo -n \"",target,"\" | sha512sum | cut -f 1 -d ' '",NULL) #define sha512_encrypt_command(target) yon_char_unite("echo -n \"",target,"\" | sha512sum | cut -f 1 -d ' '",NULL)
yon_password_window *yon_password_window_new(); yon_password_window *yon_password_window_new();
gboolean on_password_focus_out_event(GtkWidget *self, GdkEvent *, yon_password_window *window);
gboolean on_password_focus_event(GtkWidget *self, GdkEvent *, yon_password_window *window){
gtk_popover_set_relative_to(GTK_POPOVER(window->PasswordTooltipPopover),self);
gtk_popover_set_position(GTK_POPOVER(window->PasswordTooltipPopover),GTK_POS_RIGHT);
g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_password_focus_out_event),window);
g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_password_focus_event),window);
gtk_popover_popup(GTK_POPOVER(window->PasswordTooltipPopover));
gtk_widget_grab_focus(self);
g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_password_focus_out_event),window);
g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_password_focus_event),window);
return GDK_EVENT_PROPAGATE;
}
gboolean on_password_focus_out_event(GtkWidget *self, GdkEvent *, yon_password_window *window){
gtk_popover_set_relative_to(GTK_POPOVER(window->PasswordTooltipPopover),self);
gtk_popover_set_position(GTK_POPOVER(window->PasswordTooltipPopover),GTK_POS_RIGHT);
gtk_popover_popdown(GTK_POPOVER(window->PasswordTooltipPopover));
return GDK_EVENT_PROPAGATE;
}
gboolean on_password_tooltip_event(GtkWidget *self, GdkEvent *, yon_password_window *window){
gtk_popover_set_relative_to(GTK_POPOVER(window->PasswordTooltipPopover),self);
gtk_popover_set_position(GTK_POPOVER(window->PasswordTooltipPopover),GTK_POS_RIGHT);
g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_password_focus_out_event),window);
g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_password_focus_event),window);
gtk_popover_popup(GTK_POPOVER(window->PasswordTooltipPopover));
g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_password_focus_out_event),window);
g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_password_focus_event),window);
return GDK_EVENT_PROPAGATE;
}
gboolean on_password_tooltip_out_event(GtkWidget *self, GdkEvent *, yon_password_window *window){
if (gtk_widget_has_focus(window->PasswordEntry)) return GDK_EVENT_PROPAGATE;
gtk_popover_set_relative_to(GTK_POPOVER(window->PasswordTooltipPopover),self);
gtk_popover_set_position(GTK_POPOVER(window->PasswordTooltipPopover),GTK_POS_RIGHT);
gtk_popover_popdown(GTK_POPOVER(window->PasswordTooltipPopover));
return GDK_EVENT_PROPAGATE;
}
char *yon_password_unencrypted_password_get(yon_password_window *window){ char *yon_password_unencrypted_password_get(yon_password_window *window){
const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
@ -208,6 +246,7 @@ yon_password_window *yon_password_window_new(){
window->UserCancelButton = yon_gtk_builder_get_widget(builder,"UserCancelButton"); window->UserCancelButton = yon_gtk_builder_get_widget(builder,"UserCancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"UserOkButton"); window->AcceptButton = yon_gtk_builder_get_widget(builder,"UserOkButton");
window->PasswordBox = yon_gtk_builder_get_widget(builder,"PasswordBox"); window->PasswordBox = yon_gtk_builder_get_widget(builder,"PasswordBox");
window->PasswordTooltipPopover = yon_gtk_builder_get_widget(builder,"PasswordTooltipPopover");
window->HashBox = yon_gtk_builder_get_widget(builder,"HashBox"); window->HashBox = yon_gtk_builder_get_widget(builder,"HashBox");
window->old_password=NULL; window->old_password=NULL;
@ -217,6 +256,10 @@ yon_password_window *yon_password_window_new(){
g_signal_connect(G_OBJECT(window->PasswordHashEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window); g_signal_connect(G_OBJECT(window->PasswordHashEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window);
g_signal_connect(G_OBJECT(window->PasswordEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window); g_signal_connect(G_OBJECT(window->PasswordEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window);
g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window); g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window);
g_signal_connect(G_OBJECT(window->PasswordEntry),"focus-in-event",G_CALLBACK(on_password_focus_event),window);
g_signal_connect(G_OBJECT(window->PasswordEntry),"focus-out-event",G_CALLBACK(on_password_focus_out_event),window);
g_signal_connect(G_OBJECT(window->PasswordEntry),"enter-notify-event",G_CALLBACK(on_password_tooltip_event),window);
g_signal_connect(G_OBJECT(window->PasswordEntry),"leave-notify-event",G_CALLBACK(on_password_tooltip_out_event),window);
gtk_widget_show(window->Window); gtk_widget_show(window->Window);
return window; return window;
} }

@ -568,6 +568,7 @@ typedef struct {
GtkWidget *HashBox; GtkWidget *HashBox;
GtkWidget *PasswordStrengthProgress; GtkWidget *PasswordStrengthProgress;
GtkWidget *PasswordTooltipPopover;
void *strength_func; void *strength_func;
const char *old_password; const char *old_password;
@ -727,6 +728,7 @@ yon_window *yon_window_new();
#define _PASSWORD_LABEL yon_char_get_localised_from_lib("Password:") #define _PASSWORD_LABEL yon_char_get_localised_from_lib("Password:")
#define _PASSWORD_REPEAT_LABEL yon_char_get_localised_from_lib("Repeat password:") #define _PASSWORD_REPEAT_LABEL yon_char_get_localised_from_lib("Repeat password:")
#define _PASSWORD_REPEAT_TOOLTIP_LABEL yon_char_get_localised_from_lib("Repeat password")
#define _PASSWORD_ENCRYPTION_LABEL yon_char_get_localised_from_lib("Encryption:") #define _PASSWORD_ENCRYPTION_LABEL yon_char_get_localised_from_lib("Encryption:")
#define _PASSWORD_NO_ENCRYPTION_LABEL yon_char_get_localised_from_lib("Do not encrypt password") #define _PASSWORD_NO_ENCRYPTION_LABEL yon_char_get_localised_from_lib("Do not encrypt password")
#define _PASSWORD_HASH_LABEL yon_char_get_localised_from_lib("Password hash:") #define _PASSWORD_HASH_LABEL yon_char_get_localised_from_lib("Password hash:")
@ -765,6 +767,6 @@ yon_window *yon_window_new();
#define _CHOOSE_USERS_LABEL yon_char_get_localised_from_lib("Choose users") #define _CHOOSE_USERS_LABEL yon_char_get_localised_from_lib("Choose users")
#define _CHOOSE_USER_LABEL yon_char_get_localised_from_lib("Choose user") #define _CHOOSE_USER_LABEL yon_char_get_localised_from_lib("Choose user")
#define _PASSWORD_LIMITATIONS_TOOLTIP_LABEL yon_char_get_localised_from_lib("- Latin characters only\n- Maximum 256 characters")
#endif #endif
Loading…
Cancel
Save