Annotation of sbbs/src/sbbs3/gtkuseredit/gtkuseredit.c, revision 1.1

1.1     ! root        1: #include <gtk/gtk.h>
        !             2: #include <glade/glade.h>
        !             3: 
        !             4: #include "sbbs.h"
        !             5: #include "dirwrap.h"
        !             6: 
        !             7: #include "events.h"
        !             8: #include "gtkuseredit.h"
        !             9: 
        !            10: scfg_t cfg;
        !            11: user_t user;
        !            12: GladeXML *xml;
        !            13: int            totalusers=0;
        !            14: int            current_user=0;
        !            15: char   glade_path[MAX_PATH+1];
        !            16: 
        !            17: /* Refreshes global variables... ie: Number of users */
        !            18: int refresh_globals(void)
        !            19: {
        !            20:        char            str[1024];
        !            21:        GtkWidget       *cCommandShell;
        !            22:        GtkWidget       *cExternalEditor;
        !            23:        GtkWidget       *cDefaultDownloadProtocol;
        !            24:        GtkWidget       *cTempQWKFileType;
        !            25:        GtkWidget       *w;
        !            26:        int                     i;
        !            27: 
        !            28:        /* Clear out old combo boxes */
        !            29:        cCommandShell=glade_xml_get_widget(xml, "cCommandShell");
        !            30:        if(w==NULL) {
        !            31:                fprintf(stderr,"Cannot get the command shell widget\n");
        !            32:                return(-1);
        !            33:        }
        !            34:        for(i=0; i<cfg.total_shells; i++)
        !            35:                gtk_combo_box_remove_text(GTK_COMBO_BOX(cCommandShell), 0);
        !            36:        cExternalEditor=glade_xml_get_widget(xml, "cExternalEditor");
        !            37:        if(w==NULL) {
        !            38:                fprintf(stderr,"Cannot get the external editor widget\n");
        !            39:                return(-1);
        !            40:        }
        !            41:        for(i=0; i<cfg.total_xedits; i++)
        !            42:                gtk_combo_box_remove_text(GTK_COMBO_BOX(cExternalEditor), 0);
        !            43:        cDefaultDownloadProtocol=glade_xml_get_widget(xml, "cDefaultDownloadProtocol");
        !            44:        if(w==NULL) {
        !            45:                fprintf(stderr,"Cannot get the default download protocol widget\n");
        !            46:                return(-1);
        !            47:        }
        !            48:        for(i=0; i<cfg.total_prots; i++)
        !            49:                gtk_combo_box_remove_text(GTK_COMBO_BOX(cDefaultDownloadProtocol), 0);
        !            50:        cTempQWKFileType=glade_xml_get_widget(xml, "cTempQWKFileType");
        !            51:        if(w==NULL) {
        !            52:                fprintf(stderr,"Cannot get the temp/QWK file type widget\n");
        !            53:                return(-1);
        !            54:        }
        !            55:        for(i=0; i<cfg.total_fcomps; i++)
        !            56:                gtk_combo_box_remove_text(GTK_COMBO_BOX(cTempQWKFileType), 0);
        !            57: 
        !            58:     /* Read .cfg files here */
        !            59:     if(!load_cfg(&cfg, NULL, TRUE, str)) {
        !            60:                fprintf(stderr,"Cannot load configuration data\n");
        !            61:         return(-1);
        !            62:        }
        !            63: 
        !            64:        /* Re-add combobox values */
        !            65:        for(i=0; i<cfg.total_shells; i++)
        !            66:                gtk_combo_box_append_text(GTK_COMBO_BOX(cCommandShell), cfg.shell[i]->name);
        !            67:        gtk_combo_box_append_text(GTK_COMBO_BOX(cExternalEditor), "Internal Editor");
        !            68:        for(i=0; i<cfg.total_xedits; i++)
        !            69:                gtk_combo_box_append_text(GTK_COMBO_BOX(cExternalEditor), cfg.xedit[i]->name);
        !            70:        gtk_combo_box_append_text(GTK_COMBO_BOX(cDefaultDownloadProtocol), "Not Specified");
        !            71:        for(i=0; i<cfg.total_prots; i++)
        !            72:                gtk_combo_box_append_text(GTK_COMBO_BOX(cDefaultDownloadProtocol), cfg.prot[i]->name);
        !            73:        for(i=0; i<cfg.total_fcomps; i++)
        !            74:                gtk_combo_box_append_text(GTK_COMBO_BOX(cTempQWKFileType), cfg.fcomp[i]->ext);
        !            75: 
        !            76:        totalusers=lastuser(&cfg);
        !            77:        sprintf(str,"of %d",totalusers);
        !            78:        w=glade_xml_get_widget(xml, "lTotalUsers");
        !            79:        if(w==NULL) {
        !            80:                fprintf(stderr,"Cannot get the total users widget\n");
        !            81:                return(-1);
        !            82:        }
        !            83:        gtk_label_set_text(GTK_LABEL(w), str);
        !            84: 
        !            85:        return(0);
        !            86: }
        !            87: 
        !            88: /* Initializes global stuff, loads first user etc */
        !            89: int read_config(void)
        !            90: {
        !            91:        char    ctrl_dir[MAX_PATH+1];
        !            92:        char    str[1024];
        !            93:        char    *p;
        !            94: 
        !            95:        p=getenv("SBBSCTRL");
        !            96:        if(p==NULL) {
        !            97:                fprintf(stderr,"SBBSCTRL not set\n");
        !            98:                return(-1);
        !            99:        }
        !           100:        SAFECOPY(ctrl_dir, p);
        !           101:        prep_dir("",ctrl_dir,sizeof(ctrl_dir));
        !           102:        if(!isdir(ctrl_dir)) {
        !           103:                fprintf(stderr,"SBBSCTRL does not point to a directory\n");
        !           104:                return(-1);
        !           105:        }
        !           106:     memset(&cfg,0,sizeof(cfg));
        !           107:     cfg.size=sizeof(cfg);
        !           108:     SAFECOPY(cfg.ctrl_dir,ctrl_dir);
        !           109: 
        !           110:        /*
        !           111:         * The following are to make up for Glade hacks... we want a text list
        !           112:         * in the combo boxes... Galde does this *if* there's predefined text.
        !           113:         * So, we need to remove it during the refresh.
        !           114:         */
        !           115:        cfg.total_shells=1;
        !           116:        cfg.total_xedits=1;
        !           117:        cfg.total_prots=1;
        !           118:        cfg.total_fcomps=1;
        !           119: 
        !           120:        if(refresh_globals())
        !           121:                return(-1);
        !           122:        if(totalusers > 0)
        !           123:                update_current_user(1);
        !           124:        return(0);
        !           125: }
        !           126: 
        !           127: int main(int argc, char *argv[]) {
        !           128: 
        !           129:     gtk_init(&argc, &argv);
        !           130:     glade_init();
        !           131: 
        !           132:     /* load the interface */
        !           133:        strcpy(glade_path, argv[0]);
        !           134:        strcpy(getfname(glade_path), "gtkuseredit.glade");
        !           135:     xml = glade_xml_new(glade_path, "MainWindow", NULL);
        !           136:     /* connect the signals in the interface */
        !           137:     glade_xml_signal_autoconnect(xml);
        !           138:        /* Set up the global config stuff. */
        !           139:        if(read_config())
        !           140:                return(1);
        !           141: 
        !           142:        if(argc>1) {
        !           143:                if(atoi(argv[1]))
        !           144:                        update_current_user(atoi(argv[1]));
        !           145:                else {
        !           146:                        unsigned int    nu;
        !           147:                        nu=matchuser(&cfg, argv[1], TRUE);
        !           148:                        if(nu)
        !           149:                                update_current_user(nu);
        !           150:                        else {
        !           151:                                GladeXML        *cxml;
        !           152:                                cxml = glade_xml_new(glade_path, "NotFoundWindow", NULL);
        !           153:                                glade_xml_signal_autoconnect(cxml);
        !           154:                                gtk_window_present(GTK_WINDOW(glade_xml_get_widget(cxml, "NotFoundWindow")));
        !           155:                        }
        !           156:                }
        !           157:        }
        !           158: 
        !           159:     /* start the event loop */
        !           160:     gtk_main();
        !           161:     return 0;
        !           162: }

unix.superglobalmegacorp.com

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