Added callbacks for inspector window

pull/14/head
parent 5f01038b0d
commit 07d56252b0

@ -211,7 +211,7 @@ void on_additional_settings_clicked(GtkWidget *self, GtkEntry *output_target){
}
void on_expiration_clicked(GtkWidget *self, GtkEntry *output_target){
// gtk_popover_popdown();
}
// standard functions
@ -303,7 +303,6 @@ ubl_settings_usergroups_additional_settings_window *yon_ubl_settings_usergroups_
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);
@ -424,7 +423,6 @@ ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group
return window;
}
void on_group_clicked(GtkCellRenderer *self, char *path, ubl_settings_usergroups_group_window *window){
GtkTreeIter iter;
gboolean status;
@ -512,7 +510,6 @@ void on_standard_groups_open(GtkWidget *self, main_window *widgets){
gtk_widget_show(window->GroupsWindow);
}
void on_password_show_hide(GtkEntry *self, GtkEntryIconPosition icon_pos, GdkEvent* event){
if (icon_pos == GTK_ENTRY_ICON_SECONDARY){
int visible = gtk_entry_get_visibility(self);
@ -591,7 +588,108 @@ ubl_settings_usergroups_password_window *yon_ubl_settings_usergroups_password_ne
return window;
}
void on_mode_changed(GtkWidget *self, ubl_settings_usergroups_system_window *window){
if (window->show_all==0){
window->show_all=1;
} else {
window->show_all=0;
}
gtk_list_store_clear(window->liststore1);
gtk_list_store_clear(window->liststore2);
GtkTreeIter iter;
for (int i=0;i<main_config.groups_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(main_config.groups[i],&parsed_size,":");
if ((atoi(parsed[2])>=main_config.MINUID&&atoi(parsed[2])<=main_config.MAXUID)||window->show_all==1){
gtk_list_store_append(window->liststore2,&iter);
gtk_list_store_set(window->liststore2,&iter,0,atol(parsed[2]),1,parsed[0],2,parsed[3],-1);
}
}
for (int i=0;i<main_config.users_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(main_config.users[i],&parsed_size,":");
if ((atoi(parsed[2])>=main_config.MINUID&&atoi(parsed[2])<=main_config.MAXUID)||window->show_all==1){
char *groups_string="";
char *main_group_name="";
for (int j=0;j<main_config.groups_size;j++){
int parsed_gr_size;
config_str parsed_group = yon_char_parse(main_config.groups[j],&parsed_gr_size,":");
if (atol(parsed[2])==atol(parsed_group[2])){
main_group_name=yon_char_new(parsed_group[0]);
}
if (strstr(parsed_group[3],parsed[0])){
groups_string = yon_char_unite(groups_string,!yon_char_is_empty(groups_string)?",":"",parsed_group[0],NULL);
}
yon_char_parsed_free(parsed_group,parsed_gr_size);
}
gtk_list_store_append(window->liststore1,&iter);
gtk_list_store_set(window->liststore1,&iter,1,atol(parsed[2]),2,parsed[0],3,parsed[0],4,main_group_name,5,groups_string,6,parsed[5],-1);
}
yon_char_parsed_free(parsed,parsed_size);
}
}
void on_system_update(GtkWidget *self, ubl_settings_usergroups_system_window *window){
main_config.groups = yon_file_open(groups_path,&main_config.groups_size);
main_config.users = yon_file_open(users_path,&main_config.users_size);
int login_size;
config_str login_defs = yon_file_open(uid_path,&login_size);
for (int i=0;i<login_size;i++){
if (login_defs[i][0]!='#'){
char *copy = yon_char_new(login_defs[i]);
char *divided = yon_char_divide(copy,7);
if (divided){
if (!strcmp(divided,"UID_MAX")){
main_config.MAXUID = atol(strstr(login_defs[i],"\t"));
}
else if (!strcmp(divided,"UID_MIN")){
main_config.MINUID = atol(strstr(login_defs[i],"\t"));
}
else if (!strcmp(divided,"GID_MAX")){
main_config.MAXGID = atol(strstr(login_defs[i],"\t"));
}
else if (!strcmp(divided,"GID_MIN")){
main_config.MINGID = atol(strstr(login_defs[i],"\t"));
}
}
}
}
yon_char_parsed_free(login_defs,login_size);
gtk_list_store_clear(window->liststore1);
gtk_list_store_clear(window->liststore2);
GtkTreeIter iter;
for (int i=0;i<main_config.groups_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(main_config.groups[i],&parsed_size,":");
if ((atoi(parsed[2])>=main_config.MINUID&&atoi(parsed[2])<=main_config.MAXUID)||window->show_all==1){
gtk_list_store_append(window->liststore2,&iter);
gtk_list_store_set(window->liststore2,&iter,0,atol(parsed[2]),1,parsed[0],2,parsed[3],-1);
}
}
for (int i=0;i<main_config.users_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(main_config.users[i],&parsed_size,":");
if ((atoi(parsed[2])>=main_config.MINUID&&atoi(parsed[2])<=main_config.MAXUID)||window->show_all==1){
char *groups_string="";
char *main_group_name="";
for (int j=0;j<main_config.groups_size;j++){
int parsed_gr_size;
config_str parsed_group = yon_char_parse(main_config.groups[j],&parsed_gr_size,":");
if (atol(parsed[2])==atol(parsed_group[2])){
main_group_name=yon_char_new(parsed_group[0]);
}
if (strstr(parsed_group[3],parsed[0])){
groups_string = yon_char_unite(groups_string,!yon_char_is_empty(groups_string)?",":"",parsed_group[0],NULL);
}
yon_char_parsed_free(parsed_group,parsed_gr_size);
}
gtk_list_store_append(window->liststore1,&iter);
gtk_list_store_set(window->liststore1,&iter,1,atol(parsed[2]),2,parsed[0],3,parsed[0],4,main_group_name,5,groups_string,6,parsed[5],-1);
}
yon_char_parsed_free(parsed,parsed_size);
}
}
ubl_settings_usergroups_system_window *yon_ubl_settings_usergroups_system_new(){
ubl_settings_usergroups_system_window *window = malloc(sizeof(ubl_settings_usergroups_system_window));
@ -599,14 +697,50 @@ ubl_settings_usergroups_system_window *yon_ubl_settings_usergroups_system_new(){
window->liststore1=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
window->liststore2=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore2"));
window->MonitorWindow=yon_gtk_builder_get_widget(builder,"MonitorWindow");
window->SettingsBar=yon_gtk_builder_get_widget(builder,"SettingsBar");
window->ToggleAllButton=yon_gtk_builder_get_widget(builder,"ToggleAllButton");
window->UpdateButton=yon_gtk_builder_get_widget(builder,"UpdateButton");
window->show_all=0;
gtk_window_set_title(GTK_WINDOW(window->MonitorWindow),INSPECTOR_TITLE_LABEL);
g_signal_connect(G_OBJECT(window->ToggleAllButton),"clicked",G_CALLBACK(on_mode_changed),window);
g_signal_connect(G_OBJECT(window->UpdateButton),"clicked",G_CALLBACK(on_system_update),window);
GtkTreeIter iter;
for (int i=0;i<main_config.groups_size;i++){
int parsed_size;
if (main_config.groups[i][strlen(main_config.groups[i])-1]=='\n') main_config.groups[i][strlen(main_config.groups[i])-1]='\0';
config_str parsed = yon_char_parse(main_config.groups[i],&parsed_size,":");
if (atoi(parsed[2])>=main_config.MINGID&&atoi(parsed[2])<=main_config.MAXGID){
gtk_list_store_append(window->liststore2,&iter);
gtk_list_store_set(window->liststore2,&iter,0,atol(parsed[2]),1,parsed[0],2,parsed[3],-1);
}
}
for (int i=0;i<main_config.users_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(main_config.users[i],&parsed_size,":");
if (atoi(parsed[2])>=main_config.MINUID&&atoi(parsed[2])<=main_config.MAXUID){
char *groups_string="";
char *main_group_name="";
for (int j=0;j<main_config.groups_size;j++){
int parsed_gr_size;
config_str parsed_group = yon_char_parse(main_config.groups[j],&parsed_gr_size,":");
if (atol(parsed[2])==atol(parsed_group[2])){
main_group_name=yon_char_new(parsed_group[0]);
}
if (strstr(parsed_group[3],parsed[0])){
groups_string = yon_char_unite(groups_string,!yon_char_is_empty(groups_string)?",":"",parsed_group[0],NULL);
}
yon_char_parsed_free(parsed_group,parsed_gr_size);
}
gtk_list_store_append(window->liststore1,&iter);
gtk_list_store_set(window->liststore1,&iter,1,atol(parsed[2]),2,parsed[0],3,parsed[0],4,main_group_name,5,groups_string,6,parsed[5],-1);
}
yon_char_parsed_free(parsed,parsed_size);
}
return window;
}
void on_settings_usergroups_system_open(GtkWidget *self, main_window *widgets){
ubl_settings_usergroups_system_window *window = yon_ubl_settings_usergroups_system_new();
gtk_window_set_transient_for(GTK_WINDOW(window->MonitorWindow),GTK_WINDOW(widgets->Window));
gtk_widget_show(window->MonitorWindow);
}
@ -1068,8 +1202,32 @@ void config_init(){
main_config.groups_size=0;
main_config.load_mode=1;
main_config.groups = yon_file_open(groups_path,&main_config.groups_size);
main_config.users = yon_file_open(users_path,&main_config.users_size);
main_config.users_list=NULL;
main_config.groups_list=NULL;
int login_size;
config_str login_defs = yon_file_open(uid_path,&login_size);
for (int i=0;i<login_size;i++){
if (login_defs[i][0]!='#'){
char *copy = yon_char_new(login_defs[i]);
char *divided = yon_char_divide(copy,7);
if (divided){
if (!strcmp(divided,"UID_MAX")){
main_config.MAXUID = atol(strstr(login_defs[i],"\t"));
}
else if (!strcmp(divided,"UID_MIN")){
main_config.MINUID = atol(strstr(login_defs[i],"\t"));
}
else if (!strcmp(divided,"GID_MAX")){
main_config.MAXGID = atol(strstr(login_defs[i],"\t"));
}
else if (!strcmp(divided,"GID_MIN")){
main_config.MINGID = atol(strstr(login_defs[i],"\t"));
}
}
}
}
yon_char_parsed_free(login_defs,login_size);
}
/**yon_main_window_complete(main_window *widgets)

@ -4,9 +4,9 @@
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <libintl.h>
#include <getopt.h>
#include <libintl.h>
#include <limits.h>
#include <libublsettings.h>
#include <libublsettings-gtk3.h>
#include <libublsettingsui-gtk3.h>
@ -40,6 +40,7 @@
#define groups_path "/etc/group"
#define users_path "/etc/passwd"
#define uid_path "/etc/login.defs"
#define USERADD(user) yon_char_unite("USERADD[",user,"]",NULL)
#define GROUPADD(group) yon_char_unite("GROUPADD[",group,"]",NULL)
@ -70,9 +71,17 @@ typedef struct {
// Type custom parameters below: :
config_str groups;
int groups_size;
config_str users;
int users_size;
GtkListStore *users_list;
GtkListStore *groups_list;
int MAXUID;
int MINUID;
int MAXGID;
int MINGID;
} config;
typedef struct {
@ -191,7 +200,9 @@ typedef struct{
GtkListStore *liststore1;
GtkListStore *liststore2;
GtkWidget *MonitorWindow;
GtkWidget *SettingsBar;
GtkWidget *ToggleAllButton;
GtkWidget *UpdateButton;
int show_all;
} ubl_settings_usergroups_system_window;
typedef struct{

@ -13,8 +13,34 @@
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups.sync-symbolic</property>
</object>
<object class="GtkListStore" id="liststore1"/>
<object class="GtkListStore" id="liststore2"/>
<object class="GtkListStore" id="liststore1">
<columns>
<!-- column-name gboolean1 -->
<column type="gboolean"/>
<!-- column-name gint1 -->
<column type="gint"/>
<!-- column-name gchararray2 -->
<column type="gchararray"/>
<!-- column-name gchararray3 -->
<column type="gchararray"/>
<!-- column-name gchararray4 -->
<column type="gchararray"/>
<!-- column-name gchararray5 -->
<column type="gchararray"/>
<!-- column-name gchararray6 -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkListStore" id="liststore2">
<columns>
<!-- column-name gint1 -->
<column type="gint"/>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
<!-- column-name gchararray3 -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkWindow" id="MonitorWindow">
<property name="width-request">800</property>
<property name="height-request">600</property>
@ -37,7 +63,7 @@
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkButton">
<object class="GtkButton" id="ToggleAllButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
@ -54,7 +80,7 @@
</packing>
</child>
<child>
<object class="GtkButton">
<object class="GtkButton" id="UpdateButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
@ -79,49 +105,119 @@
</child>
<child>
<object class="GtkNotebook">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkTreeView">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">liststore2</property>
<property name="model">liststore1</property>
<property name="enable-grid-lines">both</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
<object class="GtkTreeSelection">
<property name="mode">none</property>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Blocked</property>
<child>
<object class="GtkCellRendererToggle"/>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">UID</property>
<property name="sort-column-id">1</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Login</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Username</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">3</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Primary group</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">4</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Additional groups</property>
<child>
<object class="GtkCellRendererText">
<property name="wrap-width">150</property>
</object>
<attributes>
<attribute name="text">5</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="min-width">50</property>
<property name="title" translatable="yes">Home directory</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">6</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
@ -136,35 +232,63 @@
<property name="tab-fill">False</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkTreeView">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">liststore1</property>
<property name="model">liststore2</property>
<property name="enable-grid-lines">both</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
<object class="GtkTreeSelection">
<property name="mode">none</property>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">GID</property>
<property name="sort-column-id">0</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="min-width">50</property>
<property name="title" translatable="yes">Group</property>
<child>
<object class="GtkCellRendererText"/>
<object class="GtkCellRendererText">
<property name="wrap-width">150</property>
</object>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="min-width">50</property>
<property name="title" translatable="yes">Group users</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
@ -194,7 +318,7 @@
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="SettingsBar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>

@ -64,7 +64,6 @@
<property name="can-focus">False</property>
<property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups</property>
<property name="startup-id">Users and groups - user configuration</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>

Loading…
Cancel
Save