Window constructors are done, L2 windows are connected to interface

pull/7/head
parent c6ed130169
commit 561937b921

@ -134,6 +134,8 @@ install: check uninstall
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.group-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.group-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.zoom-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.zoom-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.calendar-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.calendar-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.key-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.funnel-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.profile-settings-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "icons/com.ublinux.${PKGNAME}.profile-settings-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy" @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@if [ -z ${DESTDIR} ]; then \ @if [ -z ${DESTDIR} ]; then \

@ -7,6 +7,7 @@ In order to build ubl-ubl-settings-usergroups you will need:
- C compiler - C compiler
- GTK+ 3 & dependencies - GTK+ 3 & dependencies
- webkit2gtk (optional) - webkit2gtk (optional)
- [libublsettings-ui](https://gitea.ublinux.ru/Applications/libublsettings-ui)
Once you have all the necessary dependencies, you can use: Once you have all the necessary dependencies, you can use:
```sh ```sh

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
version="1.1"
id="svg1359"
width="256"
height="256"
viewBox="0 0 256 256"
sodipodi:docname="funnel.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1363" />
<sodipodi:namedview
id="namedview1361"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="1.5333252"
inkscape:cx="133.37027"
inkscape:cy="231.84906"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="g1365" />
<g
inkscape:groupmode="layer"
inkscape:label="Image"
id="g1365">
<path
style="fill:#313131;stroke-width:0.499256;fill-opacity:1"
d="m 104.65705,237.70905 c -0.62183,-0.24981 -1.35199,-1.03652 -1.62259,-1.74825 -0.31065,-0.81708 -0.49199,-18.8221 -0.49199,-48.8496 V 139.55564 L 63.364841,95.35613 24.187217,51.156622 18.806245,50.863604 C 12.784621,50.535703 10.172614,49.782271 6.8934643,47.427365 -3.1207996,40.235664 -1.3333195,24.490308 10.106237,19.127045 l 2.819779,-1.322011 H 128.00452 243.08303 l 2.81978,1.322011 c 3.59114,1.683651 6.65629,4.748951 8.33921,8.33961 1.8728,3.995783 1.8839,9.615451 0.0268,13.553783 -3.22543,6.840051 -9.19011,9.973686 -19.00052,9.982229 l -3.32143,0.0029 -39.24013,44.276883 -39.24012,44.27689 -0.011,35.72889 c -0.0103,33.46974 -0.0684,35.85515 -0.9194,37.72591 -0.49963,1.09836 -1.22486,2.25007 -1.61161,2.55936 -1.04329,0.83431 -44.14983,22.65836 -44.68151,22.62142 -0.25051,-0.0174 -0.96424,-0.23604 -1.58606,-0.48586 z"
id="path1444" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
id="svg2"
viewBox="0 0 100 100"
version="1.1"
sodipodi:docname="com.ublinux.ubl-settings-repomanager.document-sign-symbolic.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs498" />
<sodipodi:namedview
id="namedview496"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="5.1406663"
inkscape:cx="-3.7932826"
inkscape:cy="51.938792"
inkscape:window-width="1920"
inkscape:window-height="1023"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<linearGradient
id="SVGID_1_"
gradientUnits="userSpaceOnUse"
x1="50"
y1="754.7531"
x2="50"
y2="828.357"
gradientTransform="translate(0,-742.08062)">
<stop
offset="0"
style="stop-color:#35762e"
id="stop488" />
<stop
offset="1"
style="stop-color:#6daa43"
id="stop490" />
</linearGradient>
<path
id="path493"
style="display:inline;fill:#1a1a1a;stroke-width:1.16507"
d="M 50.361177,1.5488617 A 23.427829,24.021389 0 0 0 28.297887,17.661878 c -0.02133,0.01144 -0.04386,0.02079 -0.06517,0.03225 v 0.145162 a 23.427829,24.021389 0 0 0 -1.298898,7.730469 23.427829,24.021389 0 0 0 4.539401,14.110698 c 0,0 0.0023,0.0024 0.0023,0.0024 2.246699,3.69522 5.500248,6.687335 9.393416,8.562272 v 41.408124 l 9.550721,9.792695 9.550721,-9.792695 -0.57529,-8.61066 4.485468,-4.601414 -4.485468,-4.601415 6.78663,-6.960878 -6.78663,-6.960878 0.57529,-9.672879 c 4.004586,-1.958268 7.371165,-5.141825 9.645105,-9.064579 a 23.427829,24.021389 0 0 0 4.175351,-13.610695 23.427829,24.021389 0 0 0 -0.885408,-6.51387 v -0.552999 c -0.06101,-0.03572 -0.125335,-0.06593 -0.186521,-0.101386 A 23.427829,24.021389 0 0 0 50.361177,1.5488617 Z m 0.09888,11.9816513 A 11.933611,3.3885097 0 0 1 62.392839,16.919938 11.933611,3.3885097 0 0 1 50.460055,20.309362 11.933611,3.3885097 0 0 1 38.525024,16.919938 11.933611,3.3885097 0 0 1 50.460055,13.530513 Z M 44.09141,53.671347 h 3.222525 V 86.351298 H 44.09141 Z" />
<rect
style="fill:#1a1a1a;stroke-width:1.899"
id="rect2334"
width="9.6674757"
height="39.283848"
x="40.868935"
y="50.3694" />
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -11,108 +11,259 @@ void yon_load_proceed(char *command){
void yon_save_proceed(char *section,YON_CONFIG_TYPE type){ void yon_save_proceed(char *section,YON_CONFIG_TYPE type){
} }
additional_config_window *yon_additional_config_window_new(){ void on_filechooser_open(GtkWidget *self, GtkEntry *output_target){
additional_config_window *window = malloc(sizeof(additional_config_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_additional);
window->Window=yon_gtk_builder_get_widget(builder,"Window");
window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
window->DefaultUserNameEntry=yon_gtk_builder_get_widget(builder,"DefaultUserNameEntry");
window->DefaultUserAdministratorCheck=yon_gtk_builder_get_widget(builder,"DefaultUserAdministratorCheck");
window->DefaultPasswordCombo=yon_gtk_builder_get_widget(builder,"DefaultPasswordCombo");
window->DefaultPasswordEntry=yon_gtk_builder_get_widget(builder,"DefaultPasswordEntry");
window->RootPasswordCombo=yon_gtk_builder_get_widget(builder,"RootPasswordCombo");
window->RootPasswordEntry=yon_gtk_builder_get_widget(builder,"RootPasswordEntry");
window->PasswordHashCombo=yon_gtk_builder_get_widget(builder,"PasswordHashCombo");
window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton=yon_gtk_builder_get_widget(builder,"AcceptButton");
} }
groups_window *yon_groups_window_new(){ void on_groups_clicked(GtkWidget *self, GtkEntry *output_target){
groups_window *window = malloc(sizeof(groups_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_groups);
window->GroupsWindow=yon_gtk_builder_get_widget(builder,"GroupsWindow");
window->GroupsTree=yon_gtk_builder_get_widget(builder,"GroupsTree");
window->GroupsCancelButton=yon_gtk_builder_get_widget(builder,"GroupsCancelButton");
window->GroupsOkButton=yon_gtk_builder_get_widget(builder,"GroupsOkButton");
g_signal_connect(G_OBJECT(window->GroupsCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); }
return window;
void on_password_change(GtkWidget *self, GtkEntry *output_target){
}
void on_additional_groups_clicked(GtkWidget *self, GtkEntry *output_target){
}
void on_expiration_clicked(GtkWidget *self, GtkEntry *output_target){
}
// standard functions
ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_additional_settings_new(){
ubl_settings_usergroups_additional_settings_window *window = malloc(sizeof(ubl_settings_usergroups_additional_settings_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_additional_settings);
window->Window=yon_gtk_builder_get_widget(builder,"Window");
window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
window->DefaultUserNameEntry=yon_gtk_builder_get_widget(builder,"DefaultUserNameEntry");
window->DefaultUserAdministratorCheck=yon_gtk_builder_get_widget(builder,"DefaultUserAdministratorCheck");
window->DefaultPasswordCombo=yon_gtk_builder_get_widget(builder,"DefaultPasswordCombo");
window->DefaultPasswordEntry=yon_gtk_builder_get_widget(builder,"DefaultPasswordEntry");
window->RootPasswordCombo=yon_gtk_builder_get_widget(builder,"RootPasswordCombo");
window->RootPasswordEntry=yon_gtk_builder_get_widget(builder,"RootPasswordEntry");
window->PasswordHashCombo=yon_gtk_builder_get_widget(builder,"PasswordHashCombo");
window->CancelButton=yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton=yon_gtk_builder_get_widget(builder,"AcceptButton");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
return window;
}
void on_ubl_settings_usergroups_additional_settings_open(GtkWidget *self, main_window *widgets){
ubl_settings_usergroups_additional_settings_window *window = yon_ubl_settings_usergroups_additional_settings_new();
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window));
gtk_widget_show(window->Window);
}
ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group_creation_new(){
ubl_settings_usergroups_group_creation_window *window = malloc(sizeof(ubl_settings_usergroups_group_creation_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_group_creation);
window->CreateGroupWindow=yon_gtk_builder_get_widget(builder,"CreateGroupWindow");
window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
window->userUIDAutoCheck=yon_gtk_builder_get_widget(builder,"userUIDAutoCheck");
window->userUIDEntry=yon_gtk_builder_get_widget(builder,"userUIDEntry");
window->userLoginEntry=yon_gtk_builder_get_widget(builder,"userLoginEntry");
window->userGroupsEntry=yon_gtk_builder_get_widget(builder,"userGroupsEntry");
window->UserAdditionalGroupsButton=yon_gtk_builder_get_widget(builder,"UserAdditionalGroupsButton");
window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
return window;
}
ubl_settings_usergroups_group_window *yon_ubl_settings_usergroups_group_new(){
ubl_settings_usergroups_group_window *window = malloc(sizeof(ubl_settings_usergroups_group_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_group);
window->groupsAdmGroupCheck=yon_gtk_builder_get_widget(builder,"groupsAdmGroupCheck");
window->groupsAudioGroupCheck=yon_gtk_builder_get_widget(builder,"groupsAudioGroupCheck");
window->groupsAutologinGroupCheck=yon_gtk_builder_get_widget(builder,"groupsAutologinGroupCheck");
window->groupsAvahiGroupCheck=yon_gtk_builder_get_widget(builder,"groupsAvahiGroupCheck");
window->groupsBinGroupCheck=yon_gtk_builder_get_widget(builder,"groupsBinGroupCheck");
window->groupsBrlapiGroupCheck=yon_gtk_builder_get_widget(builder,"groupsBrlapiGroupCheck");
window->groupsBrittyGroupCheck=yon_gtk_builder_get_widget(builder,"groupsBrittyGroupCheck");
window->groupsBumblbeeGroupCheck=yon_gtk_builder_get_widget(builder,"groupsBumblbeeGroupCheck");
window->groupsChronyGroupCheck=yon_gtk_builder_get_widget(builder,"groupsChronyGroupCheck");
window->groupsClamavGroupCheck=yon_gtk_builder_get_widget(builder,"groupsClamavGroupCheck");
window->groupsCockpitWsGroupCheck=yon_gtk_builder_get_widget(builder,"groupsCockpitWsGroupCheck");
window->groupsCockpitWsinstanceGroupCheck=yon_gtk_builder_get_widget(builder,"groupsCockpitWsinstanceGroupCheck");
window->groupsColordGroupCheck=yon_gtk_builder_get_widget(builder,"groupsColordGroupCheck");
window->GroupsWindow=yon_gtk_builder_get_widget(builder,"GroupsWindow");
window->GroupsTree=yon_gtk_builder_get_widget(builder,"GroupsTree");
window->GroupsCancelButton=yon_gtk_builder_get_widget(builder,"GroupsCancelButton");
window->GroupsOkButton=yon_gtk_builder_get_widget(builder,"GroupsOkButton");
g_signal_connect(G_OBJECT(window->GroupsCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
return window;
} }
void on_standard_groups_open(GtkWidget *self, main_window *widgets){ void on_standard_groups_open(GtkWidget *self, main_window *widgets){
groups_window *window = yon_groups_window_new(); ubl_settings_usergroups_group_window *window = yon_ubl_settings_usergroups_group_new();
g_signal_connect(G_OBJECT(window->GroupsOkButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->GroupsOkButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_window_set_transient_for(GTK_WINDOW(window->GroupsWindow),GTK_WINDOW(widgets->Window)); gtk_window_set_transient_for(GTK_WINDOW(window->GroupsWindow),GTK_WINDOW(widgets->Window));
gtk_widget_show(window->GroupsWindow); gtk_widget_show(window->GroupsWindow);
} }
user_window *yon_user_window_new(){
user_window *window = malloc(sizeof(user_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_user); ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_new(){
window->CreateUserWindow=yon_gtk_builder_get_widget(builder,"CreateUserWindow"); ubl_settings_usergroups_password_window *window = malloc(sizeof(ubl_settings_usergroups_password_window));
window->userUIDAutoCheck=yon_gtk_builder_get_widget(builder,"userUIDAutoCheck"); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_password);
window->userUIDEntry=yon_gtk_builder_get_widget(builder,"userUIDEntry"); window->CreateGroupWindow=yon_gtk_builder_get_widget(builder,"CreateGroupWindow");
window->userLoginEntry=yon_gtk_builder_get_widget(builder,"userLoginEntry"); window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
window->userPasswordCombo=yon_gtk_builder_get_widget(builder,"userPasswordCombo"); window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
window->userPasswordEntry=yon_gtk_builder_get_widget(builder,"userPasswordEntry"); window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
window->userPasswordButton=yon_gtk_builder_get_widget(builder,"userPasswordButton"); g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
window->userUserNameEntry=yon_gtk_builder_get_widget(builder,"userUserNameEntry"); return window;
window->userGroupsCheck=yon_gtk_builder_get_widget(builder,"userGroupsCheck"); }
window->userGroupsEntry=yon_gtk_builder_get_widget(builder,"userGroupsEntry");
window->UserGroupsButton=yon_gtk_builder_get_widget(builder,"UserGroupsButton");
window->userCreateHomeFolderCheck=yon_gtk_builder_get_widget(builder,"userCreateHomeFolderCheck");
window->userHomeFolderEntry=yon_gtk_builder_get_widget(builder,"userHomeFolderEntry"); ubl_settings_usergroups_system_window *yon_ubl_settings_usergroups_system_new(){
window->userHomeFolderButton=yon_gtk_builder_get_widget(builder,"userHomeFolderButton"); ubl_settings_usergroups_system_window *window = malloc(sizeof(ubl_settings_usergroups_system_window));
window->userAdditionalGroupsEntry=yon_gtk_builder_get_widget(builder,"userAdditionalGroupsEntry"); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_system);
window->userAdditionalGroupsButton=yon_gtk_builder_get_widget(builder,"userAdditionalGroupsButton"); window->liststore1=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
window->userPasswordChangedEntry=yon_gtk_builder_get_widget(builder,"userPasswordChangedEntry"); window->liststore2=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore2"));
window->userPasswordExpirationEntry=yon_gtk_builder_get_widget(builder,"userPasswordExpirationEntry"); window->MonitorWindow=yon_gtk_builder_get_widget(builder,"MonitorWindow");
window->userPasswordExpirationButton=yon_gtk_builder_get_widget(builder,"userPasswordExpirationButton"); window->SettingsBar=yon_gtk_builder_get_widget(builder,"SettingsBar");
window->userPasswordChangeDelayMinimumSpin=yon_gtk_builder_get_widget(builder,"userPasswordChangeDelayMinimumSpin"); return window;
window->userPasswordChangeDelayMaximumSpin=yon_gtk_builder_get_widget(builder,"userPasswordChangeDelayMaximumSpin");
window->userWarningSpin=yon_gtk_builder_get_widget(builder,"userWarningSpin");
window->userActivitySpin=yon_gtk_builder_get_widget(builder,"userActivitySpin");
window->userForceChangeCheck=yon_gtk_builder_get_widget(builder,"userForceChangeCheck");
window->userShellCombo=yon_gtk_builder_get_widget(builder,"userShellCombo");
window->userShellEntry=yon_gtk_builder_get_widget(builder,"userShellEntry");
window->userHomeCombo=yon_gtk_builder_get_widget(builder,"userHomeCombo");
window->userHomeEntry=yon_gtk_builder_get_widget(builder,"userHomeEntry");
window->userHomeButton=yon_gtk_builder_get_widget(builder,"userHomeButton");
window->userCreateSystemCheck=yon_gtk_builder_get_widget(builder,"userCreateSystemCheck");
window->userCreateUnuniqueCheck=yon_gtk_builder_get_widget(builder,"userCreateUnuniqueCheck");
window->userDontCheckCheck=yon_gtk_builder_get_widget(builder,"userDontCheckCheck");
window->userSyncSAMBACheck=yon_gtk_builder_get_widget(builder,"userSyncSAMBACheck");
window->userDeactivatedCheck=yon_gtk_builder_get_widget(builder,"userDeactivatedCheck");
window->userExtraOptionsEntry=yon_gtk_builder_get_widget(builder,"userExtraOptionsEntry");
window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
window->userTitleNameLabel=yon_gtk_builder_get_widget(builder,"userTitleNameLabel");
g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
return window;
} }
void on_user_add(GtkWidget *self, main_window *widgets){ void on_settings_usergroups_system_open(GtkWidget *self, main_window *widgets){
user_window *window = yon_user_window_new(); ubl_settings_usergroups_system_window *window = yon_ubl_settings_usergroups_system_new();
g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_window_set_transient_for(GTK_WINDOW(window->CreateUserWindow),GTK_WINDOW(widgets->Window)); gtk_window_set_transient_for(GTK_WINDOW(window->MonitorWindow),GTK_WINDOW(widgets->Window));
gtk_widget_show(window->CreateUserWindow); gtk_widget_show(window->MonitorWindow);
} }
void on_user_edit(){
ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){
ubl_settings_usergroups_user_window *window = malloc(sizeof(ubl_settings_usergroups_user_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ubl_settings_usergroups_user);
window->CreateUserWindow=yon_gtk_builder_get_widget(builder,"CreateUserWindow");
window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
window->userUIDAutoCheck=yon_gtk_builder_get_widget(builder,"userUIDAutoCheck");
window->userUIDEntry=yon_gtk_builder_get_widget(builder,"userUIDEntry");
window->userLoginEntry=yon_gtk_builder_get_widget(builder,"userLoginEntry");
window->userPasswordCombo=yon_gtk_builder_get_widget(builder,"userPasswordCombo");
window->userPasswordEntry=yon_gtk_builder_get_widget(builder,"userPasswordEntry");
window->userPasswordButton=yon_gtk_builder_get_widget(builder,"userPasswordButton");
window->userUserNameEntry=yon_gtk_builder_get_widget(builder,"userUserNameEntry");
window->userGroupsCheck=yon_gtk_builder_get_widget(builder,"userGroupsCheck");
window->userGroupsEntry=yon_gtk_builder_get_widget(builder,"userGroupsEntry");
window->UserGroupsButton=yon_gtk_builder_get_widget(builder,"UserGroupsButton");
window->userAdditionalGroupsEntry=yon_gtk_builder_get_widget(builder,"userAdditionalGroupsEntry");
window->userAdditionalGroupsButton=yon_gtk_builder_get_widget(builder,"userAdditionalGroupsButton");
window->userPasswordChangedEntry=yon_gtk_builder_get_widget(builder,"userPasswordChangedEntry");
window->userPasswordExpirationEntry=yon_gtk_builder_get_widget(builder,"userPasswordExpirationEntry");
window->userPasswordExpirationButton=yon_gtk_builder_get_widget(builder,"userPasswordExpirationButton");
window->userPasswordChangeDelayMinimumSpin=yon_gtk_builder_get_widget(builder,"userPasswordChangeDelayMinimumSpin");
window->userPasswordChangeDelayMaximumSpin=yon_gtk_builder_get_widget(builder,"userPasswordChangeDelayMaximumSpin");
window->userWarningSpin=yon_gtk_builder_get_widget(builder,"userWarningSpin");
window->userActivitySpin=yon_gtk_builder_get_widget(builder,"userActivitySpin");
window->userForceChangeCheck=yon_gtk_builder_get_widget(builder,"userForceChangeCheck");
window->userShellCombo=yon_gtk_builder_get_widget(builder,"userShellCombo");
window->userShellEntry=yon_gtk_builder_get_widget(builder,"userShellEntry");
window->userHomeCombo=yon_gtk_builder_get_widget(builder,"userHomeCombo");
window->userHomeEntry=yon_gtk_builder_get_widget(builder,"userHomeEntry");
window->userHomeButton=yon_gtk_builder_get_widget(builder,"userHomeButton");
window->userCreateSystemCheck=yon_gtk_builder_get_widget(builder,"userCreateSystemCheck");
window->userCreateUnuniqueCheck=yon_gtk_builder_get_widget(builder,"userCreateUnuniqueCheck");
window->userDontCheckCheck=yon_gtk_builder_get_widget(builder,"userDontCheckCheck");
window->userSyncSAMBACheck=yon_gtk_builder_get_widget(builder,"userSyncSAMBACheck");
window->userDeactivatedCheck=yon_gtk_builder_get_widget(builder,"userDeactivatedCheck");
window->userExtraOptionsEntry=yon_gtk_builder_get_widget(builder,"userExtraOptionsEntry");
window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
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);
g_signal_connect(G_OBJECT(window->UserGroupsButton),"clicked",G_CALLBACK(on_groups_clicked),window->userGroupsEntry);
g_signal_connect(G_OBJECT(window->userPasswordButton),"clicked",G_CALLBACK(on_password_change),window->userPasswordEntry);
g_signal_connect(G_OBJECT(window->userAdditionalGroupsButton),"clicked",G_CALLBACK(on_additional_groups_clicked),window->userAdditionalGroupsEntry);
g_signal_connect(G_OBJECT(window->userPasswordExpirationButton),"clicked",G_CALLBACK(on_expiration_clicked),window->userPasswordExpirationEntry);
return window;
} }
void on_user_delete(){ void on_main_add(GtkWidget *self, main_window *widgets){
GtkTreeModel *model;
GtkWidget *cur_tree;
GtkTreeIter iter;
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
model = GTK_TREE_MODEL(widgets->UsersList);
ubl_settings_usergroups_user_window *window = yon_ubl_settings_usergroups_user_new();
g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_window_set_transient_for(GTK_WINDOW(window->CreateUserWindow),GTK_WINDOW(widgets->Window));
gtk_widget_show(window->CreateUserWindow);
} else {
model = GTK_TREE_MODEL(widgets->GroupsList);
ubl_settings_usergroups_group_creation_window *window = yon_ubl_settings_usergroups_group_creation_new();
g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_window_set_transient_for(GTK_WINDOW(window->CreateGroupWindow),GTK_WINDOW(widgets->Window));
gtk_widget_show(window->CreateGroupWindow);
}
} }
void on_def_groups_open(){ void on_main_edit(GtkWidget *self, main_window *widgets){
GtkTreeModel *model;
GtkWidget *cur_tree;
GtkTreeIter iter;
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
model = GTK_TREE_MODEL(widgets->UsersList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&model,&iter)){
ubl_settings_usergroups_user_window *window = yon_ubl_settings_usergroups_user_new();
g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_window_set_transient_for(GTK_WINDOW(window->CreateUserWindow),GTK_WINDOW(widgets->Window));
gtk_widget_show(window->CreateUserWindow);
}
} else {
model = GTK_TREE_MODEL(widgets->GroupsList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->GroupsTree)),&model,&iter)){
ubl_settings_usergroups_group_creation_window *window = yon_ubl_settings_usergroups_group_creation_new();
g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_window_set_transient_for(GTK_WINDOW(window->CreateGroupWindow),GTK_WINDOW(widgets->Window));
gtk_widget_show(window->CreateGroupWindow);
}
}
} }
// standard functions void on_main_delete(GtkWidget *self, main_window *widgets){
GtkTreeModel *model;
GtkWidget *cur_tree;
GtkTreeIter iter;
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
model = GTK_TREE_MODEL(widgets->UsersList);
cur_tree=widgets->UsersTree;
} else {
model = GTK_TREE_MODEL(widgets->GroupsList);
cur_tree=widgets->GroupsTree;
}
if(gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(cur_tree)),&model,&iter)){
gtk_list_store_remove(GTK_LIST_STORE(model),&iter);
}
}
/**config_init() /**config_init()
* [EN] * [EN]
@ -139,20 +290,27 @@ void config_init(){
* Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом. * Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом.
*/ */
void yon_main_window_complete(main_window *widgets){ void yon_main_window_complete(main_window *widgets){
widgets = realloc(widgets,sizeof(main_window)); widgets = yon_remalloc(widgets,sizeof(main_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"PlugBox"),1,1,0); gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"PlugBox"),1,1,0);
widgets->button1 = yon_gtk_builder_get_widget(builder,"button1"); // Custom widgets configuration
widgets->button2 = yon_gtk_builder_get_widget(builder,"button2");
widgets->button3 = yon_gtk_builder_get_widget(builder,"button3"); widgets->CacheAlgList=GTK_LIST_STORE(gtk_builder_get_object(builder,"CacheAlgList"));
widgets->AddButton = yon_gtk_builder_get_widget(builder,"AddButton"); widgets->GroupsList=GTK_LIST_STORE(gtk_builder_get_object(builder,"GroupsList"));
widgets->EditButton = yon_gtk_builder_get_widget(builder,"EditButton"); widgets->UsersList=GTK_LIST_STORE(gtk_builder_get_object(builder,"UsersList"));
widgets->DeleteButton = yon_gtk_builder_get_widget(builder,"DeleteButton"); widgets->PlugBox=yon_gtk_builder_get_widget(builder,"PlugBox");
widgets->UpdateButton = yon_gtk_builder_get_widget(builder,"UpdateButton"); widgets->button1=yon_gtk_builder_get_widget(builder,"button1");
widgets->UsersTree = yon_gtk_builder_get_widget(builder,"UsersTree"); widgets->button2=yon_gtk_builder_get_widget(builder,"button2");
widgets->GroupsTree = yon_gtk_builder_get_widget(builder,"GroupsTree"); widgets->button3=yon_gtk_builder_get_widget(builder,"button3");
widgets->AddButton=yon_gtk_builder_get_widget(builder,"AddButton");
main_config.usersListStore = GTK_LIST_STORE(gtk_builder_get_object(builder,"UsersList")); widgets->EditButton=yon_gtk_builder_get_widget(builder,"EditButton");
widgets->DeleteButton=yon_gtk_builder_get_widget(builder,"DeleteButton");
widgets->UpdateButton=yon_gtk_builder_get_widget(builder,"UpdateButton");
widgets->UsersTree=yon_gtk_builder_get_widget(builder,"UsersTree");
widgets->GroupsTree=yon_gtk_builder_get_widget(builder,"GroupsTree");
widgets->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook");
main_config.usersListStore = GTK_LIST_STORE(gtk_builder_get_object(builder,"UsersList"));
main_config.groupsListStore = GTK_LIST_STORE(gtk_builder_get_object(builder,"GroupsList")); main_config.groupsListStore = GTK_LIST_STORE(gtk_builder_get_object(builder,"GroupsList"));
@ -169,11 +327,12 @@ void yon_main_window_complete(main_window *widgets){
} }
/* Signal connection | Присоединение сигналов */ /* Signal connection | Присоединение сигналов */
g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_user_add),widgets); g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_main_add),widgets);
g_signal_connect(G_OBJECT(widgets->EditButton),"clicked",G_CALLBACK(on_user_edit),widgets); g_signal_connect(G_OBJECT(widgets->EditButton),"clicked",G_CALLBACK(on_main_edit),widgets);
g_signal_connect(G_OBJECT(widgets->DeleteButton),"clicked",G_CALLBACK(on_user_delete),widgets); g_signal_connect(G_OBJECT(widgets->DeleteButton),"clicked",G_CALLBACK(on_main_delete),widgets);
g_signal_connect(G_OBJECT(widgets->button3),"clicked",G_CALLBACK(on_standard_groups_open),widgets); g_signal_connect(G_OBJECT(widgets->button3),"clicked",G_CALLBACK(on_standard_groups_open),widgets);
// g_signal_connect(G_OBJECT(widgets->),"clicked",G_CALLBACK(on_def_groups_open),widgets); g_signal_connect(G_OBJECT(widgets->button2),"clicked",G_CALLBACK(on_ubl_settings_usergroups_additional_settings_open),widgets);
g_signal_connect(G_OBJECT(widgets->button1),"clicked",G_CALLBACK(on_settings_usergroups_system_open),widgets);
gtk_widget_show(widgets->Window); gtk_widget_show(widgets->Window);

@ -20,12 +20,13 @@
#define _(String) gettext(String) #define _(String) gettext(String)
#define glade_path "/com/ublinux/ui/ubl-settings-usergroups.glade" #define glade_path "/com/ublinux/ui/ubl-settings-usergroups.glade"
#define glade_path_user "/com/ublinux/ui/ubl-settings-usergroups-user.glade" #define glade_path_ubl_settings_usergroups_additional_settings "/com/ublinux/ui/ubl-settings-usergroups-additional-settings.glade"
#define glade_path_groups "/com/ublinux/ui/ubl-settings-usergroups-group.glade" #define glade_path_ubl_settings_usergroups_group_creation "/com/ublinux/ui/ubl-settings-usergroups-group-creation.glade"
#define glade_path_additional "/com/ublinux/ui/ubl-settings-usergroups-additional-settings.glade" #define glade_path_ubl_settings_usergroups_group "/com/ublinux/ui/ubl-settings-usergroups-group.glade"
#define glade_path_group_creation "/com/ublinux/ui/ubl-settings-usergroups-group-creation.glade" #define glade_path_ubl_settings_usergroups_password "/com/ublinux/ui/ubl-settings-usergroups-password.glade"
#define glade_path_password "/com/ublinux/ui/ubl-settings-usergroups-password.glade" #define glade_path_ubl_settings_usergroups_system "/com/ublinux/ui/ubl-settings-usergroups-system.glade"
#define glade_path_system "/com/ublinux/ui/ubl-settings-usergroups-system.glade" #define glade_path_ubl_settings_usergroups_user "/com/ublinux/ui/ubl-settings-usergroups-user.glade"
#define banner_path "/com/ublinux/images/ubl-settings-usergroups-banner.png" #define banner_path "/com/ublinux/images/ubl-settings-usergroups-banner.png"
#define CssPath "/com/ublinux/css/ubl-settings-usergroups.css" #define CssPath "/com/ublinux/css/ubl-settings-usergroups.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) #define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
@ -37,10 +38,6 @@
#define clear_config_global_command "ubconfig --target global remove TEMP_SECTION TEMP_PATAMETER" #define clear_config_global_command "ubconfig --target global remove TEMP_SECTION TEMP_PATAMETER"
#define clear_config_local_command "ubconfig --target system remove TEMP_SECTION TEMP_PATAMETER" #define clear_config_local_command "ubconfig --target system remove TEMP_SECTION TEMP_PATAMETER"
#define yon_col(mean) yon_char_append(mean,":")
#define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-usergroups"
typedef char* string; typedef char* string;
string version_application; string version_application;
@ -59,13 +56,14 @@ typedef struct {
int always_open_documentation; int always_open_documentation;
// } Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT // } Standard config. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_config STRUCT
// Type custom parameters below: // Type custom parameters below: :
GtkListStore *usersListStore; GtkListStore *usersListStore;
GtkListStore *groupsListStore; GtkListStore *groupsListStore;
} config;
} config;
typedef struct { typedef struct {
// Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT { // Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT {
GtkWidget *Window; GtkWidget *Window;
GtkWidget *HeadLabel; GtkWidget *HeadLabel;
GtkWidget *PlugBox; GtkWidget *PlugBox;
@ -95,92 +93,128 @@ typedef struct {
GtkWidget *InterfaceBox; GtkWidget *InterfaceBox;
// } Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT // } Standard widgets. DO NOT EDIT - MUST BE SAME AS ublsettings-ui's template_main_window STRUCT
// Type custom parameters below: // Type custom parameters below:
GtkWidget *button1; GtkListStore *CacheAlgList;
GtkWidget *button2; GtkListStore *GroupsList;
GtkWidget *button3; GtkListStore *UsersList;
GtkWidget *AddButton; GtkWidget *button1;
GtkWidget *EditButton; GtkWidget *button2;
GtkWidget *DeleteButton; GtkWidget *button3;
GtkWidget *UpdateButton; GtkWidget *AddButton;
GtkWidget *EditButton;
GtkWidget *UsersTree; GtkWidget *DeleteButton;
GtkWidget *GroupsTree; GtkWidget *UpdateButton;
GtkWidget *UsersTree;
GtkWidget *GroupsTree;
GtkWidget *MainNotebook;
} main_window; } main_window;
typedef struct { typedef struct {
GtkWidget *Window; GtkWidget *Window;
GtkWidget *HatText;
GtkWidget *HeaderText;
GtkWidget *InfoText;
GtkWidget *AlwaysOpenCheck; GtkWidget *AlwaysOpenCheck;
GtkWidget *CloseButton; GtkWidget *CloseButton;
GtkWidget *AcceptButton; GtkWidget *AcceptButton;
} documentation_confirmation_window; } documentation_confirmation_window;
typedef struct { typedef struct{
GtkWidget *GroupsWindow; GtkWidget *Window;
GtkWidget *GroupsTree; GtkWidget *StatusBox;
GtkWidget *GroupsCancelButton; GtkWidget *DefaultUserNameEntry;
GtkWidget *GroupsOkButton; GtkWidget *DefaultUserAdministratorCheck;
} groups_window; GtkWidget *DefaultPasswordCombo;
GtkWidget *DefaultPasswordEntry;
GtkWidget *RootPasswordCombo;
GtkWidget *RootPasswordEntry;
GtkWidget *PasswordHashCombo;
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
} ubl_settings_usergroups_additional_settings_window;
typedef struct{
GtkWidget *CreateGroupWindow;
GtkWidget *StatusBox;
GtkWidget *userUIDAutoCheck;
GtkWidget *userUIDEntry;
GtkWidget *userLoginEntry;
GtkWidget *userGroupsEntry;
GtkWidget *UserAdditionalGroupsButton;
GtkWidget *UserCancelButton;
GtkWidget *UserOkButton;
} ubl_settings_usergroups_group_creation_window;
typedef struct{
GtkWidget *groupsAdmGroupCheck;
GtkWidget *groupsAudioGroupCheck;
GtkWidget *groupsAutologinGroupCheck;
GtkWidget *groupsAvahiGroupCheck;
GtkWidget *groupsBinGroupCheck;
GtkWidget *groupsBrlapiGroupCheck;
GtkWidget *groupsBrittyGroupCheck;
GtkWidget *groupsBumblbeeGroupCheck;
GtkWidget *groupsChronyGroupCheck;
GtkWidget *groupsClamavGroupCheck;
GtkWidget *groupsCockpitWsGroupCheck;
GtkWidget *groupsCockpitWsinstanceGroupCheck;
GtkWidget *groupsColordGroupCheck;
GtkWidget *GroupsWindow;
GtkWidget *GroupsTree;
GtkWidget *GroupsCancelButton;
GtkWidget *GroupsOkButton;
} ubl_settings_usergroups_group_window;
typedef struct{
GtkWidget *CreateGroupWindow;
GtkWidget *StatusBox;
GtkWidget *UserCancelButton;
GtkWidget *UserOkButton;
} ubl_settings_usergroups_password_window;
typedef struct{
GtkListStore *liststore1;
GtkListStore *liststore2;
GtkWidget *MonitorWindow;
GtkWidget *SettingsBar;
} ubl_settings_usergroups_system_window;
typedef struct{
GtkWidget *CreateUserWindow;
GtkWidget *StatusBox;
GtkWidget *userUIDAutoCheck;
GtkWidget *userUIDEntry;
GtkWidget *userLoginEntry;
GtkWidget *userPasswordCombo;
GtkWidget *userPasswordEntry;
GtkWidget *userPasswordButton;
GtkWidget *userUserNameEntry;
GtkWidget *userGroupsCheck;
GtkWidget *userGroupsEntry;
GtkWidget *UserGroupsButton;
GtkWidget *userAdditionalGroupsEntry;
GtkWidget *userAdditionalGroupsButton;
GtkWidget *userPasswordChangedEntry;
GtkWidget *userPasswordExpirationEntry;
GtkWidget *userPasswordExpirationButton;
GtkWidget *userPasswordChangeDelayMinimumSpin;
GtkWidget *userPasswordChangeDelayMaximumSpin;
GtkWidget *userWarningSpin;
GtkWidget *userActivitySpin;
GtkWidget *userForceChangeCheck;
GtkWidget *userShellCombo;
GtkWidget *userShellEntry;
GtkWidget *userHomeCombo;
GtkWidget *userHomeEntry;
GtkWidget *userHomeButton;
GtkWidget *userCreateSystemCheck;
GtkWidget *userCreateUnuniqueCheck;
GtkWidget *userDontCheckCheck;
GtkWidget *userSyncSAMBACheck;
GtkWidget *userDeactivatedCheck;
GtkWidget *userExtraOptionsEntry;
GtkWidget *UserCancelButton;
GtkWidget *UserOkButton;
} ubl_settings_usergroups_user_window;
typedef struct {
GtkWidget *CreateUserWindow;
GtkWidget *userUIDAutoCheck;
GtkWidget *userUIDEntry;
GtkWidget *userLoginEntry;
GtkWidget *userPasswordCombo;
GtkWidget *userPasswordEntry;
GtkWidget *userPasswordButton;
GtkWidget *userUserNameEntry;
GtkWidget *userGroupsCheck;
GtkWidget *userGroupsEntry;
GtkWidget *UserGroupsButton;
GtkWidget *userCreateHomeFolderCheck;
GtkWidget *userHomeFolderEntry;
GtkWidget *userHomeFolderButton;
GtkWidget *userAdditionalGroupsEntry;
GtkWidget *userAdditionalGroupsButton;
GtkWidget *userPasswordChangedEntry;
GtkWidget *userPasswordExpirationEntry;
GtkWidget *userPasswordExpirationButton;
GtkWidget *userPasswordChangeDelayMinimumSpin;
GtkWidget *userPasswordChangeDelayMaximumSpin;
GtkWidget *userWarningSpin;
GtkWidget *userActivitySpin;
GtkWidget *userForceChangeCheck;
GtkWidget *userShellCombo;
GtkWidget *userShellEntry;
GtkWidget *userHomeCombo;
GtkWidget *userHomeEntry;
GtkWidget *userHomeButton;
GtkWidget *userCreateSystemCheck;
GtkWidget *userCreateUnuniqueCheck;
GtkWidget *userDontCheckCheck;
GtkWidget *userSyncSAMBACheck;
GtkWidget *userDeactivatedCheck;
GtkWidget *userExtraOptionsEntry;
GtkWidget *UserCancelButton;
GtkWidget *UserOkButton;
GtkWidget *userTitleNameLabel;
} user_window;
typedef struct {
GtkWidget *Window;
GtkWidget *StatusBox;
GtkWidget *DefaultUserNameEntry;
GtkWidget *DefaultUserAdministratorCheck;
GtkWidget *DefaultPasswordCombo;
GtkWidget *DefaultPasswordEntry;
GtkWidget *RootPasswordCombo;
GtkWidget *RootPasswordEntry;
GtkWidget *PasswordHashCombo;
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
} additional_config_window;
main_window *setup_window();

@ -72,6 +72,7 @@
<object class="GtkEntry" id="DefaultUserNameEntry"> <object class="GtkEntry" id="DefaultUserNameEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.profile-symbolic</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -130,6 +131,7 @@
<object class="GtkComboBoxText" id="DefaultPasswordCombo"> <object class="GtkComboBoxText" id="DefaultPasswordCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property>
<items> <items>
<item translatable="yes">Default</item> <item translatable="yes">Default</item>
<item translatable="yes">No password required</item> <item translatable="yes">No password required</item>
@ -138,7 +140,7 @@
</items> </items>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
@ -149,7 +151,9 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="max-length">30</property> <property name="max-length">30</property>
<property name="visibility">False</property> <property name="visibility">False</property>
<property name="invisible-char">●</property> <property name="invisible-char">*</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.key-symbolic</property>
<property name="placeholder-text" translatable="yes">********</property>
<property name="input-purpose">password</property> <property name="input-purpose">password</property>
</object> </object>
<packing> <packing>
@ -187,6 +191,7 @@
<object class="GtkComboBoxText" id="RootPasswordCombo"> <object class="GtkComboBoxText" id="RootPasswordCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property>
<items> <items>
<item translatable="yes">Default</item> <item translatable="yes">Default</item>
<item translatable="yes">No password required</item> <item translatable="yes">No password required</item>
@ -195,7 +200,7 @@
</items> </items>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
@ -206,7 +211,9 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="max-length">30</property> <property name="max-length">30</property>
<property name="visibility">False</property> <property name="visibility">False</property>
<property name="invisible-char">●</property> <property name="invisible-char">*</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.key-symbolic</property>
<property name="placeholder-text" translatable="yes">********</property>
<property name="input-purpose">password</property> <property name="input-purpose">password</property>
</object> </object>
<packing> <packing>

@ -1,16 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 --> <!-- Generated with glade 3.38.2 -->
<interface> <interface domain="ubl-settings-usergroups">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-usergroups.css -->
<object class="GtkImage" id="image1"> <object class="GtkImage" id="image1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">avatar-default-symbolic</property> <property name="icon-name">com.ublinux.ubl-settings-usergroups.profile-settings-symbolic</property>
</object> </object>
<object class="GtkImage" id="image2"> <object class="GtkImage" id="image2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="stock">gtk-missing-image</property> <property name="icon-name">com.ublinux.ubl-settings-usergroups.edit-symbolic</property>
</object> </object>
<object class="GtkImage" id="image4"> <object class="GtkImage" id="image4">
<property name="visible">True</property> <property name="visible">True</property>
@ -32,6 +33,7 @@
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
@ -131,6 +133,7 @@
<object class="GtkEntry" id="userLoginEntry"> <object class="GtkEntry" id="userLoginEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.profile-symbolic</property>
<property name="placeholder-text" translatable="yes">login</property> <property name="placeholder-text" translatable="yes">login</property>
</object> </object>
<packing> <packing>
@ -212,8 +215,6 @@
<property name="halign">end</property> <property name="halign">end</property>
<property name="margin-start">5</property> <property name="margin-start">5</property>
<property name="margin-end">5</property> <property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<property name="homogeneous">True</property> <property name="homogeneous">True</property>
<child> <child>
@ -270,7 +271,9 @@
<object class="GtkAlignment"> <object class="GtkAlignment">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="left-padding">12</property> <property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
@ -279,7 +282,7 @@
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkCheckButton"> <object class="GtkCheckButton">
<property name="label" translatable="yes">Allow creation of groups with ununique GID</property> <property name="label" translatable="yes">Create group with ununique GID</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">False</property> <property name="receives-default">False</property>
@ -326,9 +329,16 @@
<object class="GtkComboBoxText"> <object class="GtkComboBoxText">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Default</item>
<item translatable="yes">No password required</item>
<item translatable="yes">Set a password</item>
<item translatable="yes">Encrypted password</item>
</items>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
@ -337,9 +347,13 @@
<object class="GtkEntry"> <object class="GtkEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="visibility">False</property>
<property name="invisible-char">*</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.key-symbolic</property>
<property name="placeholder-text" translatable="yes">********</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">2</property>
</packing> </packing>
@ -350,6 +364,9 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="image">image2</property> <property name="image">image2</property>
<style>
<class name="thin"/>
</style>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -372,14 +389,14 @@
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Additional settings</property> <property name="label" translatable="yes">Additional configuration</property>
</object> </object>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">3</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -388,6 +405,7 @@
<object class="GtkHeaderBar"> <object class="GtkHeaderBar">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title"> <child type="title">
<object class="GtkLabel" id="userTitleNameLabel"> <object class="GtkLabel" id="userTitleNameLabel">
<property name="visible">True</property> <property name="visible">True</property>

@ -2,6 +2,7 @@
<!-- Generated with glade 3.38.2 --> <!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-usergroups"> <interface domain="ubl-settings-usergroups">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-usergroups.css -->
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -217,7 +218,7 @@
<property name="margin-top">5</property> <property name="margin-top">5</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">10</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkScrolledWindow"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>

@ -1,21 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 --> <!-- Generated with glade 3.38.2 -->
<interface> <interface domain="ubl-settings-usergroups">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-usergroups.css -->
<object class="GtkImage" id="image1"> <object class="GtkImage" id="image1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="stock">gtk-missing-image</property> <property name="icon-name">com.ublinux.ubl-settings-usergroups.view-symbolic</property>
</object> </object>
<object class="GtkImage" id="image2"> <object class="GtkImage" id="image2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="stock">gtk-missing-image</property> <property name="icon-name">com.ublinux.ubl-settings-usergroups.view-symbolic</property>
</object> </object>
<object class="GtkImage" id="image3"> <object class="GtkImage" id="image3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="stock">gtk-missing-image</property> <property name="icon-name">com.ublinux.ubl-settings-usergroups.view-symbolic</property>
</object>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">process-stop-symbolic</property>
</object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property>
</object> </object>
<object class="GtkApplicationWindow" id="CreateGroupWindow"> <object class="GtkApplicationWindow" id="CreateGroupWindow">
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -27,6 +38,7 @@
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
@ -51,10 +63,7 @@
<property name="halign">end</property> <property name="halign">end</property>
<property name="margin-left">5</property> <property name="margin-left">5</property>
<property name="margin-right">5</property> <property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property> <property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<property name="homogeneous">True</property> <property name="homogeneous">True</property>
<child> <child>
@ -103,6 +112,8 @@
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
@ -127,6 +138,10 @@
<object class="GtkEntry"> <object class="GtkEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="visibility">False</property>
<property name="invisible-char">*</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.key-symbolic</property>
<property name="placeholder-text" translatable="yes">********</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -140,6 +155,9 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="image">image3</property> <property name="image">image3</property>
<style>
<class name="thin"/>
</style>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -176,6 +194,10 @@
<object class="GtkEntry"> <object class="GtkEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="visibility">False</property>
<property name="invisible-char">*</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.key-symbolic</property>
<property name="placeholder-text" translatable="yes">********</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -189,6 +211,9 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="image">image1</property> <property name="image">image1</property>
<style>
<class name="thin"/>
</style>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -249,6 +274,9 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="image">image2</property> <property name="image">image2</property>
<style>
<class name="thin"/>
</style>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -265,7 +293,7 @@
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">2</property>
</packing> </packing>
@ -297,14 +325,4 @@
<widget name="label3"/> <widget name="label3"/>
</widgets> </widgets>
</object> </object>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">process-stop-symbolic</property>
</object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property>
</object>
</interface> </interface>

@ -1,20 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 --> <!-- Generated with glade 3.38.2 -->
<interface> <interface domain="ubl-settings-usergroups">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-usergroups.css -->
<object class="GtkImage" id="image1"> <object class="GtkImage" id="image1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="stock">gtk-missing-image</property> <property name="icon-name">com.ublinux.ubl-settings-usergroups.funnel-symbolic</property>
</object> </object>
<object class="GtkImage" id="image2"> <object class="GtkImage" id="image2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="stock">gtk-missing-image</property> <property name="icon-name">com.ublinux.ubl-settings-usergroups.sync-symbolic</property>
</object> </object>
<object class="GtkListStore" id="liststore1"/> <object class="GtkListStore" id="liststore1"/>
<object class="GtkListStore" id="liststore2"/> <object class="GtkListStore" id="liststore2"/>
<object class="GtkApplicationWindow" id="helpConfirmationWindow"> <object class="GtkApplicationWindow" id="MonitorWindow">
<property name="width-request">800</property> <property name="width-request">800</property>
<property name="height-request">600</property> <property name="height-request">600</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>

@ -159,6 +159,7 @@
<object class="GtkEntry" id="userLoginEntry"> <object class="GtkEntry" id="userLoginEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.profile-symbolic</property>
<property name="placeholder-text" translatable="yes">login</property> <property name="placeholder-text" translatable="yes">login</property>
</object> </object>
<packing> <packing>
@ -196,8 +197,12 @@
<object class="GtkComboBoxText" id="userPasswordCombo"> <object class="GtkComboBoxText" id="userPasswordCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property>
<items> <items>
<item translatable="yes">Default</item> <item translatable="yes">Default</item>
<item translatable="yes">No password required</item>
<item translatable="yes">Set a password</item>
<item translatable="yes">Encrypted password</item>
</items> </items>
</object> </object>
<packing> <packing>
@ -212,6 +217,7 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="visibility">False</property> <property name="visibility">False</property>
<property name="invisible-char">*</property> <property name="invisible-char">*</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.key-symbolic</property>
<property name="secondary-icon-activatable">False</property> <property name="secondary-icon-activatable">False</property>
<property name="secondary-icon-sensitive">False</property> <property name="secondary-icon-sensitive">False</property>
<property name="placeholder-text" translatable="yes">******</property> <property name="placeholder-text" translatable="yes">******</property>

@ -264,7 +264,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkNotebook"> <object class="GtkNotebook" id="MainNotebook">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<child> <child>

Loading…
Cancel
Save