home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c016 / 3.ddi / COMMEX.PAK / SETTINGS.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-08  |  2.9 KB  |  104 lines

  1. //----------------------------------------------------------------------------
  2. // Borland Visual Solutions Pack
  3. // (C) Copyright 1993 by Borland International
  4. //----------------------------------------------------------------------------
  5. #include <owl\owlpch.h>
  6. #include <owl\applicat.h>
  7. #include <owl\framewin.h>
  8. #include "settings.h"
  9.  
  10. DEFINE_RESPONSE_TABLE1(SaxTermSettingsDlg, TDialog)
  11.   EV_BN_CLICKED(IDOK, OkClicked),
  12. END_RESPONSE_TABLE;
  13.  
  14. static char *szParity = "Parity";
  15. static char *szSpeed = "Speed";
  16. static char *szDataBits = "DataBits";
  17. static char *szStopBits = "StopBits";
  18. static struct {
  19.    char *szProp;
  20.    int nValue;
  21.    int nID;
  22. } aLookup[] = {
  23.    { szParity, 0, IDC_PARITYNONE },
  24.    { szParity, 1, IDC_PARITYEVEN },
  25.    { szParity, 2, IDC_PARITYODD },
  26.    { szParity, 3, IDC_PARITYMARK },
  27.    { szParity, 4, IDC_PARITYSPACE },
  28.    { szSpeed,  300, IDC_BAUD300 },
  29.    { szSpeed,  600, IDC_BAUD600 },
  30.    { szSpeed, 1200, IDC_BAUD1200 },
  31.    { szSpeed, 2400, IDC_BAUD2400 },
  32.    { szSpeed, 4800, IDC_BAUD4800 },
  33.    { szSpeed, 9600, IDC_BAUD9600 },
  34.    { szSpeed,19200, IDC_BAUD19200 },
  35.    { szDataBits, 5, IDC_DATA5 },
  36.    { szDataBits, 6, IDC_DATA6 },
  37.    { szDataBits, 7, IDC_DATA7 },
  38.    { szDataBits, 8, IDC_DATA8 },
  39.    { szStopBits, 0, IDC_STOP15 },
  40.    { szStopBits, 1, IDC_STOP1 },
  41.    { szStopBits, 2, IDC_STOP2 },
  42.    { NULL, 0, 0 }
  43. };
  44.  
  45. SaxTermSettingsDlg::SaxTermSettingsDlg(TWindow* parent, TResId resId, TModule* module):
  46.     TDialog(parent, resId, module)
  47. {
  48.   List = new TListBox(this, IDC_PORTLIST);
  49.   Comm = TYPESAFE_DOWNCAST(parent, TVbxControl);
  50. }
  51.  
  52. SaxTermSettingsDlg::~SaxTermSettingsDlg()
  53. {
  54.   Destroy();
  55.   delete List;
  56. }
  57.  
  58. void SaxTermSettingsDlg::SetupWindow()
  59. {
  60.   TDialog::SetupWindow();
  61.  
  62.   int n = 0;
  63.   for (int i = 0 ; aLookup[i].szProp; ++i) {
  64.     Comm->GetProp(aLookup[i].szProp, n);
  65.     if (n == aLookup[i].nValue)
  66.       CheckDlgButton(aLookup[i].nID, 1);
  67.   }
  68.   Comm->GetProp("CtsRts", n);
  69.   if (n)
  70.     CheckDlgButton(IDC_HANDSHAKINGHARDWARE, 1);
  71.   else {
  72.     Comm->GetProp("XonXoff", n);
  73.     CheckDlgButton(n ? IDC_HANDSHAKINGXONXOFF : IDC_HANDSHAKINGNONE, 1);
  74.   }
  75.   List->AddString("(none)");
  76.   List->AddString("COM1:");
  77.   List->AddString("COM2:");
  78.   List->AddString("COM3:");
  79.   List->AddString("COM4:");
  80.   string s;
  81.   Comm->GetProp("Port", s);
  82.   List->SetSelIndex((s.length() > 3) ? s[3] - '0' : 0);
  83. }
  84.  
  85. void SaxTermSettingsDlg::OkClicked()
  86. {
  87.   for (int i = 0; aLookup[i].szProp; ++i) {
  88.     if (IsDlgButtonChecked(aLookup[i].nID))
  89.       Comm->SetProp(aLookup[i].szProp, aLookup[i].nValue);
  90.   }
  91.   Comm->SetProp("CtsRts", IsDlgButtonChecked(IDC_HANDSHAKINGHARDWARE) ? 1 : 0);
  92.   Comm->SetProp("XonXoff", IsDlgButtonChecked(IDC_HANDSHAKINGXONXOFF) ? 1 : 0);
  93.   int n = List->GetSelIndex();
  94.   if (n) {
  95.     char scrap[10];
  96.     wsprintf(scrap, "COM%d", n);
  97.     Comm->SetProp("Port", scrap);
  98.   } else
  99.     Comm->SetProp("Port", "");
  100.  
  101.   TDialog::CmOk();
  102. }
  103.  
  104.