123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- using PaintDotNet.Base.SettingModel;
- using PaintDotNet.SystemLayer;
- using System;
- using System.Drawing;
- using System.Windows.Forms;
- namespace PaintDotNet
- {
- internal class ToolsControl : UserControl
- {
- private ToolStripEx toolStripEx;
- private ImageList imageList;
- private const int tbWidth = 2;
- private int ignoreToolClicked = 0;
- private Control onePxSpacingLeft;
- private ShortcutbarModel shortcutbarModel = Startup.instance.shortcutbarModel;
- private System.ComponentModel.Container components = null;
- private AppWorkspace appWorkspace;
- public ToolsControl(AppWorkspace appWorkspace)
- {
- this.appWorkspace = appWorkspace;
- InitializeComponent();
- SetTools();
- }
- public void SetTools()
- {
- if (this.toolStripEx != null)
- {
- this.toolStripEx.Items.Clear();
- }
- this.imageList = new ImageList();
- this.imageList.ColorDepth = ColorDepth.Depth32Bit;
- this.imageList.TransparentColor = Utility.TransparentKey;
- this.toolStripEx.ImageList = this.imageList;
- /**
- ToolStripItem[] buttons = new ToolStripItem[toolInfos.Length];
- string toolTipFormat = PdnResources.GetString("ToolsControl.ToolToolTip.Format");
- for (int i = 0; i < toolInfos.Length; ++i)
- {
- ToolInfo toolInfo = toolInfos[i];
- ToolStripButton button = new ToolStripButton();
- int imageIndex = imageList.Images.Add(
- toolInfo.Image.Reference,
- imageList.TransparentColor);
- button.ImageIndex = imageIndex;
- button.Tag = toolInfo.ToolType;
- button.ToolTipText = string.Format(toolTipFormat, toolInfo.Name, char.ToUpperInvariant(toolInfo.HotKey).ToString());
- buttons[i] = button;
- }
- this.toolStripEx.Items.AddRange(buttons);
- **/
- SetCustomizeTools();
- }
- public void RefreshTools()
- {
- int numold = 0;
- if (this.toolStripEx != null)
- {
- numold = this.toolStripEx.Items.Count;
- }
- SetCustomizeTools();
- for (int i = 0; i < numold; i++)
- {
- this.toolStripEx.Items.RemoveAt(0);
- }
- //this.toolStripEx.Enabled = (!this.appWorkspace.ScriptRunning);
- }
- public void SetCustomizeTools()
- {
- if (shortcutbarModel != null)
- {
- if (shortcutbarModel.Menus.Count > 0)
- {
- ToolStripItem[] buttons = new ToolStripItem[shortcutbarModel.Menus.Count];
- for (int i = 0; i < shortcutbarModel.Menus.Count; i++)
- {
- ToolStripButton button = new ToolStripButton();
- int imageIndex = -1;
- ToolStripItem[] items = this.appWorkspace.ToolBar.MainMenu.Items.Find(shortcutbarModel.Menus[i].Description, true);
- if (items != null && items.Length > 0)
- {
- if (((PdnMenuItem)(items[0])).Image != null)
- {
- imageIndex = this.imageList.Images.Add(((PdnMenuItem)(items[0])).Image, imageList.TransparentColor);
- button.ToolTipText = ((PdnMenuItem)(items[0])).Text;
- }
- else
- {
- imageIndex = this.imageList.Images.Add(PdnResources.GetImageResource("Icons.MenuImageRotate90CWIcon.png").Reference, imageList.TransparentColor);
- //imageIndex = this.imageList.Images.Add(new Bitmap(16, 16), imageList.TransparentColor);
- button.ToolTipText = shortcutbarModel.Menus[i].Name;// getShowName(Startup.instance.configModel.Language);
- }
- }
- else
- {
- imageIndex = this.imageList.Images.Add(PdnResources.GetImageResource("Icons.MenuImageRotate90CWIcon.png").Reference, imageList.TransparentColor);
- //imageIndex = this.imageList.Images.Add(new Bitmap(16, 16), imageList.TransparentColor);
- button.ToolTipText = shortcutbarModel.Menus[i].Name;// getShowName(Startup.instance.configModel.Language);
- }
- button.Enabled = Startup.getMenuIdVisible(shortcutbarModel.Menus[i].Id);
- button.ImageIndex = imageIndex;
- button.Tag = shortcutbarModel.Menus[i].Description;
- buttons[i] = button;
- if (this.appWorkspace.ActiveDocumentWorkspace != null)
- {
- if (button.Tag.ToString().Equals(this.type))
- button.Checked = this.check;
- }
- }
- this.toolStripEx.Items.AddRange(buttons);
- appWorkspace.SetTopLeftCheckState();
- }
- }
- }
- public void SelectTool(Type toolType)
- {
- SelectTool(toolType, true);
- }
- public void SelectTool(Type toolType, bool raiseEvent)
- {
- if (!raiseEvent)
- {
- ++this.ignoreToolClicked;
- }
- try
- {
- foreach (ToolStripButton button in this.toolStripEx.Items)
- {
- if ((Type)button.Tag == toolType)
- {
- this.ToolStripEx_ItemClicked(this, new ToolStripItemClickedEventArgs(button));
- return;
- }
- }
- throw new ArgumentException("Tool type not found");
- }
- finally
- {
- if (!raiseEvent)
- {
- --this.ignoreToolClicked;
- }
- }
- }
- protected override void OnLayout(LayoutEventArgs e)
- {
- int buttonWidth;
- if (this.toolStripEx.Items.Count > 0)
- {
- buttonWidth = this.toolStripEx.Items[0].Width;
- }
- else
- {
- buttonWidth = 0;
- }
- this.toolStripEx.Width =
- this.toolStripEx.Padding.Left +
- (buttonWidth * tbWidth) +
- (this.toolStripEx.Margin.Horizontal * tbWidth) +
- this.toolStripEx.Padding.Right;
- this.toolStripEx.Height = this.toolStripEx.GetPreferredSize(this.toolStripEx.Size).Height;
- this.Width = this.toolStripEx.Width + this.onePxSpacingLeft.Width;
- this.Height = this.toolStripEx.Height;
- base.OnLayout(e);
- }
- /// <summary>
- /// Clean up any resources being used.
- /// </summary>
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (components != null)
- {
- components.Dispose();
- components = null;
- }
- }
- base.Dispose(disposing);
- }
- /// <summary>
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- /// </summary>
- private void InitializeComponent()
- {
- this.toolStripEx = new ToolStripEx();
- this.onePxSpacingLeft = new Control();
- this.SuspendLayout();
- //
- // toolStripEx
- //
- this.toolStripEx.Dock = System.Windows.Forms.DockStyle.Top;
- this.toolStripEx.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
- this.toolStripEx.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow;
- this.toolStripEx.ItemClicked += new ToolStripItemClickedEventHandler(ToolStripEx_ItemClicked);
- this.toolStripEx.Name = "toolStripEx";
- this.toolStripEx.AutoSize = true;
- this.toolStripEx.RelinquishFocus += new EventHandler(ToolStripEx_RelinquishFocus);
- //
- // onePxSpacingLeft
- //
- this.onePxSpacingLeft.Dock = System.Windows.Forms.DockStyle.Left;
- this.onePxSpacingLeft.Width = 1;
- this.onePxSpacingLeft.Name = "onePxSpacingLeft";
- //
- // MainToolBar
- //
- this.Controls.Add(this.toolStripEx);
- this.Controls.Add(this.onePxSpacingLeft);
- this.AutoScaleDimensions = new SizeF(96F, 96F);
- this.AutoScaleMode = AutoScaleMode.Dpi;
- this.Name = "MainToolBar";
- this.Size = new System.Drawing.Size(48, 328);
- this.ResumeLayout(false);
- }
- public event EventHandler RelinquishFocus;
- private void OnRelinquishFocus()
- {
- if (RelinquishFocus != null)
- {
- RelinquishFocus(this, EventArgs.Empty);
- }
- }
- private void ToolStripEx_RelinquishFocus(object sender, EventArgs e)
- {
- OnRelinquishFocus();
- }
- private void ToolStripEx_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
- {
- if (e.ClickedItem.GetType() != typeof(ToolStripButton))
- {
- return;
- }
- ToolStripItem[] menu = this.appWorkspace.ToolBar.MainMenu.Items.Find(e.ClickedItem.Tag.ToString(), true);
- if (menu != null && menu.Length > 0)
- {
- if (menu != null && menu.Length > 0)
- {
- if (((PdnMenuItem)menu[0]).canChecked)
- ((ToolStripButton)e.ClickedItem).Checked = !((ToolStripButton)e.ClickedItem).Checked;
- ((PdnMenuItem)menu[0]).PerformClick();
- appWorkspace.UpdateBottomButtonSelectionStatus();
- }
- }
- }
- private string type;
- private bool check;
- public void RefreshBtnSelect(bool check, string type)
- {
- this.type = type;
- this.check = check;
- if (toolStripEx == null)
- return;
- for (int j = 0; j < this.toolStripEx.Items.Count; j++)
- {
- if (this.toolStripEx.Items[j] is ToolStripButton && ((ToolStripButton)this.toolStripEx.Items[j]).Tag.ToString().Equals(type))
- ((ToolStripButton)this.toolStripEx.Items[j]).Checked = check;
- }
- this.Refresh();
- }
- }
- }
|