private MenuFlyoutItem CreateAutoGuessEncodingItem() { var autoGuessEncodingItem = new MenuFlyoutItem() { Text = _resourceLoader.GetString("TextEditor_EncodingIndicator_FlyoutItem_AutoGuessEncoding"), FlowDirection = FlowDirection.LeftToRight, }; autoGuessEncodingItem.Click += async(sender, args) => { var selectedTextEditor = NotepadsCore.GetSelectedTextEditor(); var file = selectedTextEditor?.EditingFile; if (file == null || selectedTextEditor.FileModificationState == FileModificationState.RenamedMovedOrDeleted) { return; } Encoding encoding = null; try { using (var inputStream = await file.OpenReadAsync()) using (var stream = inputStream.AsStreamForRead()) { if (FileSystemUtility.TryGuessEncoding(stream, out var detectedEncoding)) { encoding = detectedEncoding; } } } catch (Exception) { encoding = null; } if (encoding == null) { NotificationCenter.Instance.PostNotification(_resourceLoader.GetString("TextEditor_NotificationMsg_EncodingCannotBeDetermined"), 2500); return; } try { await selectedTextEditor.ReloadFromEditingFile(encoding); NotificationCenter.Instance.PostNotification(_resourceLoader.GetString("TextEditor_NotificationMsg_FileReloaded"), 1500); } catch (Exception ex) { var fileOpenErrorDialog = new FileOpenErrorDialog(selectedTextEditor.EditingFilePath, ex.Message); await DialogManager.OpenDialogAsync(fileOpenErrorDialog, awaitPreviousDialog : false); if (!fileOpenErrorDialog.IsAborted) { NotepadsCore.FocusOnSelectedTextEditor(); } } }; return(autoGuessEncodingItem); }
private async void ReloadFileFromDisk(object sender, RoutedEventArgs e) { var selectedEditor = NotepadsCore.GetSelectedTextEditor(); if (selectedEditor?.EditingFile != null && selectedEditor.FileModificationState != FileModificationState.RenamedMovedOrDeleted) { try { await selectedEditor.ReloadFromEditingFile(); NotificationCenter.Instance.PostNotification(_resourceLoader.GetString("TextEditor_NotificationMsg_FileReloaded"), 1500); } catch (Exception ex) { var fileOpenErrorDialog = new FileOpenErrorDialog(selectedEditor.EditingFilePath, ex.Message); await DialogManager.OpenDialogAsync(fileOpenErrorDialog, awaitPreviousDialog : false); if (!fileOpenErrorDialog.IsAborted) { NotepadsCore.FocusOnSelectedTextEditor(); } } } }
private async Task OpenNewFiles() { IReadOnlyList <StorageFile> files; try { files = await FilePickerFactory.GetFileOpenPicker().PickMultipleFilesAsync(); } catch (Exception ex) { var fileOpenErrorDialog = new FileOpenErrorDialog(filePath: null, ex.Message); await DialogManager.OpenDialogAsync(fileOpenErrorDialog, awaitPreviousDialog : false); if (!fileOpenErrorDialog.IsAborted) { NotepadsCore.FocusOnSelectedTextEditor(); } return; } if (files == null || files.Count == 0) { NotepadsCore.FocusOnSelectedTextEditor(); return; } foreach (var file in files) { await OpenFile(file); } }
private void AddEncodingItem(Encoding encoding, MenuFlyoutSubItem reopenWithEncoding, MenuFlyoutSubItem saveWithEncoding) { const int EncodingMenuFlyoutItemHeight = 30; const int EncodingMenuFlyoutItemFontSize = 14; var reopenWithEncodingItem = new MenuFlyoutItem() { Text = EncodingUtility.GetEncodingName(encoding), FlowDirection = FlowDirection.LeftToRight, Height = EncodingMenuFlyoutItemHeight, FontSize = EncodingMenuFlyoutItemFontSize }; reopenWithEncodingItem.Click += async(sender, args) => { var selectedTextEditor = NotepadsCore.GetSelectedTextEditor(); if (selectedTextEditor != null) { try { await selectedTextEditor.ReloadFromEditingFile(encoding); NotificationCenter.Instance.PostNotification(_resourceLoader.GetString("TextEditor_NotificationMsg_FileReloaded"), 1500); } catch (Exception ex) { var fileOpenErrorDialog = new FileOpenErrorDialog(selectedTextEditor.EditingFilePath, ex.Message); await DialogManager.OpenDialogAsync(fileOpenErrorDialog, awaitPreviousDialog : false); if (!fileOpenErrorDialog.IsAborted) { NotepadsCore.FocusOnSelectedTextEditor(); } } } }; reopenWithEncoding.Items?.Add(reopenWithEncodingItem); var saveWithEncodingItem = new MenuFlyoutItem() { Text = EncodingUtility.GetEncodingName(encoding), FlowDirection = FlowDirection.LeftToRight, Height = EncodingMenuFlyoutItemHeight, FontSize = EncodingMenuFlyoutItemFontSize }; saveWithEncodingItem.Click += (sender, args) => { NotepadsCore.GetSelectedTextEditor()?.TryChangeEncoding(encoding); }; saveWithEncoding.Items?.Add(saveWithEncodingItem); }
public async Task <bool> OpenFile(StorageFile file, bool rebuildOpenRecentItems = true) { try { if (file == null) { return(false); } var openedEditor = NotepadsCore.GetTextEditor(file); if (openedEditor != null) { NotepadsCore.SwitchTo(openedEditor); NotificationCenter.Instance.PostNotification( _resourceLoader.GetString("TextEditor_NotificationMsg_FileAlreadyOpened"), 2500); return(false); } var editor = await NotepadsCore.CreateTextEditor(Guid.NewGuid(), file); NotepadsCore.OpenTextEditor(editor); NotepadsCore.FocusOnSelectedTextEditor(); var success = MRUService.TryAdd(file); // Remember recently used files if (success && rebuildOpenRecentItems) { await BuildOpenRecentButtonSubItems(); } TrackFileExtensionIfNotSupported(file); return(true); } catch (Exception ex) { var fileOpenErrorDialog = new FileOpenErrorDialog(file.Path, ex.Message); await DialogManager.OpenDialogAsync(fileOpenErrorDialog, awaitPreviousDialog : false); if (!fileOpenErrorDialog.IsAborted) { NotepadsCore.FocusOnSelectedTextEditor(); } return(false); } }