using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace Txt2Bib { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); OutputDir = $@"{Directory.GetCurrentDirectory()}\bibtex"; Directory.CreateDirectory(OutputDir); DropArea.AllowDrop = true; InitialDropText = DropArea.Text; } private string OutputDir { get; } private string InitialDropText { get; } private void Execute() { if (DropArea.Text == InitialDropText) { MessageBox.Show("Nessun percorso disponibile..."); return; } var txt2bib = new Text2Bib(); var result = txt2bib.Generate(DropArea.Text); Debug.Text = result; using var outputFile = new StreamWriter($@"{OutputDir}\output_bibtex.bib"); outputFile.Write(result); } private void DropArea_Drop(object sender, DragEventArgs e) { // Get data object var dataObject = e.Data as DataObject; if (dataObject == null ) { MessageBox.Show("Nessun percorso disponibile..."); return; } // Check for file list if (dataObject.ContainsFileDropList()) { // Clear values DropArea.Text = string.Empty; // Process file names var fileNames = dataObject.GetFileDropList(); var bd = new StringBuilder(); foreach (var fileName in fileNames) { bd.Append(fileName + "\n"); } // Set text DropArea.Text = bd.ToString(); } } private void DropArea_PreviewDragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effects = DragDropEffects.Copy; } else { e.Effects = DragDropEffects.None; } } private void DropArea_PreviewDragOver(object sender, DragEventArgs e) { e.Handled = true; } private void GoBtn_Click(object sender, RoutedEventArgs e) { Execute(); } private void CopyDebug_Click(object sender, RoutedEventArgs e) { Debug.SelectAll(); Debug.Copy(); } private void OpenDestFolderBtn_Click(object sender, RoutedEventArgs e) { System.Diagnostics.Process.Start("explorer.exe", OutputDir); } private void ToggleMenu_Click(object sender, RoutedEventArgs e) { if (FileMenu.Visibility == Visibility.Collapsed) { FileMenu.Visibility = Visibility.Visible; } else { FileMenu.Visibility = Visibility.Collapsed; } } private void OpenOutputDir_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { System.Diagnostics.Process.Start("explorer.exe", OutputDir); } private void MenuExec_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { Execute(); } private void Exit_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { Environment.Exit(0); } private void Help_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { MessageBox.Show("Trascinare i file txt da elaborare nella casella in alto e premere 'Esegui'.\n" + "Il file BibTeX viene generato in una cartella dedicata, che si può aprire selezionando " + "'Apri cartella output' dal menu.", "Help", MessageBoxButton.OK, MessageBoxImage.Information); } private void FileMenu_LostMouseFocus(object sender, RoutedEventArgs e) { FileMenu.Visibility = Visibility.Collapsed; } } }