using ComPDFKitViewer; using ComPDFKitViewer.PdfViewer; using Microsoft.Win32; using PDF_Master.Helper; using PDF_Master.Model; using Prism.Commands; using Prism.Mvvm; using Prism.Regions; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace PDF_Master.ViewModels.Dialog.ChatGPTAIDialogs { public class DocumentaryTranslationDialogViewModel : BindableBase, IDialogAware { public IRegionManager regionManager; public CPDFViewer PDFViewer; public ViewContentViewModel viewContentViewModel; private CPDFViewer pdfViewer = null; private string fromlanguage = ""; private string tolanguage = ""; private int fromlanguageIndex = 0; public int FromlanguageIndex { get { return fromlanguageIndex; } set { SetProperty(ref fromlanguageIndex, value); fromlanguage=ChatGTPAIHelper.UpdateLanguagebType(value); } } private int tolanguageIndex = 0; public int TolanguageIndex { get { return tolanguageIndex; } set { SetProperty(ref tolanguageIndex, value); tolanguage = ChatGTPAIHelper.UpdateLanguagebType(value+1); } } public static List<string> FromlanguageFamily { set; get; } = new List<string>(); public string ViewerRegionName { get; set; } private void GetFromlanguageOrigin() { FromlanguageFamily.Clear(); FromlanguageFamily = ChatGTPAIHelper.SetFromlanguageOrigin(); } public List<string> TolanguageFamily { set; get; } = new List<string>(); private void GetTolanguageOrigin() { TolanguageFamily.Clear(); TolanguageFamily = ChatGTPAIHelper.SetTolanguageOrigin(); } public DelegateCommand TranslateCommand { get; set; } public DelegateCommand CancelCommand { get; set; } public DocumentaryTranslationDialogViewModel(IRegionManager regionManager) { this.regionManager = regionManager; CancelCommand = new DelegateCommand(cancel); TranslateCommand = new DelegateCommand(translate); ViewerRegionName = Guid.NewGuid().ToString(); init(); } private void init() { GetFromlanguageOrigin(); GetTolanguageOrigin(); } private void cancel() { RequestClose.Invoke(new DialogResult(ButtonResult.Cancel)); } public async void translate() { string newfile= await ChatGTPAIHelper.fileTranslate(pdfViewer.Document.FilePath, fromlanguage, tolanguage); if (!string.IsNullOrEmpty(newfile)) { if (File.Exists(newfile)) { if (viewContentViewModel != null) { viewContentViewModel.OpenFile(new string[] { newfile }); } } } RequestClose.Invoke(new DialogResult(ButtonResult.Cancel)); } public string Title => ""; public event Action<IDialogResult> RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out pdfViewer); parameters.TryGetValue<ViewContentViewModel>(ParameterNames.ViewContentViewModel, out viewContentViewModel); if (pdfViewer != null) { if (!regionManager.Regions[ViewerRegionName].Views.Contains(pdfViewer)) { PDFViewer = new CPDFViewer(); PDFViewer.InitDocument(pdfViewer.Document); //Document = PDFViewer.Document; //pdfViewer.CustomDrawHandler += CurrentViewer_CustomDrawHandler; //pdfViewer.UndoManager.PropertyChanged += UndoManager_PropertyChanged; regionManager.AddToRegion(ViewerRegionName, PDFViewer); PDFViewer.SetAnnotInteraction(!PDFViewer.GetAnnotInteraction()); PDFViewer.Load(); PDFViewer.ChangeFitMode(FitMode.FitHeight); PDFViewer.ChangeViewMode(ViewMode.Single); PDFViewer.SetMouseMode(MouseModes.PanTool); fromlanguage = ChatGTPAIHelper.UpdateLanguagebType(0); tolanguage = ChatGTPAIHelper.UpdateLanguagebType(1); //PageRangeNumber = PDFViewer.Document.PageCount; //PDFViewer.Zoom(0.1); } } } } }