Enhanced Documents, handle enhanced steps

Enhanced Documents, delete items
Enhanced Documents button disable/enable
Enhanced Documents, tree view support for insert/delete/copy-paste
Move DisplayText.cs to CSLA
Enhanced Documents adding links (method added in docversion)
This commit is contained in:
Kathy Ruffing 2016-01-20 16:46:31 +00:00
parent 6366af8b47
commit 1e3324aa7b
8 changed files with 488 additions and 145 deletions

View File

@ -25,7 +25,8 @@ namespace Volian.Controls.Library
No = 0,
Before = 1,
After = 2,
Child = 3
Child = 3,
Replace = 4
}
#endregion
public partial class RTBItem : EditItem
@ -238,6 +239,7 @@ namespace Volian.Controls.Library
get { return _EnhAddFromItemInfo; }
set { _EnhAddFromItemInfo = value; }
}
private ItemInfo _EnhCopiedItemInfo = null;
#endregion
#region Constructors
public RTBItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand)
@ -442,14 +444,20 @@ namespace Volian.Controls.Library
_ProcessingEnter = true;
DisplayTabItem dti = null;
// Syncronize any open Enhanced Documents
StepConfig sc = new StepConfig(MyItemInfo.MyContent.Config);
foreach (EnhancedDocument ed in sc.MyEnhancedDocuments)
if (MyStepPanel.MyStepTabPanel.MyDisplayTabControl.SyncEnhancedDocuments)
{
ItemInfo ii = ItemInfo.Get(ed.ItemID);
if (MyStepPanel.MyStepTabPanel.MyDisplayTabControl.IsItemInfoProcedureOpen(ii))
MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OnOpenEnhancedDocument(new ItemSelectedChangedEventArgs(ii));
if (dti != null)
dti.MyStepTabPanel.MyDisplayTabControl.OpenItem(this.MyItemInfo);
StepConfig sc = new StepConfig(MyItemInfo.MyContent.Config);
foreach (EnhancedDocument ed in sc.MyEnhancedDocuments)
{
if (ed.Type != 0)
{
ItemInfo ii = ItemInfo.Get(ed.ItemID);
//if (MyStepPanel.MyStepTabPanel.MyDisplayTabControl.IsItemInfoProcedureOpen(ii))
MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OnRefreshEnhancedDocument(new ItemSelectedChangedEventArgs(ii));
if (dti != null)
dti.MyStepTabPanel.MyDisplayTabControl.OpenItem(this.MyItemInfo);
}
}
}
_ProcessingEnter = false;
}
@ -773,44 +781,42 @@ namespace Volian.Controls.Library
MyStepRTB.OrigRTF = MyStepRTB.Rtf;
MyStepRTB.ClearUndo();
// see if enhanced document related steps need to be created: KBR 10/2/15 - NEED to do this when saving RO
// see if enhanced document related steps need to be created.
if (EnhAddType != EnhancedAddTypes.No)
{
StepConfig sib = EnhAddFromItemInfo.MyConfig as StepConfig;
foreach (EnhancedDocument ed in sib.MyEnhancedDocuments)
// get the list of enhanced, may be coming from a section or a step:
EnhancedDocuments eds = EnhAddFromItemInfo.GetMyEnhancedDocuments();
foreach (EnhancedDocument ed in eds)
{
// create a new enhanced step and link it to this new source step.
// the new source step's item is passed in to know what type & what to link to.
// The ed.Type & itemid show what type of enhanced document (use to create new
// config Type) and itemid is the one to insert after.
DoAddEnhancedSteps(ed.Type, ed.ItemID);
// the new source step's item is used to know what type & what to link to.
// The ed.Type & ed.itemid show what type of enhanced document (use to create new
// config Type).
ItemInfo.EAddpingPart addpart = ItemInfo.EAddpingPart.After;
if (EnhAddType == EnhancedAddTypes.Before) addpart = ItemInfo.EAddpingPart.Before;
else if (EnhAddType == EnhancedAddTypes.Child) addpart = ItemInfo.EAddpingPart.Child;
ItemInfo newEnh = MyItemInfo.DoAddEnhancedSteps(ed.Type, ed.ItemID, addpart);
if (newEnh != null)
{
// if tabcontrol was open for enhanced, display the steps:
ItemInfo proc = newEnh.MyProcedure; // Find procedure Item
string key = "Item - " + proc.ItemID.ToString();
if (MyStepPanel.MyStepTabPanel.MyDisplayTabControl._MyDisplayTabItems.ContainsKey(key))
{
DisplayTabItem pg = MyStepPanel.MyStepTabPanel.MyDisplayTabControl._MyDisplayTabItems[key];
// _MyDisplayTabItems (in line above) had tabs that were closed, so use the next line
// to validate that the tab is still open.
foreach (DisplayTabItem ti in MyStepPanel.MyStepTabPanel.MyDisplayTabControl.MyBar.Items)
{
if (ti == pg) pg.MyStepTabPanel.MyStepPanel.GetEditItem(newEnh);
}
}
}
}
EnhAddType = EnhancedAddTypes.No;
}
}
}
private void DoAddEnhancedSteps(int enhType, int enhItemID)
{
// get the item object in the enhanced document so that inserting of the new enhanced item and
// its children can be done:
ItemInfo existingEnhancedItemInfo = ItemInfo.Get(enhItemID);
ItemInfo.EAddpingPart addpart = ItemInfo.EAddpingPart.After;
if (EnhAddType == EnhancedAddTypes.Before) addpart = ItemInfo.EAddpingPart.Before;
else if (EnhAddType == EnhancedAddTypes.Child) addpart = ItemInfo.EAddpingPart.Child;
ItemInfo newEnhancedItemInfo = existingEnhancedItemInfo.InsertEnhancedSteps(MyItemInfo.MyContent.Text, null, addpart, MyItemInfo.MyContent.Type, enhType, MyItemInfo.ItemID);
StepConfig sc = new StepConfig(MyItemInfo.MyContent.Config);
sc.AddEnhancedDocument(enhType, newEnhancedItemInfo.ItemID);
using (Content c = Content.Get(MyItemInfo.ContentID))
{
c.Config = sc.ToString();
c.Save();
}
MyItemInfo.RefreshConfig();
}
//public override void SetBackgroundColor()
//{
// MyStepRTB.SetBackColor();
//}
public override void IdentifyMe(bool highlight)
{
if (highlight)

Binary file not shown.

View File

@ -314,6 +314,7 @@ namespace Volian.Controls.Library
/// <param name="myItemInfo">Item to Expand</param>
private void ExpandAsNeeded(ItemInfo myItemInfo)
{
int id = myItemInfo.ItemID;
if (!_LookupEditItems.ContainsKey(id)) // If the item is not currently displayed
ExpandAsNeeded((ItemInfo)myItemInfo.ActiveParent); // Expand it's parent
@ -465,6 +466,33 @@ namespace Volian.Controls.Library
}
if (shouldDelete)
{
// if this item has enhanced edititems, remove them. Note that this code supports
// deleting text in an rtbitem that may be a step or section level.
EnhancedDocuments eds = null;
StepConfig sc = lastEI.MyItemInfo.MyConfig as StepConfig;
if (sc != null) eds = sc.MyEnhancedDocuments;
else
{
// if a section, just the title or all contents may be linked. If just title,
// don't delete enhanced, but clear links back from enhanced.
if (lastEI.MyItemInfo.IsSection)
{
SectionConfig sec = lastEI.MyItemInfo.MyConfig as SectionConfig;
if (sec != null)
{
if (sec.Section_LnkEnh == "Y") eds = sec.MyEnhancedDocuments;
else lastEI.MyItemInfo.ClearEnhancedSectionLink();
}
}
}
List<int> enhIds = new List<int>();
if (eds != null)
{
foreach (EnhancedDocument ed in eds)
{
if (ed.Type != 0) enhIds.Add(ed.ItemID);
}
}
float oldTop = lastEI.Top;
EditItem newFocus = lastEI.DeleteItem();
float newTop = newFocus.Top;
@ -494,6 +522,13 @@ namespace Volian.Controls.Library
}
else
newFocus.AdjustLocation();
foreach (int enhId in enhIds)
{
ItemInfo ii = ItemInfo.Get(enhId);
bool success = MyStepTabPanel.MyDisplayTabControl.DeleteRTBItem(ii);
if (!success) // item was not displayed in editor, just delete from database (add tree if necessarY)
Item.DeleteItemAndChildren(ii);
}
}
else
{

View File

@ -21,6 +21,7 @@ namespace Volian.Controls.Library
EditItem.MyItemInfo.ResetParts();
EditItem.MyItemInfo.MyContent.RefreshContentParts();
}
_LookupEditItems.Clear();
components.Dispose();
}
base.Dispose(disposing);

View File

@ -128,7 +128,6 @@ namespace Volian.Controls.Library
private void AddEnhancedDocumentMenu(DevComponents.DotNetBar.ButtonItem myButtonItem)
{
#region enhanced
// get a list of all of the current enhanced buttons that been defined for context menu
List<string> unusedEnhancedButtons = new List<string>();
foreach (DevComponents.DotNetBar.ButtonItem bi in myButtonItem.SubItems)
@ -141,12 +140,14 @@ namespace Volian.Controls.Library
DVEnhancedDocuments dveds = MyItemInfo.MyDocVersion.DocVersionConfig.MyEnhancedDocuments;
foreach(EnhancedDocument ed in sc.MyEnhancedDocuments)
{
string buttonName = string.Format("btnEnhancedTo{0}", dveds[ed.Type]);
string buttonName = string.Format("btnEnhancedTo{0}", dveds.GetByType(ed.Type));
//string buttonName = string.Format("btnEnhancedTo{0}", dveds[ed.Type]);
if (unusedEnhancedButtons.Contains(buttonName)) unusedEnhancedButtons.Remove(buttonName);
DevComponents.DotNetBar.ButtonItem biEnhanced;
if (!myButtonItem.SubItems.Contains(buttonName))
{
biEnhanced = new DevComponents.DotNetBar.ButtonItem(buttonName, "Go To " + dveds[ed.Type].Name + " Document");
//biEnhanced = new DevComponents.DotNetBar.ButtonItem(buttonName, "Go To " + dveds[ed.Type].Name + " Document");
biEnhanced = new DevComponents.DotNetBar.ButtonItem(buttonName, "Go To " + dveds.GetByType(ed.Type).Name + " Document");
biEnhanced.Click += btnSourceToBackground_Click;
myButtonItem.SubItems.Add(biEnhanced);
}
@ -161,87 +162,6 @@ namespace Volian.Controls.Library
biUnused.Visible = false;
}
#endregion
#region background
//if (!myButtonItem.SubItems.Contains("btnSourceToBackground"))
//{
// btnSourceToBackground = new DevComponents.DotNetBar.ButtonItem("btnSourceToBackground", "Go To Background Document");
// btnSourceToBackground.Visible = false;
// btnSourceToBackground.Click += btnSourceToBackground_Click;
// myButtonItem.SubItems.Add(btnSourceToBackground);
//}
//else
// btnSourceToBackground = myButtonItem.SubItems["btnSourceToBackground"];
//if (!myButtonItem.SubItems.Contains("btnBackgroundToSource"))
//{
// btnBackgroundToSource = new DevComponents.DotNetBar.ButtonItem("btnBackgroundToSource", "Go To Source Document");
// btnBackgroundToSource.Visible = false;
// btnBackgroundToSource.Click += btnBackgroundToSource_Click;
// myButtonItem.SubItems.Add(btnBackgroundToSource);
//}
//else
// btnBackgroundToSource = myButtonItem.SubItems["btnBackgroundToSource"];
//StepConfig sc = new StepConfig(_MyStepRTB.MyItemInfo.MyContent.Config);
//if (sc.Step_SourceToBackground != null)
//{
// btnSourceToBackground.Tag = sc.Step_SourceToBackground;
// btnSourceToBackground.Visible = true;
//}
//else
//{
// btnSourceToBackground.Tag = string.Empty;
// btnSourceToBackground.Visible = false;
//}
//if (sc.Step_BackgroundToSource != null)
//{
// btnBackgroundToSource.Tag = sc.Step_BackgroundToSource;
// btnBackgroundToSource.Visible = true;
//}
//else
//{
// btnBackgroundToSource.Tag = string.Empty;
// btnBackgroundToSource.Visible = false;
//}
#endregion
#region deviation
//if (!myButtonItem.SubItems.Contains("btnSourceToDeviation"))
//{
// btnSourceToDeviation = new DevComponents.DotNetBar.ButtonItem("btnSourceToDeviation", "Go To Deviation Document");
// btnSourceToDeviation.Visible = false;
// btnSourceToDeviation.Click += btnSourceToBackground_Click;
// myButtonItem.SubItems.Add(btnSourceToDeviation);
//}
//else
// btnSourceToDeviation = myButtonItem.SubItems["btnSourceToDeviation"];
//if (!myButtonItem.SubItems.Contains("btnDeviationToSource"))
//{
// btnDeviationToSource = new DevComponents.DotNetBar.ButtonItem("btnDeviationToSource", "Go To Source Document");
// btnDeviationToSource.Visible = false;
// btnDeviationToSource.Click += btnBackgroundToSource_Click;
// myButtonItem.SubItems.Add(btnDeviationToSource);
//}
//else
// btnDeviationToSource = myButtonItem.SubItems["btnDeviationToSource"];
//if (sc.Step_SourceToDeviation != null)
//{
// btnSourceToDeviation.Tag = sc.Step_SourceToDeviation;
// btnSourceToDeviation.Visible = true;
//}
//else
//{
// btnSourceToDeviation.Tag = string.Empty;
// btnSourceToDeviation.Visible = false;
//}
//if (sc.Step_DeviationToSource != null)
//{
// btnDeviationToSource.Tag = sc.Step_DeviationToSource;
// btnDeviationToSource.Visible = true;
//}
//else
//{
// btnDeviationToSource.Tag = string.Empty;
// btnDeviationToSource.Visible = false;
//}
#endregion
}
void btnBackgroundToSource_Click(object sender, EventArgs e)
@ -494,6 +414,7 @@ namespace Volian.Controls.Library
}
public void OpenContextMenu(Point loc)
{
AddEnhancedDocumentMenu(btnCMRtfEdit);
btnCMRtfEdit.Popup(loc);
}
private int _MyLastFormatID = -1;
@ -761,7 +682,6 @@ namespace Volian.Controls.Library
//{
// SetButtonAndMenuEnabling(true);
//}
#endregion
#region Constructor
public StepTabRibbon()
{
@ -1066,10 +986,20 @@ namespace Volian.Controls.Library
return; // No need to change menu that does not get used
DocVersionInfo dvi = MyEditItem.MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo;
if (dvi == null) return;
// enable the following in case they were disabled for enhanced steps - only do for formats that have enhanced:
if (!MyItemInfo.IsEnhancedStep && !MyItemInfo.IsEnhancedSection &&
(((MyItemInfo.ActiveFormat.PlantFormat.FormatData.PurchaseOptions.Value & E_PurchaseOptions.EnhancedBackgrounds) == E_PurchaseOptions.EnhancedBackgrounds) ||
((MyItemInfo.ActiveFormat.PlantFormat.FormatData.PurchaseOptions.Value & E_PurchaseOptions.EnhancedDeviations) == E_PurchaseOptions.EnhancedDeviations)))
SetButtonEnablingForEnhanced(true);
if (dvi.VersionType > 127 || MyEditItem.MyStepPanel.VwMode == E_ViewMode.View)
{
SetButtonMenuEnabledDisabledOnSelection(false);
}
else if (MyItemInfo != null && MyItemInfo.IsEnhancedStep || MyItemInfo.IsEnhancedSection)
{
SetButtonEnablingForEnhanced(false);
}
else
{
SetButtonMenuEnabledDisabledOnSelection(true);
@ -1128,6 +1058,26 @@ namespace Volian.Controls.Library
// OLD: SetStepButtonAndMenuEnabling(docontextmenus);
}
private void SetButtonEnablingForEnhanced(bool setting)
{
btnPaste.Enabled = btnCut.Enabled = setting;
btnUndo.Enabled = btnRedo.Enabled = setting;
rbFont.Enabled = rbStepType.Enabled = setting;
rbSteps.Enabled = setting;
rbnCharacters.Enabled = rbnParagraph.Enabled = rbnSiblings.Enabled = rbnLinks.Enabled = setting;
btnCMEdit.Enabled = setting;
btnDelStep.Enabled = setting; // context menu item
btnPageBreak.Enabled = setting; // context menu item
btnCMHardSpace.Enabled = btnCMTransition.Enabled = btnCMRO.Enabled = btnCMSymbol.Enabled = setting;
btnFindRplDlg.Enabled = setting; // no find replace button is available when in an enhanced document
btnEditMode.Enabled = btnCMEditMode1.Enabled = setting;
if (((MyItemInfo.ActiveFormat.PlantFormat.FormatData.PurchaseOptions.Value & E_PurchaseOptions.EnhancedBackgrounds) == E_PurchaseOptions.EnhancedBackgrounds) ||
((MyItemInfo.ActiveFormat.PlantFormat.FormatData.PurchaseOptions.Value & E_PurchaseOptions.EnhancedDeviations) == E_PurchaseOptions.EnhancedDeviations))
btnCASCreate.Enabled = false;
else
btnCASCreate.Enabled = (MyEditItem != null) ? (MyEditItem.MyStepPanel.ApplDisplayMode > 0) : false;
}
private void SetPasteButtonEnabled()
{
#region new code
@ -1165,6 +1115,17 @@ namespace Volian.Controls.Library
btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false; // don't replace itself
return;
}
// THE FOLLOWING NEEDS TO BE ADDED IN - CODE HAD TO BE CHECKED IN BEFORE THIS COULD BE TESTED BY SOFTWARE ENGINEER (KBR) but is needed.
// for now (Jan 2016 - initial implementation of enhanced document support) do NOT paste any step (MyCopyStep) that has enhanced data associated
// with it unless pasting within a enhanced source document. The reason is that code would need to handle clearing the pasted enhanced config
// data if it is pasted into a non-enhanced location.
//if ((!MyItemInfo.IsEnhancedSection && !!!MyItemInfo.IsEnhancedStep) && tmp.MyDisplayTabControl.MyCopyStep.IsEnhancedStep)
//{
// btnPasteBefore.Enabled = btnCMPasteBefore.Enabled = false;
// btnPasteAfter.Enabled = btnCMPasteAfter.Enabled = false;
// btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false;
// return;
//}
//copy item is high level step
// Allow a High Level step to be pasted to a sub-step, but not to a table, figure, section or procedure type
if (tmp.MyDisplayTabControl.MyCopyStep.IsHigh && (MyItemInfo.IsTable || MyItemInfo.IsFigure || MyItemInfo.IsSection || MyItemInfo.IsProcedure))
@ -1322,7 +1283,7 @@ namespace Volian.Controls.Library
// disable buttons. Info panels for ROs and Transitions are made invisible in frmVEPROMS.cs
btnInsTrans.Enabled = btnCMTransition.Enabled = btnInsRO.Enabled = btnCMRO.Enabled = false;
btnInsAftH.Enabled = btnInsBefH.Enabled = false;
btnInsHLS.Enabled = (!MyItemInfo.IsStepSection) ? false : true; // allow hls from step section
btnInsHLS.Enabled = (!MyItemInfo.IsStepSection || (MyItemInfo.IsStepSection && MyItemInfo.IsEnhancedSection)) ? false : true; // allow hls from step section
// if active item is a section and format has metasections, check that a hls can be added.
if (MyItemInfo.IsStepSection)
{
@ -1350,9 +1311,10 @@ namespace Volian.Controls.Library
StepData sd = MyItemInfo.FormatStepData;
actable = sd.StepEditData.AcTable;
if (actable == null) actable = 0;
btnInsHLS.Enabled = true;
btnInsCaut.Enabled = (actable & E_AccStep.AddingCaution) > 0;
btnInsNote.Enabled = (actable & E_AccStep.AddingNote) > 0;
btnInsHLS.Enabled = !MyItemInfo.IsEnhancedStep; // (actable & E_AccStep.EnhancedLinkedStep) == 0;
btnInsCaut.Enabled = ((actable & E_AccStep.AddingCaution) > 0) && !MyItemInfo.IsEnhancedStep; // ((actable & E_AccStep.AddingCaution) > 0) && ((actable & E_AccStep.EnhancedLinkedStep) == 0);
btnInsNote.Enabled = ((actable & E_AccStep.AddingNote) > 0) && !MyItemInfo.IsEnhancedStep;
btnInsRNO.Enabled = (actable & E_AccStep.AddingRNO) > 0;
btnInsFig.Enabled = (actable & E_AccStep.AddingTable) > 0;
btnInsTable.Enabled = (actable & E_AccStep.AddingTable) > 0;
@ -1733,13 +1695,7 @@ namespace Volian.Controls.Library
myRtb.SelectedText = _MyStepRTB.GetPasteText(PasteNoReturnsSetting, myDO);
else
{
tmpForLink = Regex.Replace(tmpForLink, @"#Link:ReferencedObject:[0-9]+ ", @"#Link:ReferencedObject:<NewID> ");
tmpForLink = Regex.Replace(tmpForLink, @"#Link:Transition:([0-9]+) [0-9]+ ", @"#Link:Transition:$1 <NewID> ");
tmpForLink = Regex.Replace(tmpForLink, @"#Link:TransitionRange:([0-9]+) [0-9]+ ", @"#Link:TransitionRange:$1 <NewID> ");
tmpForLink = tmpForLink.Replace(@"\u8212 \'96", @"-"); // Replace EM Dash with hyphen
tmpForLink = tmpForLink.Replace(@"\u8211 \'96", @"-"); // Replace EN Dash with hyphen
tmpForLink = tmpForLink.Replace(@"\u8212 ", @"-"); // Replace EM Dash with hyphen
tmpForLink = tmpForLink.Replace(@"\u8211 ", @"-"); // Replace EN Dash with hyphen
tmpForLink = ItemInfo.ReplaceLinkWithNewID(tmpForLink);
myRtb.SelectedRtf = tmpForLink;
// Fix for B2014-071: if link, save after paste so that goto's don't crash (grid & step run through this code)
if (tmpForLink.Contains("<NewID>")) _MyStepRTB.OnDoSaveContents(this, new EventArgs());
@ -2337,7 +2293,7 @@ namespace Volian.Controls.Library
bool surpressMessageBox = (e == null);
SectionInfo si = MyEditItem.MyItemInfo as SectionInfo;
if (si != null)
if (si != null) // KBR What if linked to an enhanced section?
{
string msg = si.HasChildren ? "Are you sure you want to delete this section and its steps?" : "Are you sure you want to delete this section?";
DialogResult result = MessageBox.Show(msg, "Verify Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
@ -3274,7 +3230,6 @@ namespace Volian.Controls.Library
(this.Parent as StepTabPanel).MyDisplayTabControl.ItemsChangeIds.Add(_MyEditItem.MyStepRTB.MyItemInfo.MyProcedure.ItemID, txtBxChgId.Text);
}
}
public enum E_FieldToEdit { StepText, Text, Number, PSI };
public class StepTabRibbonEventArgs : EventArgs
{
public StepTabRibbonEventArgs() { ; }

View File

@ -810,6 +810,7 @@ namespace Volian.Controls.Library
// A word doc section can contain another subsection (either step section or word doc section),
// but cannot contain steps.
SectionInfo si = tn.VEObject as SectionInfo;
// if this is an enhanced section, don't do 'New Step'
if (ui.IsAdministrator() || ui.IsSetAdministrator(si.MyProcedure.MyDocVersion) || ui.IsWriter(si.MyProcedure.MyDocVersion))
{
if (si.HasWordContent)
@ -832,7 +833,7 @@ namespace Volian.Controls.Library
if (si.IsStepSection)
{
SectionConfig sc = si.MyConfig as SectionConfig;
if (si.Sections == null || si.Sections.Count == 0 || (meta && sc != null && si.Sections != null && si.Sections.Count > 0 && sc.SubSection_Edit == "Y"))
if (!si.IsEnhancedSection && (si.Sections == null || si.Sections.Count == 0 || (meta && sc != null && si.Sections != null && si.Sections.Count > 0 && sc.SubSection_Edit == "Y")))
cm.MenuItems.Add("New Step", new EventHandler(mi_Click));
}
}
@ -897,7 +898,15 @@ namespace Volian.Controls.Library
{
DocVersionInfo di = tn.VEObject as DocVersionInfo;
if (di == null || tn.Nodes.Count == 0) // it's not a docversion or it has no children
cm.MenuItems.Add("Delete", new EventHandler(mi_Click));
{
// if it's an enhanced step that was linked from a source, don't allow delete
bool canDoDel = true;
ItemInfo iienh = tn.VEObject as ItemInfo;
if (iienh != null && iienh.IsProcedure && iienh.IsEnhancedProcedure) canDoDel = false;
if (iienh != null && iienh.IsSection && iienh.IsEnhancedSection && !iienh.IsEnhancedSectionTitleOnly) canDoDel = false;
if (iienh != null && iienh.IsEnhancedStep) canDoDel = false;
if (canDoDel) cm.MenuItems.Add("Delete", new EventHandler(mi_Click));
}
}
}
}
@ -1750,6 +1759,12 @@ namespace Volian.Controls.Library
string chgId = OnGetChangeId(this, new vlnTreeItemInfoEventArgs(ii));
ItemInfo newItemInfo = null;
newItemInfo = ii.PasteChild(copyStartID, chgId);
if (newItemInfo != null)
{
// paste enhanced steps if applicable (this code is only run if a step is pasted, not for a section).
ItemInfo.EAddpingPart addpart = ItemInfo.EAddpingPart.Child;
ItemInfo newEnhStep = newItemInfo.PasteEnhancedItems(copyStartID, ii, addpart, chgId);
}
}
if (pasteSectIntoEmptySect)
{
@ -1766,16 +1781,23 @@ namespace Volian.Controls.Library
ItemInfo.EAddpingPart pasteOpt = newtype == MenuSelections.StepBefore ? ItemInfo.EAddpingPart.Before : ItemInfo.EAddpingPart.After;
// If parent step is open in step editor, the 'OnPasteItemInfo' event will cause
// the item to be pasted in the step editor and the tree.
ItemInfo newItemInfo = null;
if (ii.IsProcedure || !OnPasteItemInfo(this, new vlnTreeItemInfoPasteEventArgs(ii, copyStartID, pasteOpt, ii.MyContent.Type)))
{
// The parent step was not open in the step editor, just paste step (in data) and add treenode.
// first, check if a changeid is required.
string chgId = OnGetChangeId(this, new vlnTreeItemInfoEventArgs(ii));
ItemInfo newItemInfo = null;
if (newtype == MenuSelections.StepBefore)
newItemInfo = ii.PasteSiblingBefore(copyStartID, chgId);
else
newItemInfo = ii.PasteSiblingAfter(copyStartID, chgId);
if (newItemInfo != null)
{
// paste enhanced steps if applicable (this code is only run if a step is pasted, not for a section).
ItemInfo.EAddpingPart addpart = ItemInfo.EAddpingPart.After;
if (newtype == MenuSelections.StepBefore) addpart = ItemInfo.EAddpingPart.Before;
ItemInfo newEnhStep = newItemInfo.PasteEnhancedItems(copyStartID, ii, addpart, chgId);
}
}
SelectedNode = (VETreeNode)((newtype == MenuSelections.StepAfter) ? tn.NextNode : tn.PrevNode);
}
@ -1789,7 +1811,12 @@ namespace Volian.Controls.Library
// first, check if a changeid is required.
string chgId = OnGetChangeId(this, new vlnTreeItemInfoEventArgs(ii));
ItemInfo replItemInfo = Item.PasteReplace(ii, copyStartID, chgId);
if(replItemInfo != null) OnOpenItem(this,new vlnTreeItemInfoEventArgs(replItemInfo));
StepConfig replItemConfig = ii.MyConfig as StepConfig;
if (replItemInfo != null)
{
OnOpenItem(this, new vlnTreeItemInfoEventArgs(replItemInfo));
ItemInfo newEnhStep = replItemInfo.EnhancedPasteItem(copyStartID, ii, ItemInfo.EAddpingPart.Replace, chgId);
}
}
SelectedNode = (VETreeNode)((prevtn != null) ? prevtn.NextNode : partn.FirstNode);
}
@ -1978,6 +2005,11 @@ namespace Volian.Controls.Library
procedure.Save();
tn = new VETreeNode(_LastProcedureInfo);
SelectedNode.Nodes.Add(tn); // add tree node to end of list.
if (procedure.MyProcedureInfo.CreateEnhanced)
{
procedure.MyProcedureInfo.CreateEnhanced = false;
CreateEnhancedForProcedure(newtype, procedure, null);
}
}
else
p1 = procedure.ItemID;
@ -1990,6 +2022,7 @@ namespace Volian.Controls.Library
int p2 = -1;
int tvindex = SelectedNode.Index;
// if inserting before, the parent is set in case previous is null, i.e. beginning of the list.
ProcedureInfo savLastProcedureInfo = _LastProcedureInfo;
using (Procedure procedure = Procedure.MakeProcedure((newtype == MenuSelections.ProcedureAfter) ? null : _LastProcedureInfo.ActiveParent, (newtype == MenuSelections.ProcedureAfter) ? _LastProcedureInfo : _LastProcedureInfo.MyPrevious, null, "New Procedure", 0))
{
ShowBrokenRules(procedure.BrokenRulesCollection);
@ -2000,6 +2033,11 @@ namespace Volian.Controls.Library
tn = new VETreeNode(_LastProcedureInfo);
TreeNode par = SelectedNode.Parent;
par.Nodes.Insert(tvindex + ((newtype == MenuSelections.ProcedureBefore) ? 0 : 1), tn);
if (procedure.MyProcedureInfo.CreateEnhanced)
{
procedure.MyProcedureInfo.CreateEnhanced = false;
CreateEnhancedForProcedure(newtype, procedure, savLastProcedureInfo);
}
}
else
p2 = procedure.ItemID;
@ -2044,6 +2082,7 @@ namespace Volian.Controls.Library
using(Section section = CreateNewSection())
{
ShowBrokenRules(section.BrokenRulesCollection);
SectionInfo savLastSectionInfo = _LastSectionInfo;
SetLastValues(SectionInfo.Get(section.ItemID));
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs("New Section", section.SectionConfig)) == DialogResult.OK)
{
@ -2051,6 +2090,12 @@ namespace Volian.Controls.Library
{
tn = new VETreeNode(_LastSectionInfo);
SelectedNode.Nodes.Add(tn); // add tree node to end of list.
// if the new section was flagged as either having an enhanced link for Title or Contents, create the
// Enhanced section:
Section sectiontmp = Section.Get(section.ItemID); // need to do this because of 'caching' problem.
if (sectiontmp.SectionConfig.LinkEnhanced == "T" || sectiontmp.SectionConfig.LinkEnhanced == "Y")
CreateEnhancedForSection(newtype, sectiontmp, savLastSectionInfo);
sectiontmp.Dispose();
OnNodeSelect(this, new vlnTreeEventArgs(tn));
}
else
@ -2094,6 +2139,12 @@ namespace Volian.Controls.Library
SelectedNode.Nodes.Add(tnPart);
tn = new VETreeNode(_LastSectionInfo);
tnPart.Nodes.Add(tn); // add tree node to end of list.
// if the new section was flagged as either having an enhanced link for Title or Contents, create the
// Enhanced section:
Section sectiontmp = Section.Get(section.ItemID); // need to do this because of 'caching' problem.
if (sectiontmp.SectionConfig.LinkEnhanced == "T" || sectiontmp.SectionConfig.LinkEnhanced == "Y")
CreateEnhancedForSection(newtype, sectiontmp, savLastSectionInfo);
sectiontmp.Dispose();
}
}
else
@ -2117,15 +2168,23 @@ namespace Volian.Controls.Library
using (Section section = Section.MakeSection((newtype == MenuSelections.SectionAfter) ? null : _LastSectionInfo.MyParent, (newtype == MenuSelections.SectionAfter) ? _LastSectionInfo : _LastSectionInfo.MyPrevious, null, "New Section", 10000))
{
ShowBrokenRules(section.BrokenRulesCollection);
SectionInfo savLastSectionInfo = _LastSectionInfo;
SetLastValues(SectionInfo.Get(section.ItemID));
TreeNode par = SelectedNode.Parent;
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs("New Section", section.SectionConfig)) == DialogResult.OK)
{
int indx = tvindex + ((newtype == MenuSelections.SectionBefore) ? 0 : 1);
if (indx >= par.Nodes.Count || (par.Nodes[indx] as VETreeNode).VEObject.ToString() != _LastSectionInfo.ToString())
int itemido = (indx >= par.Nodes.Count)?-1:(((par.Nodes[indx] as VETreeNode).VEObject) as ItemInfo).ItemID;
if (indx >= par.Nodes.Count || (par.Nodes[indx] as VETreeNode).VEObject.ToString() != _LastSectionInfo.ToString() || itemido !=section.ItemID)
{
tn = new VETreeNode(_LastSectionInfo);
par.Nodes.Insert(indx, tn);
// if the new section was flagged as either having an enhanced link for Title or Contents, create the
// Enhanced section:
Section sectiontmp = Section.Get(section.ItemID); // need to do this because of 'caching' problem.
if (sectiontmp.SectionConfig.LinkEnhanced == "T" || sectiontmp.SectionConfig.LinkEnhanced == "Y")
CreateEnhancedForSection(newtype, sectiontmp, savLastSectionInfo);
sectiontmp.Dispose();
}
}
else
@ -2166,6 +2225,151 @@ namespace Volian.Controls.Library
OnNodeInsert(this, new vlnTreeEventArgs(SelectedNode));
}
}
private void CreateEnhancedForProcedure(MenuSelections typ, Procedure sourceProc, ProcedureInfo lastProcedureInfo)
{
if (typ == MenuSelections.ProcedureAfter || typ == MenuSelections.ProcedureBefore) // new from procedure (before or after)
{
// The procedure that this is inserted from may not have associated enhanced procedures. Going up list, look for a procedure
// that has enhanced.
ItemInfo tmpPI = lastProcedureInfo;
EnhancedDocuments eds = null;
while (eds == null && tmpPI != null)
{
ProcedureConfig pc = tmpPI.MyConfig as ProcedureConfig;
if (pc.MyEnhancedDocuments != null && pc.MyEnhancedDocuments.Count > 0)
{
eds = pc.MyEnhancedDocuments;
break;
}
tmpPI = tmpPI.MyPrevious;
}
if (eds != null)
{
foreach (EnhancedDocument ped in eds)
{
ProcedureInfo epi = ProcedureInfo.Get(ped.ItemID);
using (Procedure newenhProcedure = Procedure.MakeProcedure((typ == MenuSelections.ProcedureAfter) ? null : epi.ActiveParent, (typ == MenuSelections.ProcedureAfter) ? epi : epi.MyPrevious, null, "New Procedure", 0))
{
SaveEnhancedForProcedure(sourceProc, newenhProcedure, ped.Type);
RefreshRelatedNode(ProcedureInfo.Get(newenhProcedure.ItemID));
}
}
return;
}
}
// do the following code if insert the procedure from docverion, or if no linked procedure was found above while doing an insert section from before/after
DocVersionConfig dvc = sourceProc.MyProcedureInfo.MyDocVersion.MyConfig as DocVersionConfig;
ProcedureConfig sourcecfg = sourceProc.ProcedureConfig;
if (dvc != null)
{
foreach (DVEnhancedDocument ded in dvc.MyEnhancedDocuments)
{
// get the enhaced docversioninfo:
DocVersionInfo enhDVInfo = DocVersionInfo.Get(ded.VersionID);
using (Procedure newenhProcedure = Procedure.MakeProcedure(enhDVInfo, enhDVInfo.Procedures.Count != 0 ? enhDVInfo.Procedures[enhDVInfo.Procedures.Count - 1] : null, null, "New Procedure", 0))
{
SaveEnhancedForProcedure(sourceProc, newenhProcedure, ded.Type);
RefreshRelatedNode(ProcedureInfo.Get(newenhProcedure.ItemID)); // this updates the treeview to include the new enhanced procedure
}
}
}
}
private void SaveEnhancedForProcedure(Procedure sourceProc, Procedure newenhProcedure, int enhtype)
{
ProcedureConfig newenhcfg = new ProcedureConfig(newenhProcedure);
newenhcfg.AddEnhancedDocument(0, sourceProc.ItemID);
newenhcfg.SaveEnhancedDocuments();
using (Content c1 = Content.Get(newenhProcedure.ContentID))
{
c1.Config = newenhcfg.ToString();
c1.Save();
}
sourceProc.ProcedureConfig.AddEnhancedDocument(enhtype, newenhProcedure.ItemID);
sourceProc.ProcedureConfig.SaveEnhancedDocuments();
using (Content cs = Content.Get(sourceProc.ContentID))
{
cs.Config = sourceProc.ProcedureConfig.ToString();
cs.Save();
}
}
private void CreateEnhancedForSection(MenuSelections typ, Section sourceSect, SectionInfo lastSectionInfo)
{
if (typ == MenuSelections.SectionAfter || typ == MenuSelections.SectionBefore)
{
ItemInfo tmpSI = lastSectionInfo;
EnhancedDocuments eds = null; // need to find a good list, i.e. there may be non-linked sections before/after:
while (eds == null && tmpSI != null)
{
SectionConfig sc = tmpSI.MyConfig as SectionConfig;
if (sc.MyEnhancedDocuments != null && sc.MyEnhancedDocuments.Count > 0)
{
eds = sc.MyEnhancedDocuments;
break;
}
tmpSI = tmpSI.MyPrevious;
}
if (eds != null) // found valid enhanced ids to insert from:
{
foreach (EnhancedDocument sed in eds)
{
SectionInfo esi = SectionInfo.Get(sed.ItemID);
using (Section newenhSection = Section.MakeSection((typ == MenuSelections.SectionAfter) ? null : esi.ActiveParent, (typ == MenuSelections.SectionAfter) ? esi : esi.MyPrevious, null, "New Section", 10000))
{
SaveEnhancedForSection(sourceSect, newenhSection, sed.Type);
RefreshRelatedNode(SectionInfo.Get(newenhSection.ItemID));
}
}
return;
}
}
// do the following code if insert the section from the procedure, or if no linked section was found above while doing an insert section from before/after
ProcedureConfig pc = sourceSect.MyItemInfo.MyProcedure.MyConfig as ProcedureConfig;
SectionConfig sourcecfg = sourceSect.SectionConfig;
if (pc != null)
{
foreach (EnhancedDocument ed in pc.MyEnhancedDocuments)
{
// get the enhanced procedureinfo:
ProcedureInfo enhInfo = ProcedureInfo.Get(ed.ItemID);
if (enhInfo.LastChild(E_FromType.Section) != null)
{
using (Section newenhSection = Section.MakeSection(enhInfo, (enhInfo.Sections != null && enhInfo.Sections.Count != 0) ? enhInfo.Sections[enhInfo.Sections.Count - 1] : null, null, "New Section", 10000))
{
SaveEnhancedForSection(sourceSect, newenhSection, ed.Type);
RefreshRelatedNode(SectionInfo.Get(newenhSection.ItemID));
}
}
else
{
ItemInfo newenhSectionII = enhInfo.InsertChild(E_FromType.Section, 10000, "New Section", null);
using (Section newenhSect = Section.Get(newenhSectionII.ItemID))
{
SaveEnhancedForSection(sourceSect, newenhSect, ed.Type);
RefreshRelatedNode(SectionInfo.Get(newenhSect.ItemID));
}
}
}
}
}
private void SaveEnhancedForSection(Section sourceSect, Section newenhSection, int enhtype)
{
SectionConfig newenhcfg = new SectionConfig(newenhSection);
newenhcfg.AddEnhancedDocument(0, sourceSect.ItemID);
newenhcfg.SaveEnhancedDocuments(); // does this save data?
using (Content c1 = Content.Get(newenhSection.ContentID))
{
c1.Config = newenhcfg.ToString();
c1.Save();
}
sourceSect.SectionConfig.AddEnhancedDocument(enhtype, newenhSection.ItemID);
sourceSect.SectionConfig.SaveEnhancedDocuments();
using (Content cs = Content.Get(sourceSect.ContentID))
{
cs.Config = sourceSect.SectionConfig.ToString();
cs.Save();
}
}
private Section CreateNewSection()
{
if(_LastItemInfo.LastChild(E_FromType.Section) != null)
@ -2175,12 +2379,21 @@ namespace Volian.Controls.Library
}
private VETreeNode InsertChildStep(VETreeNode tn)
{
// 11/17/15: if inserted with step editor open, step gets inserted as child first child. If step editor is not
// open, step gets inserted at end (as last item in list)
// If parent step is open in editor, use the OnInsertItemInfo to insert step & add RTBItems to step editor panel
ItemInfo ii = tn.VEObject as ItemInfo;
if (OnInsertItemInfo(this, new vlnTreeItemInfoInsertEventArgs(ii, E_InsertType.Child, "New Step", 20002, E_FromType.Step)))
{
return null; // should we try to get to the child?
if (ii.IsStep) return null;
// if this was a section, it may have enhanced, so the enhanced steps will need to be created also.
SectionConfig scfg = ii.MyConfig as SectionConfig;
if (scfg.Section_LnkEnh != "Y") return null;
SetLastValues(StepInfo.Get(ii.Steps[0].ItemID));
}
else
{
// The parent step was not open in the step editor, just create new step and add treenode.
using (Step step = Step.MakeStep(_LastItemInfo, _LastItemInfo.LastChild(E_FromType.Step), null, "New Step", 20002, E_FromType.Step))
{
@ -2189,6 +2402,35 @@ namespace Volian.Controls.Library
tn = new VETreeNode(_LastStepInfo);
SelectedNode.Nodes.Add(tn); // add tree node to end of list.
}
}
// see if enhanced related steps need created:
SectionConfig scfgE = _LastItemInfo.MyActiveSection.MyConfig as SectionConfig;
if (scfgE != null && scfgE.Section_LnkEnh=="Y")
{
// set up which item to insert from based on whether editor was open (see comment from 11/17 above).
EnhancedDocuments enhdocs = null;
ItemInfo.EAddpingPart addpart = ItemInfo.EAddpingPart.Child;
if (_LastItemInfo.MyPrevious != null) // the code above will do the MakeStep regardless of whether editor is up if this is the only step.
{
addpart = ItemInfo.EAddpingPart.After;
ItemInfo lstSrc = _LastItemInfo.MyPrevious;
StepConfig stcfg = lstSrc.MyConfig as StepConfig;
if (stcfg == null) enhdocs = scfgE.MyEnhancedDocuments;
else enhdocs = stcfg.MyEnhancedDocuments;
}
else
{
enhdocs = scfgE.MyEnhancedDocuments;
}
foreach (EnhancedDocument ed in enhdocs)
{
// the new source step's item is passed in to know what type & what to link to.
// The ed.Type & itemid show what type of enhanced document (used to create new
// config Type)
_LastItemInfo.DoAddEnhancedSteps(ed.Type, ed.ItemID, addpart);
}
}
return tn;
}
@ -2198,8 +2440,10 @@ namespace Volian.Controls.Library
ItemInfo ii = tn.VEObject as ItemInfo;
if (OnInsertItemInfo(this, new vlnTreeItemInfoInsertEventArgs(ii, (newtype == MenuSelections.StepAfter) ? E_InsertType.After : E_InsertType.Before, "New Step")))
{
return (VETreeNode)((newtype == MenuSelections.StepAfter) ? tn.NextNode : tn.PrevNode);
tn = (VETreeNode)((newtype == MenuSelections.StepAfter) ? tn.NextNode : tn.PrevNode);
}
else
{
// The parent step was not open in the step editor, just create new step and add treenode.
int tvindex = SelectedNode.Index;
// if inserting before, the parent is set in case previous is null, i.e. beginning of the list.
@ -2214,6 +2458,25 @@ namespace Volian.Controls.Library
TreeNode par = SelectedNode.Parent;
par.Nodes.Insert(tvindex + ((newtype == MenuSelections.StepBefore) ? 0 : 1), tn);
}
}
if (tn != null)
{
// add enhanced steps if applicable (this code is only run if a step is inserted, not for a section).
// Also, NOTE that this is not needed for InsertChildStep from tree because there is no menu item
// to support inserting a type that would have enhanced from tree.
StepConfig sib = ii.MyConfig as StepConfig;
foreach (EnhancedDocument ed in sib.MyEnhancedDocuments)
{
// create a new enhanced step and link it to this new source step.
// the new source step's item is passed in to know what type & what to link to.
// The ed.Type & itemid show what type of enhanced document (use to create new
// config Type) and itemid is the one to insert after.
ItemInfo.EAddpingPart addpart = ItemInfo.EAddpingPart.After;
if (newtype == MenuSelections.StepBefore) addpart = ItemInfo.EAddpingPart.Before;
ItemInfo newSourceStep = tn.VEObject as ItemInfo;
newSourceStep.DoAddEnhancedSteps(ed.Type, ed.ItemID, addpart);
}
}
return tn;
}
private void ShowBrokenRules(BrokenRulesCollection brs)
@ -2299,19 +2562,71 @@ namespace Volian.Controls.Library
}
else if (_LastDocVersionInfo != null)
{
// if this has enhanced linked DocVersions, delete them first.
DocVersionConfig dvc = _LastDocVersionInfo.MyConfig as DocVersionConfig;
if (dvc != null && dvc.MyEnhancedDocuments != null && dvc.MyEnhancedDocuments.Count > 0)
{
foreach (DVEnhancedDocument dve in dvc.MyEnhancedDocuments)
{
if (dve.Type != 0) DocVersion.Delete(dve.VersionID);
}
}
DocVersion.Delete(_LastDocVersionInfo.VersionID);
_LastDocVersionInfo = null;
return true;
}
else if (_LastProcedureInfo != null)
{
//If there are enhanced, they will also need deleted, save the ids so that they
// can be deleted after this item gets deleted.
List<int> enhIds = new List<int>();
ProcedureConfig prc = _LastProcedureInfo.MyConfig as ProcedureConfig;
foreach (EnhancedDocument ed in prc.MyEnhancedDocuments)
if (ed.Type != 0) enhIds.Add(ed.ItemID);
// always return false because an event gets fired to delete tree nodes.
if (!DeleteItemInfoAndChildren(_LastProcedureInfo)) return false;
_LastProcedureInfo = null;
foreach (int enhId in enhIds)
{
ProcedureInfo pi = ProcedureInfo.Get(enhId);
// if the item was displayed in the editor, the 'DeleteItemInfoAndChildren' call
// above will go through user interface code that deletes the enhanced, so 'Get'
// will return a null (i.e. the data no longer exists).
if (pi != null)
{
if (!DeleteItemInfoAndChildren(pi)) Console.WriteLine("do an error log item");
}
}
return false;
}
else if (_LastSectionInfo != null)
{
// For sections, there are a number of things to check for if enhanced is active:
// 1) in a source and the enhanced link can be none, title or contents.
// 2) if none, just delete
// 3) If just title and in source, clear links in enhanced back to this source
// before delete.
// 4) If in enhanced, by source has link type set to title, can delete this
// section, but first clear source's links
//If there are enhanced, they will also need deleted, save the ids so that they
// can be deleted after this item gets deleted.
List<int> enhIds = new List<int>();
SectionConfig sec = _LastSectionInfo.MyConfig as SectionConfig;
if (_LastSectionInfo.IsEnhancedSectionTitleOnly)
{
_LastSectionInfo.ClearEnhancedSectionFromSource(sec.MyEnhancedDocuments[0].ItemID);
}
else if (sec.Section_LnkEnh == "Y")
{
foreach (EnhancedDocument ed in sec.MyEnhancedDocuments)
if (ed.Type != 0) enhIds.Add(ed.ItemID);
}
else if (sec.Section_LnkEnh == "T")
{
// just clear enhanced links back
_LastSectionInfo.ClearEnhancedSectionLink();
}
OnSectionShouldClose(this, new vlnTreeSectionInfoEventArgs(_LastSectionInfo,true));
// always return false because an event gets fired to delete tree nodes.
if (!DeleteItemInfoAndChildren(_LastSectionInfo))
@ -2321,13 +2636,43 @@ namespace Volian.Controls.Library
WordSectionEventArgs args = new WordSectionEventArgs(_LastSectionInfo);
OnWordSectionDeleted(this, args);
_LastSectionInfo = null;
foreach (int enhId in enhIds)
{
SectionInfo si = SectionInfo.Get(enhId);
// if the item was displayed in the editor, the 'DeleteItemInfoAndChildren' call
// above will go through user interface code that deletes the enhanced, so 'Get'
// will return a null (i.e. the data no longer exists).
if (si != null)
{
if (!DeleteItemInfoAndChildren(si)) Console.WriteLine("do an error log item");
}
}
return false;
}
else if (_LastStepInfo != null)
{
//If there are enhanced, they will also need deleted, save the ids so that they
// can be deleted after this item gets deleted. Note that if the step(s) were
// displayed in step editor, that code deletes the enhanced steps.
List<int> enhIds = new List<int>();
StepConfig sc = _LastStepInfo.MyConfig as StepConfig;
foreach (EnhancedDocument ed in sc.MyEnhancedDocuments)
if (ed.Type != 0) enhIds.Add(ed.ItemID);
// always return false because an event gets fired to delete tree nodes.
if (!DeleteItemInfoAndChildren(_LastStepInfo)) return false;
_LastStepInfo = null;
foreach (int enhId in enhIds)
{
StepInfo si = StepInfo.Get(enhId);
// if the item was displayed in the editor, the 'DeleteItemInfoAndChildren' call
// above will go through user interface code that deletes the enhanced, so 'Get'
// will return a null (i.e. the data no longer exists).
if (si != null)
{
if (!DeleteItemInfoAndChildren(si)) Console.WriteLine("do an error log item");
}
}
return false;
}
}
@ -3022,6 +3367,7 @@ namespace Volian.Controls.Library
}
public bool CompareVEObject(IVEDrillDownReadOnly obj1, IVEDrillDownReadOnly obj2)
{
if (obj1.GetType().Name != obj2.GetType().Name) return false;
ItemInfo myItem = obj1 as ItemInfo;
if (myItem != null)
if (myItem.ItemID == ((ItemInfo)obj2).ItemID) return true;

View File

@ -1076,11 +1076,11 @@ namespace Volian.Print.Library
private string GetRtfToC(string txt, TableOfContentsData tOfCData, VE_Font overrideFont)
{
StringBuilder _RtfSB = new StringBuilder();
Volian.Controls.Library.DisplayText toctxt = new Volian.Controls.Library.DisplayText(txt, tOfCData.Font, false);
VEPROMS.CSLA.Library.DisplayText toctxt = new VEPROMS.CSLA.Library.DisplayText(txt, tOfCData.Font, false);
System.Drawing.Font myFont = toctxt.TextFont.WindowsFont;
if (overrideFont != null)
{
toctxt = new Volian.Controls.Library.DisplayText(txt, overrideFont, false);
toctxt = new VEPROMS.CSLA.Library.DisplayText(txt, overrideFont, false);
myFont = overrideFont.WindowsFont;//toctxt.TextFont.WindowsFont;
}
_RtfSB.Append(vlnPrintObject.AddFontTable(myFont));

View File

@ -993,7 +993,7 @@ namespace Volian.Print.Library
DVEnhancedDocuments dveds = MyItemInfo.MyDocVersion.DocVersionConfig.MyEnhancedDocuments;
foreach (EnhancedDocument ed in sc.MyEnhancedDocuments)
{
DVEnhancedDocument dved = dveds[ed.Type];
DVEnhancedDocument dved = dveds.GetByType(ed.Type);
AddLinkToEnhancedDocument(cb, yLocation, ed.ItemID, dved.PdfToken, dved.PdfX);
}
// MyPageHelper.BottomContent = yLocation - Height;