Compare commits
8 Commits
B2025-015
...
B2025-017-
Author | SHA1 | Date | |
---|---|---|---|
1ae422c74e | |||
6a51208a13 | |||
0749f5e724 | |||
f65644f553 | |||
dc74da6e86 | |||
301c4c2c97 | |||
8ec820a7f7 | |||
18734e0f85 |
@@ -264,9 +264,11 @@ namespace ROEditor
|
||||
File.Delete(FstNew); // remove ROFST.NEW
|
||||
if (OrphanedRecords.Length > 0)
|
||||
{
|
||||
StreamWriter sw = new StreamWriter(VlnSettings.TemporaryFolder + @"\Orphaned RO Records.txt");
|
||||
sw.Write(OrphanedRecords.ToString());
|
||||
sw.Close();
|
||||
using (StreamWriter sw = new StreamWriter(Path.Combine(FstDir, @"Orphaned RO Records.txt"), false))
|
||||
{
|
||||
sw.Write(OrphanedRecords.ToString());
|
||||
sw.Close();
|
||||
}
|
||||
MessageBox.Show("The file Orphaned RO Records.txt has been created", "Warning - Orphan RO Record");
|
||||
}
|
||||
|
||||
|
@@ -19,6 +19,7 @@ using System.Drawing;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Linq;
|
||||
|
||||
namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
@@ -143,6 +144,8 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
#endregion
|
||||
#region SortingChildren
|
||||
private static bool IsInManualOrderNullFix = false;
|
||||
|
||||
[NonSerialized]
|
||||
public Csla.SortedBindingList<FolderInfo> _SortedChildFolders;
|
||||
public Csla.SortedBindingList<FolderInfo> SortedChildFolders
|
||||
@@ -151,6 +154,29 @@ namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
if (ChildFolders != null)
|
||||
{
|
||||
//B2025-018 Issues with folder order in tree view
|
||||
// if any ChildFolders with a missing Manual Order
|
||||
// set them to the end of the list
|
||||
// use IsInManualOrderNullFix - so, if setting ChildFolders Currently,
|
||||
// do not try to set them (thus creating an infinite loop)
|
||||
if (!IsInManualOrderNullFix && ChildFolders.Any(x => x.ManualOrder == null))
|
||||
{
|
||||
IsInManualOrderNullFix = true;
|
||||
foreach (FolderInfo fi in ChildFolders.Where(x => x.ManualOrder == null))
|
||||
{
|
||||
using (FolderInfo parfolderinfo = FolderInfo.Get(fi.ParentID))
|
||||
{
|
||||
using (Folder fldr = fi.Get())
|
||||
{
|
||||
fldr.ManualOrder = parfolderinfo.NewManualOrder(9999);
|
||||
fldr.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
RefreshChildFolders();
|
||||
IsInManualOrderNullFix = false;
|
||||
}
|
||||
|
||||
if (_SortedChildFolders == null)
|
||||
{
|
||||
_SortedChildFolders = new SortedBindingList<FolderInfo>(ChildFolders);
|
||||
@@ -166,6 +192,10 @@ namespace VEPROMS.CSLA.Library
|
||||
return _SortedChildFolders;
|
||||
}
|
||||
}
|
||||
|
||||
//B2025-018 Issues with folder order in tree view
|
||||
//Note: this should be called from the parent item
|
||||
//As you want to put this into the sorted order of the parent item
|
||||
public double? NewManualOrder(int index)
|
||||
{
|
||||
double? retval = 1;
|
||||
@@ -174,13 +204,27 @@ namespace VEPROMS.CSLA.Library
|
||||
else if (index == 0)
|
||||
{
|
||||
if (retval >= SortedChildFolders[index].ManualOrder) // If one is too big, then divide first value in half
|
||||
retval = SortedChildFolders[index].ManualOrder / 2;
|
||||
retval = SortedChildFolders[index].ManualOrder / 2.0;
|
||||
}
|
||||
else if (SortedChildFolders.Count > index)
|
||||
{
|
||||
retval += SortedChildFolders[index - 1].ManualOrder; // Just go to the next whole number
|
||||
if (retval >= SortedChildFolders[index].ManualOrder)
|
||||
retval = (SortedChildFolders[index - 1].ManualOrder + SortedChildFolders[index].ManualOrder) / 2;
|
||||
//B2025-018 Issues with folder order in tree view
|
||||
//filter to just items with the same parent
|
||||
//want new order to be halfway between the previous item
|
||||
//and the next ManualOrder
|
||||
var tmp = SortedChildFolders.Where(x => x.ParentID == FolderID);
|
||||
var lbound = SortedChildFolders[index - 1].ManualOrder;
|
||||
var ubound = tmp.OrderBy(y => y.ManualOrder).FirstOrDefault(x => x.ManualOrder > lbound)?.ManualOrder;
|
||||
if (ubound != null)
|
||||
{
|
||||
retval = ((ubound - lbound) / 2.0) + lbound;
|
||||
}
|
||||
else
|
||||
{
|
||||
//in this case, item before is highest for that parent
|
||||
//so just make this 1 more
|
||||
retval = lbound + 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@@ -805,7 +805,21 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// B2025-020 Null Reference fix. Added check for valid index into the TransitionTypeList
|
||||
if (!forceConvertToText)
|
||||
{
|
||||
if (traninfo.TranType >= itemInfo.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList.Count)
|
||||
{
|
||||
forceConvertToText = true;
|
||||
TranFixCount++;
|
||||
itemInfo.MyContent.FixTransitionText(traninfo, itemInfo, "Reason for Change: Transition type is not available");
|
||||
using (Content content = Content.Get(itemInfo.MyContent.ContentID))
|
||||
{
|
||||
content.FixTransitionText(traninfo, true);
|
||||
content.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!forceConvertToText)
|
||||
{
|
||||
if (itemInfo.MyProcedure.ItemID != traninfo.MyItemToID.MyProcedure.ItemID) //different proc
|
||||
|
@@ -769,6 +769,15 @@ namespace VEPROMS.CSLA.Library
|
||||
tmp.MyParent = myParent;
|
||||
tmp.Name = name;
|
||||
tmp.ShortName = shortName;
|
||||
|
||||
//B2025-018 Issues with folder order in tree view
|
||||
//if no manual order is set, add it at the end
|
||||
if (myParent != null)
|
||||
{
|
||||
using (FolderInfo parfolderinfo = FolderInfo.Get(myParent.FolderID))
|
||||
tmp.ManualOrder = parfolderinfo.NewManualOrder(9999);
|
||||
}
|
||||
|
||||
return tmp;
|
||||
}
|
||||
public static Folder New(Folder myParent, Connection myConnection, string name, string title, string shortName, Format myFormat, double? manualOrder, string config, DateTime dts, string usrID)
|
||||
@@ -784,6 +793,15 @@ namespace VEPROMS.CSLA.Library
|
||||
tmp.Config = config;
|
||||
tmp.DTS = dts;
|
||||
tmp.UsrID = usrID;
|
||||
|
||||
//B2025-018 Issues with folder order in tree view
|
||||
//if no manual order is set, add it at the end
|
||||
if (myParent != null && manualOrder == null)
|
||||
{
|
||||
using (FolderInfo parfolderinfo = FolderInfo.Get(myParent.FolderID))
|
||||
tmp.ManualOrder = parfolderinfo.NewManualOrder(9999);
|
||||
}
|
||||
|
||||
return tmp;
|
||||
}
|
||||
public static Folder MakeFolder(Folder myParent, Connection myConnection, string name, string title, string shortName, Format myFormat, double? manualOrder, string config, DateTime dts, string usrID)
|
||||
@@ -813,6 +831,15 @@ namespace VEPROMS.CSLA.Library
|
||||
tmp.MyFormat = myFormat;
|
||||
tmp.ManualOrder = manualOrder;
|
||||
tmp.Config = config;
|
||||
|
||||
//B2025-018 Issues with folder order in tree view
|
||||
//if no manual order is set, add it at the end
|
||||
if (myParent != null && manualOrder == null)
|
||||
{
|
||||
using (FolderInfo parfolderinfo = FolderInfo.Get(myParent.FolderID))
|
||||
tmp.ManualOrder = parfolderinfo.NewManualOrder(9999);
|
||||
}
|
||||
|
||||
return tmp;
|
||||
}
|
||||
public static Folder MakeFolder(Folder myParent, Connection myConnection, string name, string title, string shortName, Format myFormat, double? manualOrder, string config)
|
||||
|
@@ -983,19 +983,22 @@ namespace Volian.Controls.Library
|
||||
SectionInfo si2 = (tn as VETreeNode).VEObject as SectionInfo;
|
||||
if (si2.MyDocVersion.MultiUnitCount > 1)
|
||||
{
|
||||
MenuItem mps = new MenuItem("Print Section");
|
||||
int k = 0;
|
||||
foreach (string s in si2.MyDocVersion.UnitNames)
|
||||
if (!si2.IsSubsection)
|
||||
{
|
||||
k++;
|
||||
MenuItem mp = mps.MenuItems.Add(s, new EventHandler(miMultiUnit_Click));
|
||||
mp.Tag = k;
|
||||
MenuItem mps = new MenuItem("Print Section");
|
||||
int k = 0;
|
||||
foreach (string s in si2.MyDocVersion.UnitNames)
|
||||
{
|
||||
k++;
|
||||
MenuItem mp = mps.MenuItems.Add(s, new EventHandler(miMultiUnit_Click));
|
||||
mp.Tag = k;
|
||||
}
|
||||
cm.MenuItems.Add(mps);
|
||||
}
|
||||
cm.MenuItems.Add(mps);
|
||||
}
|
||||
else
|
||||
{
|
||||
cm.MenuItems.Add("Print Section", new EventHandler(mi_Click));
|
||||
if(!si2.IsSubsection) cm.MenuItems.Add("Print Section", new EventHandler(mi_Click));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2812,23 +2815,27 @@ namespace Volian.Controls.Library
|
||||
int f2 = -1;
|
||||
string uniquename = _LastFolderInfo.MyParent.UniqueChildName("New Folder");
|
||||
int myindex = SelectedNode.Index + ((newtype == MenuSelections.FolderAfter) ? 1 : 0);
|
||||
FolderInfo parfolderinfo = FolderInfo.Get(parentfolder.FolderID);
|
||||
double? myorder = parfolderinfo.NewManualOrder(myindex);
|
||||
using (Folder folder = Folder.MakeFolder(parentfolder.MyParent, parentfolder.MyConnection, uniquename, string.Empty, "Short Name", null, myorder, string.Empty, DateTime.Now, VlnSettings.UserID))
|
||||
{
|
||||
ShowBrokenRules(folder.BrokenRulesCollection);
|
||||
SetLastValues(FolderInfo.Get(folder.FolderID));
|
||||
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(uniquename, folder.FolderConfig)) == DialogResult.OK)
|
||||
//B2025-018 Issues with folder order in tree view
|
||||
//since before/after folder is at same level as current folder
|
||||
//so need to use the parents order to determine where to place it
|
||||
using (FolderInfo parfolderinfo = FolderInfo.Get(parentfolder.MyParent.FolderID))
|
||||
{ double? myorder = parfolderinfo.NewManualOrder(myindex);
|
||||
using (Folder folder = Folder.MakeFolder(parentfolder.MyParent, parentfolder.MyConnection, uniquename, string.Empty, "Short Name", null, myorder, string.Empty, DateTime.Now, VlnSettings.UserID))
|
||||
{
|
||||
folder.Save();
|
||||
tn = new VETreeNode((IVEDrillDownReadOnly)_LastFolderInfo);
|
||||
if (newtype == MenuSelections.FolderBefore) SelectedNode.Parent.Nodes.Insert(SelectedNode.Index, tn);
|
||||
if (newtype == MenuSelections.FolderAfter) SelectedNode.Parent.Nodes.Insert(SelectedNode.Index + 1, tn);
|
||||
ShowBrokenRules(folder.BrokenRulesCollection);
|
||||
SetLastValues(FolderInfo.Get(folder.FolderID));
|
||||
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(uniquename, folder.FolderConfig)) == DialogResult.OK)
|
||||
{
|
||||
folder.Save();
|
||||
tn = new VETreeNode((IVEDrillDownReadOnly)_LastFolderInfo);
|
||||
if (newtype == MenuSelections.FolderBefore) SelectedNode.Parent.Nodes.Insert(SelectedNode.Index, tn);
|
||||
if (newtype == MenuSelections.FolderAfter) SelectedNode.Parent.Nodes.Insert(SelectedNode.Index + 1, tn);
|
||||
}
|
||||
else
|
||||
f2 = folder.FolderID;
|
||||
}
|
||||
else
|
||||
f2 = folder.FolderID;
|
||||
if (f2 != -1) Folder.Delete(f2);
|
||||
}
|
||||
if (f2 != -1) Folder.Delete(f2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user