diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.cs index 34ac23df..9cb3f6ea 100644 --- a/PROMS/Volian.Controls.Library/StepTabRibbon.cs +++ b/PROMS/Volian.Controls.Library/StepTabRibbon.cs @@ -20,7 +20,7 @@ namespace Volian.Controls.Library _MyStepItem = value; if (value != null) { - _MyStepRTB = value.MyStepRTB; + MyStepRTB = value.MyStepRTB; } } } @@ -36,30 +36,64 @@ namespace Volian.Controls.Library _ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMRtfEdit); _MyStepRTB.SelectionChanged += new EventHandler(MyStepRTB_SelectionChanged); _MyStepRTB.Leave += new EventHandler(MyStepRTB_Leave); + _MyStepRTB.LinkChanged += new StepRTBLinkEvent(_MyStepRTB_LinkChanged); + SetButtonAndMenuEnabling(); } } } + void _MyStepRTB_LinkChanged(object sender, StepPanelLinkEventArgs args) + { + // do all Transition and ReferencedObject menu items/buttons based on whether a 'link is selected' and the link type. + btnCMGoTo.Enabled = btnGoTo.Enabled = (_MyStepRTB.MyLinkText != null); + if (btnCMGoTo.Enabled == true) // must have some link test, use it to set edit of transition or ro... + { + btnCMEditTran.Enabled = _MyStepRTB.MyLinkText.IndexOf("Transition") > -1; // selected link must be a transition + btnCMEditRO.Enabled = _MyStepRTB.MyLinkText.IndexOf("ReferencedObject") > -1; // selected link must be ro + } + } void MyStepRTB_Leave(object sender, EventArgs e) { _MyStepRTB.SelectionChanged -= new EventHandler(MyStepRTB_SelectionChanged); _MyStepRTB.Leave -= new EventHandler(MyStepRTB_Leave); + _MyStepRTB.LinkChanged -= new StepRTBLinkEvent(_MyStepRTB_LinkChanged); } void MyStepRTB_SelectionChanged(object sender, EventArgs e) { - btnCMBold.Checked = btnBold.Checked = _MyStepRTB.SelectionFont.Bold; - btnCMItalics.Checked = btnItalics.Checked = _MyStepRTB.SelectionFont.Italic; - btnCMUnderline.Checked = btnUnderline.Checked = _MyStepRTB.SelectionFont.Underline; - btnCMSubscript.Checked = btnSubscript.Checked = RTBAPI.IsSubScript(_MyStepRTB); - btnCMSuperscript.Checked = btnSuperscript.Checked = RTBAPI.IsSuperScript(_MyStepRTB); + SetButtonAndMenuEnabling(); + } + private void SetButtonAndMenuEnabling() + { + if (_MyStepRTB == null) return; + if (_MyStepRTB.SelectionFont != null) + { + btnCMBold.Checked = btnBold.Checked = RTBAPI.IsBold(_MyStepRTB); + btnCMItalics.Checked = btnItalics.Checked = RTBAPI.IsItalic(_MyStepRTB); + btnCMUnderline.Checked = btnUnderline.Checked = RTBAPI.IsUnderline(_MyStepRTB); + btnCMSubscript.Checked = btnSubscript.Checked = RTBAPI.IsSubScript(_MyStepRTB); + btnCMSuperscript.Checked = btnSuperscript.Checked = RTBAPI.IsSuperScript(_MyStepRTB); + } btnCMCut.Enabled = btnCMCopy.Enabled = btnCut.Enabled = btnCopy.Enabled = _MyStepRTB.SelectionLength > 0; + btnCMUndo.Enabled = btnUndo.Enabled = _MyStepRTB.CanUndo; + btnCMRedo.Enabled = btnRedo.Enabled = _MyStepRTB.CanRedo; + + // for paste, see if there is clipboard data, & if so, of a type we can use. + IDataObject iData = Clipboard.GetDataObject(); + btnCMPaste.Enabled = btnPaste.Enabled = (iData.GetDataPresent(DataFormats.Text) || iData.GetDataPresent(DataFormats.Rtf)); + + // do all Transition and ReferencedObject menu items/buttons based on whether a 'link is selected' and the link type. + btnCMGoTo.Enabled = btnGoTo.Enabled = (_MyStepRTB.MyLinkText != null); + if (btnCMGoTo.Enabled == true) // must have some link test, use it to set edit of transition or ro... + { + btnCMEditTran.Enabled = _MyStepRTB.MyLinkText.IndexOf("Transition")>-1; // selected link must be a transition + btnCMEditRO.Enabled = _MyStepRTB.MyLinkText.IndexOf("ReferencedObject") > -1; // selected link must be ro + } } public StepTabRibbon() { InitializeComponent(); - // get the xml for all of the symbols, create buttons for them & add them to the gallery. - // Note that this code was added here rather than in DisplayTabRinnon.designer.cs because - // if it is in the designer, this tabribbon could not be brought up in the VS form designer! - // Also note that the ButtonItems must be used in order to place the buttons on a gallery (cannot + + // Add symbols to the tabribbon & also to the context menu getting info from the format file... + // Note that the ButtonItems must be used in order to place the buttons on a gallery (cannot // use buttonx or dotnet/windows/button). However, you cannot change the font on ButtonItems so // the ribbon MUST use the Arial Unicode MS Font for this to work!!!! Format fmt = VEPROMS.CSLA.Library.Format.Get(1); //base for now - TO DO KBR: @@ -80,6 +114,15 @@ namespace Volian.Controls.Library btn.FontBold = true; btn.Click += new System.EventHandler(btnSym_Click); galleryContainerSymbols.SubItems.Add(btn); + DevComponents.DotNetBar.ButtonItem btnCM = new DevComponents.DotNetBar.ButtonItem(); + btnCM.Text = string.Format("{0}", (char)sym.Unicode); + // to name button use unicode rather than desc, desc may have spaces or odd chars + btnCM.Name = "btnCM" + sym.Unicode.ToString(); + btnCM.Tooltip = sym.Desc; + btnCM.Tag = string.Format(@"\u{0}", sym.Unicode); + btnCM.FontBold = true; + btnCM.Click += new System.EventHandler(btnSym_Click); + galleryContainerSymbolsCM.SubItems.Add(btnCM); } } private void btnSym_Click(object sender, EventArgs e) @@ -90,10 +133,10 @@ namespace Volian.Controls.Library private void btnPaste_Click(object sender, EventArgs e) { IDataObject myDO = Clipboard.GetDataObject(); - if (myDO.GetDataPresent("Rich Text Format")) - _MyStepRTB.SelectedRtf = myDO.GetData("Rich Text Format").ToString(); - else if (myDO.GetDataPresent("Text")) - _MyStepRTB.SelectedText = myDO.GetData("Text").ToString(); + if (myDO.GetDataPresent(DataFormats.Rtf)) + _MyStepRTB.SelectedRtf = myDO.GetData(DataFormats.Rtf).ToString(); + else if (myDO.GetDataPresent(DataFormats.Text)) + _MyStepRTB.SelectedText = myDO.GetData(DataFormats.Text).ToString(); } private void btnCut_Click(object sender, EventArgs e) { @@ -110,21 +153,18 @@ namespace Volian.Controls.Library } private void btnBold_Click(object sender, EventArgs e) { - FontStyle fs = _MyStepRTB.SelectionFont.Style ^ FontStyle.Bold; - _MyStepRTB.SelectionFont = new Font(_MyStepRTB.SelectionFont, fs); - btnCMBold.Checked = btnBold.Checked = _MyStepRTB.SelectionFont.Bold; + RTBAPI.ToggleBold(!RTBAPI.IsBold(_MyStepRTB), _MyStepRTB, _MyStepRTB.SelectionLength == 0 ? RTBAPI.RTBSelection.SCF_DEFAULT : RTBAPI.RTBSelection.SCF_SELECTION); + btnCMBold.Checked = btnBold.Checked = RTBAPI.IsBold(_MyStepRTB); } private void btnItalics_Click(object sender, EventArgs e) { - FontStyle fs = _MyStepRTB.SelectionFont.Style ^ FontStyle.Italic; - _MyStepRTB.SelectionFont = new Font(_MyStepRTB.SelectionFont, fs); - btnCMItalics.Checked = btnItalics.Checked = _MyStepRTB.SelectionFont.Italic; + RTBAPI.ToggleItalic(!RTBAPI.IsItalic(_MyStepRTB), _MyStepRTB, _MyStepRTB.SelectionLength == 0 ? RTBAPI.RTBSelection.SCF_DEFAULT : RTBAPI.RTBSelection.SCF_SELECTION); + btnCMItalics.Checked = btnItalics.Checked = RTBAPI.IsItalic(_MyStepRTB); } private void btnUnderline_Click(object sender, EventArgs e) { - FontStyle fs = _MyStepRTB.SelectionFont.Style ^ FontStyle.Underline; - _MyStepRTB.SelectionFont = new Font(_MyStepRTB.SelectionFont, fs); - btnCMUnderline.Checked = btnUnderline.Checked = _MyStepRTB.SelectionFont.Underline; + RTBAPI.ToggleUnderline(!RTBAPI.IsUnderline(_MyStepRTB), _MyStepRTB, _MyStepRTB.SelectionLength == 0 ? RTBAPI.RTBSelection.SCF_DEFAULT : RTBAPI.RTBSelection.SCF_SELECTION); + btnCMUnderline.Checked = btnUnderline.Checked = RTBAPI.IsUnderline(_MyStepRTB); } private void btnSuperscript_Click(object sender, EventArgs e) @@ -153,18 +193,12 @@ namespace Volian.Controls.Library { _MyStepRTB.SetSelectedCase('T'); } - //public event DisplayRTBLinkEvent LinkInsertTran; - //private void OnLinkInsertTran(object sender, LinkClickedEventArgs args) - //{ - // _LinkClickedEventArgs = args; - // if (LinkInsertTran != null) LinkInsertTran(sender, args); - //} private void btnInsTrans_Click(object sender, EventArgs e) { // see if user is positioned 'on' a transition within the rtb, if so do a modify, otherwise, // insert transition. StepTabPanel tmp = Parent as StepTabPanel; - tmp.MyDisplayTabControl.OnLinkModifyTran(this, new StepPanelLinkEventArgs(_MyStepItem, null)); + tmp.MyDisplayTabControl.OnLinkModifyTran(this, new StepPanelLinkEventArgs(_MyStepItem, MyStepRTB.MyLinkText)); } private void btnInsHrdSpc_Click(object sender, EventArgs e) @@ -174,10 +208,10 @@ namespace Volian.Controls.Library private void btnInsRO_Click(object sender, EventArgs e) { - // see if user is positioned 'on' an RO within the rtb, if so do a modify, otherwise, + // see if user is positioned 'on' an ReferencedObject within the rtb, if so do a modify, otherwise, // insert transition. StepTabPanel tmp = Parent as StepTabPanel; - tmp.MyDisplayTabControl.OnLinkModifyRO(this, new StepPanelLinkEventArgs(_MyStepItem, null)); + tmp.MyDisplayTabControl.OnLinkModifyRO(this, new StepPanelLinkEventArgs(_MyStepItem, MyStepRTB.MyLinkText)); } private void btnRedo_Click(object sender, EventArgs e) @@ -189,5 +223,19 @@ namespace Volian.Controls.Library { _MyStepRTB.Undo(); } + private void btnGoTo_Click(object sender, EventArgs e) + { + // if on a transition, go to the selected transition 'to'. If on + // a referenced object, bring up ReferencedObject Editor (for now, just put up a message box. + if (_MyStepRTB.MyLinkText.IndexOf("Transition") > -1) + { + _MyStepItem.MyStepPanel.OnLinkClicked(sender, new StepPanelLinkEventArgs(_MyStepItem, _MyStepRTB.MyLinkText)); + } + else + { + // bring up ro editor - for now just do a messagebox. + MessageBox.Show("Bring up ro editor"); + } + } } } diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs index 1201959d..251c0e7c 100644 Binary files a/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs and b/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs differ diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.resx b/PROMS/Volian.Controls.Library/StepTabRibbon.resx index c7ad5cf9..55ccd738 100644 --- a/PROMS/Volian.Controls.Library/StepTabRibbon.resx +++ b/PROMS/Volian.Controls.Library/StepTabRibbon.resx @@ -118,251 +118,37 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEwAA - CxMBAJqcGAAAActJREFUOE+NklkvA1EUx+ubeCJii6WNh0oQsb/ggQSJhK/gU+iLiHhQS6wJotFa0lJb - EWpLGUwbbVFLFbFVqp2Z/s29MhNpZpKe5OR/5845vzPnnEkBoCFmcbj/Dv+M53kNx3EaLhYjt4aWOl1X - YoyGAIibt1hRlM04swFdTSfGLfvdUrykMsC0fq4K6Bu3wrbDSBDDf4gMmFlxqQKGZtdosuSKgKmlQ8QT - EPF4nN7xvIDBaTt6R5ehre4gUXJh+TC54IQgCDi99FL1+ALgxETXhReRaAwnF9eYs+6pAwxGM3y3D2QT - YDzXVFlvgOqBi24IY3Or6oDE6Sb7LLdgsR/SKv7AE1WP/57queeGqsPJUC0sa1SewcS8Awwr9i8OLvTy - BjJAhvUhHIni4NSHu+AnDAMmpGurlAFGccocz8t7IAN8//rBfegLrP8Vx5dB9IwsIre0WRnQP2GTk0n1 - 70gMT6/fuAq8weUOYfvkjq4xq1ilBfJSMrL3j/APHp/DFLB/9gC784YCMorqlL9AAuweubG0cYxR0yaG - Z9fRP2mjiZKnFVaqA8hfVlDRjvzyNuSVtyKnpIl6lr4Bmfp6sXotUrOLlQHJ7j0x7hcSwu53ww+AbQAA - AABJRU5ErkJggg== + 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 - //x1Z/CGAQCjS0wEhVWp7QAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEwAA - CxMBAJqcGAAAArRJREFUOE99kntIU1Ecx6//9Fd/9kd/FSU9rD+0hxIoPcjcyppBRJZIiqlDA7HIFohl - mr0081Gr+aD5mI/Kx3TO1po5zbmcaahIiKBkOvGBqTnndu+3cw45kmYHvpx7Lvf3Oed87s8DAFep7SYT - OJ53kghrZ4Hn4sNEHhwZ1wqsYjJpn0RvZms2aGFFkwUCeFd4gceyQ8C8TYDvySgGT1RMiElwIX2QrVfD - HlSaLlasNvThdXMvytVdKH5jQv/QOAOsFpcZlxGXM4Tw7GlEvVjZSmsZoKzR7Np9xcnjl13AzKKA7sFx - BJy7TgF4rl2Aqt2BB/UORObOQpTUS+PHACVqk4WeoKTuMwqrO5BfZkRWkQGdfROrJzhwQjaMq0V2HIs3 - YE+IAv6xevhF1GcwgLL2k9RJ7m1b4TG3xGPyp4DRKYC6odcrVZtwu+BLuveVHuw8/RJxd6sTvSRyfl9o - hYU7FKbccUSqG7U5eOQoP+JRgR7pz5qR8lTDAH/LHbHa4B3dx+TuPy/XeUkU4LafrbsvSahNm5l3YHpB - wI9ZAcOTAgbHBLb7enL3im7GbgvMBLdJ3FB547E6bpZIe1VjRmGVCUkP65B4rwb/k7s7KKWVAMzcRnGH - 6nJqa/volBMSmRkV+u9432WFttMKIpedwJ1cujvJQW5D8Le0XRc/fPUJll06k9wPv0gNDofeiSL/30Lk - wp3cth4r/TtS1gcRmWOWrIYlhGcMQNmyBFm5nUFO3RqIKX7bBndyWywMUMoAPqGVAYEJRuRpFpFSZUeE - nEdI6giD5JB+WLDx/8jVmRmAtTTrAwI57h3+Dv4xOlbsGZSNowndvooqA6jc1HwtkrMaXXKpnzUACiFC - tniKcqkYmgD6Tq7SwzonkI4ch7FnwiW3yeQG8AfiKqbrvBIt22m90G9+AzC/1ToF8MxHAAAAAElFTkSu - QmCC - - - - - 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 - iwAAAABJRU5ErkJggg== - - - - - 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 - lJCQA3IYpUQA76epNf0QgmEAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEwAA - CxMBAJqcGAAAAdBJREFUOE+lk90rQ2Ecx/mL5MKFG7lSXLiUa3IjKS4okpS4UFJelmnY2GbeLcPYbOZt - mKERQmFnmMyFmdnOtq/ndzizJ1zg1K/O83Q+35fn6aQDSPvXQwJto/dInRbdPRrVftT03aGi6xYl7Tco - bvWhsElAXr2AnBovsquvGcrMZQGNAxiwJ6C0xtFjjqHDJKJtOormsQga9K+o1bygShVCeW8IZd1BZJbt - 8gJygmatH3UDflQq3p2LWnwoaPAi98OVnGkySpyfAvo5FxKJRHLW3RfcemHtUFpHxTiC4ThGTE5k5Zd+ - CgwZnRyw4jrj1rP2A0QY/MzgQDAGrXGdF+ifXMX+iQByXnGdw7Z1CsvmMciZ4BmrG+PmHRiYM8GDkw5e - QGlY5hyXGCxXotgEB4IifIEozm+jUI3ZeIEe7SInYF47SnZ+DsdgmHNCeBQl2HMdgXLEygt0auax7bmE - ZYPFXj2EKTU2gym2esoB1bgNSoMVCt3iV4HUW5i2uKXTfniKsdgi1Kyz5yqC7bMw7EchdA+bfxagzhPU - mcECg+XO7/AL5vdCoMTcNdKGY+dUOm2C5dMm536KzTordEuSM337rQAp/naS/wK9/HX+DMqGb0lL76AI - wx7nAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEwAA - CxMBAJqcGAAAAklJREFUOE+lk11I02EUxusuIogugqALIyK6iJpEEIUZIQWSK8kLQ/pAqUApKbEsl4kL - srQwQYeOVmp+VGamlo1lMUVJ+9DmdCbNBVqkzvyiD9vmr51/rP8IoqgXzuXzO88553nnAnP+6wmg8FY7 - wZVf0UbO9WbOFTehy39ISk4difpq4tMriUstJSbZxK4ko1/qbx4AeLzwu/r0FcamZxkam6X/vY9Ol49V - 2zP/DuC2O3AcCMW+X4Ot1a6IyxoHWLnt7J8B0lnEDJmZeXycZ7uX0eLwca3+NSsiggAy86/2A7bt+zQ/ - xLkRtEWHYO7yUnzHxvKtGaoDWVgwIHhmsS2dRXz33itqO7wUVHYQsuWMCpBtBwB9A8McyzIq1d77UZlZ - bEtnEVe1esgraWZpmE4FyKkE4BwcU4TOoXFs/aNsjkrAWPOS8J0HlSqq7aPU6iHXaGHJpnQVIHcOiN+N - TDL44TNPu91UmXuIjE2k7lEnjdZuSRxFD9ycL2xg8YbTKkBCIp2H3VNMTs9gc05gqnvDTYsLg39ebdwR - Sm4/Ie9qvQLRX6lh0fpTKkAS9s3jY3Ryhl7XFGX3nVwu7yHb9IIcUxvJ+ko04TEk6/JJTLukQBauS1MB - Es+R8S8873VT3fT2pzizwErqxXqSMsqJjtcrkMg9RwnXJrAg9KQKkGw7XBNUNHSRZWhBl2chNbvWL7xB - fIqB2MMX0O7VEbbjEKs3Rik1f20QQD6GZFviKQmTkMid5VSybVmYzCy2pbOI5605oTqQD/Wv9R1FPMYf - N743kwAAAABJRU5ErkJggg== + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAASBJREFUOE+lU7ER + wjAMFCOwQmbJCKFIQQtFGorccS5oUnApU9B4hayQFViBFVgh/EcmZ8cmcAd3wlEkvaV/ZTOOo/z1I8Db + RIoBtvXfLeJ2GZuLtZMCf9c2BYDYgfEfACxATBYlSvEUOX0FaEUIYPtF62ft7rY+go5hHgrS7NxYWy2u + CRzxE3DgCnKRjskP56Orkv45yU2asKMbpcPJ2839ozKfJTMgbSKUt0ekztKvaA7ibixOyvoLADqYiGMX + HIUWy7uQa+cSuZGUDb7FswWYwclx9oES/hqzGAmV1UTdSPiQ8UqwDCdiNtgFHwAtVpjbIvESaA4ZqUrP + 2xELFPEBUMwlqmH7iDiNNQAph2DskIMaIF16YfCVIoZOmtyveQF92CVVWYKhQwAAAABJRU5ErkJggg== \ No newline at end of file