Compare commits
51 Commits
B2024-032-
...
C2024-004_
Author | SHA1 | Date | |
---|---|---|---|
![]() |
09d0f73396 | ||
![]() |
96e85e8c5c | ||
![]() |
f6f7d6a8c7 | ||
616acf0e37 | |||
3cff87cf97 | |||
![]() |
9202d903a5 | ||
![]() |
a9a9a56c09 | ||
aee7819a9c | |||
![]() |
d3bc1c4725 | ||
d0474b22f9 | |||
5bd1f94be0 | |||
![]() |
629fe1b615 | ||
![]() |
c92b888ec2 | ||
5df42daa71 | |||
![]() |
9349396d9a | ||
![]() |
38425a05f9 | ||
![]() |
9d1b99b08e | ||
![]() |
4f7a762bf1 | ||
![]() |
11cb2e0efd | ||
78f58bea19 | |||
![]() |
a2e830d0c3 | ||
![]() |
2ffab17caf | ||
![]() |
49aba5c67b | ||
1b24177b68 | |||
bf7a967633 | |||
f5669e50a8 | |||
![]() |
2ae0d0d454 | ||
![]() |
241785846e | ||
![]() |
0d6fd6950c | ||
![]() |
bb99d6444c | ||
![]() |
db4f114caf | ||
80d83da9c9 | |||
54e02e6263 | |||
c4af911f15 | |||
f9690ee772 | |||
623c6a7941 | |||
7a5129208c | |||
e15c56f1e2 | |||
![]() |
5d808e436a | ||
20e40a5c49 | |||
885dae812d | |||
35bd91f7e8 | |||
305f2768bb | |||
5f733161c6 | |||
4fc13acd1a | |||
365f6a23c8 | |||
331d5751c3 | |||
dfb965edbc | |||
![]() |
c7cc69fd73 | ||
d187aa885d | |||
b1b4535d9b |
@@ -241,6 +241,21 @@ namespace JR.Utils.GUI.Forms
|
||||
return FlexibleMessageBoxForm.Show(owner, text, caption, buttons, icon, defaultButton);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shows the specified message box.
|
||||
/// </summary>
|
||||
/// <param name="owner">The owner.</param>
|
||||
/// <param name="text">The text.</param>
|
||||
/// <param name="caption">The caption.</param>
|
||||
/// <param name="buttons">The buttons.</param>
|
||||
/// <param name="icon">The icon.</param>
|
||||
/// <param name="defaultButton">The default button.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
public static DialogResult ShowCustom(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
|
||||
{
|
||||
return FlexibleMessageBoxForm.ShowCustom(null, text, caption, buttons, icon);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Internal form class
|
||||
@@ -420,15 +435,15 @@ namespace JR.Utils.GUI.Forms
|
||||
private static readonly String STANDARD_MESSAGEBOX_SEPARATOR_SPACES = " ";
|
||||
|
||||
//These are the possible buttons (in a standard MessageBox)
|
||||
private enum ButtonID { OK = 0, CANCEL, YES, NO, ABORT, RETRY, IGNORE };
|
||||
|
||||
private enum ButtonID { OK = 0, CANCEL, YES, NO, ABORT, RETRY, IGNORE, OVERWRITE, RENAME };
|
||||
|
||||
//These are the buttons texts for different languages.
|
||||
//If you want to add a new language, add it here and in the GetButtonText-Function
|
||||
private enum TwoLetterISOLanguageID { en, de, es, it };
|
||||
private static readonly String[] BUTTON_TEXTS_ENGLISH_EN = { "OK", "Cancel", "&Yes", "&No", "&Abort", "&Retry", "&Ignore" }; //Note: This is also the fallback language
|
||||
private static readonly String[] BUTTON_TEXTS_GERMAN_DE = { "OK", "Abbrechen", "&Ja", "&Nein", "&Abbrechen", "&Wiederholen", "&Ignorieren" };
|
||||
private static readonly String[] BUTTON_TEXTS_SPANISH_ES = { "Aceptar", "Cancelar", "&Sí", "&No", "&Abortar", "&Reintentar", "&Ignorar" };
|
||||
private static readonly String[] BUTTON_TEXTS_ITALIAN_IT = { "OK", "Annulla", "&Sì", "&No", "&Interrompi", "&Riprova", "&Ignora" };
|
||||
private static readonly String[] BUTTON_TEXTS_ENGLISH_EN = { "OK", "Cancel", "&Yes", "&No", "&Abort", "&Retry", "&Ignore", "&Overwrite", "&Rename" }; //Note: This is also the fallback language
|
||||
private static readonly String[] BUTTON_TEXTS_GERMAN_DE = { "OK", "Abbrechen", "&Ja", "&Nein", "&Abbrechen", "&Wiederholen", "&Ignorieren", "&Overwrite", "&Rename" };
|
||||
private static readonly String[] BUTTON_TEXTS_SPANISH_ES = { "Aceptar", "Cancelar", "&Sí", "&No", "&Abortar", "&Reintentar", "&Ignorar", "&Overwrite", "&Rename" };
|
||||
private static readonly String[] BUTTON_TEXTS_ITALIAN_IT = { "OK", "Annulla", "&Sì", "&No", "&Interrompi", "&Riprova", "&Ignora", "&Overwrite", "&Rename" };
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -693,6 +708,7 @@ namespace JR.Utils.GUI.Forms
|
||||
|
||||
flexibleMessageBoxForm.CancelButton = flexibleMessageBoxForm.button3;
|
||||
break;
|
||||
|
||||
|
||||
case MessageBoxButtons.OK:
|
||||
default:
|
||||
@@ -709,16 +725,38 @@ namespace JR.Utils.GUI.Forms
|
||||
flexibleMessageBoxForm.defaultButton = defaultButton;
|
||||
}
|
||||
|
||||
#endregion
|
||||
private static void SetDialogButtonsCustom(FlexibleMessageBoxForm flexibleMessageBoxForm)
|
||||
{
|
||||
flexibleMessageBoxForm.visibleButtonsCount = 3;
|
||||
|
||||
#region Private event handlers
|
||||
flexibleMessageBoxForm.button1.Visible = true;
|
||||
flexibleMessageBoxForm.button1.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.CANCEL);
|
||||
flexibleMessageBoxForm.button1.DialogResult = DialogResult.Abort;
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Shown event of the FlexibleMessageBoxForm control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void FlexibleMessageBoxForm_Shown(object sender, EventArgs e)
|
||||
flexibleMessageBoxForm.button2.Visible = true;
|
||||
flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.OVERWRITE);
|
||||
flexibleMessageBoxForm.button2.DialogResult = DialogResult.Retry;
|
||||
|
||||
flexibleMessageBoxForm.button3.Visible = true;
|
||||
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.RENAME);
|
||||
flexibleMessageBoxForm.button3.DialogResult = DialogResult.Ignore;
|
||||
|
||||
flexibleMessageBoxForm.ControlBox = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private event handlers
|
||||
|
||||
/// <summary>
|
||||
/// Handles the Shown event of the FlexibleMessageBoxForm control.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the event.</param>
|
||||
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
|
||||
private void FlexibleMessageBoxForm_Shown(object sender, EventArgs e)
|
||||
{
|
||||
int buttonIndexToFocus = 1;
|
||||
Button buttonToFocus;
|
||||
@@ -866,6 +904,46 @@ namespace JR.Utils.GUI.Forms
|
||||
return flexibleMessageBoxForm.ShowDialog(owner);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shows the specified message box.
|
||||
/// </summary>
|
||||
/// <param name="owner">The owner.</param>
|
||||
/// <param name="text">The text.</param>
|
||||
/// <param name="caption">The caption.</param>
|
||||
/// <param name="buttons">The buttons.</param>
|
||||
/// <param name="icon">The icon.</param>
|
||||
/// <param name="defaultButton">The default button.</param>
|
||||
/// <returns>The dialog result.</returns>
|
||||
public static DialogResult ShowCustom(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
|
||||
{
|
||||
//Create a new instance of the FlexibleMessageBox form
|
||||
var flexibleMessageBoxForm = new FlexibleMessageBoxForm();
|
||||
flexibleMessageBoxForm.ShowInTaskbar = false;
|
||||
|
||||
//Bind the caption and the message text
|
||||
flexibleMessageBoxForm.CaptionText = caption;
|
||||
flexibleMessageBoxForm.MessageText = text;
|
||||
flexibleMessageBoxForm.FlexibleMessageBoxFormBindingSource.DataSource = flexibleMessageBoxForm;
|
||||
|
||||
//Set the buttons visibilities and texts. Also set a default button.
|
||||
SetDialogButtonsCustom(flexibleMessageBoxForm);
|
||||
|
||||
//Set the dialogs icon. When no icon is used: Correct placement and width of rich text box.
|
||||
SetDialogIcon(flexibleMessageBoxForm, icon);
|
||||
|
||||
//Set the font for all controls
|
||||
flexibleMessageBoxForm.Font = FONT;
|
||||
flexibleMessageBoxForm.richTextBoxMessage.Font = FONT;
|
||||
|
||||
//Calculate the dialogs start size (Try to auto-size width to show longest text row). Also set the maximum dialog size.
|
||||
SetDialogSizes(flexibleMessageBoxForm, text, caption);
|
||||
|
||||
//Set the dialogs start position when given. Otherwise center the dialog on the current screen.
|
||||
SetDialogStartPosition(flexibleMessageBoxForm, owner);
|
||||
//Show the dialog
|
||||
return flexibleMessageBoxForm.ShowDialog(owner);
|
||||
}
|
||||
|
||||
#endregion
|
||||
} //class FlexibleMessageBoxForm
|
||||
|
||||
|
@@ -126,6 +126,7 @@
|
||||
<Content Include="fmtall\BVPSAOPall.xml" />
|
||||
<Content Include="fmtall\BVPSAtchall.xml" />
|
||||
<Content Include="fmtall\BVPSBCKall.xml" />
|
||||
<Content Include="fmtall\BVPSAOPDEVall.xml" />
|
||||
<Content Include="fmtall\BVPSFlexDEVall.xml" />
|
||||
<Content Include="fmtall\BVPSDEVall.xml" />
|
||||
<Content Include="fmtall\BVPSNIBCKall.xml" />
|
||||
@@ -406,6 +407,7 @@
|
||||
<Content Include="genmacall\BVPSAOP.svg" />
|
||||
<Content Include="genmacall\BVPSAtch.svg" />
|
||||
<Content Include="genmacall\BVPSbck.svg" />
|
||||
<Content Include="genmacall\BVPSAOPdev.svg" />
|
||||
<Content Include="genmacall\BVPSFlexdev.svg" />
|
||||
<Content Include="genmacall\BVPSdev.svg" />
|
||||
<Content Include="genmacall\BVPSNIBCK.svg" />
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
PROMS/Formats/fmtall/BVPSAOPDEVall.xml
Normal file
BIN
PROMS/Formats/fmtall/BVPSAOPDEVall.xml
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
PROMS/Formats/genmacall/BVPSAOPdev.svg
Normal file
BIN
PROMS/Formats/genmacall/BVPSAOPdev.svg
Normal file
Binary file not shown.
@@ -1320,6 +1320,10 @@ namespace VEPROMS
|
||||
if (swtbtnPDFLinks.Value)
|
||||
swtbtnPDFdtPrefixSuffix.Value = false;
|
||||
BuildPDFFileName();
|
||||
// C2024-013: When Create RO & Transition Hyperlinks in pdf is ON, disable the MergePdf
|
||||
// button. The Create RO & Transition Hyperlinks option looks for individual file names
|
||||
// for procedures.
|
||||
btnMergePDFs.Enabled = !swtbtnPDFLinks.Value;
|
||||
}
|
||||
|
||||
// C2019-004: Allow user to define duplex blank page text. The text box for blank page text is always enabled for procedures with
|
||||
|
@@ -22226,6 +22226,419 @@ Go
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_ListUnlinkedItems] Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: [vesp_ListUnlinkedItems] Error on Creation'
|
||||
GO
|
||||
|
||||
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
Begin: C2024-004: KL - Update Copy Replace functionality, (remove ''copy of'')
|
||||
==========================================================================================================
|
||||
*/
|
||||
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[CopyItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
||||
DROP PROCEDURE [CopyItemAndChildren];
|
||||
GO
|
||||
|
||||
/*****************************************************************************
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2024 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
/*
|
||||
==========================================================================================================
|
||||
Author: Kevin Laskey
|
||||
Modified Date: 07/09/2024
|
||||
Description: Copy Item and its Children
|
||||
==========================================================================================================
|
||||
*/
|
||||
CREATE PROCEDURE [dbo].[CopyItemAndChildren]
|
||||
(
|
||||
@StartItemID INT,
|
||||
@DestFormatID INT,
|
||||
@UserID NVARCHAR(100),
|
||||
@NewStartItemID int output
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN TRY -- Try Block
|
||||
|
||||
--+-----------------------------------------------------------------+
|
||||
--& BEGIN TRANSACTION to make these changes temporary &
|
||||
--+-----------------------------------------------------------------+
|
||||
BEGIN TRANSACTION
|
||||
if exists (select * from tblitems where itemid = @StartItemID and DeleteStatus !=0)
|
||||
BEGIN
|
||||
RAISERROR ('###Cannot Paste Step###This step has been deleted',16,1)
|
||||
RETURN
|
||||
END
|
||||
DECLARE @Children AS TABLE
|
||||
(
|
||||
ItemID INT PRIMARY KEY,
|
||||
NewItemID INT,
|
||||
ContentID INT,
|
||||
NewContentID INT,
|
||||
FormatID INT,
|
||||
NewFormatID INT
|
||||
)
|
||||
DECLARE @NewDocuments AS TABLE
|
||||
(
|
||||
DocID INT PRIMARY KEY,
|
||||
NewDocID INT
|
||||
)
|
||||
-- Locals
|
||||
DECLARE @DTS DATETIME -- DTS of all New Items
|
||||
DECLARE @StartContentID INT
|
||||
Select @StartContentID = ContentID from Items where ItemID = @StartItemID
|
||||
SET @DTS = GETDATE() -- Get the current Date and Time
|
||||
-- Get a list of all of the Items to be copied based upon StartItemID and EndItemID
|
||||
-- If the StartItemID = EndItemID then it is a single item and it's children
|
||||
INSERT INTO @Children SELECT ItemID,ItemID,ContentID,ContentID,FormatID,FormatID FROM vefn_ChildItemsRange(@StartItemID,@StartItemID,null)
|
||||
-- <<< Copy Contents >>>
|
||||
-- Create new content rows to match the existing rows. Set the type to the Current ContentID temporarily
|
||||
-- so that the new content rows can be associated with the existing content rows.
|
||||
-- Rem 'Copy Of ' + before first [Number] for C2024-004 (KL)
|
||||
INSERT INTO Contents
|
||||
([Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID])
|
||||
select CASE when [ContentID] = @StartContentID and [Type]<20000 then [Number] else [Number] end,
|
||||
[Text],[ContentID],[FormatID],[Config],@DTS,@UserID
|
||||
from Contents where ContentID in(Select ContentID from @Children)
|
||||
-- Update the @Children with the NewConentIDs
|
||||
--print 'A ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
UPDATE NN set NN.NewContentID = CC.ContentID
|
||||
From Contents CC
|
||||
Join @Children NN on NN.ContentID = CC.Type AND CC.DTS = @DTS and CC.UserID = @UserID
|
||||
-- Reset the Type column in the Contents table with the Type column from the original Records.
|
||||
--print 'B ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
DECLARE @SourceType INT
|
||||
Select @SourceType = Type from Contents where ContentID = @StartContentID
|
||||
if @SourceType = 0
|
||||
BEGIN
|
||||
UPDATE CC set CC.Type = CC2.Type, CC.DTS = CC2.DTS, CC.UserID = CC2.UserID
|
||||
From Contents CC
|
||||
Join @Children NN on NN.NewContentID = CC.ContentID
|
||||
Join Contents CC2 on NN.ContentID = CC2.ContentID
|
||||
END
|
||||
else
|
||||
BEGIN
|
||||
UPDATE CC set CC.Type = CC2.Type
|
||||
From Contents CC
|
||||
Join @Children NN on NN.NewContentID = CC.ContentID
|
||||
Join Contents CC2 on NN.ContentID = CC2.ContentID
|
||||
END
|
||||
--print 'B1 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
-- Contents are done
|
||||
-- SELECT * From Contents where DTS = @DTS and UserID = @UserID
|
||||
-- <<< Copy Grids >>>
|
||||
INSERT INTO [Grids]([ContentID],[Data],[Config],[DTS],[UserID])
|
||||
SELECT NN.[NewContentID],[Data],[Config],@DTS,@UserID
|
||||
FROM [Grids] GG Join @Children NN on GG.ContentID = NN.ContentID
|
||||
-- <<< Copy Images >>>
|
||||
--print 'B2 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
INSERT INTO [Images]([ContentID],[ImageType],[FileName],[Data],[Config],[DTS],[UserID])
|
||||
SELECT NN.[NewContentID],[ImageType],[FileName],[Data],[Config],@DTS,@UserID
|
||||
FROM [Images] II Join @Children NN on II.ContentID = NN.ContentID
|
||||
-- Create new item rows based upon the current item rows and the @Children table, with the NewContentIDs
|
||||
--print 'B3 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
INSERT INTO [Items] ([PreviousID],[ContentID],[DTS],[UserID])
|
||||
SELECT II.[PreviousID], -- Leave the PreviousID as is for now
|
||||
NN.NewContentID, @DTS, @UserID
|
||||
from @Children NN
|
||||
join Items II on II.ContentID = NN.ContentID
|
||||
-- Update the @Children with the NewItemIDs
|
||||
--print 'B4 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
UPDATE NN set NN.NewItemID = II.ItemID
|
||||
From Items II
|
||||
Join @Children NN on NN.NewContentID = II.ContentID AND II.DTS = @DTS and II.UserID = @UserID
|
||||
DECLARE @NewItemID int
|
||||
SELECT @NewItemID = NewItemID
|
||||
FROM @Children
|
||||
WHERE ItemID = @StartItemID
|
||||
--print 'B5 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
UPDATE NN SET NN.[NewFormatID] = CC.[FormatID]
|
||||
FROM @Children NN
|
||||
Join vefn_ChildItemsRange(@NewItemID,@NewItemID,@DestFormatID) CC
|
||||
ON NN.NewItemID = CC.ItemID
|
||||
-- The @Children table is now complete
|
||||
--SELECT * From @Children
|
||||
-- Update the PreviousID in the new Item rows, to the new ItemIDs based upon the old ItemIDs
|
||||
--print 'B6 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
Update II Set II.[PreviousID] = NN.NewItemID
|
||||
from Items II
|
||||
Join @Children NN on NN.ItemID = II.PreviousID AND II.DTS = @DTS and II.UserID = @UserID
|
||||
-- Get the new ItemIDs based upon the old ItemIDs
|
||||
SELECT @NewStartItemID = NewItemID from @Children where ItemID = @StartItemID
|
||||
--SELECT @NewEndItemID = NewItemID from @Children where ItemID = @EndItemID
|
||||
-- Set the PreviousID for the starting Item to null temporarily.
|
||||
-- This will be adjusted based upon where the step is inserted.
|
||||
--print 'B7 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
Update Items Set PreviousID = null where ItemID = @NewStartItemID
|
||||
if @SourceType = 0
|
||||
BEGIN
|
||||
UPDATE II SET II.DTS = II2.DTS, II.UserID = II2.UserID
|
||||
From Items II
|
||||
Join @Children NN on NN.NewItemID = II.ItemID
|
||||
Join Items II2 on NN.ItemID = II2.ItemID
|
||||
WHERE NN.ItemID = @StartItemID
|
||||
END
|
||||
--print 'C ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
-- Items are done
|
||||
--SELECT * From Items where DTS = @DTS and UserID = @UserID
|
||||
-- <<< Copy Parts >>>
|
||||
INSERT INTO [Parts] ([ContentID],[FromType],[ItemID],[DTS],[UserID])
|
||||
Select NNF.NewContentID,[FromType],NNT.NewItemID, @DTS, @UserID from Parts PP
|
||||
JOIN @Children NNF on PP.ContentID = NNF.ContentID
|
||||
JOIN @Children NNT on PP.ItemID = NNT.ItemID
|
||||
--print 'D ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
-- Parts are done
|
||||
-- SELECT * From Parts where DTS = @DTS and UserID = @UserID
|
||||
-- <<< Copy Annotations >>>
|
||||
INSERT INTO [Annotations] ([ItemID],[TypeID],[RtfText],[SearchText],[Config],[DTS],[UserID])
|
||||
Select NewItemID, TypeID, RtfText, SearchText, Config, @DTS, @UserID
|
||||
from Annotations AA Join @Children NN on AA.ItemID = NN.ItemID
|
||||
--print 'E ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
-- Annotations are done
|
||||
-- SELECT * From Annotations where DTS = @DTS and UserID = @UserID
|
||||
-- <<< Copy Documents and Entries>>>
|
||||
-- logic to create Entries for Library Documents
|
||||
INSERT INTO [Entries] ([ContentID],[DocID],[DTS],[UserID])
|
||||
SELECT NN.[NewContentID],EE.[DocID],@DTS,@UserID
|
||||
FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID
|
||||
JOIN [Documents] DD on EE.[DocID] = DD.[DocID] and Isnull(LibTitle,'') <> ''
|
||||
-- Logic to create new documents for any documents used that do not have libtitles
|
||||
INSERT INTO [Documents] ([LibTitle],[DocContent],[DocAscii],[Config],[DTS],[UserID],[FileExtension])
|
||||
OUTPUT CAST(INSERTED.[LibTitle] as INT),INSERTED.[DocID] INTO @NewDocuments
|
||||
SELECT str(DD.[DocID]),[DocContent],[DocAscii],[Config],@DTS,@UserID,[FileExtension]
|
||||
FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID
|
||||
JOIN [Documents] DD on EE.[DocID] = DD.[DocID] and Isnull(LibTitle,'') = ''
|
||||
UPDATE DD SET LibTitle = ''
|
||||
FROM Documents DD JOIN @NewDocuments ND on DD.[DocID] = ND.[NewDocID]
|
||||
where DTS = @DTS and UserID = @UserID
|
||||
--print 'F ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
-- Documents are Done
|
||||
-- SELECT * From Documents where DTS = @DTS and UserID = @UserID
|
||||
-- Logic to create entries for these newly created documents
|
||||
INSERT INTO [Entries] ([ContentID],[DocID],[DTS],[UserID])
|
||||
SELECT NN.[NewContentID],ND.[NewDocID],@DTS,@UserID
|
||||
FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID
|
||||
JOIN @NewDocuments ND on EE.[DocID] = ND.[DocID]
|
||||
-- Logic to Create DROUsages for these newly created documents
|
||||
INSERT INTO [DROUsages] ([DocID],[ROID],[Config],[DTS],[UserID],[RODbID])
|
||||
SELECT ND.[NewDocID],[ROID],[Config],@DTS,@UserID,[RODbID]
|
||||
FROM [DROUsages] RR
|
||||
JOIN @NewDocuments ND on RR.[DocID] = ND.[DocID]
|
||||
|
||||
--print 'G ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
-- Entries are done
|
||||
-- SELECT * From Entries EE JOIN Documents DD on ee.DocID = DD.DocID where EE.DTS = @DTS and EE.UserID = @UserID
|
||||
-- <<< Copy RoUsages >>>
|
||||
INSERT INTO [RoUsages] ([ContentID],[ROID],[Config],[DTS],[UserID],[RODbID])
|
||||
SELECT NN.[NewContentID],CAST([ROUsageID] as nvarchar(16)),[Config],@DTS,@UserID,[RODbID]
|
||||
FROM [RoUsages] RR Join @Children NN on RR.ContentID = NN.ContentID
|
||||
-- Update content records for newly copied records to use correct RO usage ids in the RO tags
|
||||
DECLARE @RowsAffected int
|
||||
SET @RowsAffected=1
|
||||
WHILE @RowsAffected > 0
|
||||
BEGIN
|
||||
UPDATE CC SET [TEXT] = C2.NewText
|
||||
FROM CONTENTS CC
|
||||
JOIN (SELECT C1.ContentID, .dbo.vefn_FixROText(C1.Text, CAST([ROID] as int), [ROUsageID]) NewText
|
||||
FROM CONTENTS C1
|
||||
JOIN @Children NN on C1.ContentID = NN.NewContentID
|
||||
JOIN RoUsages RO on NN.NewContentID = RO.ContentID where Len([ROID]) < 12) C2 ON CC.ContentID = C2.ContentID
|
||||
WHERE [TEXT] <> C2.NewText
|
||||
SET @RowsAffected = @@RowCount
|
||||
END
|
||||
-- Update grid records for newly copied records to use correct RO usage ids in the RO tags
|
||||
SET @RowsAffected=1
|
||||
WHILE @RowsAffected > 0
|
||||
BEGIN
|
||||
UPDATE GG SET [Data] = G2.NewData
|
||||
FROM GRIDS GG
|
||||
JOIN (SELECT G1.ContentID, .dbo.vefn_FixROData(G1.Data, CAST([ROID] as int), [ROUsageID]) NewData
|
||||
FROM GRIDS G1
|
||||
JOIN @Children NN on G1.ContentID = NN.NewContentID
|
||||
JOIN RoUsages RO on NN.NewContentID = RO.ContentID where Len([ROID]) < 12) G2 ON GG.ContentID = G2.ContentID
|
||||
WHERE Cast([Data] as nvarchar(max)) <> cast(G2.NewData as nvarchar(max))
|
||||
SET @RowsAffected = @@RowCount
|
||||
END
|
||||
UPDATE RON SET [ROID] = ROO.[ROID]
|
||||
FROM RoUsages RON
|
||||
JOIN @Children NN on RON.ContentID = NN.NewContentID
|
||||
JOIN RoUsages ROO on CAST(RON.ROID as int) = ROO.RoUsageID
|
||||
where Len(RON.[ROID]) < 12
|
||||
--print 'H ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
-- RoUsages are done
|
||||
-- SELECT * From RoUsages where DTS = @DTS and UserID = @UserID
|
||||
|
||||
-- <<< Copy Transtions >>>
|
||||
-- Note that the inserted record has the 'TranType' field set to old transitionid. This is done
|
||||
-- so that the next step can replace the old transitionid with the new transitionid in the
|
||||
-- content record's transition tokens. The TranType gets reset after the content records are
|
||||
-- updated.
|
||||
-- Also note that the 'toid/rangeid' may need converted to newly copied ids or may not. If it's
|
||||
-- not a range, then it always is converted to new, if there is a new. If it's a range, both
|
||||
-- the toid & the rangeid must be new in order for the conversion to be correct. You cannot
|
||||
-- have part of the range pointing to the new and part of the range pointing to the original
|
||||
-- locations.
|
||||
|
||||
INSERT INTO .[dbo].[Transitions] ([FromID],[ToID],[RangeID],[IsRange],[TranType],[Config],[DTS],[UserID])
|
||||
SELECT NNF.[NewContentID],
|
||||
-- if both toid & range are null, use the original toid & rangeid
|
||||
CASE WHEN NNT.[NewItemID] is null or NNR.[NewItemID] is null THEN [ToID] ELSE NNT.[NewItemID] END,
|
||||
CASE WHEN NNT.[NewItemID] is null or NNR.[NewItemID] is null THEN [RangeID] ELSE NNR.[NewItemID] END,
|
||||
[IsRange],[TransitionID],[Config],@DTS,@UserID
|
||||
FROM .[dbo].[Transitions] TT
|
||||
JOIN @Children NNF on TT.[FromID] = NNF.[ContentID]
|
||||
LEFT JOIN @Children NNT on TT.[ToID] = NNT.[ItemID]
|
||||
LEFT JOIN @Children NNR on TT.[RangeID] = NNR.[ItemID]
|
||||
--print 'H1 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
-- -- Update content records for newly copied records to use correct TransitionIDs in the Transition tags
|
||||
SET @RowsAffected=1
|
||||
WHILE @RowsAffected > 0
|
||||
BEGIN
|
||||
UPDATE CC SET [TEXT] = C2.NewText
|
||||
FROM CONTENTS CC
|
||||
JOIN (SELECT C1.ContentID, .dbo.vefn_FixTransitionTextForCopy(C1.Text, TRO.TransitionID, TRO.TranType, TRO.[ToID], TRO.[RangeID],TR.[TransitionID], TR.[ToID], TR.[RangeID], .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType)) NewText
|
||||
FROM CONTENTS C1
|
||||
JOIN @Children NN on C1.ContentID = NN.NewContentID
|
||||
JOIN Transitions TR on NN.NewContentID = TR.FromID
|
||||
JOIN Transitions TRO on TR.TranType = TRO.TransitionID) C2 ON CC.ContentID = C2.ContentID
|
||||
WHERE [TEXT] <> C2.NewText
|
||||
SET @RowsAffected = @@RowCount
|
||||
END
|
||||
--print 'H2 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
--set nocount off
|
||||
-- -- Update grid records for newly copied records to use correct TransitionIDs in the Transition tags
|
||||
declare @grids table
|
||||
(
|
||||
contentid int primary key,
|
||||
data xml
|
||||
)
|
||||
insert into @grids select gg.contentid,gg.data from GRIDS GG
|
||||
where gg.contentid in (select nn.newcontentid from
|
||||
@Children NN
|
||||
JOIN Transitions TR on NN.NewContentID = TR.FromID
|
||||
JOIN Transitions TRO on TR.TranType = TRO.TransitionID)
|
||||
--print 'H2.1 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
--select * from @grids
|
||||
SET @RowsAffected=1
|
||||
WHILE @RowsAffected > 0
|
||||
BEGIN
|
||||
UPDATE GG SET [DATA] = G2.NewData
|
||||
FROM @GRIDS GG
|
||||
JOIN (SELECT G1.ContentID, .dbo.vefn_FixTransitionDataForCopy(G1.Data, TRO.TransitionID, TRO.TranType, TRO.[ToID], TRO.[RangeID],TR.[TransitionID], TR.[ToID], TR.[RangeID], .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType)) NewData
|
||||
FROM @GRIDS G1
|
||||
JOIN @Children NN on G1.ContentID = NN.NewContentID
|
||||
JOIN Transitions TR on NN.NewContentID = TR.FromID
|
||||
JOIN Transitions TRO on TR.TranType = TRO.TransitionID) G2 ON GG.ContentID = G2.ContentID
|
||||
WHERE Cast([DATA] as nvarchar(max)) <> CAST(G2.NewData as nvarchar(max))
|
||||
SET @RowsAffected = @@RowCount
|
||||
END
|
||||
--print 'H2.2 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
update GG set data = g1.data from Grids gg join @grids g1 on gg.contentid = g1.contentid
|
||||
--print 'H3 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
--set nocount on
|
||||
-- Add 'Verification Required' AnnotationType
|
||||
DECLARE @typeID int
|
||||
SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required'
|
||||
IF(@typeID IS NULL)
|
||||
BEGIN
|
||||
INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian')
|
||||
SELECT @typeID = SCOPE_IDENTITY()
|
||||
END
|
||||
-- Add "Verification Required" Annotation for each Transition whose transition format changes
|
||||
INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID])
|
||||
SELECT NN.NewItemID, @typeID,'Verify Transition Format',@UserID
|
||||
FROM Transitions TR
|
||||
JOIN @Children NN on TR.FromID = NN.NewContentID
|
||||
JOIN Transitions TRO on TR.TranType = TRO.TransitionID
|
||||
WHERE .dbo.vefn_CompareTranFormat(NN.FormatID, NN.NewFormatID, TRO.TranType) <> 0
|
||||
--print 'H4 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
UPDATE TR SET TR.[TranType] = .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType)
|
||||
FROM Transitions TR
|
||||
JOIN @Children NN on TR.FromID = NN.NewContentID
|
||||
JOIN Transitions TRO on TR.TranType = TRO.TransitionID
|
||||
--print 'H5 ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
-- Transitions are done
|
||||
-- SELECT * From Transitions where DTS = @DTS and UserID = @UserID
|
||||
--print 'Z ' + cast(datediff(s,@dts,getdate()) as varchar(100))
|
||||
--foldouts fixing code
|
||||
if exists (select * from contents where contentid in (select newcontentid from @children) and config like '%FloatingFoldout%')
|
||||
begin
|
||||
--insert into #mytemp
|
||||
select cc.contentid,xsteps.value('@FloatingFoldout','int') oldfoldoutid,(select newitemid
|
||||
from @children
|
||||
where itemid = xsteps.value('@FloatingFoldout','int')) newfoldoutid,xconfig
|
||||
into #mytemp
|
||||
from (select *,cast(config as xml) xconfig from contents where contentid in (select newcontentid from @children)) cc
|
||||
cross apply xconfig.nodes('Config/Step') tsteps(xsteps)
|
||||
--build @cmd string
|
||||
declare @cmd nvarchar(max)
|
||||
declare cmds cursor for
|
||||
select distinct 'update #mytemp set xconfig.modify(''replace value of (Config/Step/@FloatingFoldout)[1] with "'
|
||||
+ cast(newfoldoutid as varchar(10))
|
||||
+ '"'') where xconfig.value(''(Config/Step/@FloatingFoldout)[1]'',''int'') = '
|
||||
+ cast(oldfoldoutid as varchar(10))
|
||||
from #mytemp
|
||||
--execute cursor over rows
|
||||
open cmds
|
||||
fetch next from cmds into @cmd
|
||||
while @@fetch_status = 0
|
||||
begin
|
||||
exec sp_executesql @cmd
|
||||
fetch next from cmds into @cmd
|
||||
end
|
||||
close cmds
|
||||
deallocate cmds
|
||||
--actually update contents
|
||||
update cc set config = cast(xconfig as varchar(max)) from contents cc join #mytemp mt on cc.contentid = mt.contentid
|
||||
--get rid of #mytemp
|
||||
drop table #mytemp
|
||||
end
|
||||
--end foldouts fixing code
|
||||
--section start
|
||||
DECLARE @NewContentID int
|
||||
Select @NewContentID = NewContentID from @Children where ItemID = @StartItemID
|
||||
DECLARE @Config varchar(max)
|
||||
DECLARE @XConfig xml
|
||||
select @Config = config from contents where contentid = @NewContentID
|
||||
select @XConfig = cast(@Config as xml)
|
||||
if @Config like '%SectionStart%' begin
|
||||
DECLARE @SectionStart int
|
||||
select @SectionStart = xproc.value('@SectionStart','int') from @xconfig.nodes('Config/Procedure') tproc(xproc)
|
||||
DECLARE @NewSectionStart int
|
||||
select @NewSectionStart = newitemid from @children where itemid = @SectionStart
|
||||
DECLARE @cmd2 nvarchar(max)
|
||||
set @cmd2 = '
|
||||
declare @XConfig xml;
|
||||
set @XConfig = cast(''' + @Config + ''' as xml);
|
||||
set @XConfig.modify(''replace value of (Config/Procedure/@SectionStart)[1] with "' + cast(@NewSectionStart as nvarchar(10)) + '"'');
|
||||
update contents set config = cast(@XConfig as varchar(max)) where contentid = ' + cast(@NewContentID as nvarchar(10)) + ';'
|
||||
exec sp_executesql @cmd2
|
||||
end
|
||||
--end section start
|
||||
IF( @@TRANCOUNT > 0 ) COMMIT
|
||||
END TRY
|
||||
BEGIN CATCH -- Catch Block
|
||||
IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level
|
||||
ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback
|
||||
EXEC vlnErrorHandler
|
||||
END CATCH
|
||||
|
||||
Go
|
||||
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: [CopyItemAndChildren] Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: [CopyItemAndChildren] Error on Creation'
|
||||
GO
|
||||
|
||||
/*
|
||||
==========================================================================================================
|
||||
End: C2024-004: KL - Update Copy Replace functionality, (remove ''copy of'')
|
||||
==========================================================================================================
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
/*
|
||||
---------------------------------------------------------------------------
|
||||
@@ -22260,8 +22673,8 @@ BEGIN TRY -- Try Block
|
||||
DECLARE @RevDate varchar(255)
|
||||
DECLARE @RevDescription varchar(255)
|
||||
|
||||
set @RevDate = '03/27/2024 11:00 AM'
|
||||
set @RevDescription = 'B2024-018: Enhanced link issue with sub-sections in source but not in enhanced'
|
||||
set @RevDate = '07/09/2024 9:00 AM'
|
||||
set @RevDescription = 'C2024-004: Update Copy Replace functionality'
|
||||
|
||||
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
|
||||
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
|
||||
|
@@ -99,6 +99,10 @@ namespace VEPROMS
|
||||
MyProcedure = procedureInfo;
|
||||
InitializeComponent();
|
||||
this.Text = mode + " Dialog for " + procedureInfo.DisplayNumber;
|
||||
|
||||
//Preset path for single procedures.
|
||||
PEIPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS\PEI_" + Database.VEPROMS_SqlConnection.Database;
|
||||
txtExport.Text = string.Format(@"{0}\{1}.pxml", PEIPath, MyProcedure.DisplayNumber.Replace("/", "_").Replace("\\", "_"));
|
||||
}
|
||||
private void dlgExportImport_Load(object sender, EventArgs e)
|
||||
{
|
||||
@@ -172,6 +176,7 @@ namespace VEPROMS
|
||||
}
|
||||
else if (MyProcedure != null)
|
||||
{
|
||||
txtExport.Enabled = true;
|
||||
txtExport.Text = string.Format(@"{0}\{1}.pxml", PEIPath, MyProcedure.DisplayNumber.Replace("/", "_").Replace("\\", "_"));
|
||||
}
|
||||
}
|
||||
@@ -190,6 +195,8 @@ namespace VEPROMS
|
||||
private bool successfullExport = true;
|
||||
private void btnDoExport_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
|
||||
btnExport.Enabled = false;
|
||||
string msg = "Finished Exporting:\n\n";
|
||||
if (_MyMode.ToUpper().Contains("FORMAT"))
|
||||
@@ -220,6 +227,42 @@ namespace VEPROMS
|
||||
}
|
||||
else if (MyProcedure != null)
|
||||
{
|
||||
var fileLocation = txtExport.Text;
|
||||
if (File.Exists(fileLocation))
|
||||
{ // C2022-029 if an existing export of the same name is found, provide option to overwrite it
|
||||
DialogResult ovewriteEx = FlexibleMessageBox.ShowCustom(null, "There is already another export file with the same name. You can choose to either overwrite the existing file or have the existing file renamed with the original creation date appended.\r\n\r\nSelecting 'Cancel' will cancel the export.", "What would you like to do?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);// == DialogResult.Yes;
|
||||
|
||||
// Extract directory, filename, and extension
|
||||
string directory = Path.GetDirectoryName(fileLocation);
|
||||
string filename = Path.GetFileNameWithoutExtension(fileLocation);
|
||||
string extension = Path.GetExtension(fileLocation);
|
||||
fileLocation = $"{directory}\\{filename}{extension}";
|
||||
|
||||
if (ovewriteEx == DialogResult.Abort)
|
||||
{
|
||||
MessageBox.Show("Export has been cancelled", "You have chosen to cancel the export.", MessageBoxButtons.OK, MessageBoxIcon.Information); // C2020-042 changed mesage box title
|
||||
btnCloseExport.Enabled = true;
|
||||
return;
|
||||
}
|
||||
else if (ovewriteEx == DialogResult.Retry)
|
||||
{
|
||||
//Overwrite will occur, set msg.
|
||||
msg = "The export file has been overwritten. ";
|
||||
}
|
||||
else if (ovewriteEx == DialogResult.Ignore)
|
||||
{
|
||||
// Get the modified date of the existing file, create a datestamp for use in name, set newlocation to move to
|
||||
DateTime modifiedDate = File.GetLastWriteTime(fileLocation);
|
||||
string datestamp = modifiedDate.ToString("yyyyMMddHHmmss");
|
||||
string newFileLocation = $"{directory}\\{filename}_{datestamp}{extension}";
|
||||
|
||||
//Move and set msg.
|
||||
File.Move(fileLocation, newFileLocation);
|
||||
msg = "The previous export has been renamed, the export file has been created. ";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
MyStart = DateTime.Now;
|
||||
btnDoExport.Enabled = false;
|
||||
@@ -230,7 +273,7 @@ namespace VEPROMS
|
||||
XmlElement xe = xd.CreateElement("formats");
|
||||
xd.DocumentElement.AppendChild(xe);
|
||||
ExportFormats(FormatInfoList.GetFormatInfoListUsed(), xe, "formats", false);
|
||||
xd.Save(txtExport.Text);
|
||||
xd.Save(fileLocation);
|
||||
TimeSpan elapsed = DateTime.Now.Subtract(MyStart);
|
||||
lblExportStatus.Text = "Export Completed in " + elapsed.ToString();
|
||||
this.Cursor = Cursors.Default;
|
||||
@@ -706,7 +749,7 @@ namespace VEPROMS
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
FlexibleMessageBox.Show("The import failed, check the error log for more information.", "Import Failed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
FlexibleMessageBox.Show(null, "The import failed, check the error log for more information.", "Import Failed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
_MyLog.Warn("Failure During Import", ex);
|
||||
}
|
||||
return false;
|
||||
|
@@ -400,6 +400,7 @@ namespace VEPROMS
|
||||
this.pnlImport.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
14
PROMS/VEPROMS User Interface/frmVEPROMS.Designer.cs
generated
14
PROMS/VEPROMS User Interface/frmVEPROMS.Designer.cs
generated
@@ -45,7 +45,6 @@ namespace VEPROMS
|
||||
this.itemContainer3 = new DevComponents.DotNetBar.ItemContainer();
|
||||
this.btnNew = new DevComponents.DotNetBar.ButtonItem();
|
||||
this.btnOpen = new DevComponents.DotNetBar.ButtonItem();
|
||||
this.btnPrint = new DevComponents.DotNetBar.ButtonItem();
|
||||
this.btnPrepare = new DevComponents.DotNetBar.ButtonItem();
|
||||
this.btnAdmin = new DevComponents.DotNetBar.ButtonItem();
|
||||
this.btnUpdateFormats = new DevComponents.DotNetBar.ButtonItem();
|
||||
@@ -339,7 +338,6 @@ namespace VEPROMS
|
||||
this.itemContainer3.SubItems.AddRange(new DevComponents.DotNetBar.BaseItem[] {
|
||||
this.btnNew,
|
||||
this.btnOpen,
|
||||
this.btnPrint,
|
||||
this.btnPrepare,
|
||||
this.btnAdmin});
|
||||
//
|
||||
@@ -365,16 +363,7 @@ namespace VEPROMS
|
||||
this.btnOpen.SubItemsExpandWidth = 24;
|
||||
this.btnOpen.Text = "&Open...";
|
||||
this.btnOpen.Click += new System.EventHandler(this.btnOpen_Click);
|
||||
//
|
||||
// btnPrint
|
||||
//
|
||||
this.btnPrint.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText;
|
||||
this.btnPrint.Enabled = false;
|
||||
this.btnPrint.Image = ((System.Drawing.Image)(resources.GetObject("btnPrint.Image")));
|
||||
this.btnPrint.Name = "btnPrint";
|
||||
this.btnPrint.SubItemsExpandWidth = 24;
|
||||
this.btnPrint.Text = "Create &PDF";
|
||||
this.btnPrint.Click += new System.EventHandler(this.btnPrint_Click);
|
||||
|
||||
//
|
||||
// btnPrepare
|
||||
//
|
||||
@@ -1646,7 +1635,6 @@ namespace VEPROMS
|
||||
private DevComponents.DotNetBar.ButtonItem btnNew;
|
||||
private DevComponents.DotNetBar.ButtonItem btnOpen;
|
||||
private DevComponents.DotNetBar.ButtonItem btnPrepare;
|
||||
private DevComponents.DotNetBar.ButtonItem btnPrint;
|
||||
private DevComponents.DotNetBar.ItemContainer icRecentDocs;
|
||||
private DevComponents.DotNetBar.LabelItem labelItem8;
|
||||
private DevComponents.DotNetBar.ItemContainer itemContainer5;
|
||||
|
@@ -2098,7 +2098,6 @@ namespace VEPROMS
|
||||
btnAdministrativeTools.Click += new EventHandler(btnAdministrativeTools_Click);
|
||||
btnAdmin.SubItems.Add(btnAdministrativeTools);
|
||||
|
||||
this.superTooltip1.SetSuperTooltip(btnPrint, new SuperTooltipInfo("Create PDF", null, null, null, null, eTooltipColor.Gray));
|
||||
this.superTooltip1.SetSuperTooltip(btnExit, new SuperTooltipInfo("Exit", null, null, null, null, eTooltipColor.Gray));
|
||||
this.superTooltip1.SetSuperTooltip(btnOptions, new SuperTooltipInfo("Options", null, null, null, null, eTooltipColor.Gray));
|
||||
this.superTooltip1.SetSuperTooltip(btnManageSecurity, new SuperTooltipInfo("Manage Security", null, null, null, null, eTooltipColor.Gray));
|
||||
@@ -3126,22 +3125,44 @@ namespace VEPROMS
|
||||
if (dvi != null)
|
||||
{
|
||||
DlgPrintProcedure prnDlg = new DlgPrintProcedure(dvi, true);
|
||||
if (dvi.MultiUnitCount == 0) prnDlg.SelectedSlave = -1;
|
||||
if (dvi.MultiUnitCount == 0)
|
||||
{
|
||||
prnDlg.SelectedSlave = -1;
|
||||
}
|
||||
else if (dvi.MultiUnitCount > 0)
|
||||
{
|
||||
string[] arguments = Environment.GetCommandLineArgs();
|
||||
for (int i = 0; i < arguments.Length; i++)
|
||||
{
|
||||
if (arguments[i].Contains("/C="))
|
||||
{
|
||||
Console.WriteLine("In arguments loop");
|
||||
//int num;
|
||||
string[] childarg = arguments[i].Split('=');
|
||||
if (int.TryParse(childarg[1], out int num))
|
||||
{
|
||||
prnDlg.SelectedSlave = num;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
prnDlg.AllowDateTimePrefixSuffix = false; //C2018-033 don't append any selected date/time pdf file prefix or suffix (defined in working draft properties)
|
||||
prnDlg.ShowDialog(this); // RHM 20120925 - Center dialog over PROMS window
|
||||
//prnDlg.FormClosed += new FormClosedEventHandler(prnDlg_FormClosed);
|
||||
//while (!_RunNext) Application.DoEvents();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
ranAuto = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ranAuto)
|
||||
{
|
||||
this.Close();
|
||||
if (ranAuto)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4092,10 +4113,6 @@ namespace VEPROMS
|
||||
|
||||
lblUser.Text = tc.SelectedDisplayTabItem.MyUserRole;
|
||||
|
||||
if (tc.SelectedDisplayTabItem.MyItemInfo.MyDocVersion.MultiUnitCount > 1)
|
||||
btnPrint.Visible = false;
|
||||
else
|
||||
btnPrint.Visible = true;
|
||||
|
||||
// Reset the ribbon buttons B2016-148 (ex. a copystep done in a different procedure tab my require the paste step options to be active
|
||||
if (tc.SelectedDisplayTabItem != null && tc.SelectedDisplayTabItem.MyStepTabPanel != null) // MyStepTabPanel will be null if the active tab is a Word Attachment
|
||||
@@ -4350,7 +4367,6 @@ namespace VEPROMS
|
||||
ctrlAnnotationDetails.UpdateAnnotationGrid(_CurrentItem); // set the CurrentItem (send Message) when the MSWord section is opened.
|
||||
}
|
||||
|
||||
btnPrint.Enabled = (_CurrentItem != null);
|
||||
}
|
||||
|
||||
void _LastStepRTB_EditModeChanged(object sender, EventArgs args)
|
||||
@@ -4842,12 +4858,7 @@ namespace VEPROMS
|
||||
StepRTB.MyFontFamily = cmbFont.SelectedValue as FontFamily;
|
||||
}
|
||||
|
||||
private void btnPrint_Click(object sender, EventArgs e)
|
||||
{
|
||||
DlgPrintProcedure prnDlg = new DlgPrintProcedure(this._CurrentItem.MyProcedure);
|
||||
prnDlg.MySessionInfo = MySessionInfo;
|
||||
prnDlg.ShowDialog(this); // RHM 20120925 - Center dialog over PROMS window
|
||||
}
|
||||
|
||||
|
||||
private void lblResolution_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
@@ -254,7 +254,7 @@ namespace VEPROMS
|
||||
//
|
||||
this.ppBtnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ppBtnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.ppBtnCancel.Location = new System.Drawing.Point(742, 342);
|
||||
this.ppBtnCancel.Location = new System.Drawing.Point(742, 338);
|
||||
this.ppBtnCancel.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.ppBtnCancel.Name = "ppBtnCancel";
|
||||
this.ppBtnCancel.Size = new System.Drawing.Size(56, 21);
|
||||
@@ -266,7 +266,7 @@ namespace VEPROMS
|
||||
// ppBtnOK
|
||||
//
|
||||
this.ppBtnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ppBtnOK.Location = new System.Drawing.Point(669, 342);
|
||||
this.ppBtnOK.Location = new System.Drawing.Point(669, 338);
|
||||
this.ppBtnOK.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.ppBtnOK.Name = "ppBtnOK";
|
||||
this.ppBtnOK.Size = new System.Drawing.Size(56, 21);
|
||||
|
@@ -29,6 +29,7 @@ namespace VEPROMS
|
||||
private List<MiniConfig> _DeletedApples;
|
||||
private List<EnhancedMiniConfig> _Enhanced;
|
||||
private DocVersionConfig _DocVersionConfig;
|
||||
private string _OrgPDFPath; // B2024-030 used to save last PDF path
|
||||
|
||||
// Default values
|
||||
private string _DefaultFormatName = null;
|
||||
@@ -97,6 +98,7 @@ namespace VEPROMS
|
||||
|
||||
_Initializing = true;
|
||||
InitializeComponent();
|
||||
_OrgPDFPath = _DocVersionConfig.Print_PDFLocation; // B2024-030 save last PDF path
|
||||
btnGeneral.PerformClick(); // always start with General tab or button
|
||||
_Initializing = false;
|
||||
|
||||
@@ -323,8 +325,6 @@ namespace VEPROMS
|
||||
tiApplicability.Visible = false;
|
||||
}
|
||||
|
||||
ppTxtBxPDFLoc.TextChanged += new EventHandler(ppTxtBxPDFLoc_TextChanged);
|
||||
|
||||
//end add new applicability stuff
|
||||
lblProcSetRev.Visible = ppRTxtProcSetRev.Visible = _DocVersionConfig.MyDocVersion.MyDocVersionInfo.ActiveFormat.MyStepSectionPrintData.UseXtraRevNumber;
|
||||
|
||||
@@ -538,11 +538,32 @@ namespace VEPROMS
|
||||
}
|
||||
}
|
||||
|
||||
// The following code was added to fix Bug B2013-117
|
||||
private void ppTxtBxPDFLoc_TextChanged(object sender, EventArgs e)
|
||||
//B2024-030 Check the PDF Location path and prompt to create the folders if needed
|
||||
private void CheckPDFLocationPath()
|
||||
{
|
||||
if (_Initializing == false)
|
||||
_DocVersionConfig.Print_PDFLocation = ppTxtBxPDFLoc.Text;
|
||||
string pdfloc = ppTxtBxPDFLoc.Text;
|
||||
if (pdfloc == string.Empty) return;
|
||||
if (!Directory.Exists(ppTxtBxPDFLoc.Text))
|
||||
{
|
||||
string msg = string.Format(" The Folder: '{0}' does not exist. \n\nCreate it?", ppTxtBxPDFLoc.Text);
|
||||
DialogResult dr = MessageBox.Show(msg, "PDF Location Folder Not Found", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
if (dr == DialogResult.Yes)
|
||||
{
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(ppTxtBxPDFLoc.Text);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Error trying to create folder", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
_DocVersionConfig.Print_PDFLocation = _OrgPDFPath; // reset to the path we started with
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_DocVersionConfig.Print_PDFLocation = _OrgPDFPath; // reset to the path we started with
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string AddSlaveNode(MiniConfig mc)
|
||||
@@ -588,6 +609,9 @@ namespace VEPROMS
|
||||
|
||||
private void btnVersionsPropOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
//B2024-030 Check the PDF Location path and prompt to create the folders if needed
|
||||
CheckPDFLocationPath();
|
||||
|
||||
docVersionConfigBindingSource.EndEdit(); // need to end the edit session first or any format selection chanage will not stick B2015-157
|
||||
|
||||
// if there is a change to the format, clean up any overridden formats that point to the selected item before saving the format change:
|
||||
@@ -773,7 +797,6 @@ namespace VEPROMS
|
||||
|
||||
// B2019-132 update the association count for this working draft
|
||||
_DocVersionConfig.MyDocVersion.MyDocVersionInfo.RefreshDocVersionAssociations();
|
||||
|
||||
this.Close();
|
||||
}
|
||||
|
||||
|
@@ -1309,7 +1309,8 @@ namespace VEPROMS.CSLA.Library
|
||||
else if (addType == EAddpingPart.Replace) // what about user interface for enhanced pasted steps?
|
||||
{
|
||||
ItemInfo enhReplaceItem = ItemInfo.Get(edSource.ItemID);
|
||||
newEnhancedItemInfo = Item.PasteReplace(enhReplaceItem, tmpCopyEnhancedID, chgid);
|
||||
TreeNode trn = null;
|
||||
newEnhancedItemInfo = Item.PasteReplace(enhReplaceItem, tmpCopyEnhancedID, chgid, trn);
|
||||
}
|
||||
|
||||
// update the config data for the new enhanced item (procedure, section or step) to point back to the correct source
|
||||
@@ -1943,6 +1944,54 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
#endregion
|
||||
#region DataPortal
|
||||
private void DataPortal_Fetch(PastingPartEnhancedCriteria criteria)
|
||||
{
|
||||
if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] ItemInfo.DataPortal_Fetch", GetHashCode());
|
||||
try
|
||||
{
|
||||
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
|
||||
{
|
||||
Csla.ApplicationContext.LocalContext["cn"] = cn;
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.Parameters.AddWithValue("@StartItemID", criteria.StartItemID); // copy children
|
||||
cm.Parameters.AddWithValue("@ItemID", criteria.ItemID); //copy to
|
||||
cm.Parameters.AddWithValue("@Type", criteria.Type);
|
||||
cm.Parameters.AddWithValue("@DTS", criteria.DTS);
|
||||
cm.Parameters.AddWithValue("@UserID", criteria.UserID);
|
||||
SqlParameter param_ItemID = new SqlParameter("@NewItemID", SqlDbType.Int);
|
||||
param_ItemID.Direction = ParameterDirection.Output;
|
||||
cm.Parameters.Add(param_ItemID);
|
||||
cm.CommandText = "PasteItemEnhancedReplace";
|
||||
//cm.CommandText = "PasteItemReplace";
|
||||
cm.CommandTimeout = Database.DefaultTimeout;
|
||||
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
|
||||
{
|
||||
//int newItemID = (int)cm.Parameters["@NewItemID"].Value;
|
||||
if (!dr.Read())
|
||||
{
|
||||
_ErrorMessage = "No Record Found";
|
||||
return;
|
||||
}
|
||||
ReadData(dr);
|
||||
}
|
||||
}
|
||||
// removing of item only needed for local data portal
|
||||
if (Csla.ApplicationContext.ExecutionLocation == Csla.ApplicationContext.ExecutionLocations.Client)
|
||||
Csla.ApplicationContext.LocalContext.Remove("cn");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (!ex.Message.Contains("This step has been deleted") && !ex.Message.Contains("This current step has been deleted in another session"))
|
||||
{
|
||||
if (_MyLog.IsErrorEnabled) _MyLog.Error("ItemInfo.DataPortal_Fetch", ex);
|
||||
}
|
||||
_ErrorMessage = ex.Message;
|
||||
throw new DbCslaException("ItemInfo.DataPortal_Fetch", ex);
|
||||
}
|
||||
}
|
||||
private void DataPortal_Fetch(PastingPartCriteria criteria)
|
||||
{
|
||||
if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] ItemInfo.DataPortal_Fetch", GetHashCode());
|
||||
@@ -2065,6 +2114,68 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region PastingPartEnhancedCriteria
|
||||
[Serializable()]
|
||||
public class PastingPartEnhancedCriteria
|
||||
{
|
||||
#region Properties
|
||||
private int _StartItemID;
|
||||
public int StartItemID
|
||||
{
|
||||
get { return _StartItemID; }
|
||||
set { _StartItemID = value; }
|
||||
}
|
||||
private int _ItemID; // paste relative to this itemid
|
||||
public int ItemID
|
||||
{
|
||||
get { return _ItemID; }
|
||||
set { _ItemID = value; }
|
||||
}
|
||||
private EAddpingPart _AddType;
|
||||
public EAddpingPart AddType
|
||||
{
|
||||
get { return _AddType; }
|
||||
set { _AddType = value; }
|
||||
}
|
||||
private int? _FromType = null;
|
||||
public int? FromType
|
||||
{
|
||||
get { return _FromType; }
|
||||
set { _FromType = value; }
|
||||
}
|
||||
private int? _Type = null;
|
||||
public int? Type
|
||||
{
|
||||
get { return _Type; }
|
||||
set { _Type = value; }
|
||||
}
|
||||
private DateTime _DTS;
|
||||
public DateTime DTS
|
||||
{
|
||||
get { return _DTS; }
|
||||
set { _DTS = value; }
|
||||
}
|
||||
private string _UserID;
|
||||
public string UserID
|
||||
{
|
||||
get { return _UserID; }
|
||||
set { _UserID = value; }
|
||||
}
|
||||
#endregion
|
||||
#region Constructor
|
||||
public PastingPartEnhancedCriteria(int startItemid, int itemID, EAddpingPart addType, int? type, int? fromType, DateTime dts, string userID)
|
||||
{
|
||||
_StartItemID = startItemid;
|
||||
_ItemID = itemID;
|
||||
_AddType = addType;
|
||||
_Type = type;
|
||||
_FromType = fromType;
|
||||
_DTS = dts;
|
||||
_UserID = userID;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
#region PastingPartCriteria
|
||||
[Serializable()]
|
||||
public class PastingPartCriteria
|
||||
@@ -2355,6 +2466,17 @@ namespace VEPROMS.CSLA.Library
|
||||
_MyPrevious = null; // Reset list so that the next line gets a new list
|
||||
if (MyPrevious != null) MyPrevious.RefreshNextItems(); // Update List for new value
|
||||
}
|
||||
internal static ItemInfo CopyPasteReplaceEnhancedItemInfoFetch(int copyStartID, ItemInfo itemInfo) // int itemID, int? type, int? fromType)
|
||||
{
|
||||
ItemInfo tmp = null;
|
||||
tmp = DataPortal.Fetch<StepInfo>(new ItemInfo.PastingPartEnhancedCriteria(copyStartID, itemInfo.ItemID, ItemInfo.EAddpingPart.Replace, itemInfo.MyContent.Type, itemInfo.MyContent.Type, DateTime.Now, Volian.Base.Library.VlnSettings.UserID));
|
||||
if (tmp == null)
|
||||
{
|
||||
tmp = ItemInfo.Get(copyStartID);
|
||||
}
|
||||
AddToCache(tmp);
|
||||
return tmp;
|
||||
}
|
||||
internal static ItemInfo CopyPasteReplaceItemInfoFetch(int copyStartID, ItemInfo itemInfo) // int itemID, int? type, int? fromType)
|
||||
{
|
||||
ItemInfo tmp = null;
|
||||
@@ -2497,13 +2619,24 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
#endregion
|
||||
#region PasteReplace
|
||||
public static ItemInfo PasteReplace(ItemInfo itemInfo, int copyStartID, string chgid)
|
||||
|
||||
|
||||
|
||||
public static ItemInfo PasteReplace(ItemInfo itemInfo, int copyStartID, string chgid, TreeNode treeNodeReplace)
|
||||
{
|
||||
bool tmp= false;
|
||||
return PasteReplace(itemInfo, copyStartID, chgid, ref tmp);
|
||||
if (itemInfo.IsEnhancedStep)
|
||||
{
|
||||
// don't replace the step, just remove current children & add new children:
|
||||
if (!CanDeleteObject())
|
||||
throw new System.Security.SecurityException("User not authorized to remove a Item");
|
||||
|
||||
}
|
||||
bool tmp = false;
|
||||
return PasteReplace(itemInfo, copyStartID, chgid, treeNodeReplace, ref tmp);
|
||||
}
|
||||
// B2017-179 return a bool (firstTrans) if we could not replace the step but the user wants to position to the first transition that needs resolved
|
||||
public static ItemInfo PasteReplace(ItemInfo itemInfo, int copyStartID, string chgid, ref bool firstTrans)
|
||||
// B2017-179 return a bool (firstTrans) if we could not replace the step but the user wants to position to the first transition that needs resolved
|
||||
public static ItemInfo PasteReplace(ItemInfo itemInfo, int copyStartID, string chgid, TreeNode treeNodeReplace, ref bool firstTrans)
|
||||
{
|
||||
firstTrans = false;
|
||||
if (!CanDeleteObject())
|
||||
@@ -2514,8 +2647,17 @@ namespace VEPROMS.CSLA.Library
|
||||
ItemInfo newItemInfo = null;
|
||||
try
|
||||
{
|
||||
newItemInfo = ItemInfo.CopyPasteReplaceItemInfoFetch(copyStartID, itemInfo); //itemInfo.ItemID, itemInfo.MyContent.Type, itemInfo.MyContent.Type);
|
||||
if (newItemInfo == null) return null;
|
||||
// if this item is an enhanced item, do a pastereplace specific to it:
|
||||
if (itemInfo.IsEnhancedStep)
|
||||
{
|
||||
newItemInfo = ItemInfo.CopyPasteReplaceEnhancedItemInfoFetch(copyStartID, itemInfo);
|
||||
if (newItemInfo == null) return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
newItemInfo = ItemInfo.CopyPasteReplaceItemInfoFetch(copyStartID, itemInfo); //itemInfo.ItemID, itemInfo.MyContent.Type, itemInfo.MyContent.Type);
|
||||
if (newItemInfo == null) return null;
|
||||
}
|
||||
}
|
||||
catch (Exception ex1)
|
||||
{
|
||||
@@ -2560,7 +2702,14 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
newItemInfo.MyParent.OnNewChild(new ItemInfoInsertEventArgs(newItemInfo, ItemInfo.EAddpingPart.Child));
|
||||
//Create tree node for copied procedure when no other procedures exist in the folder
|
||||
VETreeNode vtn = treeNodeReplace as VETreeNode;
|
||||
DocVersionInfo dvi = vtn.VEObject as DocVersionInfo;
|
||||
|
||||
ItemInfo newProc = dvi.PasteChild(copyStartID);
|
||||
VETreeNode tn1 = new VETreeNode(newProc);
|
||||
treeNodeReplace.Nodes.Add(tn1); // add tree node to end of list.
|
||||
treeNodeReplace = tn1;
|
||||
}
|
||||
return newItemInfo;
|
||||
}
|
||||
@@ -2573,23 +2722,23 @@ namespace VEPROMS.CSLA.Library
|
||||
firstTrans = true; // B2017-179 set the firstTrans to true and return the itminfo of the first transition location that needs resolved
|
||||
return iii;
|
||||
}
|
||||
if (!HandleSqlExceptionOnCopy(ex))
|
||||
{
|
||||
if (ex.Message.Contains("has External Transitions and has no next step")
|
||||
|| ex.Message.Contains("has External Transitions to Procedure")
|
||||
|| ex.Message.Contains("has External Transitions to it's children")
|
||||
|| ex.Message.Contains("This step has been deleted")
|
||||
)
|
||||
throw ex;
|
||||
if (!HandleSqlExceptionOnCopy(ex))
|
||||
{
|
||||
if (ex.Message.Contains("has External Transitions and has no next step")
|
||||
|| ex.Message.Contains("has External Transitions to Procedure")
|
||||
|| ex.Message.Contains("has External Transitions to it's children")
|
||||
|| ex.Message.Contains("This step has been deleted")
|
||||
)
|
||||
throw ex;
|
||||
FlexibleMessageBox.Show("Details were written to the Error Log.", "Paste Replace Failed", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
|
||||
return itemInfo;
|
||||
}
|
||||
else
|
||||
return itemInfo;
|
||||
return itemInfo;
|
||||
}
|
||||
else
|
||||
return itemInfo;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
private static bool HandleSqlExceptionOnCopy(Exception ex)
|
||||
private static bool HandleSqlExceptionOnCopy(Exception ex)
|
||||
{
|
||||
if (ex.Message.Contains("This step has been deleted"))
|
||||
{
|
||||
|
@@ -56,6 +56,9 @@ namespace Volian.Controls.Library
|
||||
|
||||
private ROFSTLookup.rochild selectedChld;
|
||||
|
||||
private DisplayTags displayTags;
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
@@ -268,6 +271,10 @@ namespace Volian.Controls.Library
|
||||
_searchTimer.Stop();
|
||||
}
|
||||
|
||||
|
||||
// Initialize the DisplayTags object
|
||||
displayTags = new DisplayTags();
|
||||
|
||||
_progressBar = null;
|
||||
}
|
||||
|
||||
@@ -927,7 +934,7 @@ namespace Volian.Controls.Library
|
||||
bool replacingRO = (_savCurROLink != null);
|
||||
|
||||
string insrpl = (replacingRO) ? "Cannot Replace" : "Cannot Insert";
|
||||
string errormsg = string.Empty;
|
||||
string errormsg = string.Empty;
|
||||
|
||||
switch (selectedRO.type)
|
||||
{
|
||||
@@ -968,7 +975,10 @@ namespace Volian.Controls.Library
|
||||
errormsg = (replacingRO) ? "a graphics RO with a non-graphcis RO." : "a Graphics RO in an non-Figure or a non-Accessory Page type.";
|
||||
//TODO: Prompt user to insert a new substep type that handles x/y Plots and place this RO into it
|
||||
goodToGo = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@@ -669,7 +669,7 @@ namespace Volian.Controls.Library
|
||||
ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item
|
||||
string key = "Item - " + proc.ItemID.ToString();
|
||||
|
||||
if (_MyDisplayTabItems.ContainsKey(key)) // If procedure page open use it
|
||||
if (_MyDisplayTabItems.ContainsKey(key) && pasteType != ItemInfo.EAddpingPart.Replace) // If procedure page open use it unless replace
|
||||
{
|
||||
DisplayTabItem pg = _MyDisplayTabItems[key];
|
||||
if (pg.MyStepTabPanel.MyStepPanel._LookupEditItems.ContainsKey(myItemInfo.ItemID) &&
|
||||
@@ -688,8 +688,14 @@ namespace Volian.Controls.Library
|
||||
edtitm.PasteSiblingAfter(copyStartID);
|
||||
break;
|
||||
case ItemInfo.EAddpingPart.Replace:
|
||||
|
||||
EditItem ei = edtitm.PasteReplace(copyStartID);
|
||||
if (ei == null) return false; //B2017-179 PasteReplace will return null if was aborted
|
||||
if (ei == null)
|
||||
{
|
||||
CloseTabItem(_MyDisplayTabItems["Item - " + myItemInfo.ItemID.ToString()]); //Grab itemID and set to close open tab.
|
||||
return false; //B2017-179 PasteReplace will return null if was aborted
|
||||
}
|
||||
|
||||
if (ei.MyItemInfo.ItemID != edtitm.MyItemInfo.ItemID)
|
||||
{
|
||||
edtitm.Dispose();
|
||||
@@ -702,6 +708,12 @@ namespace Volian.Controls.Library
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (_MyDisplayTabItems.ContainsKey(key) && pasteType == ItemInfo.EAddpingPart.Replace)
|
||||
{
|
||||
CloseTabItem(_MyDisplayTabItems["Item - " + myItemInfo.ItemID.ToString()]); //Grab itemID and set to close open tab.
|
||||
return false; //B2017-179 PasteReplace will return null if was aborted
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -640,7 +640,7 @@ namespace Volian.Controls.Library
|
||||
this.btnFSrestore.Location = new System.Drawing.Point(112, 27);
|
||||
this.btnFSrestore.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnFSrestore.Name = "btnFSrestore";
|
||||
this.btnFSrestore.Size = new System.Drawing.Size(54, 26);
|
||||
this.btnFSrestore.Size = new System.Drawing.Size(54, 20);
|
||||
this.btnFSrestore.TabIndex = 6;
|
||||
this.btnFSrestore.Text = "Restore";
|
||||
this.btnFSrestore.UseVisualStyleBackColor = true;
|
||||
|
@@ -96,6 +96,22 @@ namespace Volian.Controls.Library
|
||||
get { return Visible; }
|
||||
set { if (Visible != value) Visible = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Expose text properties for height and widht to handle selecting RO Image Types.
|
||||
/// </summary>
|
||||
public string TbFSwd
|
||||
{
|
||||
get {return tbFSWd.Text;}
|
||||
set { tbFSWd.Text = value; tbFSWd.Refresh(); trBarFS.Value = Convert.ToInt32(value); }
|
||||
}
|
||||
|
||||
public string TbFSht
|
||||
{
|
||||
get { return tbFSHt.Text; }
|
||||
set { tbFSHt.Text = value; tbFSHt.Refresh(); _origFigureSizeRatio = float.Parse(value) / float.Parse(tbFSWd.Text); }
|
||||
}
|
||||
|
||||
#endregion
|
||||
#region Constructor
|
||||
public DisplayTags()
|
||||
@@ -383,6 +399,8 @@ namespace Volian.Controls.Library
|
||||
cmbCheckoff.Enabled = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// show the part of panel for resizing a figure (if figure already exists: MyImage is set for non-RO existing images & content.text has a link in it)
|
||||
if (MyEditItem.MyItemInfo.IsFigure && (MyEditItem.MyItemInfo.MyContent.MyImage != null || MyEditItem.MyItemInfo.MyContent.Text.ToUpper().Contains("#LINK")))
|
||||
{
|
||||
@@ -391,20 +409,41 @@ namespace Volian.Controls.Library
|
||||
int wd = (MyEditItem as ImageItem).MyPictureBox.Width;
|
||||
_origFigureSizeRatio = (float)ht / (float)wd; // use this to keep width/height ratio while changing size.
|
||||
float wd1 = (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.PageWidth - (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.LeftMargin;
|
||||
float ht1 = (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.PageLength - (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.TopMargin - 36; // 36 is to allow for end message
|
||||
float wd2 = Math.Min(wd1, ht1 / _origFigureSizeRatio); // keep original ratio
|
||||
trBarFS.Maximum = Math.Max((int)wd2, trBarFS.Maximum);
|
||||
if (wd > trBarFS.Maximum) trBarFS.Maximum = wd + 1;
|
||||
trBarFS.Minimum = Math.Min(wd, 72);
|
||||
trBarFS.Value = (int)wd;
|
||||
ImageItem ii = MyEditItem as ImageItem;
|
||||
_origFigureSizeWidth = ii.MyPictureBox.Width;
|
||||
tbFSWd.Text = ii.MyPictureBox.Width.ToString();
|
||||
tbFSHt.Text = ii.MyPictureBox.Height.ToString();
|
||||
float ht1 = (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.PageLength - (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.TopMargin - 36; // 36 is to allow for end message
|
||||
float wd2 = Math.Min(wd1, ht1 / _origFigureSizeRatio); // keep original ratio
|
||||
|
||||
SetFigure(wd1, wd2);
|
||||
|
||||
tbFSWd.Text = wd.ToString();
|
||||
tbFSHt.Text = ht.ToString();
|
||||
|
||||
//trBarFS.Maximum = Math.Max((int)wd2, trBarFS.Maximum);
|
||||
//if (wd > trBarFS.Maximum) trBarFS.Maximum = wd + 1;
|
||||
//trBarFS.Minimum = Math.Min(wd, 72);
|
||||
//trBarFS.Value = (int)wd;
|
||||
//ImageItem ii = MyEditItem as ImageItem;
|
||||
//_origFigureSizeWidth = ii.MyPictureBox.Width;
|
||||
//tbFSWd.Text = ii.MyPictureBox.Width.ToString();
|
||||
//tbFSHt.Text = ii.MyPictureBox.Height.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
groupPanelFigSize.Visible = false;
|
||||
if (MyEditItem.MyItemInfo.IsFigure)
|
||||
{
|
||||
//No Current image, but still show groupPanelFigSize, will adjust when file is selected, but let's give it a default
|
||||
//size on using the picturebox.
|
||||
groupPanelFigSize.Visible = true;
|
||||
int ht = (MyEditItem as ImageItem).MyPictureBox.Height;
|
||||
int wd = (MyEditItem as ImageItem).MyPictureBox.Width;
|
||||
_origFigureSizeRatio = (float)ht / (float)wd; // use this to keep width/height ratio while changing size.
|
||||
float wd1 = (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.PageWidth - (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.LeftMargin;
|
||||
float ht1 = (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.PageLength - (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.TopMargin - 36; // 36 is to allow for end message
|
||||
float wd2 = Math.Min(wd1, ht1 / _origFigureSizeRatio); // keep original ratio
|
||||
|
||||
SetFigure(wd1, wd2);
|
||||
}
|
||||
else
|
||||
groupPanelFigSize.Visible = false;
|
||||
}
|
||||
|
||||
// change bar setting depends on whether step has changed (dts) as compared to date/time off the
|
||||
@@ -516,6 +555,22 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
_Initalizing = false;
|
||||
}
|
||||
public void SetFigure(double wd, double wd2)
|
||||
{
|
||||
// Check MyEditItem type and cast if needed
|
||||
ImageItem ii = MyEditItem as ImageItem;
|
||||
if (ii == null) return;
|
||||
|
||||
// Set the values as needed
|
||||
trBarFS.Maximum = Math.Max((int)wd2, trBarFS.Maximum);
|
||||
if (wd > trBarFS.Maximum) trBarFS.Maximum = (int)wd + 1;
|
||||
trBarFS.Minimum = Math.Min((int)wd, 72);
|
||||
trBarFS.Value = (int)wd;
|
||||
_origFigureSizeWidth = ii.MyPictureBox.Width;
|
||||
//tbFSWd.Text = ii.MyPictureBox.Width.ToString();
|
||||
//tbFSHt.Text = ii.MyPictureBox.Height.ToString();
|
||||
}
|
||||
|
||||
private int DoListStepTypes(FormatData fmtdata, StepData topType, string curType)
|
||||
{
|
||||
int cursel=-1;
|
||||
@@ -857,7 +912,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
private float _origFigureSizeRatio = 0; // keep original ratio & width in case of 'restore'
|
||||
private int _origFigureSizeWidth = 0;
|
||||
public int _origFigureSizeWidth = 0;
|
||||
// support user changing size using slider. This saves change back to ImageItem and sets
|
||||
// width/height text boxes to slider values.
|
||||
private void trBarFS_Scroll(object sender, EventArgs e)
|
||||
@@ -871,11 +926,14 @@ namespace Volian.Controls.Library
|
||||
// restore the orignal image size
|
||||
private void btnFSrestore_Click(object sender, EventArgs e)
|
||||
{
|
||||
tbFSWd.Text = _origFigureSizeWidth.ToString();
|
||||
int ht = (int)(_origFigureSizeRatio * _origFigureSizeWidth);
|
||||
tbFSHt.Text = ht.ToString();
|
||||
(MyEditItem as ImageItem).SizeImage(_origFigureSizeWidth, ht);
|
||||
trBarFS.Value = _origFigureSizeWidth;
|
||||
if (_origFigureSizeWidth != 0)
|
||||
{
|
||||
tbFSWd.Text = _origFigureSizeWidth.ToString();
|
||||
int ht = (int)(_origFigureSizeRatio * _origFigureSizeWidth);
|
||||
tbFSHt.Text = ht.ToString();
|
||||
(MyEditItem as ImageItem).SizeImage(_origFigureSizeWidth, ht);
|
||||
trBarFS.Value = _origFigureSizeWidth;
|
||||
}
|
||||
}
|
||||
// user entered width in text box, this event gets called on leave of text box.
|
||||
private void tbFSWd_Leave(object sender, EventArgs e)
|
||||
|
@@ -1209,7 +1209,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
EditItem child = null;
|
||||
if (MyItemInfo.IsFigure)
|
||||
child = new ImageItem(MyItemInfo, MyStepPanel, this, ChildRelation.After, true, nextEditItem, FigInsType);
|
||||
child = new ImageItem(MyItemInfo, MyStepPanel, this, ChildRelation.After, true, nextEditItem, FigInsType, _MyStepPropertiesPanel);
|
||||
else if (MyItemInfo.IsRtfRaw)
|
||||
child = new RtfRawItem(MyItemInfo, MyStepPanel, this, ChildRelation.After, true, nextEditItem);
|
||||
else if (MyItemInfo.MyContent.MyGrid != null)
|
||||
@@ -1222,7 +1222,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
EditItem child = null;
|
||||
if (MyItemInfo.IsFigure)
|
||||
child = new ImageItem(MyItemInfo, MyStepPanel, this, ChildRelation.Before, true, nextEditItem, FigInsType);
|
||||
child = new ImageItem(MyItemInfo, MyStepPanel, this, ChildRelation.Before, true, nextEditItem, FigInsType, _MyStepPropertiesPanel);
|
||||
else if (MyItemInfo.IsRtfRaw)
|
||||
child = new RtfRawItem(MyItemInfo, MyStepPanel, this, ChildRelation.Before, true, nextEditItem);
|
||||
if (MyItemInfo.MyContent.MyGrid != null)
|
||||
@@ -1825,7 +1825,8 @@ namespace Volian.Controls.Library
|
||||
EditItem newFocus = null;
|
||||
EditItem nextEditItem = MyNextEditItem;
|
||||
EditItem prevEditItem = MyPreviousEditItem;
|
||||
EditItem parentEditItem = ActiveParent;
|
||||
//if (MyStepPanel?.SelectedEditItem?.ActiveParent == null) return null; //Was causing an error// when active parent was null and the replaced proc was opened in the editor.
|
||||
EditItem parentEditItem = MyStepPanel?.SelectedEditItem?.ActiveParent;
|
||||
|
||||
StepConfig savOrigPasteConfig = MyItemInfo.MyConfig as StepConfig;
|
||||
int TopMostYBefore = TopMostEditItem.Top;
|
||||
@@ -1835,7 +1836,8 @@ namespace Volian.Controls.Library
|
||||
bool gotoFirstTrans = false;
|
||||
try
|
||||
{
|
||||
newItemInfo = Item.PasteReplace(MyItemInfo, copyStartID, GetChangeId(MyItemInfo), ref gotoFirstTrans);
|
||||
TreeNode treeNodeReplace = null;
|
||||
newItemInfo = Item.PasteReplace(MyItemInfo, copyStartID, GetChangeId(MyItemInfo), treeNodeReplace, ref gotoFirstTrans);
|
||||
if (gotoFirstTrans) //B2017-179 could not replace step, we are positioning onto the first transition that needs resolved
|
||||
{
|
||||
MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OpenItem(newItemInfo);
|
||||
@@ -1934,7 +1936,7 @@ namespace Volian.Controls.Library
|
||||
sia.IdentifyChildren(highlight);
|
||||
}
|
||||
}
|
||||
if (MyBeforeEditItems != null)
|
||||
if (MyBeforeEditItems != null && !MyItemInfo.IsEnhancedStep)
|
||||
{
|
||||
foreach (EditItem sib in MyBeforeEditItems)
|
||||
{
|
||||
|
@@ -256,6 +256,8 @@ namespace Volian.Controls.Library
|
||||
private int _origCfgHt = 0; // keep track if original size was stored in cfg
|
||||
private int _origCfgWd = 0;
|
||||
private bool _pastedNew = false; // need this for flagging newly pasted image (may need to clear cfg)
|
||||
private DisplayTags _displayTags;
|
||||
|
||||
#endregion
|
||||
#region Constructors
|
||||
public ImageItem()
|
||||
@@ -266,6 +268,7 @@ namespace Volian.Controls.Library
|
||||
public ImageItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
MyItemInfo = itemInfo;
|
||||
SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, null, false);
|
||||
if (MyItemInfo.MyContent.MyImage != null && MyItemInfo.MyContent.MyImage.Data != null) // this is figure/image (not RO)
|
||||
@@ -307,6 +310,7 @@ namespace Volian.Controls.Library
|
||||
this.Height = MyPictureBox.Height + 10;
|
||||
_newSizeWd = wd / (MyStepPanel.DPI / 72);
|
||||
_newSizeHt = ht / (MyStepPanel.DPI / 72);
|
||||
|
||||
if (!MyItemInfo.FormatStepData.StepEditData.TypeMenu.MenuItem.ToUpper().Contains("AER")) ItemLocation = TableLocation(MyStepSectionLayoutData, ItemWidth);
|
||||
_IsDirty = true;
|
||||
}
|
||||
@@ -330,13 +334,23 @@ namespace Volian.Controls.Library
|
||||
MyPictureBox.SizeMode = PictureBoxSizeMode.Zoom; // as resize matches width/height.
|
||||
this.Width = MyPictureBox.Width + ImageMargin;
|
||||
this.Height = MyPictureBox.Height + 10;
|
||||
if (_displayTags != null)
|
||||
{
|
||||
_displayTags._origFigureSizeWidth = wd;
|
||||
_displayTags.TbFSwd = wd.ToString();
|
||||
_displayTags.TbFSht = ht.ToString();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// the following gets called for 'NEW' images
|
||||
private E_ImageSource InsType = E_ImageSource.None;
|
||||
public ImageItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand, EditItem nextEditItem, ImageItem.E_ImageSource insType)
|
||||
public ImageItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand, EditItem nextEditItem, ImageItem.E_ImageSource insType, DisplayTags displayTags)
|
||||
{
|
||||
InitializeComponent();
|
||||
MyItemInfo = itemInfo;
|
||||
_displayTags = displayTags;
|
||||
|
||||
if (MyItemInfo.MyContent.MyImage != null && MyItemInfo.MyContent.MyImage.Data != null) // this is figure/image (not RO)
|
||||
{
|
||||
SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, nextEditItem, false);
|
||||
@@ -368,8 +382,8 @@ namespace Volian.Controls.Library
|
||||
FileName = null;
|
||||
//InitializeComponent();
|
||||
SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, nextEditItem, false);
|
||||
MyPictureBox.Width = 100;
|
||||
MyPictureBox.Height = 100;
|
||||
//MyPictureBox.Width = 100;
|
||||
//MyPictureBox.Height = 100;
|
||||
this.Width = 100 + ImageMargin;
|
||||
this.Height = 100;
|
||||
if (insType == ImageItem.E_ImageSource.File)
|
||||
@@ -546,6 +560,7 @@ namespace Volian.Controls.Library
|
||||
imageText = val;
|
||||
}
|
||||
AddROImageToScreen(W, H, imageText);
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@@ -1749,9 +1749,9 @@ namespace Volian.Controls.Library
|
||||
EnhancedDocuments eds = MyItemInfo.GetMyEnhancedDocuments();
|
||||
// note in follow if statements, 'setting' == false when in enhanced document:
|
||||
if (setting && MyItemInfo.IsStep && (eds == null || eds.Count == 0)) // this step is in enhanced, but not linked // B2018-112 and is allowed to edit
|
||||
allowDel = true; // allow delete if not linked
|
||||
btnCpyStp.Enabled = setting;
|
||||
//B20170-158 Allow a Unlinked Step to be pasted before or after a linked step.
|
||||
allowDel = true; // allow delete if not linked
|
||||
btnCpyStp.Enabled = MyUserInfo.IsAllowedToEdit(Mydvi); // setting;
|
||||
//B20170-158 Allow a Unlinked Step to be pasted before or after a linked step.
|
||||
StepTabPanel tmp = Parent as StepTabPanel;
|
||||
//B2020-058: crash on null reference
|
||||
if (tmp != null && tmp.MyDisplayTabControl != null && tmp.MyDisplayTabControl.MyCopyStep != null)
|
||||
@@ -1761,6 +1761,10 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (MyItemInfo.IsEnhancedStep) btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false;
|
||||
}
|
||||
else if (tmp.MyDisplayTabControl.MyCopyStep.IsEnhancedStep && tmp.MyDisplayTabControl.MyCopyStep.MyDocVersion.VersionID == MyItemInfo.MyDocVersion.VersionID)
|
||||
{
|
||||
btnPasteBefore.Enabled = btnPasteAfter.Enabled = MyUserInfo.IsAllowedToEdit(Mydvi);
|
||||
}
|
||||
}
|
||||
else
|
||||
btnStepPaste.Enabled = setting;
|
||||
|
@@ -1612,7 +1612,13 @@ namespace Volian.Controls.Library
|
||||
if (!docVersionIsEnhanced && !docVersionIsSource && !procIsSource) canPaste = true;
|
||||
else if (docVersionIsSource && !procIsSource) canPaste = true;
|
||||
else if (docVersionIsSource) canPaste = (!procIsSource || (iiClipboard.MyDocVersion.ItemID == dvi.ItemID));
|
||||
else if (docVersionIsEnhanced) canPaste = !procIsSource;
|
||||
else if (docVersionIsEnhanced)
|
||||
{
|
||||
// B2024-028 Do not allow paste of non-enhanced into enhanced set
|
||||
// (consistent with paste before/after, i.e. don't allow)
|
||||
canPaste = false;
|
||||
cm.MenuItems.Add("CANNOT PASTE HERE, Click for more information...", new EventHandler(mi_Click));
|
||||
}
|
||||
if (iiClipboard.IsRtfRaw) canPaste = false; // never paste an equation.
|
||||
if (canPaste) cm.MenuItems.Add("Paste Procedure", new EventHandler(mi_Click));
|
||||
}
|
||||
@@ -1670,9 +1676,9 @@ namespace Volian.Controls.Library
|
||||
if (!prCanPaste)
|
||||
{
|
||||
if (prToIsEnhanced)
|
||||
cm.MenuItems.Add("CANNOT PASTE HERE, Click for more information...", new EventHandler(mi_Click));
|
||||
cm.MenuItems.Add("CANNOT PASTE HERE, Click for more information...", new EventHandler(mi_Click));
|
||||
else
|
||||
cm.MenuItems.Add("CANNOT PASTE HERE. Click for more information...", new EventHandler(mi_Click));
|
||||
cm.MenuItems.Add("CANNOT PASTE HERE. Click for more information...", new EventHandler(mi_Click));
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
@@ -2012,7 +2018,6 @@ namespace Volian.Controls.Library
|
||||
// lots of paste options:
|
||||
case "Paste Procedure":
|
||||
case "Paste Procedure Before":
|
||||
case "Replace Existing Procedure":
|
||||
case "Paste Procedure After":
|
||||
case "Paste Section":
|
||||
case "Paste Section Before":
|
||||
@@ -2025,6 +2030,18 @@ namespace Volian.Controls.Library
|
||||
case "Paste Subsection":
|
||||
tv_NodePaste(mi.Text);
|
||||
break;
|
||||
case "Replace Existing Procedure":
|
||||
DialogResult ovewriteEx = FlexibleMessageBox.Show("This will overwrite the selected procedure with then one you copied, would you like to overwrite it?\r\n\r\nSelecting 'Cancel' will cancel the paste action.", "Overwrite the procedure?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);// == DialogResult.Yes;
|
||||
|
||||
if (ovewriteEx == DialogResult.Cancel) break;
|
||||
else
|
||||
{
|
||||
TreeNode treenodeDirectory = SelectedNode.Parent;
|
||||
tv_NodePaste(mi.Text);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case "Delete":
|
||||
if (tv_NodeDelete())
|
||||
{
|
||||
@@ -2103,8 +2120,9 @@ namespace Volian.Controls.Library
|
||||
"It can only be pasted before or after another document, within the set, that is linked to an Enhanced Document.", "Cannot Paste Here");
|
||||
break;
|
||||
case "CANNOT PASTE HERE, Click for more information...":
|
||||
// B2024-028 clarify message
|
||||
FlexibleMessageBox.Show("You have copied a document that is NOT linked to an Enhanced Document.\n\n" +
|
||||
"It CANNOT be pasted before or after an Enhanced Document.", "Cannot Paste Here");
|
||||
"You cannot paste a Non-Enhanced Procedure into an Enhanced Procedure Set.", "Cannot Paste Here");
|
||||
break;
|
||||
//case "Check Out Procedure Set":
|
||||
// CheckOutDocVersion(SelectedNode as VETreeNode);
|
||||
@@ -2390,6 +2408,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
VETreeNode tn = SelectedNode as VETreeNode;
|
||||
TreeNode treeNodeReplace = SelectedNode.Parent; //Get Tree Node of Parent we are proc we are placing into.
|
||||
DocVersionInfo dvi = tn.VEObject as DocVersionInfo;
|
||||
// Check for paste into a docversion - queries/code is different than paste related to an item (into a proc or section)
|
||||
if (dvi != null)
|
||||
@@ -2425,13 +2444,17 @@ namespace Volian.Controls.Library
|
||||
else if (p.IndexOf("After") > -1)
|
||||
PasteBeforeOrAfter(MenuSelections.StepAfter, tn, iiClipboard.ItemID);
|
||||
else if (p.IndexOf("Replace") > -1)
|
||||
PasteReplace(tn, iiClipboard.ItemID);
|
||||
{
|
||||
PasteReplace(tn, iiClipboard.ItemID, treeNodeReplace);
|
||||
}
|
||||
else // paste as child
|
||||
PasteAsChild(tn, iiClipboard.ItemID);
|
||||
this.Cursor = Cursors.Default;
|
||||
|
||||
//if (p.IndexOf("Replace") <= -1)
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
private void PasteAsDocVersionChild(VETreeNode tn, int copyStartID)
|
||||
public void PasteAsDocVersionChild(VETreeNode tn, int copyStartID)
|
||||
{
|
||||
// Only need to handle paste in tree since this will create a new procedure.
|
||||
DocVersionInfo dvi = tn.VEObject as DocVersionInfo;
|
||||
@@ -2518,7 +2541,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
SelectedNode = (VETreeNode)((newtype == MenuSelections.StepAfter) ? tn.NextNode : tn.PrevNode);
|
||||
}
|
||||
private void PasteReplace(VETreeNode tn, int copyStartID)
|
||||
private void PasteReplace(VETreeNode tn, int copyStartID, TreeNode treeNodeReplace)
|
||||
{
|
||||
VETreeNode prevtn = (VETreeNode) tn.PrevNode;
|
||||
VETreeNode partn = (VETreeNode) tn.Parent;
|
||||
@@ -2529,23 +2552,43 @@ 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);
|
||||
ItemInfo replItemInfo = Item.PasteReplace(ii, copyStartID, chgId, treeNodeReplace);
|
||||
|
||||
StepConfig replItemConfig = ii.MyConfig as StepConfig;
|
||||
if (replItemInfo != null)
|
||||
{
|
||||
OnOpenItem(this, new vlnTreeItemInfoEventArgs(replItemInfo));
|
||||
ItemInfo newEnhStep = replItemInfo.PasteEnhancedItems(copyStartID, ii, ItemInfo.EAddpingPart.Replace, chgId);
|
||||
}
|
||||
}
|
||||
// B2018-047: was crashing on the following line (before change it was casting the result to a VETreeNote when the partn.FirstNode was just a TreeNode)
|
||||
SelectedNode = prevtn != null ? prevtn.NextNode : partn.FirstNode;
|
||||
|
||||
|
||||
}
|
||||
private void tv_NodeCopy()
|
||||
public void PasteRepalceEmpty(VETreeNode tn, int copyStartID)
|
||||
{
|
||||
if (SelectedNode==null)return;
|
||||
VETreeNode tn = SelectedNode as VETreeNode;
|
||||
OnNodeCopy(this, new vlnTreeEventArgs(tn));
|
||||
// Only need to handle paste in tree since this will create a new procedure.
|
||||
DocVersionInfo dvi = tn.VEObject as DocVersionInfo;
|
||||
if (dvi.DocVersionAssociationCount == 0)
|
||||
{
|
||||
// Set docversionassociation to the copied docversion association
|
||||
// so that the rofst for ro's can be found. (if there is no association set)
|
||||
ROFstInfo rfi = GetAssociationRofstId(copyStartID);
|
||||
Association myAs = Association.MakeAssociation(dvi.Get(), rfi.GetJustROFst(), "");
|
||||
dvi.RefreshDocVersionAssociations();
|
||||
}
|
||||
ItemInfo newProc = dvi.PasteChild(copyStartID);
|
||||
VETreeNode tn1 = new VETreeNode(newProc);
|
||||
SelectedNode.Nodes.Add(tn1); // add tree node to end of list.
|
||||
SelectedNode = tn1;
|
||||
}
|
||||
private void tv_NodeCopy()
|
||||
{
|
||||
if (SelectedNode == null) return;
|
||||
VETreeNode tn = SelectedNode as VETreeNode;
|
||||
OnNodeCopy(this, new vlnTreeEventArgs(tn));
|
||||
}
|
||||
|
||||
#endregion
|
||||
#region PropertyPagesInterface
|
||||
private void SetupNodeProperties()
|
||||
@@ -3058,6 +3101,15 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
SaveEnhancedForSection(sourceSect, newenhSection, sed.Type);
|
||||
RefreshRelatedNode(SectionInfo.Get(newenhSection.ItemID));
|
||||
// B2024-023: when inserting a source section, the associated
|
||||
// enhanced section did not appear in tree view or in edit window (if it
|
||||
// was displayed in editor). Add to tree view and close the enhanced
|
||||
// procedure edit window. Note that closing of edit window was done to
|
||||
// be consistent on what happens upon delete of source w/ and enhanced
|
||||
// section.
|
||||
SectionInfo tmpsi = SectionInfo.Get(newenhSection.ItemID);
|
||||
RefreshRelatedNode(ProcedureInfo.Get(tmpsi.MyParent.ItemID));
|
||||
OnSectionShouldClose(this, new vlnTreeSectionInfoEventArgs(tmpsi, true));
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
@@ -699,7 +699,7 @@ namespace Volian.Print.Library
|
||||
|
||||
try
|
||||
{
|
||||
if (File.Exists(outputFileName))
|
||||
if (File.Exists(outputFileName) && !OverWrite && !outputFileName.Contains("PageNumberPass") && !outputFileName.Contains("Foldout"))
|
||||
{
|
||||
if (!BaselineTesting && !SaveLinks) // B2024-031 don't do if creating PDF hyperlinks
|
||||
{
|
||||
@@ -836,14 +836,6 @@ namespace Volian.Print.Library
|
||||
OnStatusChanged("Print " + myProcedure.DisplayNumber, PromsPrinterStatusType.Start);
|
||||
string outputFileName = pdfFolder + "\\" + Prefix + PDFFile; // RHM20150506 Multiline ItemID TextBox
|
||||
|
||||
if (!OverWrite && File.Exists(outputFileName))
|
||||
{
|
||||
if (MessageBox.Show(outputFileName + " exists. Overwrite file?", "File Exists", MessageBoxButtons.YesNo) == DialogResult.No)
|
||||
{
|
||||
ProfileTimer.Pop(profileDepth);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
string retval = PrintProcedureOrFoldout(myProcedure, null, outputFileName, makePlacekeeper, makeContinuousActionSummary, makeTimeCriticalAction);
|
||||
ProfileTimer.Pop(profileDepth);
|
||||
return retval;
|
||||
|
Reference in New Issue
Block a user