Clone
ixen <ixen@copyhandler.com>
committed
on 23 Mar 19
Fixed problem with memory being deallocated in another dll (CH-340).
ch-1.40 + 2 more
src/ch/CustomCopyDlg.cpp (+7 -7)
464 464 }
465 465
466 466 void CCustomCopyDlg::SetBuffersizesString()
467 467 {
468 468         CRect rcList;
469 469         m_ctlBufferSizes.GetWindowRect(&rcList);
470 470         rcList.right-=2*GetSystemMetrics(SM_CXEDGE);
471 471
472 472         m_ctlBufferSizes.SetColumnWidth(rcList.Width()/3);
473 473
474 474         // erase everything
475 475         m_ctlBufferSizes.ResetContent();
476 476
477 477         // fill the list
478 478         ictranslate::CFormat fmt;
479 479
480 480         chengine::TBufferSizes bsSizes = GetTaskPropBufferSizes(m_tTaskDefinition.GetConfiguration());
481 481
482 482         fmt.SetFormat(GetResManager().LoadString(IDS_BSEDEFAULT_STRING));
483 483         fmt.SetParam(_T("%size"), GetSizeString(bsSizes.GetDefaultSize(), true));
484           m_ctlBufferSizes.AddString(fmt);
  484         m_ctlBufferSizes.AddString(fmt.ToString());
485 485         
486 486         if (!bsSizes.IsOnlyDefault())
487 487         {
488 488                 fmt.SetFormat(GetResManager().LoadString(IDS_BSEONEDISK_STRING));
489 489                 fmt.SetParam(_T("%size"), GetSizeString(bsSizes.GetOneDiskSize(), true));
490                   m_ctlBufferSizes.AddString(fmt);
  490                 m_ctlBufferSizes.AddString(fmt.ToString());
491 491                 
492 492                 fmt.SetFormat(GetResManager().LoadString(IDS_BSETWODISKS_STRING));
493 493                 fmt.SetParam(_T("%size"), GetSizeString(bsSizes.GetTwoDisksSize(), true));
494                   m_ctlBufferSizes.AddString(fmt);
  494                 m_ctlBufferSizes.AddString(fmt.ToString());
495 495                 
496 496                 fmt.SetFormat(GetResManager().LoadString(IDS_BSECD_STRING));
497 497                 fmt.SetParam(_T("%size"), GetSizeString(bsSizes.GetCDSize(), true));
498                   m_ctlBufferSizes.AddString(fmt);
  498                 m_ctlBufferSizes.AddString(fmt.ToString());
499 499                 
500 500                 fmt.SetFormat(GetResManager().LoadString(IDS_BSELAN_STRING));
501 501                 fmt.SetParam(_T("%size"), GetSizeString(bsSizes.GetLANSize(), true));
502                   m_ctlBufferSizes.AddString(fmt);
  502                 m_ctlBufferSizes.AddString(fmt.ToString());
503 503         }
504 504 }
505 505
506 506 void CCustomCopyDlg::OnChangebufferButton()
507 507 {
508 508         chengine::TBufferSizes tBufferSizes = GetTaskPropBufferSizes(m_tTaskDefinition.GetConfiguration());
509 509
510 510         CBufferSizeDlg dlg(&tBufferSizes);
511 511         if(dlg.DoModal() == IDOK)
512 512         {
513 513                 SetTaskPropBufferSizes(m_tTaskDefinition.GetConfiguration(), dlg.GetBufferSizes());
514 514                 SetBuffersizesString();
515 515         }
516 516 }
517 517
518 518 void CCustomCopyDlg::AddPath(CString strPath)
519 519 {
520 520         // fill listbox with paths
521 521         LVITEM lvi;
522 522         lvi.mask=LVIF_TEXT | LVIF_IMAGE;
 
932 932                         strData = (char*)spBuffer.get();
933 933                 }
934 934
935 935                 CString strToken;
936 936                 int iPos = 0;
937 937                 strToken = strData.Tokenize(_T("\n"), iPos);
938 938                 while(strToken != _T(""))
939 939                 {
940 940                         strToken.TrimLeft(_T("\" \t\r\n"));
941 941                         strToken.TrimRight(_T("\" \t\r\n"));
942 942
943 943                         AddPath(strToken);
944 944                         uiCount++;
945 945
946 946                         strToken = strData.Tokenize(_T("\n"), iPos);
947 947                 }
948 948
949 949                 // report
950 950                 ictranslate::CFormat fmt(GetResManager().LoadString(IDS_IMPORTREPORT_STRING));
951 951                 fmt.SetParam(_T("%count"), uiCount);
952                   AfxMessageBox(fmt);
  952                 AfxMessageBox(fmt.ToString());
953 953         }
954 954 }
955 955
956 956 void CCustomCopyDlg::OnForcedirectoriesCheck()
957 957 {
958 958         UpdateData(TRUE);
959 959
960 960         GetDlgItem(IDC_IGNOREFOLDERS_CHECK)->EnableWindow(!m_bForceDirectories);
961 961 }
962 962
963 963 void CCustomCopyDlg::OnIgnorefoldersCheck()
964 964 {
965 965         UpdateData(TRUE);
966 966
967 967         GetDlgItem(IDC_FORCEDIRECTORIES_CHECK)->EnableWindow(!m_bIgnoreFolders);
968 968 }
969 969
970 970 void CCustomCopyDlg::OnExportButtonClicked()
971 971 {
972 972         UpdateData(TRUE);
 
981 981
982 982         CFileDialog dlg(FALSE, _T("xml"), _T("Task"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, GetResManager().LoadString(IDS_FLTALLFILTER_STRING));
983 983         if (dlg.DoModal() == IDOK)
984 984         {
985 985                 CString strError;
986 986                 try
987 987                 {
988 988                         m_tTaskDefinition.Store(chcore::PathFromString(dlg.GetPathName()));
989 989                 }
990 990                 catch (const std::exception& e)
991 991                 {
992 992                         strError = e.what();
993 993                 }
994 994
995 995                 if (!strError.IsEmpty())
996 996                 {
997 997                         ictranslate::CFormat fmt;
998 998                         fmt.SetFormat(GetResManager().LoadString(IDS_EXPORTING_TASK_FAILED));
999 999                         fmt.SetParam(_T("%reason"), strError);
1000 1000
1001                           AfxMessageBox(fmt, MB_OK | MB_ICONERROR);
  1001                         AfxMessageBox(fmt.ToString(), MB_OK | MB_ICONERROR);
1002 1002                 }
1003 1003         }
1004 1004 }
1005 1005
1006 1006 void CCustomCopyDlg::UpdateInternalTaskDefinition()
1007 1007 {
1008 1008         CString strDstPath;
1009 1009         m_ctlDstPath.GetWindowText(strDstPath);
1010 1010
1011 1011         // copy files from listctrl to an array
1012 1012         m_tTaskDefinition.ClearSourcePaths();
1013 1013
1014 1014         // dest path
1015 1015         m_tTaskDefinition.SetDestinationPath(chcore::PathFromString(strDstPath));
1016 1016
1017 1017         for (int i = 0; i < m_ctlFiles.GetItemCount(); i++)
1018 1018         {
1019 1019                 m_tTaskDefinition.AddSourcePath(chcore::PathFromString(m_ctlFiles.GetItemText(i, 0)));
1020 1020         }
1021 1021