From f763a9a8687cd1731aa868dc85605a62765c446e Mon Sep 17 00:00:00 2001 From: John Date: Thu, 26 May 2016 15:25:47 +0000 Subject: [PATCH] =?UTF-8?q?Fixed=20crash=20when=20you=20selected=20the=20O?= =?UTF-8?q?pen=20button=20on=20the=20Library=20Document=20tab=20in=20the?= =?UTF-8?q?=20Tools=20panel.=20Open=20button=20is=20only=20available=20for?= =?UTF-8?q?=20library=20documents=20with=20zero=20references.=20If=20the?= =?UTF-8?q?=20open=20library=20document=20is=20not=20referenced,=20then=20?= =?UTF-8?q?save=20changes=20but=20don=E2=80=99t=20generate=20a=20PDF.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROMS/Volian.Controls.Library/DSOTabPanel.cs | 11 +++++++---- PROMS/Volian.Controls.Library/DisplayTabControl.cs | 5 +++-- PROMS/Volian.Controls.Library/DisplayTabItem.cs | 5 ++++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/PROMS/Volian.Controls.Library/DSOTabPanel.cs b/PROMS/Volian.Controls.Library/DSOTabPanel.cs index b9665e9a..5abb651e 100644 --- a/PROMS/Volian.Controls.Library/DSOTabPanel.cs +++ b/PROMS/Volian.Controls.Library/DSOTabPanel.cs @@ -413,11 +413,14 @@ namespace Volian.Controls.Library _MyLog.FatalFormat("File does not exist {0}\r\nFile was {1}", tmp, MyDSOFile.FullName); // if this was a library document, ask user if it should be saved for all usages. bool cvtLibDoc = false; - EntryInfo myei = MyDisplayTabItem.MyItemInfo.MyContent.MyEntry; - if (myei != null && myei.MyDocument != null && myei.MyDocument.LibTitle != null && myei.MyDocument.LibTitle != "") + if (MyDisplayTabItem.MyItemInfo != null) // B2016-131 if myiteminfo is null then the lib doc is not referenced, so just save the changes - don't generate a pdf { - DialogResult ans = MessageBox.Show("Save as Library Document for all usages?", "Document Save", MessageBoxButtons.YesNo); - if (ans == DialogResult.No) cvtLibDoc = true; + EntryInfo myei = MyDisplayTabItem.MyItemInfo.MyContent.MyEntry; + if (myei != null && myei.MyDocument != null && myei.MyDocument.LibTitle != null && myei.MyDocument.LibTitle != "") + { + DialogResult ans = MessageBox.Show("Save as Library Document for all usages?", "Document Save", MessageBoxButtons.YesNo); + if (ans == DialogResult.No) cvtLibDoc = true; + } } MyDSOFile.SaveFile(doc.Length, doc.Ascii, MyDisplayTabItem.MyItemInfo, cvtLibDoc, StatusChanged); if (cvtLibDoc) diff --git a/PROMS/Volian.Controls.Library/DisplayTabControl.cs b/PROMS/Volian.Controls.Library/DisplayTabControl.cs index fae9229f..1eee6433 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabControl.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabControl.cs @@ -810,7 +810,7 @@ namespace Volian.Controls.Library foreach (object itm in b.Items) { DisplayTabItem myTabItem = itm as DisplayTabItem; - if (myTabItem != null && myTabItem.MyStepTabPanel != null) + if (myTabItem != null && myTabItem.MyStepTabPanel != null && myItemInfo != null) if (myTabItem.MyStepTabPanel.MyProcedureItemInfo.ItemID == myItemInfo.MyProcedure.ItemID) return b; } @@ -1041,6 +1041,7 @@ namespace Volian.Controls.Library } public DisplayTabItem OpenDSOTabPage(DocumentInfo myDocumentInfo) { + _MyBar = GetParentBar(null); // B2016-131 - allow open of a non-referenced library document CleanUpClosedItems(); DisplayTabItem pg = null; string key = "Doc - " + myDocumentInfo.DocID; @@ -1048,7 +1049,7 @@ namespace Volian.Controls.Library pg = _MyDisplayTabItems[key]; else { - if (DSOTabPanel.Count > 18) // Limit the number of open document pages to 18 + if (DSOTabPanel.Count > DSOTabPanel.MSWordLimit) //18) // Limit the number of open document pages to 18 { MessageBox.Show("Too many Word Documents Open. Please close one of the Documents before attempting to open another"); return null; diff --git a/PROMS/Volian.Controls.Library/DisplayTabItem.cs b/PROMS/Volian.Controls.Library/DisplayTabItem.cs index 34d72dfa..257a6c73 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabItem.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabItem.cs @@ -326,7 +326,10 @@ namespace Volian.Controls.Library private void SetupLibraryDocumentDSOTabPanel() { UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID); - _MyDSOTabPanel = new DSOTabPanel(_MyDocumentInfo, _MyDisplayTabControl, _MyItemInfo, UserInfo.CanEdit(ui, MyItemInfo.MyDocVersion)); + // B2016-131 if myiteminfo is null, then the lib doc is not referenced. + // - Allow editting only if you are an Administrator + // - Cannot check if you are a Writer or Set Aministrator because we don't have a Doc Verion + _MyDSOTabPanel = new DSOTabPanel(_MyDocumentInfo, _MyDisplayTabControl, _MyItemInfo, (MyItemInfo != null) ? UserInfo.CanEdit(ui, MyItemInfo.MyDocVersion):ui.IsAdministrator()); // // tabItem //