PageRenderTime 45ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/source/library/AdornedPasteUp/MainForm.cs

https://bitbucket.org/VahidN/interlace
C# | 186 lines | 129 code | 32 blank | 25 comment | 10 complexity | ccf6e6fafd9cb8d59575a499fb35f4bf MD5 | raw file
  1. #region Using Directives and Copyright Notice
  2. // Copyright (c) 2007-2010, Computer Consultancy Pty Ltd
  3. // All rights reserved.
  4. //
  5. // Redistribution and use in source and binary forms, with or without
  6. // modification, are permitted provided that the following conditions are met:
  7. // * Redistributions of source code must retain the above copyright
  8. // notice, this list of conditions and the following disclaimer.
  9. // * Redistributions in binary form must reproduce the above copyright
  10. // notice, this list of conditions and the following disclaimer in the
  11. // documentation and/or other materials provided with the distribution.
  12. // * Neither the name of the Computer Consultancy Pty Ltd nor the
  13. // names of its contributors may be used to endorse or promote products
  14. // derived from this software without specific prior written permission.
  15. //
  16. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  17. // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  18. // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  19. // ARE DISCLAIMED. IN NO EVENT SHALL COMPUTER CONSULTANCY PTY LTD BE LIABLE
  20. // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  21. // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  22. // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  23. // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  24. // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  25. // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  26. // DAMAGE.
  27. using System;
  28. using System.Collections.Generic;
  29. using System.ComponentModel;
  30. using System.Data;
  31. using System.Drawing;
  32. using System.Drawing.Imaging;
  33. using System.IO;
  34. using System.Runtime.InteropServices;
  35. using System.Text;
  36. using System.Threading;
  37. using System.Windows.Forms;
  38. using Interlace.AdornedPasteUp;
  39. using Interlace.AdornedPasteUp.Documents;
  40. using Interlace.AdornedPasteUp.Editing;
  41. using Interlace.Binding;
  42. using Interlace.Binding.Views;
  43. using Interlace.ScreenShooting;
  44. #endregion
  45. namespace AdornedPasteUp
  46. {
  47. public partial class MainForm : Form
  48. {
  49. public MainForm()
  50. {
  51. InitializeComponent();
  52. }
  53. Binder _mainFormBinder;
  54. Binder _selectedFormBinder;
  55. Binder _selectedPasteUpBinder;
  56. private void MainForm_Load(object sender, EventArgs e)
  57. {
  58. _mainFormBinder = new Binder(this);
  59. _selectedFormBinder = new Binder(_mainFormBinder, "SelectedForm");
  60. _selectedPasteUpBinder = new Binder(_selectedFormBinder, "PasteUpControl");
  61. PanelPerTypeView panelPerTypeView = new PanelPerTypeView();
  62. panelPerTypeView.NullPanel = _noPropertiesPanel;
  63. panelPerTypeView.AddPanel(typeof(LabelDocumentFrame), _labelPropertiesPanel);
  64. _selectedPasteUpBinder.AddBinding("SelectedFrame", panelPerTypeView);
  65. Binder labelPropertiesBinder = new Binder();
  66. _selectedPasteUpBinder.AddBinding("SelectedFrame", new PropertyView(labelPropertiesBinder, "BoundTo", null, true),
  67. new TypeFilterConverter<LabelDocumentFrame>());
  68. labelPropertiesBinder.AddBinding("Label", new BaseEditBinderView(_labelLabel));
  69. labelPropertiesBinder.AddBinding("Caption", new BaseEditBinderView(_labelCaption));
  70. MdiChildActivate += new EventHandler(MainForm_MdiChildActivate);
  71. }
  72. #region Selection Properties
  73. public PasteUpForm SelectedForm
  74. {
  75. get
  76. {
  77. return ActiveMdiChild as PasteUpForm;
  78. }
  79. }
  80. public event EventHandler SelectedFormChanged;
  81. void MainForm_MdiChildActivate(object sender, EventArgs e)
  82. {
  83. if (SelectedFormChanged != null) SelectedFormChanged(this, EventArgs.Empty);
  84. }
  85. #endregion
  86. bool HasSelectedPasteUp
  87. {
  88. get { return _selectedPasteUpBinder.BoundTo != null; }
  89. }
  90. PasteUpControl SelectedPasteUp
  91. {
  92. get { return _selectedPasteUpBinder.BoundTo as PasteUpControl; }
  93. }
  94. private void _newItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  95. {
  96. PasteUpForm.New(this);
  97. }
  98. private void _addLabelItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  99. {
  100. if (HasSelectedPasteUp) SelectedPasteUp.AddNewFrame(new LabelDocumentFrame());
  101. }
  102. private void _saveAsItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  103. {
  104. if (HasSelectedPasteUp) SelectedPasteUp.SaveAs();
  105. }
  106. private void _saveItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  107. {
  108. if (HasSelectedPasteUp) SelectedPasteUp.Save();
  109. }
  110. private void _openItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  111. {
  112. PasteUpForm.Open(this);
  113. }
  114. private void barButtonItem3_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  115. {
  116. if (HasSelectedPasteUp) SelectedPasteUp.SaveImage();
  117. }
  118. private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  119. {
  120. if (!HasSelectedPasteUp) return;
  121. Hide();
  122. Application.DoEvents();
  123. Thread.Sleep(300);
  124. try
  125. {
  126. ScreenShot screenShot = ScreenShot.Capture();
  127. using (Bitmap captureBitmap = ScreenShotForm.EditScreenShot(screenShot))
  128. {
  129. using (MemoryStream stream = new MemoryStream())
  130. {
  131. captureBitmap.Save(stream, ImageFormat.Png);
  132. SelectedPasteUp.AddEncodedImage(stream.ToArray());
  133. }
  134. }
  135. }
  136. finally
  137. {
  138. Application.DoEvents();
  139. this.Show();
  140. }
  141. }
  142. private void _closeItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  143. {
  144. if (SelectedForm != null)
  145. {
  146. SelectedForm.Close();
  147. }
  148. }
  149. private void _exitItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  150. {
  151. Close();
  152. }
  153. }
  154. }