37 #include <glib/gi18n.h> 47 #define GET_OBJ(object_name) gtk_builder_get_object(remmina_passwd_dialog->builder, object_name) 52 GtkCssProvider *provider;
56 gboolean sensitive = FALSE;
58 provider = gtk_css_provider_new();
60 password = gtk_entry_get_text(remmina_passwd_dialog->
entry_password);
61 verify = gtk_entry_get_text(remmina_passwd_dialog->
entry_verify);
62 if (g_strcmp0(password, verify) == 0) {
63 color = g_strdup(
"green");
66 color = g_strdup(
"red");
68 gtk_widget_set_sensitive (GTK_WIDGET(remmina_passwd_dialog->
button_submit), sensitive);
70 if (verify == NULL || verify[0] ==
'\0')
71 color = g_strdup(
"inherit");
73 gtk_css_provider_load_from_data(provider,
80 gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
81 GTK_STYLE_PROVIDER(provider),
82 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
84 gtk_widget_queue_draw(GTK_WIDGET(remmina_passwd_dialog->
entry_verify));
85 g_object_unref(provider);
92 gtk_widget_grab_focus(GTK_WIDGET(remmina_passwd_dialog->
entry_verify));
99 gtk_dialog_response (remmina_passwd_dialog->
dialog, GTK_RESPONSE_CANCEL);
104 TRACE_CALL(__func__);
105 remmina_passwd_dialog->
password = gtk_entry_get_text(
107 gtk_dialog_response (remmina_passwd_dialog->
dialog, GTK_RESPONSE_ACCEPT);
112 TRACE_CALL(__func__);
118 remmina_passwd_dialog->
dialog = GTK_DIALOG(GET_OBJ(
"RemminaPasswdDialog"));
120 gtk_window_set_transient_for(GTK_WINDOW(remmina_passwd_dialog->
dialog), parent);
122 remmina_passwd_dialog->
entry_password = GTK_ENTRY(GET_OBJ(
"entry_password"));
123 remmina_passwd_dialog->
entry_verify = GTK_ENTRY(GET_OBJ(
"entry_verify"));
124 gtk_entry_set_activates_default(GTK_ENTRY(remmina_passwd_dialog->
entry_verify), TRUE);
125 remmina_passwd_dialog->
button_submit = GTK_BUTTON(GET_OBJ(
"button_submit"));
126 gtk_widget_set_can_default(GTK_WIDGET(remmina_passwd_dialog->
button_submit), TRUE);
127 gtk_widget_grab_default(GTK_WIDGET(remmina_passwd_dialog->
button_submit));
128 remmina_passwd_dialog->
button_cancel = GTK_BUTTON(GET_OBJ(
"button_cancel"));
130 g_signal_connect(remmina_passwd_dialog->
entry_password,
"activate",
132 g_signal_connect(remmina_passwd_dialog->button_submit,
"clicked",
134 g_signal_connect(remmina_passwd_dialog->button_cancel,
"clicked",
138 gtk_builder_connect_signals(remmina_passwd_dialog->builder, NULL);
140 int result = gtk_dialog_run(remmina_passwd_dialog->dialog);
143 case GTK_RESPONSE_ACCEPT:
144 #if SODIUM_VERSION_INT >= 90200 148 *unlock_password = g_strdup(remmina_passwd_dialog->password);
151 remmina_passwd_dialog->password = NULL;
155 remmina_passwd_dialog->password = NULL;
156 *unlock_password = NULL;
160 gtk_widget_destroy(GTK_WIDGET(remmina_passwd_dialog->dialog));
161 remmina_passwd_dialog->dialog = NULL;
GtkButton * button_submit
static void remmina_passwd_cancel_clicked(GtkButton *btn, gpointer user_data)
gboolean remmina_passwd(GtkWindow *parent, gchar **unlock_password)
static void remmina_passwd_password_activate(GtkEntry *entry, gpointer user_data)
gchar * remmina_sodium_pwhash_str(const gchar *pass)
GtkBuilder * remmina_public_gtk_builder_new_from_resource(gchar *resource)
void remmina_passwd_repwd_on_changed(GtkEditable *editable, RemminaPasswdDialog *dialog)
GtkButton * button_cancel
GtkEntry * entry_password
static void remmina_passwd_submit_clicked(GtkButton *btn, gpointer user_data)
static RemminaPasswdDialog * remmina_passwd_dialog