StandardToolbar.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. using System;
  2. using System.Windows.Forms;
  3. using FastReport.Utils;
  4. #if !MONO
  5. using FastReport.DevComponents.DotNetBar;
  6. #endif
  7. namespace FastReport.Design.Toolbars
  8. {
  9. internal class StandardToolbar : ToolbarBase
  10. {
  11. #region Fields
  12. #if !MONO
  13. public ButtonItem btnNew;
  14. public ButtonItem btnOpen;
  15. public ButtonItem btnSave;
  16. public ButtonItem btnSaveAll;
  17. public ButtonItem btnPreview;
  18. public ButtonItem btnNewPage;
  19. public ButtonItem btnNewDialog;
  20. public ButtonItem btnCopyPage;
  21. public ButtonItem btnDeletePage;
  22. public ButtonItem btnPageSetup;
  23. public ButtonItem btnCut;
  24. public ButtonItem btnCopy;
  25. public ButtonItem btnPaste;
  26. public ButtonItem btnFormatPainter;
  27. public ButtonItem btnUndo;
  28. public ButtonItem btnRedo;
  29. public ButtonItem btnGroup;
  30. public ButtonItem btnUngroup;
  31. private UndoDropDown undoDropDown;
  32. private RedoDropDown redoDropDown;
  33. private Timer clipboardTimer;
  34. private Timer previewTimer;
  35. #else
  36. public ToolStripButton btnNew;
  37. public ToolStripSplitButton btnOpen;
  38. public ToolStripButton btnSave;
  39. public ToolStripButton btnSaveAll;
  40. public ToolStripButton btnPreview;
  41. public ToolStripButton btnNewPage;
  42. public ToolStripButton btnNewDialog;
  43. public ToolStripButton btnCopyPage;
  44. public ToolStripButton btnDeletePage;
  45. public ToolStripButton btnPageSetup;
  46. public ToolStripButton btnCut;
  47. public ToolStripButton btnCopy;
  48. public ToolStripButton btnPaste;
  49. public ToolStripButton btnFormatPainter;
  50. public ToolStripSplitButton btnUndo;
  51. public ToolStripSplitButton btnRedo;
  52. public ToolStripButton btnGroup;
  53. public ToolStripButton btnUngroup;
  54. private UndoDropDown undoDropDown;
  55. private RedoDropDown redoDropDown;
  56. private Timer clipboardTimer;
  57. private Timer previewTimer;
  58. #endif
  59. #endregion
  60. #region Private Methods
  61. private void UpdateControls()
  62. {
  63. btnNew.Enabled = Designer.cmdNew.Enabled;
  64. btnOpen.Enabled = Designer.cmdOpen.Enabled;
  65. btnSave.Enabled = Designer.cmdSave.Enabled;
  66. btnSaveAll.Enabled = Designer.cmdSaveAll.Enabled;
  67. btnPreview.Enabled = Designer.cmdPreview.Enabled;
  68. btnNewPage.Enabled = Designer.cmdNewPage.Enabled;
  69. #if COMMUNITY
  70. btnNewDialog.Enabled = false;
  71. #else
  72. btnNewDialog.Enabled = Designer.cmdNewDialog.Enabled;
  73. #endif
  74. btnCopyPage.Enabled = Designer.cmdCopyPage.Enabled;
  75. btnDeletePage.Enabled = Designer.cmdDeletePage.Enabled;
  76. btnPageSetup.Enabled = Designer.cmdPageSetup.Enabled;
  77. btnCut.Enabled = Designer.cmdCut.Enabled;
  78. btnCopy.Enabled = Designer.cmdCopy.Enabled;
  79. btnFormatPainter.Enabled = Designer.cmdFormatPainter.Enabled;
  80. btnFormatPainter.Checked = Designer.FormatPainter;
  81. btnUndo.Enabled = Designer.cmdUndo.Enabled;
  82. btnRedo.Enabled = Designer.cmdRedo.Enabled;
  83. btnGroup.Enabled = Designer.cmdGroup.Enabled;
  84. btnUngroup.Enabled = Designer.cmdUngroup.Enabled;
  85. }
  86. #if !MONO
  87. private void btnOpen_PopupOpen(object sender, PopupOpenEventArgs e)
  88. {
  89. btnOpen.SubItems.Clear();
  90. if (Designer.cmdRecentFiles.Enabled)
  91. {
  92. foreach (string s in Designer.RecentFiles)
  93. {
  94. ButtonItem item = new ButtonItem();
  95. item.Text = s;
  96. item.Click += recentItem_Click;
  97. btnOpen.SubItems.Insert(0, item);
  98. }
  99. }
  100. if (btnOpen.SubItems.Count == 0)
  101. btnOpen.SubItems.Add(new ButtonItem());
  102. }
  103. private void recentItem_Click(object sender, EventArgs e)
  104. {
  105. Designer.cmdOpen.LoadFile((sender as ButtonItem).Text);
  106. }
  107. #else
  108. private void btnOpen_DropDownOpening(object sender, EventArgs e)
  109. {
  110. btnOpen.DropDown.Items.Clear();
  111. if (Designer.cmdRecentFiles.Enabled)
  112. {
  113. foreach (string s in Designer.RecentFiles)
  114. {
  115. btnOpen.DropDown.Items.Insert(0, new ToolStripMenuItem(s));
  116. }
  117. }
  118. }
  119. private void btnOpen_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
  120. {
  121. btnOpen.DropDown.Close();
  122. Designer.cmdOpen.LoadFile(e.ClickedItem.Text);
  123. }
  124. #endif
  125. private void FClipboardTimer_Tick(object sender, EventArgs e)
  126. {
  127. btnPaste.Enabled = Designer.cmdPaste.Enabled;
  128. }
  129. private void FPreviewTimer_Tick(object sender, EventArgs e)
  130. {
  131. previewTimer.Stop();
  132. Designer.cmdPreview.Invoke(sender, e);
  133. }
  134. private void btnPreview_Click(object sender, EventArgs e)
  135. {
  136. previewTimer.Start();
  137. }
  138. #endregion
  139. #region Protected Methods
  140. protected override void Dispose(bool disposing)
  141. {
  142. if (disposing)
  143. {
  144. clipboardTimer.Dispose();
  145. previewTimer.Dispose();
  146. }
  147. base.Dispose(disposing);
  148. }
  149. #endregion
  150. #region Public Methods
  151. public override void SelectionChanged()
  152. {
  153. base.SelectionChanged();
  154. UpdateControls();
  155. }
  156. public override void UpdateContent()
  157. {
  158. base.UpdateContent();
  159. UpdateControls();
  160. }
  161. public override void Localize()
  162. {
  163. base.Localize();
  164. MyRes res = new MyRes("Designer,Toolbar,Standard");
  165. Text = res.Get("");
  166. SetItemText(btnNew, res.Get("New"));
  167. SetItemText(btnOpen, res.Get("Open"));
  168. SetItemText(btnSave, res.Get("Save"));
  169. SetItemText(btnSaveAll, res.Get("SaveAll"));
  170. SetItemText(btnPreview, res.Get("Preview"));
  171. SetItemText(btnNewPage, res.Get("NewPage"));
  172. SetItemText(btnNewDialog, res.Get("NewDialog"));
  173. SetItemText(btnCopyPage, res.Get("CopyPage"));
  174. SetItemText(btnDeletePage, res.Get("DeletePage"));
  175. SetItemText(btnPageSetup, res.Get("PageSetup"));
  176. SetItemText(btnCut, res.Get("Cut"));
  177. SetItemText(btnCopy, res.Get("Copy"));
  178. SetItemText(btnPaste, res.Get("Paste"));
  179. SetItemText(btnFormatPainter, res.Get("FormatPainter"));
  180. SetItemText(btnUndo, res.Get("Undo"));
  181. SetItemText(btnRedo, res.Get("Redo"));
  182. SetItemText(btnGroup, res.Get("Group"));
  183. SetItemText(btnUngroup, res.Get("Ungroup"));
  184. }
  185. #endregion
  186. public StandardToolbar(Designer designer)
  187. : base(designer)
  188. {
  189. Name = "StandardToolbar";
  190. #if !MONO
  191. btnNew = CreateButton("btnStdNew", 4, Designer.cmdNew.Invoke);
  192. btnOpen = CreateButton("btnStdOpen", 1, Designer.cmdOpen.Invoke);
  193. btnOpen.PopupOpen += btnOpen_PopupOpen;
  194. btnOpen.SubItems.Add(new ButtonItem());
  195. btnSave = CreateButton("btnStdSave", 2, Designer.cmdSave.Invoke);
  196. btnSaveAll = CreateButton("btnStdSaveAll", 178, Designer.cmdSaveAll.Invoke);
  197. btnPreview = CreateButton("btnStdPreview", 3, btnPreview_Click);
  198. btnNewPage = CreateButton("btnStdNewPage", 10, Designer.cmdNewPage.Invoke);
  199. btnNewPage.BeginGroup = true;
  200. btnNewDialog = CreateButton("btnStdNewDialog", 11, Designer.cmdNewDialog.Invoke);
  201. btnCopyPage = CreateButton("btnStdCopyPage", 6, Designer.cmdCopyPage.Invoke);
  202. btnDeletePage = CreateButton("btnStdDeletePage", 12, Designer.cmdDeletePage.Invoke);
  203. btnPageSetup = CreateButton("btnStdPageSetup", 13, Designer.cmdPageSetup.Invoke);
  204. btnCut = CreateButton("btnStdCut", 5, Designer.cmdCut.Invoke);
  205. btnCut.BeginGroup = true;
  206. btnCopy = CreateButton("btnStdCopy", 6, Designer.cmdCopy.Invoke);
  207. btnPaste = CreateButton("btnStdPaste", 7, Designer.cmdPaste.Invoke);
  208. btnFormatPainter = CreateButton("btnStdFormatPainter", 18, Designer.cmdFormatPainter.Invoke);
  209. btnFormatPainter.AutoCheckOnClick = true;
  210. btnUndo = CreateButton("btnStdUndo", 8, Designer.cmdUndo.Invoke);
  211. btnUndo.BeginGroup = true;
  212. btnRedo = CreateButton("btnStdRedo", 9, Designer.cmdRedo.Invoke);
  213. btnGroup = CreateButton("btnStdGroup", 17, Designer.cmdGroup.Invoke);
  214. btnGroup.BeginGroup = true;
  215. btnUngroup = CreateButton("btnStdUngroup", 16, Designer.cmdUngroup.Invoke);
  216. undoDropDown = new UndoDropDown(Designer, btnUndo);
  217. redoDropDown = new RedoDropDown(Designer, btnRedo);
  218. Items.AddRange(new BaseItem[] {
  219. btnNew, btnOpen, btnSave, btnSaveAll, btnPreview,
  220. btnNewPage, btnNewDialog, btnCopyPage, btnDeletePage, btnPageSetup,
  221. btnCut, btnCopy, btnPaste, btnFormatPainter,
  222. btnUndo, btnRedo,
  223. btnGroup, btnUngroup, CustomizeItem });
  224. #else
  225. btnNew = CreateButton("btnStdNew", 4, Designer.cmdNew.Invoke);
  226. btnOpen = CreateSplitButton("btnStdOpen", 1, null);
  227. btnOpen.DropDownOpening += btnOpen_DropDownOpening;
  228. btnOpen.ButtonClick += Designer.cmdOpen.Invoke;
  229. btnOpen.DropDownItemClicked += btnOpen_DropDownItemClicked;
  230. btnSave = CreateButton("btnStdSave", 2, Designer.cmdSave.Invoke);
  231. btnSaveAll = CreateButton("btnStdSaveAll", 178, Designer.cmdSaveAll.Invoke);
  232. btnPreview = CreateButton("btnStdPreview", 3, btnPreview_Click);
  233. btnNewPage = CreateButton("btnStdNewPage", 10, Designer.cmdNewPage.Invoke);
  234. btnNewDialog = CreateButton("btnStdNewDialog", 11, Designer.cmdNewDialog.Invoke);
  235. btnCopyPage = CreateButton("btnStdCopyPage", 6, Designer.cmdCopyPage.Invoke);
  236. btnDeletePage = CreateButton("btnStdDeletePage", 12, Designer.cmdDeletePage.Invoke);
  237. btnPageSetup = CreateButton("btnStdPageSetup", 13, Designer.cmdPageSetup.Invoke);
  238. btnCut = CreateButton("btnStdCut", 5, Designer.cmdCut.Invoke);
  239. btnCopy = CreateButton("btnStdCopy", 6, Designer.cmdCopy.Invoke);
  240. btnPaste = CreateButton("btnStdPaste", 7, Designer.cmdPaste.Invoke);
  241. btnFormatPainter = CreateButton("btnStdFormatPainter", 18, Designer.cmdFormatPainter.Invoke);
  242. btnFormatPainter.CheckOnClick = true;
  243. btnUndo = CreateSplitButton("btnStdUndo", 8, Designer.cmdUndo.Invoke);
  244. btnRedo = CreateSplitButton("btnStdRedo", 9, Designer.cmdRedo.Invoke);
  245. btnGroup = CreateButton("btnStdGroup", 17, Designer.cmdGroup.Invoke);
  246. btnUngroup = CreateButton("btnStdUngroup", 16, Designer.cmdUngroup.Invoke);
  247. undoDropDown = new UndoDropDown(designer, this);
  248. redoDropDown = new RedoDropDown(designer, this);
  249. btnUndo.DropDown = undoDropDown;
  250. btnRedo.DropDown = redoDropDown;
  251. Items.AddRange(new ToolStripItem[] {
  252. btnNew, btnOpen, btnSave, btnSaveAll, btnPreview, new ToolStripSeparator(),
  253. btnNewPage, btnNewDialog, btnCopyPage, btnDeletePage, btnPageSetup, new ToolStripSeparator(),
  254. btnCut, btnCopy, btnPaste, btnFormatPainter, new ToolStripSeparator(),
  255. btnUndo, btnRedo, new ToolStripSeparator(),
  256. btnGroup, btnUngroup });
  257. #endif
  258. Localize();
  259. UpdateDpiDependencies();
  260. clipboardTimer = new Timer();
  261. clipboardTimer.Interval = 500;
  262. clipboardTimer.Tick += FClipboardTimer_Tick;
  263. clipboardTimer.Start();
  264. previewTimer = new Timer();
  265. previewTimer.Interval = 20;
  266. previewTimer.Tick += FPreviewTimer_Tick;
  267. }
  268. }
  269. }