123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391 |
- using System;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- using FastReport.Export;
- using FastReport.Export.Text;
- using FastReport.Utils;
- using System.Globalization;
- using System.IO;
- namespace FastReport.Forms
- {
- /// <summary>
- /// Form for <see cref="TextExport"/>.
- /// For internal use only.
- /// </summary>
- public partial class TextExportForm : BaseExportForm
- {
- private TextExport previewExport;
- private Report report;
- private int prevPage;
- /// <inheritdoc/>
- public override void Init(ExportBase export)
- {
- base.Init(export);
- TextExport textExport = Export as TextExport;
- report = textExport.Report;
- ProfessionalColorTable vs2005ColorTable = new ProfessionalColorTable();
- vs2005ColorTable.UseSystemColors = true;
- toolStrip.Renderer = new ToolStripProfessionalRenderer(vs2005ColorTable);
- cbPageBreaks.Checked = textExport.PageBreaks;
- cbEmptyLines.Checked = textExport.EmptyLines;
- if (textExport.Frames && textExport.TextFrames)
- cbbFrames.SelectedIndex = 1;
- else if (textExport.Frames && !textExport.TextFrames)
- cbbFrames.SelectedIndex = 2;
- else
- cbbFrames.SelectedIndex = 0;
- cbDataOnly.Checked = textExport.DataOnly;
- if (textExport.Encoding == Encoding.Default)
- cbbCodepage.SelectedIndex = 0;
- else if (textExport.Encoding == Encoding.UTF8)
- cbbCodepage.SelectedIndex = 1;
- else if (textExport.Encoding == Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage))
- cbbCodepage.SelectedIndex = 2;
- udX.Value = (decimal)textExport.ScaleX;
- udY.Value = (decimal)textExport.ScaleY;
- udX.ValueChanged += new EventHandler(udX_ValueChanged);
- udY.ValueChanged += new EventHandler(udX_ValueChanged);
- cbbFrames.SelectedIndexChanged += new EventHandler(cbbFrames_SelectedIndexChanged);
- tbPage.Text = "1";
- prevPage = 1;
- lblTotalPages.Text = String.Format(Res.Get("Misc,ofM"), report.PreparedPages.Count);
- cbFontSize.SelectedIndex = 4;
- previewExport = new TextExport();
- previewExport.PreviewMode = true;
- CalcScale();
- }
- /// <inheritdoc/>
- public override void Localize()
- {
- base.Localize();
- MyRes res = new MyRes("Export,Text");
- Text = res.Get("");
- lblFrames.Text = res.Get("Frames");
- cbEmptyLines.Text = res.Get("EmptyLines");
- cbDataOnly.Text = res.Get("DataOnly");
- cbbFrames.Items[0] = res.Get("FramesNone");
- cbbFrames.Items[1] = res.Get("FramesText");
- cbbFrames.Items[2] = res.Get("FramesGraphic");
- lblCodepage.Text = res.Get("Codepage");
- cbbCodepage.Items[0] = res.Get("Default");
- cbbCodepage.Items[1] = res.Get("Unicode");
- cbbCodepage.Items[2] = res.Get("OEM");
- lblX.Text = res.Get("ScaleX");
- lblY.Text = res.Get("ScaleY");
- btnCalculate.Text = res.Get("AutoScale");
- lblLoss.Text = res.Get("DataLoss");
- lblPageWidth.Text = res.Get("PageWidth");
- lblPageHeight.Text = res.Get("PageHeight");
- gbScale.Text = res.Get("Scale");
- res = new MyRes("Export,Misc");
- gbOptions.Text = res.Get("Options");
- cbPageBreaks.Text = res.Get("PageBreaks");
- res = new MyRes("Preview");
- btnPrint.Text = res.Get("PrintText");
- btnPrint.ToolTipText = res.Get("Print");
- btnSave.ToolTipText = res.Get("Save");
- btnSave.Text = res.Get("SaveText");
- btnZoomOut.ToolTipText = Res.Get("Designer,Toolbar,Zoom,ZoomOut");
- btnZoomIn.ToolTipText = Res.Get("Designer,Toolbar,Zoom,ZoomIn");
- btnFirst.ToolTipText = res.Get("First");
- btnPrior.ToolTipText = res.Get("Prior");
- lblTotalPages.Text = String.Format(Res.Get("Misc,ofM"), 1);
- btnNext.ToolTipText = res.Get("Next");
- btnLast.ToolTipText = res.Get("Last");
- btnClose.Text = Res.Get("Buttons,Close");
- }
- /// <inheritdoc/>
- public override void UpdateDpiDependencies()
- {
- base.UpdateDpiDependencies();
- toolStrip.Font = Font;
- Status.Font = Font;
- cbFontSize.Size = this.LogicalToDevice(new Size(40, 21));
- tbPage.Size = this.LogicalToDevice(new Size(40, 21));
- btnPrint.Image = GetImage(195);
- btnSave.Image = GetImage(2);
- btnZoomOut.Image = GetImage(193);
- btnZoomIn.Image = GetImage(192);
- btnFirst.Image = GetImage(185);
- btnPrior.Image = GetImage(186);
- btnNext.Image = GetImage(187);
- btnLast.Image = GetImage(188);
- picPerforation.BackgroundImage = this.GetImage("perforation.png");
- }
- private void CalcScale()
- {
- TextExport textExport = Export as TextExport;
- using (ProgressForm progressForm = new ProgressForm(null))
- {
- progressForm.Show();
- MyRes res = new MyRes("Export,Text");
- progressForm.ShowProgressMessage(res.Get("ScaleMessage"));
- textExport.EmptyLines = cbEmptyLines.Checked;
- textExport.Frames = cbbFrames.SelectedIndex != 0;
- textExport.TextFrames = cbbFrames.SelectedIndex == 1;
- textExport.DataOnly = cbDataOnly.Checked;
- textExport.ScaleX = (float)udX.Value;
- textExport.ScaleY = (float)udY.Value;
- textExport.CalculateScale(progressForm);
- udX.Value = (decimal)Math.Round(textExport.ScaleX, 2);
- udY.Value = (decimal)Math.Round(textExport.ScaleY, 2);
- }
- UpdatePreview();
- }
- private void UpdatePreview()
- {
- if (previewExport != null)
- {
- TextExport textExport = Export as TextExport;
- int pageNo = int.Parse(tbPage.Text) - 1;
- using (ReportPage page = textExport.Report.PreparedPages.GetPage(pageNo))
- {
- previewExport.PageBreaks = cbPageBreaks.Checked;
- previewExport.DataOnly = cbDataOnly.Checked;
- previewExport.Frames = cbbFrames.SelectedIndex != 0;
- previewExport.TextFrames = cbbFrames.SelectedIndex == 1;
- previewExport.EmptyLines = cbEmptyLines.Checked;
- previewExport.Encoding = GetEncoding();
- previewExport.ScaleX = (float)udX.Value;
- previewExport.ScaleY = (float)udY.Value;
- previewExport.SetReport(textExport.Report);
- tbPreview.Text = previewExport.ExportPage(pageNo);
- lblPageWidthValue.Text = previewExport.PageWidth.ToString();
- lblPageHeightValue.Text = previewExport.PageHeight.ToString();
- lblLoss.Visible = !previewExport.DataSaved;
- }
- }
- }
- private Encoding GetEncoding()
- {
- Encoding encoding;
- if (cbbCodepage.SelectedIndex == 0)
- encoding = Encoding.Default;
- else if (cbbCodepage.SelectedIndex == 1)
- encoding = Encoding.UTF8;
- else if (cbbCodepage.SelectedIndex == 2)
- encoding = Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage);
- else
- throw new Exception("Unknown encoding");
- return encoding;
- }
- private void cbPageBreaks_Click(object sender, EventArgs e)
- {
- UpdatePreview();
- }
- private void cbbCodepage_SelectedValueChanged(object sender, EventArgs e)
- {
- UpdatePreview();
- }
- private void btnCalculate_Click(object sender, EventArgs e)
- {
- CalcScale();
- }
- private void tbPage_TextChanged(object sender, EventArgs e)
- {
- bool validate = false;
- try
- {
- int i = int.Parse(tbPage.Text);
- validate = (i > 0 && i <= report.PreparedPages.Count);
- UpdatePreview();
- btnFirst.Enabled = i > 1;
- btnPrior.Enabled = btnFirst.Enabled;
- btnNext.Enabled = i < report.PreparedPages.Count;
- btnLast.Enabled = btnNext.Enabled;
- }
- catch
- {
- }
- if (!validate)
- tbPage.Text = prevPage.ToString();
- else
- prevPage = int.Parse(tbPage.Text);
- }
- private void btnClose_Click(object sender, EventArgs e)
- {
- DialogResult = DialogResult.Cancel;
- }
- private void btnFirst_Click(object sender, EventArgs e)
- {
- tbPage.Text = "1";
- }
- private void btnPrior_Click(object sender, EventArgs e)
- {
- int i = int.Parse(tbPage.Text);
- if (i > 1)
- tbPage.Text = (i - 1).ToString();
- }
- private void btnNext_Click(object sender, EventArgs e)
- {
- int i = int.Parse(tbPage.Text);
- if (i < report.PreparedPages.Count)
- tbPage.Text = (i + 1).ToString();
- }
- private void btnLast_Click(object sender, EventArgs e)
- {
- tbPage.Text = report.PreparedPages.Count.ToString();
- }
- private void cbFontSize_SelectedIndexChanged(object sender, EventArgs e)
- {
- tbPreview.Font = new Font(tbPreview.Font.FontFamily, int.Parse(cbFontSize.Text));
- }
- private void btnZoomOut_Click(object sender, EventArgs e)
- {
- if (cbFontSize.SelectedIndex > 0)
- cbFontSize.SelectedIndex--;
- }
- private void btnZoomIn_Click(object sender, EventArgs e)
- {
- if (cbFontSize.SelectedIndex < cbFontSize.Items.Count - 1)
- cbFontSize.SelectedIndex++;
- }
- private void btnSave_Click(object sender, EventArgs e)
- {
- TextExport textExport = new TextExport();
- textExport.PageBreaks = cbPageBreaks.Checked;
- textExport.EmptyLines = cbEmptyLines.Checked;
- textExport.Frames = cbbFrames.SelectedIndex != 0;
- textExport.TextFrames = cbbFrames.SelectedIndex == 1;
- textExport.DataOnly = cbDataOnly.Checked;
- textExport.Encoding = GetEncoding();
- textExport.ScaleX = (float)udX.Value;
- textExport.ScaleY = (float)udY.Value;
- textExport.OpenAfterExport = false;
- textExport.AvoidDataLoss = false;
- using (SaveFileDialog dialog = new SaveFileDialog())
- {
- dialog.FileName = Path.GetFileNameWithoutExtension(Path.GetFileName(report.FileName));
- dialog.Filter = textExport.FileFilter;
- string defaultExt = dialog.Filter.Split('|')[1];
- dialog.DefaultExt = Path.GetExtension(defaultExt);
- if (dialog.ShowDialog() == DialogResult.OK)
- {
- Config.DoEvent();
- textExport.Export(report, dialog.FileName);
- }
- }
- }
- private void udX_ValueChanged(object sender, EventArgs e)
- {
- UpdatePreview();
- }
- private void udY_ValueChanged(object sender, EventArgs e)
- {
- UpdatePreview();
- }
- private void cbbFrames_SelectedIndexChanged(object sender, EventArgs e)
- {
- CalcScale();
- }
- private void btnCalculate_Click_1(object sender, EventArgs e)
- {
- CalcScale();
- }
- private void btnPrint_Click(object sender, EventArgs e)
- {
- TextExport parentExport = Export as TextExport;
- TextExport textExport = new TextExport();
- using (TextExportPrintForm printDialog = new TextExportPrintForm(textExport))
- {
- textExport.PrinterTypes = parentExport.PrinterTypes;
- textExport.Copies = parentExport.Copies;
- printDialog.CurrentPage = tbPage.Text;
- if (printDialog.ShowDialog() == DialogResult.OK)
- {
- if (cbbCodepage.SelectedIndex == 1)
- cbbCodepage.SelectedIndex = 2;
- textExport.PageBreaks = cbPageBreaks.Checked;
- textExport.EmptyLines = cbEmptyLines.Checked;
- textExport.Frames = cbbFrames.SelectedIndex != 0;
- textExport.TextFrames = cbbFrames.SelectedIndex == 1;
- textExport.DataOnly = cbDataOnly.Checked;
- textExport.Encoding = GetEncoding();
- textExport.ScaleX = (float)udX.Value;
- textExport.ScaleY = (float)udY.Value;
- textExport.PrintAfterExport = true;
- textExport.OpenAfterExport = false;
- textExport.AvoidDataLoss = false;
- using (MemoryStream memStream = new MemoryStream())
- textExport.Export(report, memStream);
- }
- }
- }
- private void TextExportForm_KeyDown(object sender, KeyEventArgs e)
- {
- if (e.KeyCode == Keys.Escape)
- DialogResult = DialogResult.Cancel;
- else if (e.KeyCode == Keys.PageDown)
- btnNext_Click(null, null);
- else if (e.KeyCode == Keys.PageUp)
- btnPrior_Click(null, null);
- }
- private void TextExportForm_Shown(object sender, EventArgs e)
- {
- // do not set this property in the .Designer.cs file:
- // modal dialog form with Maximized state will be displayed on wrong monitor and have scaling issues
- WindowState = FormWindowState.Maximized;
- }
- private void TextExportForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- TextExport textExport = Export as TextExport;
- textExport.PageBreaks = cbPageBreaks.Checked;
- textExport.EmptyLines = cbEmptyLines.Checked;
- textExport.Frames = cbbFrames.SelectedIndex != 0;
- textExport.TextFrames = cbbFrames.SelectedIndex == 1;
- textExport.DataOnly = cbDataOnly.Checked;
- textExport.Encoding = GetEncoding();
- textExport.ScaleX = (float)udX.Value;
- textExport.ScaleY = (float)udY.Value;
- }
- /// <summary>
- /// Initializes a new instance of the <see cref="TextExportForm"/> class.
- /// </summary>
- public TextExportForm()
- {
- InitializeComponent();
- }
- }
- }
|