|
|
|
|
@ -4,6 +4,44 @@
|
|
|
|
|
#define sha512_encrypt_command(target) yon_char_unite("echo -n \"",target,"\" | sha512sum | cut -f 1 -d ' '",NULL)
|
|
|
|
|
|
|
|
|
|
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){
|
|
|
|
|
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->AcceptButton = yon_gtk_builder_get_widget(builder,"UserOkButton");
|
|
|
|
|
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->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->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->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);
|
|
|
|
|
return window;
|
|
|
|
|
}
|
|
|
|
|
|