Annotation of sbbs/src/sbbs3/gtkuserlist/events.c, revision 1.1.1.1

1.1       root        1: #include "events.h"
                      2: #include "sbbsdefs.h"
                      3: #include "gtkuserlist.h"
                      4: 
                      5: GladeXML               *lxml;
                      6: 
                      7: char *complete_path(char *dest, char *path, char *filename)
                      8: {
                      9:        if(path != NULL) {
                     10:                strcpy(dest, path);
                     11:                backslash(dest);
                     12:        }
                     13:        else
                     14:                dest[0]=0;
                     15: 
                     16:        if(filename != NULL)
                     17:                strcat(dest, filename);
                     18:        fexistcase(dest);                       /* TODO: Hack: Fixes upr/lwr case fname */
                     19:        return(dest);
                     20: }
                     21: 
                     22: void exec_cmdline(void *cmdline)
                     23: {
                     24:        GtkWidget       *w;
                     25: 
                     26:        if(cmdline==NULL)
                     27:                return;
                     28:        system((char *)cmdline);
                     29:        free(cmdline);
                     30:        w=glade_xml_get_widget(lxml, "UserListWindow");
                     31:        gtk_widget_set_sensitive(GTK_WIDGET(w), TRUE);
                     32: }
                     33: 
                     34: void run_external(char *path, char *filename)
                     35: {
                     36:        static char     cmdline[MAX_PATH*2];
                     37:        GtkWidget       *w;
                     38: 
                     39:        w=glade_xml_get_widget(lxml, "UserListWindow");
                     40:        gtk_widget_set_sensitive(GTK_WIDGET(w), FALSE);
                     41:        complete_path(cmdline,path,filename);
                     42:        _beginthread(exec_cmdline, 0, strdup(cmdline));
                     43: }
                     44: 
                     45: void display_message(char *title, char *message, char *icon)
                     46: {
                     47:        GtkWidget *dialog, *label;
                     48: 
                     49:        dialog=gtk_dialog_new_with_buttons(title
                     50:                        ,GTK_WINDOW(glade_xml_get_widget(lxml, "UserListWindow"))
                     51:                        ,GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT
                     52:                        ,GTK_STOCK_OK
                     53:                        ,GTK_RESPONSE_NONE
                     54:                        ,NULL);
                     55:        if(icon==NULL)
                     56:                icon="gtk-info";
                     57:        gtk_window_set_icon_name(GTK_WINDOW(dialog), icon);
                     58:        label = gtk_label_new (message);
                     59: 
                     60:        g_signal_connect_swapped (dialog
                     61:                        ,"response"
                     62:                        ,G_CALLBACK(gtk_widget_destroy)
                     63:             ,dialog);
                     64:        gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox),
                     65:                        label);
                     66:        gtk_widget_show_all (dialog);
                     67:        gtk_dialog_run(GTK_DIALOG(dialog));
                     68: }
                     69: 
                     70: void update_userlist_sensitive_callback(GtkTreeSelection *wiggy, gpointer data)
                     71: {
                     72:        GtkWidget       *w;
                     73:        int selected;
                     74: 
                     75:        w=glade_xml_get_widget(lxml, "bUserListEditUser");
                     76:        selected=gtk_tree_selection_count_selected_rows(wiggy);
                     77:        gtk_widget_set_sensitive(w, selected==1);
                     78: }
                     79: 
                     80: void update_userlist_item(GtkListStore *lstore, GtkTreeIter *curr, int usernum)
                     81: {
                     82:        char                    sex[2];
                     83:        char                    first[9];
                     84:        char                    last[9];
                     85:        user_t                  user;
                     86: 
                     87:        user.number=usernum;
                     88:        getuserdat(&cfg, &user);
                     89:        if(arbuf) {
                     90:                if(!chk_ar(&cfg, arbuf, &user)) {
                     91:                        gtk_list_store_remove(lstore, curr);
                     92:                        return;
                     93:                }
                     94:        }
                     95:        sex[0]=user.sex;
                     96:        sex[1]=0;
                     97:        unixtodstr(&cfg, user.firston, first);
                     98:        unixtodstr(&cfg, user.laston, last);
                     99:        gtk_list_store_set(lstore, curr
                    100:                ,0,user.number
                    101:                ,1,user.alias
                    102:                ,2,user.name
                    103:                ,3,user.level
                    104:                ,4,getage(&cfg, user.birth)
                    105:                ,5,sex
                    106:                ,6,user.location
                    107:                ,7,user.modem
                    108:                ,8,user.note
                    109:                ,9,user.comp
                    110:                ,10,user.phone
                    111:                ,11,user.netmail
                    112:                ,12,user.logons
                    113:                ,13,first
                    114:                ,14,last
                    115:                ,15,user.firston
                    116:                ,16,user.laston
                    117:                ,-1);
                    118: }
                    119: 
                    120: void update_userlist_callback(GtkWidget *wiggy, gpointer data)
                    121: {
                    122:        GtkWidget               *w;
                    123:        GtkListStore    *lstore = NULL;
                    124:        int                             totalusers;
                    125:        int                             i;
                    126:        GtkTreeIter             curr;
                    127:        char                    str[1024];
                    128: 
                    129:        free_cfg(&cfg);
                    130:        if(!load_cfg(&cfg, NULL, TRUE, str)) {
                    131:                display_message("Load Error","Cannot load configuration data","gtk-dialog-error");
                    132:                return;
                    133:     }
                    134: 
                    135:        w=glade_xml_get_widget(lxml, "lUserList");
                    136:        lstore=GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(w)));
                    137:        gtk_list_store_clear(lstore);
                    138:        totalusers=lastuser(&cfg);
                    139:        for(i=1; i<=totalusers; i++) {
                    140:                gtk_list_store_insert(lstore, &curr, i-1);
                    141:                update_userlist_item(lstore, &curr, i);
                    142:        }
                    143: }
                    144: 
                    145: void quick_validate(int usernum, int set)
                    146: {
                    147:        user_t          user;
                    148:        int                     res;
                    149:        char            str[1024];
                    150: 
                    151:        user.number=usernum;
                    152:        if((res=getuserdat(&cfg,&user))) {
                    153:                sprintf(str,"Error loading user %d.\n",usernum);
                    154:                display_message("Load Error",str,"gtk-dialog-error");
                    155:                return;
                    156:        }
                    157:        user.flags1=cfg.val_flags1[set];
                    158:        user.flags2=cfg.val_flags2[set];
                    159:        user.flags3=cfg.val_flags3[set];
                    160:        user.flags4=cfg.val_flags4[set];
                    161:        user.exempt=cfg.val_exempt[set];
                    162:        user.rest=cfg.val_rest[set];
                    163:        if(cfg.val_expire[set]) {
                    164:                user.expire=time(NULL)
                    165:                        +(cfg.val_expire[set]*24*60*60);
                    166:        }
                    167:        else
                    168:                user.expire=0;
                    169:        user.level=cfg.val_level[set];
                    170:        if((res=putuserdat(&cfg,&user))) {
                    171:                sprintf(str,"Error saving user %d.\n",usernum);
                    172:                display_message("Save Error",str,"gtk=dialog-error");
                    173:        }
                    174: }
                    175: 
                    176: void userlist_do_quick_validate(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
                    177: {
                    178:        int     *set=data;
                    179:        int     usernum;
                    180: 
                    181:        gtk_tree_model_get(model, iter, 0, &usernum, -1);
                    182:        quick_validate(usernum,*set);
                    183:        update_userlist_item(GTK_LIST_STORE(model), iter, usernum);
                    184: }
                    185: 
                    186: void on_userlist_quick_validate(GtkWidget *wiggy, gpointer data)
                    187: {
                    188:        int             set;
                    189:        GtkWidget       *w;
                    190: 
                    191:        w=glade_xml_get_widget(lxml, "lUserList");
                    192:        set=gtk_combo_box_get_active(GTK_COMBO_BOX(wiggy))-1;
                    193:        if(set>=0) {
                    194:                gtk_tree_selection_selected_foreach(gtk_tree_view_get_selection (GTK_TREE_VIEW (w))
                    195:                                ,userlist_do_quick_validate
                    196:                                ,&set);
                    197:                gtk_combo_box_set_active(GTK_COMBO_BOX(wiggy), 0);
                    198:        }
                    199: }
                    200: 
                    201: void get_lastselected_user(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
                    202: {
                    203:        int     *i=data;
                    204:        int     user;
                    205: 
                    206:        gtk_tree_model_get(model, iter, 0, &user, -1);
                    207:        *i=user;
                    208: }
                    209: 
                    210: void userlist_edituser(GtkWidget *wiggy, gpointer data)
                    211: {
                    212:        char    str[MAX_PATH+1];
                    213:        int             i;
                    214:        GtkWidget       *w;
                    215: 
                    216:        w=glade_xml_get_widget(lxml, "lUserList");
                    217:        gtk_tree_selection_selected_foreach(gtk_tree_view_get_selection (GTK_TREE_VIEW (w))
                    218:                        ,get_lastselected_user
                    219:                        ,&i);
                    220: 
                    221:        sprintf(str,"gtkuseredit %d",i);
                    222:        run_external(cfg.exec_dir,str);
                    223: }
                    224: 
                    225: void apply_ars_filter(GtkWidget *wiggy, gpointer data)
                    226: {
                    227:        GtkWidget       *w;
                    228: 
                    229:        w=glade_xml_get_widget(lxml, "eArsFilter");
                    230:        arbuf=arstr(NULL, (char *)gtk_entry_get_text(GTK_ENTRY(w)), &cfg);
                    231:        update_userlist_callback(wiggy, data);
                    232: }
                    233: 
                    234: void clear_ars_filter(GtkWidget *wiggy, gpointer data)
                    235: {
                    236:        GtkWidget       *w;
                    237: 
                    238:        w=glade_xml_get_widget(lxml, "eArsFilter");
                    239:        gtk_entry_set_text(GTK_ENTRY(w),"");
                    240:        arbuf=NULL;
                    241:        update_userlist_callback(wiggy, data);
                    242: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.