home *** CD-ROM | disk | FTP | other *** search
/ Practical Internet 2002 February / Practical Internet February 2002.iso / pc / Software / Browsing / httrack-3.09e2.exe / {app} / src_win / WinHTTrack / trans.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-13  |  12.1 KB  |  455 lines

  1. // trans.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Shell.h"
  6. #include "trans.h"
  7.  
  8. #include "htscore.h"
  9. #include "htslib.h"
  10.  
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #undef THIS_FILE
  14. static char THIS_FILE[] = __FILE__;
  15. #endif
  16.  
  17. extern char OPTIONhh[32];
  18. extern char OPTIONmm[32];
  19. extern char OPTIONss[32];
  20. extern HICON httrack_icon;
  21.  
  22. // Chargement des librairies RAS
  23. #if USE_RAS
  24. extern CDynamicRAS* LibRas;
  25. extern int LibRasUse;
  26. #endif
  27.  
  28. // Helper
  29. extern LaunchHelp* HtsHelper;
  30.  
  31. // reference sur objet
  32. extern Ctrans* dialog2;
  33.  
  34. /* Main WizTab frame */
  35. #include "WizTab.h"
  36. extern CWizTab* this_CWizTab;
  37. extern CWizTab* this_intCWizTab2;
  38.  
  39. /* Main splitter frame */
  40. #include "DialogContainer.h"
  41. #include "splitter.h"
  42. extern CSplitterFrame* this_CSplitterFrame;
  43.  
  44. // prise en compte prefs
  45. extern void compute_options() ;
  46.  
  47. /* Back to FirstInfo */
  48. //#include "FirstInfo.h"
  49.  
  50. /* Dialog final */
  51. #include "inprogress.h"
  52.  
  53. /* maintab */
  54. #include "maintab.h"
  55. extern CMainTab* maintab;
  56.  
  57. /* newproj */
  58. #include "newproj.h"
  59. extern CNewProj* dialog0;
  60.  
  61. extern CShellApp* CShellApp_app;
  62.  
  63. /* debug */
  64. extern FILE* fp_debug;
  65.  
  66.  
  67. /////////////////////////////////////////////////////////////////////////////
  68. // Ctrans dialog
  69.  
  70. IMPLEMENT_DYNCREATE(Ctrans, CPropertyPage)
  71.  
  72. Ctrans::Ctrans()
  73.     : CPropertyPage(Ctrans::IDD)
  74. {
  75.   dialog2=this;    /* NOTER REFERENCE */
  76.   hms=0;
  77.     //{{AFX_DATA_INIT(Ctrans)
  78.     m_hh = _T("");
  79.     m_mm = _T("");
  80.     m_ss = _T("");
  81.     m_rasid = -1;
  82.     m_rasdisc = FALSE;
  83.     //}}AFX_DATA_INIT
  84. }
  85.  
  86. Ctrans::~Ctrans() {
  87.   dialog2=NULL;
  88. }
  89.  
  90. void Ctrans::DoDataExchange(CDataExchange* pDX)
  91. {
  92.     CPropertyPage::DoDataExchange(pDX);
  93.     //{{AFX_DATA_MAP(Ctrans)
  94.     DDX_Control(pDX, IDC_rasdisc, m_ctl_rasdisc);
  95.     DDX_Control(pDX, IDC_cnx, m_ctlcnx);
  96.     DDX_Control(pDX, IDC_rasid, m_ctlrasid);
  97.     DDX_Control(pDX, IDC_wait, m_ctl_wait);
  98.     DDX_Control(pDX, IDC_ss, m_ctl_ss);
  99.     DDX_Control(pDX, IDC_mm, m_ctl_mm);
  100.     DDX_Control(pDX, IDC_hh, m_ctl_hh);
  101.     DDX_Text(pDX, IDC_hh, m_hh);
  102.     DDV_MaxChars(pDX, m_hh, 2);
  103.     DDX_Text(pDX, IDC_mm, m_mm);
  104.     DDV_MaxChars(pDX, m_mm, 2);
  105.     DDX_Text(pDX, IDC_ss, m_ss);
  106.     DDV_MaxChars(pDX, m_ss, 2);
  107.     DDX_CBIndex(pDX, IDC_rasid, m_rasid);
  108.     DDX_Check(pDX, IDC_rasdisc, m_rasdisc);
  109.     //}}AFX_DATA_MAP
  110. }
  111.  
  112.  
  113. BEGIN_MESSAGE_MAP(Ctrans, CPropertyPage)
  114.     //{{AFX_MSG_MAP(Ctrans)
  115.     ON_EN_CHANGE(IDC_hh, OnChangehh)
  116.     ON_WM_HELPINFO()
  117.     ON_CBN_SELCHANGE(IDC_rasid, OnSelchangerasid)
  118.     ON_CBN_DROPDOWN(IDC_rasid, OnDropdownrasid)
  119.     ON_WM_SHOWWINDOW()
  120.     ON_BN_CLICKED(IDC_rasdisc, Onrasdisc)
  121.     //}}AFX_MSG_MAP
  122.     ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  123.   ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  124.   ON_COMMAND(ID_HELP,OnHelpInfo2)
  125.     ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  126. END_MESSAGE_MAP()
  127.  
  128. /////////////////////////////////////////////////////////////////////////////
  129. // Ctrans message handlers
  130.  
  131. void Ctrans::OnChangehh() 
  132. {
  133.   CString st="";
  134.   char tempo[256];
  135.  
  136.   // TODO: If this is a RICHEDIT control, the control will not
  137.     // send this notification unless you override the CPropertyPage::OnInitDialog()
  138.     // function to send the EM_SETEVENTMASK message to the control
  139.     // with the ENM_CHANGE flag ORed into the lParam mask.
  140.  
  141.   // TODO: Add your control notification handler code here
  142.  
  143.   GetDlgItemText(IDC_hh,st);
  144.   strcpy(tempo,st);
  145.  
  146.   if ((strlen(tempo)>0)!=hms) {
  147.     hms=!hms;
  148.     if (strlen(tempo)>0) {
  149.       m_ctl_wait.ModifyStyle(WS_DISABLED,0);
  150.     }
  151.     else {
  152.       m_ctl_wait.ModifyStyle(0,WS_DISABLED);
  153.     }    
  154.     m_ctl_wait.RedrawWindow();
  155.  }  
  156.  
  157. // m_wait=TRUE; 
  158.  
  159. }
  160.  
  161. BOOL Ctrans::OnInitDialog() 
  162. {
  163.     CPropertyPage::OnInitDialog();
  164.   ((CButton*)GetDlgItem(IDC_select_start))->SetCheck(1);
  165.   strcpy(RasString,"");
  166.   
  167.   SetIcon(httrack_icon,false);
  168.   SetIcon(httrack_icon,true);  
  169.     EnableToolTips(true);     // TOOL TIPS
  170.  
  171.   // Patcher l'interface pour les Franτais ;-)
  172.   if (LANG_T(-1)) {    // Patcher en franτais
  173.     //SetDlgItemText(,"");
  174.     SetWindowText(LANG(LANG_J9) /*"DΘmarrer.."*/);
  175.     SetDlgItemText(IDC_select_start,LANG(LANG_J10) /*"Vous pouvez dΘmarrer le miroir en pressant la touche DEMARRER,\nou dΘfinir avant les options de connexion"*/);
  176.     SetDlgItemText(IDC_select_save,LANG(LANG_J10b));
  177.     SetDlgItemText(IDC_STATIC_delay,LANG(LANG_J11) /*"Retarder"*/);
  178.     SetDlgItemText(IDC_wait,LANG(LANG_J12) /*"Attendre avant de commencer jusqu'α: (hh/mm/ss)"*/);
  179.     //SetDlgItemText(IDC_avant,LANG(LANG_BACK) /*"<- AVANT"*/);
  180.     SetDlgItemText(IDCANCEL,LANG(LANG_QUIT) /*"Quitter"*/);
  181.     SetDlgItemText(IDOK,LANG(LANG_J13) /*"DEMARRER!"*/);
  182.     SetDlgItemText(IDC_STATIC_ras,LANG(LANG_J14) /*"Connexion provider"*/);
  183.     SetDlgItemText(IDC_cnx,LANG(LANG_J15) /*"Connecter α ce provider"*/);
  184.     SetDlgItemText(IDC_rasdisc,LANG_J16);
  185.   }
  186.  
  187.   // liste vide pour commencer
  188.   isfilled=FALSE;
  189.   FillProviderList(0);
  190.   m_ctlrasid.SetCurSel(0);
  191.  
  192.     return TRUE;  // return TRUE unless you set the focus to a control
  193.                   // EXCEPTION: OCX Property Pages should return FALSE
  194. }
  195.  
  196.  
  197. void Ctrans::FillProviderList(int fill) 
  198. {
  199. // remplssage su champ des noms de connexion RAS
  200. #if USE_RAS
  201.   if (LibRasUse && fill) {
  202.     DWORD size;
  203.     RASENTRYNAME* adr;
  204.     int count=256;
  205.     size = sizeof(RASENTRYNAME)*(count+2);
  206.     adr = (RASENTRYNAME*) (char*) calloc(size,1);
  207.     if (adr) {
  208.       DWORD ent;
  209.       int i;
  210.       for(i=0;i<count;i++) {
  211.         adr[i].dwSize=sizeof(RASENTRYNAME);
  212.         strcpy(adr[i].szEntryName,"");
  213.       }
  214.       if (LibRas->RasEnumEntries(NULL,NULL,(RASENTRYNAME*) adr,&size,&ent) == 0) {
  215.         int i;
  216.         GetDlgItem(IDC_STATIC_ras)->ModifyStyle(WS_DISABLED,0);
  217.         GetDlgItem(IDC_STATIC_ras)->RedrawWindow();
  218.         m_ctlrasid.ResetContent();
  219.         m_ctlrasid.InsertString(-1,LANG(LANG_J2 /*"do not connect to a provider (already connected)","pas de connexion α un provider (dΘja connectΘ)"*/));
  220.         for(i=0;i<(int) ent;i++) {
  221.           m_ctlrasid.InsertString(-1,adr[i].szEntryName);
  222.         }
  223.       }
  224.       free(adr);
  225.     }
  226.   } else
  227. #endif
  228.   {
  229.     if (LibRasUse) {
  230.       GetDlgItem(IDC_STATIC_ras)->ModifyStyle(WS_DISABLED,0);
  231.     } else {
  232.       GetDlgItem(IDC_STATIC_ras)->ModifyStyle(0,WS_DISABLED);
  233.     }
  234.     GetDlgItem(IDC_STATIC_ras)->RedrawWindow();
  235.     m_ctlrasid.ResetContent();
  236.     m_ctlrasid.InsertString(-1,LANG_J2b);
  237.   }
  238. }
  239.  
  240.  
  241. // ------------------------------------------------------------
  242. // TOOL TIPS
  243. //
  244. // ajouter dans le .cpp:
  245. // remplacer les deux Wid1:: par le nom de la classe::
  246. // dans la message map, ajouter
  247. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  248. // dans initdialog ajouter
  249. // EnableToolTips(true);     // TOOL TIPS
  250. //
  251. // ajouter dans le .h:
  252. // char* GetTip(int id);
  253. // et en generated message map
  254. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  255. BOOL Ctrans::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  256. {
  257.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  258.   UINT nID =pNMHDR->idFrom;
  259.   if (pTTT->uFlags & TTF_IDISHWND)
  260.   {
  261.     // idFrom is actually the HWND of the tool
  262.     nID = ::GetDlgCtrlID((HWND)nID);
  263.     if(nID)
  264.     {
  265.       char* st=GetTip(nID);
  266.       if (st != "") {
  267.         pTTT->lpszText = st;
  268.         pTTT->hinst = AfxGetResourceHandle();
  269.         return(TRUE);
  270.       }
  271.     }
  272.   }
  273.   return(FALSE);
  274. }
  275. char* Ctrans::GetTip(int ID)
  276. {
  277.   switch(ID) {
  278.   case IDC_rasid: return LANG_J8b; break;
  279.     case IDC_hh: case IDC_mm: case IDC_ss: 
  280.       return LANG(LANG_J3); break; // "Schedule the mirror","Programmer un miroir"); break;
  281.     case IDCANCEL:  return LANG(LANG_J4); break; // "Quit WinHTTrack","Quitter WinHTTrack"); break;
  282.     case IDC_avant: return LANG(LANG_J5); break; // "Back to the start page","Retour α la premiΦre page"); break;
  283.     case IDOK:      return LANG(LANG_J6); break; // "Click to start!","Clic pour dΘmarrer!"); break;
  284.     case IDC_rasdisc: return LANG_J17; break;
  285.     //case : return ""; break;
  286.   }
  287.   return "";
  288. }
  289. // TOOL TIPS
  290. // ------------------------------------------------------------
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297. // Appel aide
  298. BOOL Ctrans::OnHelpInfo2() {
  299.   return OnHelpInfo(NULL);
  300. }
  301.  
  302. BOOL Ctrans::OnHelpInfo(HELPINFO* dummy) 
  303. {
  304.   //return CPropertyPage::OnHelpInfo(pHelpInfo);
  305.   HtsHelper->Help();
  306.   return true;
  307.   //AfxGetApp()->WinHelp(0,HELP_FINDER);    // Index du fichier Hlp
  308.   //return true;
  309. }
  310.  
  311. void Ctrans::OnSelchangerasid() 
  312. {
  313.   m_ctl_rasdisc.SetCheck(1);
  314.   int r = m_ctlrasid.GetCurSel();
  315.   if (r!=CB_ERR) {
  316.     if (r==0) {
  317.       m_ctlcnx.ModifyStyle(0,WS_DISABLED); 
  318.     } else {
  319.       m_ctlcnx.ModifyStyle(WS_DISABLED,0); 
  320.     }
  321.     m_ctlcnx.RedrawWindow();
  322.   }
  323. }
  324.  
  325. BOOL Ctrans::OnWizardFinish( )
  326. {
  327.   BOOL DoLaunchMirror = ((CButton*)GetDlgItem(IDC_select_start))->GetCheck();
  328.  
  329.     // TODO: Add extra validation here
  330.   int r = m_ctlrasid.GetCurSel();
  331.   strcpy(RasString,"");
  332.   if ((r!=CB_ERR) && (r != 0)) {    // sΘlection provider
  333.     if (m_ctlrasid.GetLBText(r,RasString) != CB_ERR) {
  334.       if (strlen(RasString)>0) {
  335.         //
  336. #if USE_RAS
  337.         if (LibRasUse) {
  338.           if (strlen(RasString)>0) {    // sΘlection provider
  339.             BOOL ifpass;
  340.             dial.dwSize = sizeof(dial);
  341.             strcpy(dial.szEntryName,RasString);
  342.             strcpy(dial.szPhoneNumber,"");
  343.             strcpy(dial.szCallbackNumber,"");
  344.             strcpy(dial.szUserName,"");
  345.             strcpy(dial.szPassword,"");
  346.             strcpy(dial.szDomain,"");
  347.             if (!LibRas->RasGetEntryDialParams(NULL,&dial,&ifpass)) {
  348.               if (!ifpass) {    // pas de pass
  349.                 AfxMessageBox(LANG(LANG_J7 /*"No saved password for this connection!","Pas de mot de passe sauvΘ pour cette connexion!"*/));
  350.                 return 0;    // cancel
  351.               }
  352.             } else {
  353.               AfxMessageBox(LANG(LANG_J8 /*"Can not get RAS setup","Impossible d'obtenir les paramΦtres de connexion"*/));
  354.               return 0;    // cancel
  355.             }
  356.           }
  357.         }
  358. #endif
  359.         //
  360.       }
  361.     }
  362.   }
  363.  
  364.   /* prise en compte des options */
  365.   UpdateData(TRUE);         // DoDataExchange
  366.   compute_options() ;
  367.  
  368.   // Index "top" si nΘcessaire!
  369.   if (maintab->m_option3.m_windebug) {
  370.     fp_debug=fopen("winhttrack.log","wb");
  371.   }
  372.   if (fp_debug) {
  373.     fprintf(fp_debug,"Writing winprofile.ini\r\n");
  374.     fflush(fp_debug);
  375.   }
  376.   /*
  377.   {
  378.     char path[1024];
  379.     strcpy(path,dialog0->GetBasePath());
  380.     make_empty_index(path);
  381.   }
  382.   */
  383.   
  384.   // sauver profile dans hts-cache si besoin est
  385.   //if(maintab->m_option3.m_cache) {
  386.   Save_current_profile(0);
  387.   //}
  388.   // FIN sauver profile dans hts-cache si besoin est
  389.   if (fp_debug) {
  390.     if (DoLaunchMirror)
  391.       fprintf(fp_debug,"Profile written, launching mirror\r\n");
  392.     else
  393.       fprintf(fp_debug,"Profile written, saving settings\r\n");
  394.     fflush(fp_debug);
  395.   }
  396.   CShellApp_app->end_path=dialog0->GetBasePath();
  397.   CShellApp_app->end_path_complete=dialog0->GetPath();
  398.  
  399.   if (DoLaunchMirror) {
  400.     /* Switcher sur Cinprogress! */
  401.     /*this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(Cinprogress));*/
  402.     this_CWizTab->ModifyStyle(WS_VISIBLE,0,0);
  403.     this_CWizTab->RedrawWindow();
  404.     //
  405.     //{
  406.     //  CWizTab* tmp;
  407.     //  tmp=this_CWizTab;
  408.     this_CWizTab=this_intCWizTab2;
  409.     //  this_CWizTab2=tmp;
  410.     //}
  411.     //
  412.     this_CWizTab->ModifyStyle(0,WS_VISIBLE,0);
  413.     this_CWizTab->ModifyStyle(WS_DISABLED,0,0);
  414.     this_CSplitterFrame->RedrawWindow();
  415.     this_CWizTab->FinalInProgress();
  416.     // Lancement du miroir
  417.     LaunchMirror();
  418.   } else {      /* Ok, saved, exit (new project) */
  419.     this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(CDialogContainer));
  420.   }
  421.  
  422.     return 0;
  423. }
  424.  
  425. void Ctrans::OnDropdownrasid() 
  426. {
  427. #if USE_RAS
  428.   if (!isfilled) {
  429.     isfilled=TRUE;
  430.     InitRAS();
  431.     FillProviderList(1);
  432.   }
  433. #endif
  434. }
  435.  
  436. BOOL Ctrans::OnSetActive( ) {
  437.   this_CWizTab->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);
  438.   return 1;
  439. }
  440.  
  441. BOOL Ctrans::OnQueryCancel( ) {
  442.   this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(CDialogContainer));
  443.   return 0;
  444. }
  445.  
  446. BOOL Ctrans::OnKillActive( ) {
  447.   UpdateData(TRUE);         // DoDataExchange
  448.   return 1;
  449. }
  450.  
  451. void Ctrans::Onrasdisc() 
  452. {
  453.   InitRAS();
  454. }
  455.