00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "Dlg_SetBatchNumbers.h"
00009 #include "vmsBatchList.h"
00010
00011 #ifdef _DEBUG
00012 #define new DEBUG_NEW
00013 #undef THIS_FILE
00014 static char THIS_FILE[] = __FILE__;
00015 #endif
00016
00017 CDlg_SetBatchNumbers::CDlg_SetBatchNumbers(CWnd* pParent )
00018 : CDialog(CDlg_SetBatchNumbers::IDD, pParent)
00019 {
00020
00021
00022
00023 }
00024
00025 void CDlg_SetBatchNumbers::DoDataExchange(CDataExchange* pDX)
00026 {
00027 CDialog::DoDataExchange(pDX);
00028
00029 DDX_Control(pDX, IDC_SET, m_wndSets);
00030
00031 }
00032
00033 BEGIN_MESSAGE_MAP(CDlg_SetBatchNumbers, CDialog)
00034
00035 ON_BN_CLICKED(IDC_SETOFNUMBERS, OnSetofnumbers)
00036 ON_BN_CLICKED(IDC_SINGLENUMBER, OnSinglenumber)
00037 ON_WM_CONTEXTMENU()
00038 ON_WM_HELPINFO()
00039 ON_COMMAND(ID_WHATISTHIS, OnWhatisthis)
00040 ON_BN_CLICKED(IDC_ADD, OnAdd)
00041
00042 END_MESSAGE_MAP()
00043
00044 void CDlg_SetBatchNumbers::UpdateEnabled()
00045 {
00046 bool b = IsDlgButtonChecked (IDC_SETOFNUMBERS) == BST_CHECKED;
00047
00048 UINT aIDs [] = {
00049 IDC__FROM, IDC_FROM, IDC_FROMSPIN, IDC__TO, IDC_TO, IDC_TOSPIN,
00050 IDC__WB, IDC_WB, IDC_WBSPIN, IDC__STEP, IDC_STEP, IDC_STEPSPIN,
00051 };
00052
00053 for (int i = 0; i < sizeof (aIDs) / sizeof (UINT); i++)
00054 GetDlgItem (aIDs [i])->EnableWindow (b);
00055
00056 GetDlgItem (IDC__NUMBER)->EnableWindow (!b);
00057 GetDlgItem (IDC_NUMBER)->EnableWindow (!b);
00058 }
00059
00060 BOOL CDlg_SetBatchNumbers::OnInitDialog()
00061 {
00062 CDialog::OnInitDialog();
00063
00064 int aSpinID [] = { IDC_FROMSPIN, IDC_TOSPIN, IDC_STEPSPIN, IDC_WBSPIN };
00065 for (int i = 0; i < sizeof (aSpinID) / sizeof (int); i++)
00066 ((CSpinButtonCtrl*) GetDlgItem (aSpinID [i]))->SetRange (i == 0 ? 0 : 1, UD_MAXVAL);
00067
00068 SetDlgItemInt (IDC_TO, 100);
00069 SetDlgItemInt (IDC_WB, 1);
00070 SetDlgItemInt (IDC_STEP, 1);
00071
00072 CheckDlgButton (IDC_SETOFNUMBERS, BST_CHECKED);
00073 UpdateEnabled ();
00074
00075 ApplyLanguage ();
00076
00077 return TRUE;
00078 }
00079
00080 void CDlg_SetBatchNumbers::OnSetofnumbers()
00081 {
00082 UpdateEnabled ();
00083 }
00084
00085 void CDlg_SetBatchNumbers::OnSinglenumber()
00086 {
00087 UpdateEnabled ();
00088 }
00089
00090 void CDlg_SetBatchNumbers::ApplyLanguage()
00091 {
00092 fsDlgLngInfo lnginfo [] = {
00093 fsDlgLngInfo (IDC__FROM, L_DLGFROM),
00094 fsDlgLngInfo (IDC__TO, L_DLGTO),
00095 fsDlgLngInfo (IDC__WB, L_DLGWILDBYTES),
00096 fsDlgLngInfo (IDC__STEP, L_DLGSTEP),
00097 fsDlgLngInfo (IDC_SETOFNUMBERS, L_SETOFNUMBERS),
00098 fsDlgLngInfo (IDC_SINGLENUMBER, L_SINGLENUMBER),
00099 fsDlgLngInfo (IDC__NUMBER, L_NUMBER, TRUE),
00100 fsDlgLngInfo (IDC_ADD, L_ADD),
00101 fsDlgLngInfo (IDCANCEL, L_CANCEL),
00102 };
00103
00104 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), L_ASSIGNSETOFNUMBERS);
00105 }
00106
00107 void CDlg_SetBatchNumbers::OnContextMenu(CWnd* pWnd, CPoint point)
00108 {
00109 PrepareCHMgr (point);
00110 _CHMgr.ShowMenu ();
00111 }
00112
00113 BOOL CDlg_SetBatchNumbers::OnHelpInfo(HELPINFO* pHelpInfo)
00114 {
00115 RECT rc;
00116 CWnd *pItem = GetDlgItem (pHelpInfo->iCtrlId);
00117 if (pItem == NULL)
00118 return TRUE;
00119 pItem->GetWindowRect (&rc);
00120 if (PtInRect (&rc, pHelpInfo->MousePos) == FALSE)
00121 {
00122 pHelpInfo->MousePos.x = rc.left + (rc.right - rc.left) / 2;
00123 pHelpInfo->MousePos.y = rc.top + (rc.bottom - rc.top) / 2;
00124 }
00125 PrepareCHMgr (pHelpInfo->MousePos);
00126 _CHMgr.OnWT ();
00127 return TRUE;
00128 }
00129
00130 void CDlg_SetBatchNumbers::OnWhatisthis()
00131 {
00132 _CHMgr.OnWT ();
00133 }
00134
00135 void CDlg_SetBatchNumbers::PrepareCHMgr(CPoint point)
00136 {
00137 fsCtrlContextHelp aCH1 [] = {
00138 fsCtrlContextHelp (IDC__FROM, LS (L_FROMHERE)),
00139 fsCtrlContextHelp (IDC_FROM, LS (L_FROMHERE)),
00140 fsCtrlContextHelp (IDC__TO, LS (L_TOHERE)),
00141 fsCtrlContextHelp (IDC_TO, LS (L_TOHERE)),
00142 fsCtrlContextHelp (IDC__STEP, LS (L_STEPHERE)),
00143 fsCtrlContextHelp (IDC_STEP, LS (L_STEPHERE)),
00144 fsCtrlContextHelp (IDC__WB, LS (L_WILDBYTESHERE)),
00145 fsCtrlContextHelp (IDC_WB, LS (L_WILDBYTESHERE)),
00146 };
00147
00148 static fsCtrlContextHelp aCH [sizeof (aCH1) / sizeof (fsCtrlContextHelp)];
00149 CopyMemory (aCH, aCH1, sizeof (aCH));
00150
00151 _CHMgr.PrepareContextMenu (this, point, aCH, sizeof (aCH) / sizeof (fsCtrlContextHelp));
00152 }
00153
00154 void CDlg_SetBatchNumbers::OnAdd()
00155 {
00156 CString str, strU;
00157 UINT nID;
00158
00159 if (IsDlgButtonChecked (IDC_SETOFNUMBERS) == BST_CHECKED)
00160 {
00161 int from, to, step, wc;
00162 from = GetDlgItemInt (IDC_FROM);
00163 to = GetDlgItemInt (IDC_TO);
00164 step = GetDlgItemInt (IDC_STEP);
00165 wc = GetDlgItemInt (IDC_WB);
00166
00167 if (to == 0)
00168 {
00169 nID = IDC_TO;
00170 goto _l0Err;
00171 }
00172
00173 if (step == 0)
00174 {
00175 nID = IDC_STEP;
00176 goto _l0Err;
00177 }
00178
00179 if (wc == 0)
00180 {
00181 nID = IDC_WB;
00182 goto _l0Err;
00183 }
00184
00185 if (to <= from)
00186 {
00187 MessageBox (LS (L_TOMBGTFROM), LS (L_INPERR), MB_ICONEXCLAMATION);
00188 ((CEdit*) GetDlgItem (IDC_TO))->SetSel (0, -1);
00189 GetDlgItem (IDC_TO)->SetFocus ();
00190 return;
00191 }
00192
00193 if (false == CheckSetOfNumbersParameters (from, to, step, wc))
00194 return;
00195
00196 str.Format ("%d-%d", from, to);
00197 strU.Format ("%s %d %s %d", LS (L_DLGFROM), from, LS (L_DLGTO), to);
00198 strU.Remove (':');
00199
00200 if (step != 1) {
00201 CString str2;
00202 str2.Format ("%c%d", BATCHLIST_STEP_SYMBOL, step);
00203 str += str2;
00204 str2.Format (" %s %d", LS (L_DLGSTEP), step);
00205 str2.Remove (':');
00206 strU += str2;
00207 }
00208
00209 if (wc != 1) {
00210 CString str2;
00211 str2.Format ("%c%d", BATCHLIST_WILDCARD_SYMBOL, wc);
00212 str += str2;
00213 str2.Format (" %s %d", LS (L_DLGWILDBYTES), wc);
00214 str2.Remove (':');
00215 strU += str2;
00216 }
00217 }
00218 else
00219 {
00220 int n = GetDlgItemInt (IDC_NUMBER);
00221 str.Format ("%d", n);
00222 strU = str;
00223 }
00224
00225 m_wndSets.AddString (strU);
00226 CString *pstr; pstr = new CString;
00227 *pstr = str;
00228 m_wndSets.SetItemData (m_wndSets.GetCount () - 1, (DWORD)pstr);
00229 return;
00230
00231 _l0Err:
00232 str.Format (LS (L_ENTERGREATER), 0);
00233 MessageBox (str, LS (L_INPERR), MB_ICONEXCLAMATION);
00234 CEdit *pE = (CEdit*) GetDlgItem (nID);
00235 pE->SetSel (0, -1);
00236 pE->SetFocus ();
00237 }
00238
00239 void CDlg_SetBatchNumbers::OnOK()
00240 {
00241 m_strNumbers = "";
00242
00243 for (int i = 0; i < m_wndSets.GetCount (); i++)
00244 {
00245 CString* str = (CString*) m_wndSets.GetItemData (i);
00246 if (i)
00247 m_strNumbers += ", ";
00248
00249 m_strNumbers += *str;
00250 delete str;
00251 }
00252
00253 CDialog::OnOK();
00254 }
00255
00256 bool CDlg_SetBatchNumbers::CheckSetOfNumbersParameters(int from, int to, int step, int wc)
00257 {
00258 int nID;
00259
00260 if (to == 0)
00261 {
00262 nID = IDC_TO;
00263 goto _l0Err;
00264 }
00265
00266 if (step == 0)
00267 {
00268 nID = IDC_STEP;
00269 goto _l0Err;
00270 }
00271
00272 if (wc == 0)
00273 {
00274 nID = IDC_WB;
00275 goto _l0Err;
00276 }
00277
00278 if (to <= from)
00279 {
00280 MessageBox (LS (L_TOMBGTFROM), LS (L_INPERR), MB_ICONEXCLAMATION);
00281 ((CEdit*) GetDlgItem (IDC_TO))->SetSel (0, -1);
00282 GetDlgItem (IDC_TO)->SetFocus ();
00283 return FALSE;
00284 }
00285
00286 return true;
00287
00288 _l0Err:
00289 CString str;
00290 str.Format (LS (L_ENTERGREATER), 0);
00291 MessageBox (str, LS (L_INPERR), MB_ICONEXCLAMATION);
00292 CEdit *pE = (CEdit*) GetDlgItem (nID);
00293 pE->SetSel (0, -1);
00294 pE->SetFocus ();
00295 return false;
00296 }