FormLabelPrint.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using qdr.app.studiou.orders2printpack.Extensions;
  2. using qdr.app.studiou.orders2printpack.Labels;
  3. using qdr.app.studiou.orders2printpack.Properties;
  4. using System.Data;
  5. using System.IO.Abstractions;
  6. namespace qdr.app.studiou.orders2printpack
  7. {
  8. public partial class FormLabelPrint : Form
  9. {
  10. private string? _csvPath;
  11. private string? _xlsPath;
  12. private DataTable? _data;
  13. public FormLabelPrint()
  14. {
  15. InitializeComponent();
  16. }
  17. #region *** Form Handlers ***
  18. private void butOpenCsv_Click(object sender, EventArgs e)
  19. {
  20. BlockErrorHandled(() =>
  21. {
  22. if (dlgOpenCsv.ShowDialog(this) == DialogResult.OK)
  23. {
  24. _csvPath = dlgOpenCsv.FileName;
  25. tbCsvPath.Text = _csvPath;
  26. _data = CsvUtils.CsvToDataTable(new FileSystem(), _csvPath, AppSettings.Default.CSVDelimiter );
  27. RefreshParameters();
  28. }
  29. });
  30. }
  31. private void butOpenXls_Click(object sender, EventArgs e)
  32. {
  33. BlockErrorHandled(() =>
  34. {
  35. if (dlgSaveXls.ShowDialog(this) == DialogResult.OK)
  36. {
  37. _xlsPath = dlgSaveXls.FileName;
  38. tbXslxPath.Text = _csvPath;
  39. }
  40. });
  41. }
  42. private void butGenerate_Click(object sender, EventArgs e)
  43. {
  44. BlockErrorHandled(() =>
  45. {
  46. if (string.IsNullOrEmpty(_csvPath)) throw new Exception($"Vstupní CSV soubor musí být vybrán.");
  47. if (string.IsNullOrEmpty(_xlsPath)) throw new Exception($"Výstupní XSLX soubor musí být vybrán.");
  48. if (!File.Exists(_csvPath)) throw new Exception($"Vstupní CSV soubor '{_csvPath}' neexistuje, vyberte existující soubor.");
  49. if (_data == null) throw new Exception($"Vstupní CSV soubor '{_csvPath}' musí být otevřen.");
  50. var generator = new ExcelLabelGenerator(AppSettings.Default.LabelTemplate.Replace("{cr}","\n"));
  51. if (generator.GenerateLabels(_data, _xlsPath, int.Parse(AppSettings.Default.LabelPerRow), int.Parse(AppSettings.Default.LabelPerCol), double.Parse(AppSettings.Default.LabelWidth), double.Parse(AppSettings.Default.LabelHeight)))
  52. MessageBox.Show(this, $"Výstupní soubor '{_xlsPath}' byl vygenerován.", "Export", MessageBoxButtons.OK, MessageBoxIcon.Information);
  53. RefreshParameters();
  54. });
  55. }
  56. private void butConfig_Click(object sender, EventArgs e)
  57. {
  58. var dlg = new dlgLabelSettings();
  59. if (dlg.ShowDialog(this) == DialogResult.OK)
  60. {
  61. // Save settings
  62. RefreshParameters();
  63. }
  64. }
  65. private void butClose_Click(object sender, EventArgs e)
  66. {
  67. Close();
  68. }
  69. #endregion
  70. #region *** Private Methods ***
  71. private void RefreshParameters()
  72. {
  73. lParCount.Text = $"Štítků/záznamů: {_data?.Rows.Count}";
  74. lParCol.Text = $"Štítků ve sloupci: {AppSettings.Default.LabelPerCol}";
  75. lParRow.Text = $"Štítků řádků na stránku: {AppSettings.Default.LabelPerRow}";
  76. }
  77. private void BlockErrorHandled(Action block)
  78. {
  79. try
  80. {
  81. block();
  82. }
  83. catch (Exception ex)
  84. {
  85. // Log("Error: " + ex.Message);
  86. MessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  87. }
  88. }
  89. #endregion
  90. }
  91. }