Annotation of sbbs/src/sbbs3/ctrl/configwizardunit.cpp, revision 1.1

1.1     ! root        1: /* Synchronet Control Panel (GUI Borland C++ Builder Project for Win32) */
        !             2: 
        !             3: /* $Id: ConfigWizardUnit.cpp,v 1.21 2006/09/24 20:05:20 deuce Exp $ */
        !             4: 
        !             5: /****************************************************************************
        !             6:  * @format.tab-size 4          (Plain Text/Source Code File Header)                    *
        !             7:  * @format.use-tabs true       (see http://www.synchro.net/ptsc_hdr.html)              *
        !             8:  *                                                                                                                                                     *
        !             9:  * Copyright 2005 Rob Swindell - http://www.synchro.net/copyright.html         *
        !            10:  *                                                                                                                                                     *
        !            11:  * This program is free software; you can redistribute it and/or                       *
        !            12:  * modify it under the terms of the GNU General Public License                         *
        !            13:  * as published by the Free Software Foundation; either version 2                      *
        !            14:  * of the License, or (at your option) any later version.                                      *
        !            15:  * See the GNU General Public License for more details: gpl.txt or                     *
        !            16:  * http://www.fsf.org/copyleft/gpl.html                                                                                *
        !            17:  *                                                                                                                                                     *
        !            18:  * Anonymous FTP access to the most recent released source is available at     *
        !            19:  * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net     *
        !            20:  *                                                                                                                                                     *
        !            21:  * Anonymous CVS access to the development source and modification history     *
        !            22:  * is available at cvs.synchro.net:/cvsroot/sbbs, example:                                     *
        !            23:  * cvs -d :pserver:[email protected]:/cvsroot/sbbs login                       *
        !            24:  *     (just hit return, no password is necessary)                                                     *
        !            25:  * cvs -d :pserver:[email protected]:/cvsroot/sbbs checkout src                *
        !            26:  *                                                                                                                                                     *
        !            27:  * For Synchronet coding style and modification guidelines, see                                *
        !            28:  * http://www.synchro.net/source.html                                                                          *
        !            29:  *                                                                                                                                                     *
        !            30:  * You are encouraged to submit any modifications (preferably in Unix diff     *
        !            31:  * format) via e-mail to [email protected]                                                                      *
        !            32:  *                                                                                                                                                     *
        !            33:  * Note: If this box doesn't appear square, then you need to fix your tabs.    *
        !            34:  ****************************************************************************/
        !            35: //---------------------------------------------------------------------------
        !            36: 
        !            37: #include "sbbs.h"
        !            38: #include <vcl.h>
        !            39: #pragma hdrstop
        !            40: 
        !            41: #include "MainFormUnit.h"
        !            42: #include "ConfigWizardUnit.h"
        !            43: #include <stdio.h>      // sprintf
        !            44: #include <winsock.h>    // addresses and such
        !            45: 
        !            46: //---------------------------------------------------------------------------
        !            47: #pragma package(smart_init)
        !            48: #pragma resource "*.dfm"
        !            49: 
        !            50: #define ILLEGAL_FILENAME_CHARS "\\/|<>+[]:=\";,%"
        !            51: #define ILLEGAL_QWKID_CHARS  "*?" ILLEGAL_FILENAME_CHARS
        !            52: 
        !            53: char ctrl_dir[MAX_PATH+1];
        !            54: short tz_val[]= {
        !            55:      0
        !            56:     ,AST
        !            57:     ,EST
        !            58:     ,CST
        !            59:     ,MST
        !            60:     ,PST
        !            61:     ,YST
        !            62:     ,HST
        !            63:     ,BST
        !            64:     ,MID
        !            65:     ,VAN
        !            66:     ,EDM
        !            67:     ,WIN
        !            68:     ,BOG
        !            69:     ,CAR
        !            70:     ,RIO
        !            71:     ,FER
        !            72:     ,AZO
        !            73:     ,LON
        !            74:     ,BER
        !            75:     ,ATH
        !            76:     ,MOS
        !            77:     ,DUB
        !            78:     ,KAB
        !            79:     ,KAR
        !            80:     ,BOM
        !            81:     ,KAT
        !            82:     ,DHA
        !            83:     ,BAN
        !            84:     ,HON
        !            85:     ,TOK
        !            86:     ,SYD
        !            87:     ,NOU
        !            88:     ,WEL
        !            89: };
        !            90: 
        !            91: char* tz_str[]={
        !            92:      "Universal (UTC/GMT)"
        !            93:     ,"U.S. - Atlantic"
        !            94:     ,"U.S. - Eastern"
        !            95:     ,"U.S. - Central"
        !            96:     ,"U.S. - Mountain"
        !            97:     ,"U.S. - Pacific"
        !            98:     ,"U.S. - Yukon"
        !            99:     ,"U.S. - Hawaii/Alaska"
        !           100:     ,"U.S. - Bering"
        !           101:     ,"Midway"
        !           102:     ,"Vancouver"
        !           103:     ,"Edmonton"
        !           104:     ,"Winnipeg"
        !           105:     ,"Bogota"
        !           106:     ,"Caracas"
        !           107:     ,"Rio de Janeiro"
        !           108:     ,"Fernando de Noronha"
        !           109:     ,"Azores"
        !           110:     ,"London"
        !           111:     ,"Berlin"
        !           112:     ,"Athens"
        !           113:     ,"Moscow"
        !           114:     ,"Dubai"
        !           115:     ,"Kabul"
        !           116:     ,"Karachi"
        !           117:     ,"Bombay"
        !           118:     ,"Kathmandu"
        !           119:     ,"Dhaka"
        !           120:     ,"Bangkok"
        !           121:     ,"Hong Kong"
        !           122:     ,"Tokyo"
        !           123:     ,"Sydney"
        !           124:     ,"Noumea"
        !           125:     ,"Wellington"
        !           126: };
        !           127: 
        !           128: //---------------------------------------------------------------------------
        !           129: __fastcall TConfigWizard::TConfigWizard(TComponent* Owner)
        !           130:     : TForm(Owner)
        !           131: {
        !           132: }
        !           133: //---------------------------------------------------------------------------
        !           134: void __fastcall TConfigWizard::FormShow(TObject *Sender)
        !           135: {
        !           136:     char str[512];
        !           137:     int i;
        !           138:     int status;
        !           139: 
        !           140:        Application->BringToFront();
        !           141: 
        !           142:     memset(&scfg,0,sizeof(scfg));
        !           143:     SAFECOPY(scfg.ctrl_dir,MainForm->global.ctrl_dir);
        !           144:     scfg.size=sizeof(scfg);
        !           145:     char error[256];
        !           146:        SAFECOPY(error,UNKNOWN_LOAD_ERROR);
        !           147:     if(!load_cfg(&scfg,NULL,FALSE,error)) {
        !           148:         Application->MessageBox(error,"ERROR Loadin Configuration"
        !           149:                ,MB_OK|MB_ICONEXCLAMATION);
        !           150:         Close();
        !           151:         return;
        !           152:     }
        !           153: 
        !           154:     if(scfg.new_install) {
        !           155:         TIME_ZONE_INFORMATION tz;
        !           156:            memset(&tz,0,sizeof(tz));
        !           157:        DWORD tzRet=GetTimeZoneInformation(&tz);
        !           158: 
        !           159:         /* Convert to SMB tz format */
        !           160:         scfg.sys_timezone=0;
        !           161:                if(tz.Bias>0) {
        !           162:                switch(tz.Bias|US_ZONE) {
        !           163:                                case AST:
        !           164:                                case EST:
        !           165:                                case CST:
        !           166:                                case MST:
        !           167:                                case PST:
        !           168:                                case YST:
        !           169:                                case HST:
        !           170:                                case BST:
        !           171:                        scfg.sys_timezone=tz.Bias|US_ZONE;
        !           172:                                if(tzRet==TIME_ZONE_ID_DAYLIGHT)
        !           173:                                        scfg.sys_timezone|=DAYLIGHT;
        !           174:                     break;
        !           175:                 default:
        !           176:                                        scfg.sys_timezone=tz.Bias|WESTERN_ZONE;
        !           177:                     break;
        !           178:             }
        !           179:                } else if(tz.Bias<0)
        !           180:                        scfg.sys_timezone=(-tz.Bias)|EASTERN_ZONE;
        !           181: #if 0
        !           182:         /* Get DNS Server Address */
        !           183:         str_list_t dns_list = getNameServerList();
        !           184:         if(dns_list!=NULL) {
        !           185:             SAFECOPY(MainForm->mail_startup.dns_server,dns_list[0]);
        !           186:             freeNameServerList(dns_list);
        !           187:         }
        !           188: #endif        
        !           189:     } else {
        !           190:         SystemNameEdit->Text=AnsiString(scfg.sys_name);
        !           191:         SystemLocationEdit->Text=AnsiString(scfg.sys_location);
        !           192:         SysopNameEdit->Text=AnsiString(scfg.sys_op);
        !           193:         SystemPasswordEdit->Text=AnsiString(scfg.sys_pass);
        !           194:         InternetAddressComboBox->Text=AnsiString(scfg.sys_inetaddr);
        !           195:         QWKIDEdit->Text=AnsiString(scfg.sys_id);
        !           196:         QNetTaglineEdit->Text=AnsiString(scfg.qnet_tagline);
        !           197:         AllNodesTelnetCheckBox->Checked
        !           198:             =(scfg.sys_nodes==MainForm->bbs_startup.last_node);
        !           199:     }
        !           200: 
        !           201:     NewUsersCheckBox->Checked=!(scfg.sys_misc&SM_CLOSED);
        !           202:     FeedbackCheckBox->Checked=scfg.node_valuser;
        !           203:     AliasesCheckBox->Checked=scfg.uq&UQ_ALIASES;
        !           204:     NewUsersCheckBoxClick(Sender);
        !           205: 
        !           206:     if(scfg.sys_misc&SM_USRVDELM)
        !           207:         DeletedEmailYesButton->Checked=true;
        !           208:     else if(scfg.sys_misc&SM_SYSVDELM)
        !           209:         DeletedEmailSysopButton->Checked=true;
        !           210:     else
        !           211:         DeletedEmailNoButton->Checked=true;
        !           212: 
        !           213: //    DNSAddressEdit->Text=MainForm->mail_startup.dns_server;
        !           214:     MaxMailUpDown->Position=MainForm->mail_startup.max_clients;
        !           215:     MaxFtpUpDown->Position=MainForm->ftp_startup.max_clients;
        !           216:     MaxWebUpDown->Position=MainForm->web_startup.max_clients;
        !           217:     NodesUpDown->Position=scfg.sys_nodes;
        !           218: 
        !           219:     for(i=0;i<sizeof(tz_str)/sizeof(tz_str[0]);i++) {
        !           220:         char str[128];
        !           221:         if(tz_val[i] && !(tz_val[i]&US_ZONE))
        !           222:             sprintf(str,"%c%u:%02u %s"
        !           223:                 ,tz_val[i]&WESTERN_ZONE ? '-':'+'
        !           224:                 ,(tz_val[i]&0xfff)/60
        !           225:                 ,(tz_val[i]&0xfff)%60
        !           226:                 ,tz_str[i]
        !           227:                 );
        !           228:         else
        !           229:             strcpy(str,tz_str[i]);
        !           230:         TimeZoneComboBox->Items->Add(str);
        !           231:     }
        !           232:        sprintf(str,"Other (%s)",smb_zonestr(scfg.sys_timezone,NULL));
        !           233:     TimeZoneComboBox->Items->Add(str);
        !           234: 
        !           235:     for(i=0;i<sizeof(tz_val)/sizeof(tz_val[0]);i++)
        !           236:         if((scfg.sys_timezone&((short)~DAYLIGHT))==tz_val[i])
        !           237:             break;
        !           238:     TimeZoneComboBox->ItemIndex=i;
        !           239:     DaylightCheckBox->Enabled=scfg.sys_timezone&US_ZONE;
        !           240:     DaylightCheckBox->Checked=scfg.sys_timezone&DAYLIGHT;
        !           241:     if(scfg.sys_misc&SM_MILITARY)
        !           242:         Time24hrRadioButton->Checked=true;
        !           243:     else
        !           244:         Time12hrRadioButton->Checked=true;
        !           245:     if(scfg.sys_misc&SM_EURODATE)
        !           246:         DateEuRadioButton->Checked=true;
        !           247:     else
        !           248:         DateUsRadioButton->Checked=true;
        !           249: 
        !           250:     WizNotebook->PageIndex=0;
        !           251:     ProgressBar->Max=WizNotebook->Pages->Count-1;
        !           252:     IllegalCharsLabel->Caption="Illegal characters: '"
        !           253:         ILLEGAL_QWKID_CHARS "'";
        !           254: 
        !           255:        NextButton->Enabled=true;
        !           256: }
        !           257: //---------------------------------------------------------------------------
        !           258: void __fastcall TConfigWizard::NextButtonClick(TObject *Sender)
        !           259: {
        !           260:     if(ProgressBar->Position==ProgressBar->Max) /* Finished */
        !           261:     {
        !           262:         // Write Registry keys
        !           263:         if(AllNodesTelnetCheckBox->Checked)
        !           264:             MainForm->bbs_startup.last_node=NodesUpDown->Position;
        !           265:         MainForm->ftp_startup.max_clients=MaxFtpUpDown->Position;
        !           266:         MainForm->mail_startup.max_clients=MaxMailUpDown->Position;
        !           267:         MainForm->web_startup.max_clients=MaxWebUpDown->Position;
        !           268: //        strcpy(MainForm->mail_startup.dns_server,DNSAddressEdit->Text.c_str());
        !           269: 
        !           270:         MainForm->SaveIniSettings(Sender);
        !           271: 
        !           272:         // Write CNF files
        !           273:         strcpy(scfg.sys_name,SystemNameEdit->Text.c_str());
        !           274:         strcpy(scfg.sys_id,QWKIDEdit->Text.c_str());
        !           275:         strcpy(scfg.sys_location,SystemLocationEdit->Text.c_str());
        !           276:         strcpy(scfg.sys_op,SysopNameEdit->Text.c_str());
        !           277:         strcpy(scfg.sys_pass,SystemPasswordEdit->Text.c_str());
        !           278:         strcpy(scfg.sys_inetaddr,InternetAddressComboBox->Text.c_str());
        !           279:         strcpy(scfg.qnet_tagline,QNetTaglineEdit->Text.c_str());
        !           280:         scfg.sys_nodes=NodesUpDown->Position;
        !           281:         if(TimeZoneComboBox->ItemIndex>=0
        !           282:                && TimeZoneComboBox->ItemIndex<=sizeof(tz_val)/sizeof(tz_val[0]))
        !           283:             scfg.sys_timezone=tz_val[TimeZoneComboBox->ItemIndex];
        !           284:         if(DaylightCheckBox->Checked)
        !           285:             scfg.sys_timezone|=DAYLIGHT;
        !           286:         if(Time24hrRadioButton->Checked)
        !           287:             scfg.sys_misc|=SM_MILITARY;
        !           288:         else
        !           289:             scfg.sys_misc&=~SM_MILITARY;
        !           290:         if(DateEuRadioButton->Checked)
        !           291:             scfg.sys_misc|=SM_EURODATE;
        !           292:         else
        !           293:             scfg.sys_misc&=~SM_EURODATE;
        !           294:         if(NewUsersCheckBox->Checked)
        !           295:             scfg.sys_misc&=~SM_CLOSED;
        !           296:         else
        !           297:             scfg.sys_misc|=SM_CLOSED;
        !           298:         if(AliasesCheckBox->Checked)
        !           299:             scfg.uq|=UQ_ALIASES;
        !           300:         else
        !           301:             scfg.uq&=~UQ_ALIASES;
        !           302:         scfg.node_valuser=FeedbackCheckBox->Checked;
        !           303: 
        !           304:         if(DeletedEmailYesButton->Checked)
        !           305:             scfg.sys_misc|=(SM_USRVDELM|SM_SYSVDELM);
        !           306:         else if(DeletedEmailNoButton->Checked)
        !           307:             scfg.sys_misc&=~(SM_USRVDELM|SM_SYSVDELM);
        !           308:         else {
        !           309:             scfg.sys_misc|=SM_SYSVDELM;
        !           310:             scfg.sys_misc&=~SM_USRVDELM;
        !           311:         }
        !           312: 
        !           313:         scfg.new_install=FALSE;
        !           314:         if(!save_cfg(&scfg,0)) {
        !           315:                Application->MessageBox("Error saving configuration"
        !           316:                ,"ERROR",MB_OK|MB_ICONEXCLAMATION);
        !           317:         } else
        !           318:                refresh_cfg(&scfg);
        !           319: 
        !           320:         Close();
        !           321:         return;
        !           322:     }
        !           323:     WizNotebook->PageIndex++;
        !           324:     ProgressBar->Position=WizNotebook->PageIndex;
        !           325:     if(ProgressBar->Position==ProgressBar->Max) /* Last page */
        !           326:         NextButton->Caption="&Finish";
        !           327: }
        !           328: //---------------------------------------------------------------------------
        !           329: void __fastcall TConfigWizard::BackButtonClick(TObject *Sender)
        !           330: {
        !           331:     WizNotebook->PageIndex--;
        !           332:     ProgressBar->Position=WizNotebook->PageIndex;
        !           333:     NextButton->Caption="&Next >";
        !           334: }
        !           335: //---------------------------------------------------------------------------
        !           336: void __fastcall TConfigWizard::CancelButtonClick(TObject *Sender)
        !           337: {
        !           338:     Close();
        !           339: }
        !           340: //---------------------------------------------------------------------------
        !           341: void __fastcall TConfigWizard::LogoImageClick(TObject *Sender)
        !           342: {
        !           343:     LogoImage->Visible=false;
        !           344:     ProgressBar->Visible=false;
        !           345: }
        !           346: //---------------------------------------------------------------------------
        !           347: void __fastcall TConfigWizard::TitleLabelClick(TObject *Sender)
        !           348: {
        !           349:     LogoImage->Visible=true;
        !           350:     ProgressBar->Visible=true;
        !           351: }
        !           352: //---------------------------------------------------------------------------
        !           353: void __fastcall TConfigWizard::WizNotebookPageChanged(TObject *Sender)
        !           354: {
        !           355:     TFont* current;
        !           356: 
        !           357:     switch(WizNotebook->PageIndex) {
        !           358:         case 0:
        !           359:             current=IntroductionLabel->Font;
        !           360:             NextButton->Enabled=true;
        !           361:             break;
        !           362:         case 1:
        !           363:             current=IdentificationLabel->Font;
        !           364: //            ActiveControl=SystemNameEdit;
        !           365:             if(!SysopNameEdit->Text.Length()) {
        !           366:                 char username[41];
        !           367:                 DWORD len=sizeof(username)-1;
        !           368:                 GetUserName(username,&len);
        !           369:                 SysopNameEdit->Text=AnsiString(username);
        !           370:             }
        !           371:             if(!SystemNameEdit->Text.Length()) {
        !           372:                 char bbsname[41];
        !           373:                 DWORD len=sizeof(bbsname)-1;
        !           374:                 GetComputerName(bbsname,&len);
        !           375:                 SystemNameEdit->Text=AnsiString(bbsname);
        !           376:             }
        !           377:             VerifyIdentification(Sender);
        !           378:             break;
        !           379:         case 2:
        !           380:             current=TimeLabel->Font;
        !           381:             NextButton->Enabled=true;
        !           382:             break;
        !           383:         case 3:
        !           384:             current=InternetLabel->Font;
        !           385:             if(!InternetAddressComboBox->Items->Count) {
        !           386:                 WSADATA WSAData;
        !           387:                 WSAStartup(MAKEWORD(1,1), &WSAData); /* req'd for gethostname */
        !           388:                 if(scfg.sys_inetaddr[0])
        !           389:                     InternetAddressComboBox->Items->Add(scfg.sys_inetaddr);
        !           390:                 char hostname[128];
        !           391:                 gethostname(hostname,sizeof(hostname)-1);
        !           392:                 if(hostname[0]) {
        !           393:                     InternetAddressComboBox->Items->Add(hostname);
        !           394:                     HOSTENT* host=gethostbyname(hostname);
        !           395:                     SOCKADDR_IN addr;
        !           396:                     for(int i=0;host && host->h_addr_list[i];i++) {
        !           397:                         addr.sin_addr.s_addr
        !           398:                             =*((DWORD*)host->h_addr_list[i]);
        !           399:                         InternetAddressComboBox->Items->Add(inet_ntoa(addr.sin_addr));
        !           400:                     }
        !           401:                 }
        !           402:                 WSACleanup();
        !           403:                 InternetAddressComboBox->ItemIndex=0;
        !           404:             }
        !           405:             VerifyInternetAddresses(Sender);
        !           406:             break;
        !           407:         case 4:
        !           408:             current=QWKLabel->Font;
        !           409:             if(!QWKIDEdit->Text.Length()) {
        !           410:                 char bbsname[41];
        !           411:                 char qwkid[9];
        !           412:                 int len=0;
        !           413:                 strcpy(bbsname,SystemNameEdit->Text.UpperCase().c_str());
        !           414:                 for(char*p=bbsname;*p && len<8;p++) {
        !           415:                     if(strchr(ILLEGAL_QWKID_CHARS,*p))
        !           416:                         continue;
        !           417:                     if(!len && isdigit(*p))
        !           418:                         continue;
        !           419:                     if(*p<=' ')
        !           420:                         continue;
        !           421:                     qwkid[len++]=*p;
        !           422:                 }
        !           423:                 qwkid[len]=0;
        !           424:                 QWKIDEdit->Text=AnsiString(qwkid);
        !           425:             }
        !           426:             if(!QNetTaglineEdit->Text.Length()) {
        !           427:                 QNetTaglineEdit->Text = SystemNameEdit->Text +
        !           428:                     " - " + InternetAddressComboBox->Text;
        !           429:             }
        !           430:             VerifyQWK(Sender);
        !           431:             break;
        !           432:         case 5:
        !           433:             current=MaximumsLabel->Font;
        !           434:             NextButton->Enabled=true;
        !           435:             break;
        !           436:         case 6:
        !           437:             current=OptionsLabel->Font;
        !           438:             NextButton->Enabled=true;
        !           439:             break;
        !           440:         case 7:
        !           441:             current=VerifyLabel->Font;
        !           442:             VerifyPassword(Sender);
        !           443:             if(!NextButton->Enabled)
        !           444:                 ActiveControl=SysPassVerifyEdit;
        !           445:             break;
        !           446:         case 8:
        !           447:             current=CompleteLabel->Font;
        !           448:             break;
        !           449:         default:
        !           450:             return;
        !           451:     }
        !           452: 
        !           453:     /* default to inactive */
        !           454:     IntroductionLabel->Font->Color=clGray;
        !           455:     IdentificationLabel->Font->Color=clGray;
        !           456:     QWKLabel->Font->Color=clGray;
        !           457:     TimeLabel->Font->Color=clGray;
        !           458:     InternetLabel->Font->Color=clGray;
        !           459:     MaximumsLabel->Font->Color=clGray;
        !           460:     OptionsLabel->Font->Color=clGray;
        !           461:     VerifyLabel->Font->Color=clGray;
        !           462:     CompleteLabel->Font->Color=clGray;
        !           463: 
        !           464:     /* active */
        !           465:     current->Color=clYellow;
        !           466: 
        !           467:     BackButton->Enabled=WizNotebook->PageIndex;
        !           468: }
        !           469: //---------------------------------------------------------------------------
        !           470: void __fastcall TConfigWizard::VerifyIdentification(TObject *Sender)
        !           471: {
        !           472:     NextButton->Enabled=(SystemNameEdit->Text.Length()
        !           473:         && SystemLocationEdit->Text.Length()
        !           474:         && SysopNameEdit->Text.Length()
        !           475:         && SystemPasswordEdit->Text.Length()
        !           476:     );
        !           477: }
        !           478: //---------------------------------------------------------------------------
        !           479: void __fastcall TConfigWizard::VerifyPassword(TObject *Sender)
        !           480: {
        !           481:     NextButton->Enabled=(SystemPasswordEdit->Text==SysPassVerifyEdit->Text);
        !           482: }
        !           483: //---------------------------------------------------------------------------
        !           484: void __fastcall TConfigWizard::VerifyQWK(TObject *Sender)
        !           485: {
        !           486:     char    qwk_id[9];
        !           487: 
        !           488:     SAFECOPY(qwk_id,QWKIDEdit->Text.c_str());
        !           489:     NextButton->Enabled=(
        !           490:         strlen(qwk_id)>=2
        !           491:         && isalpha(qwk_id[0])
        !           492:         && strcspn(qwk_id,ILLEGAL_QWKID_CHARS)==strlen(qwk_id)
        !           493:         && QNetTaglineEdit->Text.Length());
        !           494: }
        !           495: //---------------------------------------------------------------------------
        !           496: void __fastcall TConfigWizard::QNetTaglineEditKeyPress(TObject *Sender,
        !           497:       char &Key)
        !           498: {
        !           499:     if(Key==1)  /* Ctrl-A */
        !           500:         QNetTaglineEdit->SetSelTextBuf("\1");
        !           501: }
        !           502: //---------------------------------------------------------------------------
        !           503: 
        !           504: void __fastcall TConfigWizard::VerifyInternetAddresses(TObject *Sender)
        !           505: {
        !           506:     NextButton->Enabled=(InternetAddressComboBox->Text.Length()
        !           507: //        && DNSAddressEdit->Text.Length()
        !           508:         );
        !           509: }
        !           510: //---------------------------------------------------------------------------
        !           511: void __fastcall TConfigWizard::TimeZoneComboBoxChange(TObject *Sender)
        !           512: {
        !           513:     if(TimeZoneComboBox->ItemIndex>=0
        !           514:        && TimeZoneComboBox->ItemIndex<=sizeof(tz_val)/sizeof(tz_val[0]))
        !           515:         DaylightCheckBox->Enabled=tz_val[TimeZoneComboBox->ItemIndex]&US_ZONE;
        !           516:     else
        !           517:            DaylightCheckBox->Enabled=false;
        !           518:     if(!DaylightCheckBox->Enabled)
        !           519:         DaylightCheckBox->Checked=false;
        !           520: }
        !           521: //---------------------------------------------------------------------------
        !           522: 
        !           523: void __fastcall TConfigWizard::NewUsersCheckBoxClick(TObject *Sender)
        !           524: {
        !           525:     AliasesCheckBox->Enabled=NewUsersCheckBox->Checked;
        !           526:     FeedbackCheckBox->Enabled=NewUsersCheckBox->Checked;
        !           527: }
        !           528: //---------------------------------------------------------------------------
        !           529: 

unix.superglobalmegacorp.com

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