diff --git a/PROMS/Volian.Controls.Library/RtfRawItem.cs b/PROMS/Volian.Controls.Library/RtfRawItem.cs
index 1ce32b98..ee3e91ee 100644
--- a/PROMS/Volian.Controls.Library/RtfRawItem.cs
+++ b/PROMS/Volian.Controls.Library/RtfRawItem.cs
@@ -156,7 +156,10 @@ namespace Volian.Controls.Library
{
MyStepRTB.VwMode = MyStepPanel.VwMode;
Size sz = GetRtfRawSize(MyStepRTB.Rtf);
- if (MyStepRTB.Rtf == null || MyStepRTB.Rtf == "" || !MyStepRTB.Rtf.ToUpper().Contains("OBJCLASS EQUATION")) // this is a new insert
+ if (MyStepRTB.Rtf == null || MyStepRTB.Rtf == ""
+ || !(MyStepRTB.Rtf.ToUpper().Contains("OBJCLASS EQU")
+ || MyStepRTB.Rtf.ToUpper().Contains("OBJCLASS VIS")) //Support Visio
+ ) // this is a new insert
{
sz.Width = 50;
sz.Height = 50;
diff --git a/PROMS/Volian.Controls.Library/StepRTB.cs b/PROMS/Volian.Controls.Library/StepRTB.cs
index bd126a2f..7b04a175 100644
--- a/PROMS/Volian.Controls.Library/StepRTB.cs
+++ b/PROMS/Volian.Controls.Library/StepRTB.cs
@@ -2081,7 +2081,8 @@ namespace Volian.Controls.Library
try
{
richTextBox1.Paste(frm);
- if (richTextBox1.Rtf.ToUpper().Contains("OBJCLASS EQUATION")) hasEquation = true;
+ if (richTextBox1.Rtf.ToUpper().Contains("OBJCLASS EQU")) hasEquation = true;
+ if (richTextBox1.Rtf.ToUpper().Contains("OBJCLASS VIS")) hasEquation = true; // Support Visio
}
catch (Exception ex)
{
diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.cs
index dcf2cf59..11f188a7 100644
--- a/PROMS/Volian.Controls.Library/StepTabRibbon.cs
+++ b/PROMS/Volian.Controls.Library/StepTabRibbon.cs
@@ -965,17 +965,17 @@ namespace Volian.Controls.Library
if (insdata.Length < 2) return;
int fromtype = Convert.ToInt32(insdata[0]);
int contenttype = Convert.ToInt32(insdata[1]) + 20000;
- string tabOrFigType = (insdata.Length == 3)? insdata[2]:null;
+ string tabOrFigType = (insdata.Length == 3) ? insdata[2] : null;
// if CautionNoteOrder format variable is set then use it to determine the placement of the
// Caution, Note, Warning, or Message (calvert format)
- if (cautNoteOrder != null && (","+cautNoteOrder+",").Contains(","+(contenttype % 10000).ToString() + ",") && (_MyEditItem.MyItemInfo.Cautions != null || _MyEditItem.MyItemInfo.Notes != null))
+ if (cautNoteOrder != null && ("," + cautNoteOrder + ",").Contains("," + (contenttype % 10000).ToString() + ",") && (_MyEditItem.MyItemInfo.Cautions != null || _MyEditItem.MyItemInfo.Notes != null))
{
- EditItem stepBefore = FindStepBefore(cautNoteOrder, contenttype);
+ EditItem stepBefore = FindStepBefore(cautNoteOrder, contenttype);
if (stepBefore != null)
stepBefore.AddSiblingAfter((int?)contenttype, true);
else
{
- EditItem stepAfter = FindStepAfter(cautNoteOrder, contenttype);
+ EditItem stepAfter = FindStepAfter(cautNoteOrder, contenttype);
if (stepAfter != null)
stepAfter.AddSiblingBefore((int?)contenttype, true);
}
@@ -991,64 +991,72 @@ namespace Volian.Controls.Library
hlsEditItem.AddSiblingAfter((int?)contenttype, true);
}
else if (InsertingTable(contenttype))
- {
- if (tabOrFigType.Contains("RO"))
- {
- VlnFlexGrid grd = new VlnFlexGrid();
- grd.Rows.Count = 1;
- grd.Cols.Count = 1;
- grd.IsRoTable = true;
- _MyEditItem.AddChild((E_FromType)fromtype, contenttype, grd);
- StepTabPanel tmp = Parent as StepTabPanel;
- tmp.MyDisplayTabControl.OnLinkModifyRO(this, new StepPanelLinkEventArgs(null));
- }
- else
- {
- VlnFlexGrid grd = CreateNewTable();
- if (grd != null) _MyEditItem.AddChild((E_FromType)fromtype, contenttype, grd);
- }
- }
- else if (InsertingFigure(contenttype))
- {
- if (tabOrFigType.Contains("RO"))
- {
- _MyEditItem.AddChild((E_FromType)fromtype, contenttype, ImageItem.E_ImageSource.RoFigure);
- StepTabPanel tmp = Parent as StepTabPanel;
- tmp.MyDisplayTabControl.OnLinkModifyRO(this, new StepPanelLinkEventArgs(null));
- }
- else
- {
- System.Drawing.Image img = Clipboard.GetImage();
- if (img == null && tabOrFigType.Contains("CL"))
- {
- MessageBox.Show("Clipboard does not contain image data. Cannot create figure.", "Clipboard Error");
- return;
- }
- _MyEditItem.AddChild((E_FromType)fromtype, contenttype, tabOrFigType.Contains("CL")?ImageItem.E_ImageSource.Clipboard:ImageItem.E_ImageSource.File);
- }
- if (_MyEditItem.MyItemInfo.IsFigure && tabOrFigType.Contains("RO"))
- btnInsRO_Click(sender, e);
- }
- else if (InsertingEquation(contenttype))
{
- // launch equation editor
- string EqnEdt = GetEqnEdt();
- if (EqnEdt == null)
+ if (tabOrFigType.Contains("RO"))
{
- _MyLog.WarnFormat("Equation Editor is not correctly configured in the registry.");
- MessageBox.Show("The Equation Editor needs to be started.", "Reminder", MessageBoxButtons.OK);
+ VlnFlexGrid grd = new VlnFlexGrid();
+ grd.Rows.Count = 1;
+ grd.Cols.Count = 1;
+ grd.IsRoTable = true;
+ _MyEditItem.AddChild((E_FromType)fromtype, contenttype, grd);
+ StepTabPanel tmp = Parent as StepTabPanel;
+ tmp.MyDisplayTabControl.OnLinkModifyRO(this, new StepPanelLinkEventArgs(null));
}
else
- Process.Start(EqnEdt);
- _MyEditItem.AddChild((E_FromType)fromtype, contenttype);
+ {
+ VlnFlexGrid grd = CreateNewTable();
+ if (grd != null) _MyEditItem.AddChild((E_FromType)fromtype, contenttype, grd);
+ }
}
- else
+ else if (InsertingFigure(contenttype))
{
+ if (tabOrFigType.Contains("RO"))
+ {
+ _MyEditItem.AddChild((E_FromType)fromtype, contenttype, ImageItem.E_ImageSource.RoFigure);
+ StepTabPanel tmp = Parent as StepTabPanel;
+ tmp.MyDisplayTabControl.OnLinkModifyRO(this, new StepPanelLinkEventArgs(null));
+ }
+ else
+ {
+ System.Drawing.Image img = Clipboard.GetImage();
+ if (img == null && tabOrFigType.Contains("CL"))
+ {
+ MessageBox.Show("Clipboard does not contain image data. Cannot create figure.", "Clipboard Error");
+ return;
+ }
+ _MyEditItem.AddChild((E_FromType)fromtype, contenttype, tabOrFigType.Contains("CL") ? ImageItem.E_ImageSource.Clipboard : ImageItem.E_ImageSource.File);
+ }
+ if (_MyEditItem.MyItemInfo.IsFigure && tabOrFigType.Contains("RO"))
+ btnInsRO_Click(sender, e);
+ }
+ else if (InsertingEquation(contenttype))
+ {
+ // launch Ole Object Editor - added support for Visio
+ switch (OleObjectEditors)
+ {
+ case 0: // None
+ _MyLog.WarnFormat("Equation Editor is not correctly configured in the registry.");
+ MessageBox.Show("The Equation Editor needs to be started.", "Reminder", MessageBoxButtons.OK);
+ break;
+ case 1: // Equation Editor
+ Process.Start(EqnEdtPath);
+ break;
+ case 2: // Visio
+ Process.Start(VisioPath);
+ break;
+ case 3: // Both
+ string editor = (sender as ButtonItem).Tag.ToString();
+ if (editor.EndsWith("Visio"))
+ Process.Start(VisioPath);
+ else
+ Process.Start(EqnEdtPath);
+ break;
+ }
_MyEditItem.AddChild((E_FromType)fromtype, contenttype);
}
}
// the following launches the equation editor based on registry setting:
- private string GetEqnEdt()
+ private static string GetEqnEdt()
{
string retval = null;
try
@@ -1076,7 +1084,73 @@ namespace Volian.Controls.Library
}
return retval;
}
- public String GetDefaultKeyValue(String key)
+ private static string GetVisio() // Added support for Visio
+ {
+ string retval = null;
+ try
+ {
+ RegistryKey key = Registry.ClassesRoot;
+ string rootName = key.Name;
+ string curVer = GetDefaultKeyValue(key.Name + "Visio.Drawing\\CurVer");
+ string clsid = GetDefaultKeyValue(key.Name + "\\" + curVer + "\\CLSID");
+ retval = GetDefaultKeyValue(key.Name + "\\CLSID\\" + clsid + "\\LocalServer32");
+ }
+ catch (Exception)
+ {
+ DirectoryInfo di = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles));
+ string path = FindFile(di, "visio.exe");
+ if (path != null) return path;
+ }
+ return retval;
+ }
+ private static string _EqnEdtPath = null;
+ public static string EqnEdtPath
+ {
+ get { return StepTabRibbon._EqnEdtPath; }
+ }
+ private static string _VisioPath = null;
+ public static string VisioPath
+ {
+ get { return StepTabRibbon._VisioPath; }
+ }
+ private int _OleObjectEditors = -1;
+ public int OleObjectEditors
+ {
+ get
+ {
+ if (_OleObjectEditors == -1)
+ {
+ _OleObjectEditors = 0;// no OLE Object Editors
+ _EqnEdtPath = GetEqnEdt();
+ if (_EqnEdtPath != null) _OleObjectEditors += 1;
+ _VisioPath = GetVisio();
+ if (_VisioPath != null) _OleObjectEditors += 2;
+ }
+ return _OleObjectEditors;
+ }
+ }
+
+ private static string FindFile(DirectoryInfo di, string fileName)
+ {
+ try
+ {
+
+ foreach (FileInfo fi in di.GetFiles(fileName))
+ return fi.FullName;
+ foreach (DirectoryInfo sub in di.GetDirectories())
+ {
+ string path = FindFile(sub, fileName);
+ if (path != null)
+ return path;
+ }
+ }
+ catch (Exception)
+ {
+ ;
+ }
+ return null;
+ }
+ public static String GetDefaultKeyValue(String key)
{
object xxx = null;
return Registry.GetValue(key, "", xxx).ToString();
@@ -1313,7 +1387,8 @@ namespace Volian.Controls.Library
try
{
richTextBox1.Paste(frm);
- if (richTextBox1.Rtf.ToUpper().Contains("OBJCLASS EQUATION")) noEquationData = false;
+ if (richTextBox1.Rtf.ToUpper().Contains("OBJCLASS EQU")) noEquationData = false;
+ if (richTextBox1.Rtf.ToUpper().Contains("OBJCLASS VIS")) noEquationData = false;
}
catch (Exception ex)
{
@@ -1826,11 +1901,13 @@ namespace Volian.Controls.Library
cmbi.Text = sdr.Name;
cmbi.Tag = string.Format("{0} {1}", fromtype, sdr.Index); // index of type to insert it when button is clicked
cmbi.Checked = (selType == null || (sd.Type == selType.Type));
- cmbi.Click += new System.EventHandler(btnInsStep_Click);
+ if(!AddVisioOrEqnEdt(cmbi)) // Added support for Visio
+ cmbi.Click += new System.EventHandler(btnInsStep_Click);
cmbtn.SubItems.Add(cmbi);
}
if (MyItemInfo.IsHigh && hlsSubType != -1 && sdr.Index == hlsSubType) bi.Checked = true;
- bi.Click += new System.EventHandler(btnInsStep_Click);
+ if(!AddVisioOrEqnEdt(bi)) // Added support for Visio
+ bi.Click += new System.EventHandler(btnInsStep_Click);
// Assign only A-Z to the KeyTips in the list (i.e. assign only the first 24 in the list)
// Note that KeyTips logic support only single characters at this level (can't have 'AA' for example)
if (kt != '0')
@@ -1919,6 +1996,26 @@ namespace Volian.Controls.Library
}
rbnStepParts.Refresh();
}
+ // Added Support for Visio
+ private bool AddVisioOrEqnEdt(DevComponents.DotNetBar.ButtonItem cmbi)
+ {
+ if (cmbi.Text.Contains("Equation") && OleObjectEditors == 3)
+ {
+ DevComponents.DotNetBar.ButtonItem btn1 = new DevComponents.DotNetBar.ButtonItem("btnEquation", "Equation Editor");
+ btn1.Click += new System.EventHandler(btnInsStep_Click);
+ btn1.Tag = cmbi.Tag + " EqnEdt";
+ btn1.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways;
+ //btn1.Tag = string.Format("Equation"); // index of type to insert it when button is clicked
+ cmbi.SubItems.Add(btn1);
+ DevComponents.DotNetBar.ButtonItem btn2 = new DevComponents.DotNetBar.ButtonItem("btnVisio", "Visio");
+ btn2.Click += new System.EventHandler(btnInsStep_Click);
+ btn2.Tag = cmbi.Tag + " Visio";
+ btn2.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways;
+ cmbi.SubItems.Add(btn2);
+ return true;
+ }
+ return false;
+ }
// From Figure menuing, need to map those strings to the index in the StepdataList for setting item's content type:
//
//