Limitation tooltips added

pull/309/head
parent d6108fa41d
commit 4acb7d797f

@ -1062,4 +1062,12 @@ msgstr ""
#: source/ubl-strings.h:302
msgid "The password does not meet the password policy requirements"
msgstr ""
#: source/ubl-strings.h:302
msgid "- Latin characters only\n- Maximum 256 characters"
msgstr ""
#: source/ubl-strings.h:302
msgid "- Latin characters only\n- Start with a-zA-Z_ only\n- Use only characters a-zA-Z0-9_-\n- Maximum 32 characters\n- Regexp check [a-zA-Z_][a-zA-Z0-9_-]*"
msgstr ""

@ -1153,7 +1153,14 @@ msgstr "Правила составления логина не соблюден
#~ msgid "main group will be set to default group"
#~ msgstr "получит(-ат) основную группу по умолчанию"
#: source/ubl-strings.h:302
msgid "The password does not meet the password policy requirements"
msgstr "Пароль не соответствует требованиям политики паролей"
msgstr "Пароль не соответствует требованиям политики паролей"
#: source/ubl-strings.h:302
msgid "- Latin characters only\n- Maximum 256 characters"
msgstr "- Только латинские символы.\n- Максимум 256 символов."
#: source/ubl-strings.h:302
msgid "- Latin characters only\n- Start with a-zA-Z_ only\n- Use only characters a-zA-Z0-9_-\n- Maximum 32 characters\n- Regexp check [a-zA-Z_][a-zA-Z0-9_-]*"
msgstr "- Только латинские символы\n- Начало только c a-zA-Z_\n- Использовать только символы a-zA-Z0-9_-\n- Максимум 32 символа\n- Проверка regexp [a-zA-Z_][a-zA-Z0-9_-]*"

@ -141,6 +141,43 @@ void on_password_hash_sensitiveness(GtkWidget *,ubl_settings_usergroups_password
}
}
gboolean on_password_focus_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_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 *, ubl_settings_usergroups_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 *, ubl_settings_usergroups_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 *, ubl_settings_usergroups_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;
}
ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_new(){
ubl_settings_usergroups_password_window *window = malloc(sizeof(ubl_settings_usergroups_password_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_password);
@ -153,6 +190,8 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne
window->PasswordBox=yon_gtk_builder_get_widget(builder,"PasswordBox");
window->NoEncriptionCheck=yon_gtk_builder_get_widget(builder,"NoEncriptionCheck");
window->PasswordStrengthProgress=yon_gtk_builder_get_widget(builder,"PasswordStrengthProgress");
window->PasswordTooltipPopover=yon_gtk_builder_get_widget(builder,"PasswordTooltipPopover");
window->PassowordTooltipLabel=yon_gtk_builder_get_widget(builder,"PassowordTooltipLabel");
window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
@ -166,8 +205,13 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne
g_signal_connect(G_OBJECT(window->PasswordHashEntry),"changed",G_CALLBACK(on_password_hash_sensitiveness),window);
g_signal_connect(G_OBJECT(window->RepeatPasswordEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL);
g_signal_connect(G_OBJECT(window->PasswordHashEntry),"icon-press",G_CALLBACK(on_password_show_hide),NULL);
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_window_set_title(GTK_WINDOW(window->CreateGroupWindow),PASSWORD_TITLE_LABEL);
return window;
}

@ -1,5 +1,42 @@
#include "ubl-settings-usergroups.h"
gboolean on_login_focus_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_user_window *window){
gtk_popover_set_relative_to(GTK_POPOVER(window->LoginTooltipPopover),self);
gtk_popover_set_position(GTK_POPOVER(window->LoginTooltipPopover),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->LoginTooltipPopover));
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_login_focus_out_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_user_window *window){
gtk_popover_set_relative_to(GTK_POPOVER(window->LoginTooltipPopover),self);
gtk_popover_set_position(GTK_POPOVER(window->LoginTooltipPopover),GTK_POS_RIGHT);
gtk_popover_popdown(GTK_POPOVER(window->LoginTooltipPopover));
return GDK_EVENT_PROPAGATE;
}
gboolean on_login_tooltip_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_user_window *window){
gtk_popover_set_relative_to(GTK_POPOVER(window->LoginTooltipPopover),self);
gtk_popover_set_position(GTK_POPOVER(window->LoginTooltipPopover),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->LoginTooltipPopover));
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_login_tooltip_out_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_user_window *window){
if (gtk_widget_has_focus(window->userLoginEntry)) return GDK_EVENT_PROPAGATE;
gtk_popover_set_relative_to(GTK_POPOVER(window->LoginTooltipPopover),self);
gtk_popover_set_position(GTK_POPOVER(window->LoginTooltipPopover),GTK_POS_RIGHT);
gtk_popover_popdown(GTK_POPOVER(window->LoginTooltipPopover));
return GDK_EVENT_PROPAGATE;
}
char *yon_user_get_system_groups(char *target_login){
char *groups_string = NULL;
groups_string="";
@ -269,6 +306,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
window->UsershadowShutdownCheck=yon_gtk_builder_get_widget(builder,"UsershadowShutdownCheck");
window->userTitleNameLabel=yon_gtk_builder_get_widget(builder,"userTitleNameLabel");
window->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook");
window->LoginTooltipPopover=yon_gtk_builder_get_widget(builder,"LoginTooltipPopover");
window->expiration_unix=NULL;
window->last_uid=NULL;
yon_gtk_entry_block_symbols(GTK_ENTRY(window->userUserNameEntry),"'\":\n");
@ -305,6 +343,10 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"combo",window->userPasswordCombo);
yon_dictionary_add_or_create_if_exists_with_data(entry_dict,"entry",window->userPasswordEntry);
// char *password = yon_config_get_by_key(USERADD((char*)gtk_entry_get_text(GTK_ENTRY(window->userLoginEntry))));
g_signal_connect(G_OBJECT(window->userLoginEntry),"focus-in-event",G_CALLBACK(on_login_focus_event),window);
g_signal_connect(G_OBJECT(window->userLoginEntry),"focus-out-event",G_CALLBACK(on_login_focus_out_event),window);
g_signal_connect(G_OBJECT(window->userLoginEntry),"enter-notify-event",G_CALLBACK(on_login_tooltip_event),window);
g_signal_connect(G_OBJECT(window->userLoginEntry),"leave-notify-event",G_CALLBACK(on_login_tooltip_out_event),window);
g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->userUIDAutoCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->userUIDEntry);
g_signal_connect(G_OBJECT(window->userHomeButton),"clicked",G_CALLBACK(on_filechooser_open),window->userHomeEntry);

@ -372,6 +372,8 @@ typedef struct{
GtkWidget *PasswordBox;
GtkWidget *NoEncriptionCheck;
GtkWidget *PasswordStrengthProgress;
GtkWidget *PasswordTooltipPopover;
GtkWidget *PassowordTooltipLabel;
} ubl_settings_usergroups_password_window;
typedef struct {
@ -440,6 +442,7 @@ typedef struct{
GtkWidget *userTitleNameLabel;
GtkWidget *userSyncSAMBAPasswordCheck;
GtkWidget *MainNotebook;
GtkWidget *LoginTooltipPopover;
char *expiration_unix;
@ -641,4 +644,12 @@ void on_home_changed(GtkWidget *self,ubl_settings_usergroups_user_window *window
gboolean yon_user_set_locales(GtkWidget *target);
void *yon_load_languages(void *target);
void on_password_changed(GtkWidget *, ubl_settings_usergroups_password_window *window);
gboolean on_password_focus_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_password_window *window);
gboolean on_password_focus_out_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_password_window *window);
gboolean on_password_tooltip_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_password_window *window);
gboolean on_password_tooltip_out_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_password_window *window);
gboolean on_login_focus_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_user_window *window);
gboolean on_login_focus_out_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_user_window *window);
gboolean on_login_tooltip_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_user_window *window);
gboolean on_login_tooltip_out_event(GtkWidget *self, GdkEvent *, ubl_settings_usergroups_user_window *window);
#endif

@ -298,4 +298,6 @@
#define REGIONAL_SETTINGS_LABEL _("Regional settings")
#define SYSTEM_LABEL _("System")
#define INVALID_LOGIN_LABEL _("The login rules are not followed")
#define WEAK_PASSWORD_LABEL _("The password does not meet the password policy requirements")
#define WEAK_PASSWORD_LABEL _("The password does not meet the password policy requirements")
#define PASSWORD_LIMITATIONS_TOOLTIP_LABEL _("- Latin characters only\n- Maximum 256 characters")
#define LOGIN_LIMITATIONS_TOOLTIP_LABEL _("- Latin characters only\n- Start with a-zA-Z_ only\n- Use only characters a-zA-Z0-9_-\n- Maximum 32 characters\n- Regexp check [a-zA-Z_][a-zA-Z0-9_-]*")

@ -3,6 +3,26 @@
<interface domain="ubl-settings-usergroups">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-usergroups.css -->
<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-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">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -77,6 +97,7 @@
<object class="GtkEntry" id="PasswordEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="max-length">256</property>
<property name="visibility">False</property>
<property name="invisible-char">*</property>
<property name="truncate-multiline">True</property>

@ -3,6 +3,31 @@
<interface domain="ubl-settings-usergroups">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-usergroups.css -->
<object class="GtkPopover" id="LoginTooltipPopover">
<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
- Start with a-zA-Z_ only
- Use only characters a-zA-Z0-9_-
- Maximum 32 characters
- Regexp check [a-zA-Z_][a-zA-Z0-9_-]*</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
</child>
</object>
<object class="GtkSizeGroup"/>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">1e+21</property>

Loading…
Cancel
Save